Matakuliah Tahun Versi : T0026/Struktur Data : 2005 : 1/1 Pertemuan 21 ADT Graph 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Mahasiswa dapat merumuskan program modular untuk mengimplementasikan ADT graph 2 Outline Materi • • • • • • • pengertian dan kegunaan graph Graph berarah dan tidak berarah complete graph representasi graph Adjacency matrix & Adjacency list weighted edge graph contoh implementasi 3 GRAPH - Definisi 0 1 2 3 G=(V,E) Himpunan dari node/vertex (minimal satu) dan edge edge vertex Tiap edge menghubungkan 2 vertex 4 Graph Undirected Graph V(G1) = { 0, 1, 2, 3 } 1 E(G1) = {(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)} 0 1 3 2 4 0 2 3 Undirected Graph V(G2) = { 0, 1, 2, 3, 4, 5 } E(G2) = {(0,1), (0,2), (1,3), (1,4), (2,5)} 5 0 1 Directed Graph V(G3) = { 0, 1, 2} E(G3) = {<0,1>, <1,0>, <1,2>} 2 5 Graph - COMPLETE GRAPH COMPLETE GRAPH Semua vertex saling berhubungan • Undirected graph: Jumlah edge = n(n-1)/2 • Directed graph: Jumlah edge = n(n-1) 0 1 2 3 0 1 2 3 n: jumlah vertex 6 Graph - SUBGRAPH 0 1 2 3 SUBGRAPH : bagian dari graph Contoh bbrp subgraph dari graph di atas : 0 0 0 1 1 2 2 3 1 2 3 7 Graph - PATH • PATH : lintasan kunjungan (traversal) ke sejumlah vertex melalui edge yang berurutan. Pada edge yang berurutan, vertex akhir (terminal vertex) dari edge sebelumnya akan menjadi vertex awal (initial vertex) dari edge berikutnya. Terminal vertex <Saskatoon, Rosetown> Initial vertex <Rosetown, Kinderslay> Panjang path = jumlah edge dalam path Panjang path Saskatoon-Calgary = 5 8 Graph - PATH • 0 Simple Path (1 x kunjungan/vertex) Simple Directed Path (G3): 1 0 2: 0, 1, 2 1 0: 1, 0 2 Simple Path (G1): 0 2: 0, 1, 3, 2 1 2: 1, 3, 0, 2 G3 • Cycle (dari dan menuju satu vertex) 0 1 2 Directed Cycle: 0, 1, 0 (G3) Cycle: 0, 1, 2, 0 (G1) 3 G1 9 Graph - CONNECTEDNESS H1 0 1 2 3 H2 G1 0 1 3 2 4 G2 5 Undirected Graph • Undiredted graph disebut connected jika terdapat path antara semua pasangan vertex shg tiap vertex dalam graph dapat dikunjungi dari sembarang vertex dalam graph • H1, G2 connected graph • G1 bukan connected graph karena H1 dan H2 tidak dihubungkan oleh edge 10 Graph - CONNECTEDNESS Directed Graph • Weakly : hanya ada satu path ke setiap vertex • Unilaterally : paling tidak ada satu vertex yang dapat dicapai dari semua vertex • Strongly : jika setiap vertex mempunyai directed path dari semua vertex yang lain 11 Graph - DEGREE • Undirected graph 0 1 2 3 G1 0 1 2 G3 Degree sebuah vertex = jumlah edge yg menuju/ keluar dari vertex Degree 0 = 3 • Directed graph (digraph) In-degree 1 = 1 Out-degree 1 = 2 Degree = 3 • Graph: Jumlah edge = (jumlah degree semua vertex) /2 12 REPRESENTASI • Adjacency Matrix Biasanya digunakan untuk merepresentasikan graph yang berukuran besar • Adjacency List Biasanya digunakan untuk merepresentasikan graph berukuran kecil hingga sedang 13 Graph – ADJACENCY MATRIX • Jika G adalah graph yang mempunyai n vertex v1 .. vn, maka diperlukan matriks dengan orde nxn • Komponen adjacency matrix aij = 1 jika ada edge antara vi dan vj aij = 0 lainnya 14 Graph – ADJACENCY MATRIX 0 1 0 1 2 3 Adjacency Matrix utk undirected graph 2 • Bersifat simetri diagonal 3 • Disimpan sebagai array segitiga 0 1 2 3 • Degree vertex i = Jumlah komponen matriks pd baris i 0 1 1 1 Jumlah baris 1 = 3 berarti 1 0 1 1 degree verteks 1 = 3 1 1 0 1 1 1 1 0 15 Graph – ADJACENCY MATRIX v1 v2 v3 v4 v5 v1 0 1 0 1 1 v2 0 0 0 1 0 v3 0 0 0 0 1 v4 0 0 0 0 0 v5 0 1 0 0 0 Σ=3 Σ=2 Jumlah komponen pd 1 baris : jumlah edge yang berasal dari verteks baris tsb / out-degree (Σ baris v1=3) Jumlah komponen pd 1 kolom : jumlah edge yang menuju ke verteks kolom tsb / in-degree (Σ kolom v4 =3) 16 Graph – ADJACENCY LIST Head node vertex link 0 1 2 3 1 0 2 3 2 0 1 3 3 0 1 2 0 1 2 3 • Jika ada n verteks dan e edge, maka ada n head node dan 2e list node 17 Graph – ADJACENCY LIST • Undirected graph Degree node : banyak node dalam satu list • Digraph Out-degree node : banyak node dalam satu list In-degree node : ditentukan dari inverse adjacency list Inverse adjacency list : Head list menyatakan terminal node Node dlm list menyatakan initial node 18 Graph – ADJACENCY LIST Deklarasi untuk Adjacency List typedef struct node *nodepointer; typedef struct node { int vertex; struct node *link; }; nodepointer graph[MAX_VERTICES]; 19 Representasi untuk Weighted Graph • Adjacency Matrix Komponen matriks adalah weight dari edge Perhitungan degree, in/out-degree harus dimodifikasi • Adjacency List Harus ditambahkan satu field pada struct untuk menampung weight 20 21
© Copyright 2024 Paperzz