IKI : Struktur Data & Algoritma Graph Ruli Manurung & Ade Azurat ( Setiawan (acknowledgments: Denny, Suryana Fasilkom UI Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Materi Motivasi Definisi dan Istilah Representasi Graph Algoritma mencari shortest path Topological Sort Minimum spanning tree Prim's Algoritma Kruskal's Algoritma Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Penggunaan Graph Jaringan Peta Mencari jalur terpendek ( Proyek Penjadwalan (Perencanaan Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Definisi Sebuah graph G = (V, E terdiri dari: ( vertices/nodes V: kumpulan simpul E: kumpulan sisi/busur (edge yang menghubungkan simpul-simpul. Sebuah sisi e = (a, b memiliki informasi dua simpul yang dihubungkannya. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Istilah undirected graph directed graph adjacent vertices: adalah simpul-simpul yang dihubungkan ( edge oleh sebuah sisi degree (of a vertex: adalah jumlah simpul lain yang terhubung langsung melalui sebuah sisi. Untuk kategori directed graph in-degree out-degree Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Weighted Graph weighted graph: setiap sisi memiliki bobot/nilai. V = {V, V, V, V 3, V, V, V 6 } V V 3 V V 3 V 8 6 V V 6 V,V,, V,V3,, V,V3, 3, V,V, V 3,V,, V 3,V6,, V 3,V, 8, V 3,V, V,V,, V,V,, V,V, 6, V,V, 6 6 V = 7; E = Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
Istilah Jalur/path: urutan simpul (vertices v, v,...v k sedemikian sehingga simpul yang berurutan v i dan v i+ adalah simpul yang terhubung. simple path: tidak ada simpul yang diulang. cycle: simple path, dengan catatan simpul awal sama dengan simpul akhir DAG (Directed Acyclic Graph: Graph dengan busur/sisi yang memiliki arah dan tidak memiliki cycles. V V V V 3 V 3 8 V V 6 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 7
Istilah connected graph: tiap simpul terhubung dengan simpul lain subgraph: bagian simpul dan sisi yang dapat membentuk graph Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 8
Representasi Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 9
Representasi: Edge List Struktur edge list hanya menyimpan simpul dan sisi dalam sebuah list yang tidak terurut. Pada tiap sisi disimpan informasi simpul yang terhubung oleh sisi tersebut. mudah diimplementasikan. Tidak efisien dalam keperluan mencari sisi bila diketahui simpulnya. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
( traditional Representasi: Adjancency List Adjacency list dari sebuah vertex v adalah sekumpulan vertex yang terhubung dengan v Merepresentasikan graph, dengan menyimpan daftar adjacency lists dari seluruh vertex. struktur adjacency list dapat digabungkan dengan struktur edge list. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
( traditional Representasi: Adjacency Matrix matrix M dengan eleman setiap pasang simpul M[i,j] = true artinya ada sisi dari simpul (i,j di graph. M[i,j] = false artinya tidak ada sisi dari simpul (i,j di graph. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Representation: Adjancency Matrix Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Shortest Path: Vertex awal: V Bila sisi tidak memiliki bobot, gunakan algoritma BFS (Breadth First Search. V V 3 V V 3 V V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Dijkstra s Algorithm Banyak masalah weighted graph (mis: jaringan transport Algoritma Dijkstra menghitung jarak tiap simpul dari simpul awal hingga akhirnya diketahui jarak terpendek simpul akhir yang diinginkan. Algoritma mengingat simpul mana saja yang telah dihitung jarak terpendeknya dan dinyatakan dalam kelompok hijau (pada literatur dinyatakan sebagai awan putih/white cloud. Untuk simpul yang baru sebagian dihitung jaraknya dan belum bisa dipastikan apakah itu jarak terpendek, dinyatakan dengan kelompok abu-abu. Untuk simpul yang sama sekali belum dihitung, dinyatakan dalam kelompok hitam. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
Dijkstra s Algorithm Algoritma menggunakan label D[v] untuk menyimpan perkiraan jarak terpendek antara s dan v. Ketika sebuah simpul v ditambahkan kedalam kelompok aba-abu nilai D[v] sama dengan bobot antara s dan v. pada awalnya, nilai label D untuk setiap simpul adalah: D[s] = D[v] = untuk v s Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 7
Dijkstra s Algorithm: stages Awal: Tentukan simpul awal. V V V V 3 V 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 8
Expanding the White Cloud Setiap penambahan simpul, kita harus uji apakah jalur melalui u lebih baik. Misalkan u adalah sebuah simpul yang tidak berada di kelompok hijau, tapi sudah diketahui jarak terpendeknya dari s tambahkan u ke dalam kelompok hijau hitung jarak simpul lain dengan algoritma berikut: Untuk tiap simpul z yang terhubung ke u lakukan: jika z tidak di kelompok hijau maka if D[u] + bobot(u,z < D[z] then ( bobot(u,z D[z] = D[u] + Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 9
Dijkstra s Algorithm: stages setelah V ditambahkan ke kelompok hijau, hitung D[V x ] untuk setiap V x yang terhubung ke V V V V V 3 V 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Dijkstra s Algorithm: stages tambahkan ke dalam kelompok hijau simpul pada kelompok abu-abu yang memiliki nilai D[V] minimum. Pada contoh adalah simpul V 3 V V V V 3 V 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Dijkstra s Algorithm: stages setelah V 3 ditambahkan ke kelompok hijau, hitung D[V x ] untuk setiap V x yang terhubung dengan V 3. Simpul-simpul tersebut menjadi kelompok abu-abu. V V V V 3 V 8 6 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Dijkstra s Algorithm: stages pilih dari kelompok abu-abu, simpul yang memiliki nilai D[V] paling minimum dan tambahkan pada kelompok hijau. V V V V 3 V 8 6 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Dijkstra s Algorithm: stages setelah V ditambahkan ke kelompok hijau, hitung D[V x ] untuk setiap V x yang terhubung dengan V. Simpul-simpul tersebut menjadi kelompok abu-abu. V V V V 3 V 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Dijkstra s Algorithm: stages pilih dari kelompok abu-abu, simpul yang memiliki nilai D[V] paling minimum dan tambahkan pada kelompok hijau. V V V V 3 V 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Dijkstra s Algorithm: stages setelah V ditambahkan ke kelompok hijau, hitung D[V x ] untuk setiap V x yang terhubung dengan V. Simpul-simpul tersebut menjadi kelompok abuabu. V V V V 3 V 7 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
pilih dari kelompok abu-abu, simpul yang memiliki nilai D[V] paling minimum dan tambahkan pada kelompok hijau. setelah V ditambahkan ke kelompok hijau, hitung D[V x ] untuk setiap V x yang terhubung dengan V. Simpul-simpul tersebut menjadi kelompok abu-abu. V V V V 3 V 7 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 7
pilih dari kelompok abu-abu, simpul yang memiliki nilai D[V] paling minimum dan tambahkan pada kelompok hijau. setelah V 6 ditambahkan ke kelompok hijau, hitung D[V x ] untuk setiap V x yang terhubung dengan V 6. V V V V 3 V 7 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 8
pilih dari kelompok abu-abu, simpul yang memiliki nilai D[V] paling minimum dan tambahkan pada kelompok hijau. setelah V ditambahkan ke kelompok hijau, hitung D[V x ] untuk setiap V x yang terhubung dengan V. V V V V 3 V 7 8 V V 6 3 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 9
Variasi shortest path problem Negative-weighted Shortest-path V V 3 - V V 3 V 8 6 V V 6 All-Pair Shortest Path: Floyd Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Topological Sorting Sebuah topological sort dari sebuah directed acyclic graph adalah sebuah urutan simpul sehingga tiap sisi/busur terurut dari kiri ke kanan (atau sebaliknya. Setiap DAG memiliki minimal satu topological sort. Gunakan algoritma depth-first search untuk menentukan topological sort dari sebuah DAG. sebuah graph yang memiliki cycle, tidak memiliki topological sort. Contoh permasalahan: Urutan pengerjaan proyek bangunan Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Topological Sorting: Algoritma Mulai dari sebuah simpul dengan in-degree = (. tersebut (Tidak ada panah/sisi yang menuju simpul buang semua sisi yang berasal dari simpul tersebut. Sesuaikan nilai in-degree simpul lain-nya. V V 3 V V 3 V 3 V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Topological Sorting V V V V 3 V V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 33
Topological Sorting V V V V 3 V V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Topological Sorting V V V V 3 V V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Topological Sorting V V V V 3 V V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 36
Topological Sorting V V V V 3 V V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 37
Topological Sorting V V V V 3 V V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 38
Topological Sorting V V V V 3 V V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 39
Topological Sorting V V 3 V V 3 V 8 6 V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Topological Sorting V V 3 V V 3 V 8 6 V V 6 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Minimum Spanning Tree (MST Adalah sebuah struktur tree yang terbentuk dari graph, dimana sisi-sisi yang menghubungkan setiap simpul memiliki nilai total paling kecil. Nilai total dari sebuah spanning tree, adalah jumlah total bobot tiap sisi dalam tree tersebut. Penerapan: Mencari jumlah biaya kabel paling minimum untuk menghubungkan sebuah kelompok perumahan atau perkotaan. Mencari biaya minimum terendah untuk menghubungkan jaringan komputer. Mencari biaya produksi total terendah untuk pengerjaan proyek. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
( MST Minimum Spanning Tree Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Minimum Spanning Tree: a graph V V 3 V 3 V 8 7 6 V V 6 V 7 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Minimum Spanning Tree V V V 3 V 6 V V 6 V 7 Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Prim s Algorithm mulai dari sebuah simpul bangun tree dengan menambahkan sebuah sisi/busur satu persatu. secara berulang pilih sisi terkecil yang dapat menyambung tree. greedy algorithms: Pilihan langkah diambil berdasarkan pilihan terbaik secara local tanpa memperhatikan pengaruhnya secara global. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
Prim s Algorithm V known d V p V V V V 3 V V V 6 V 7 V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 7
Prim s Algorithm V V known d V p V V V V 3 V V V V V 6 V 7 V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 8
Prim s Algorithm d V p V V V known V V V 3 V V V V 7 V V 6 8 V V 7 V V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 9
Prim s Algorithm d V p V V V known V V V 3 V V V V 7 V V 6 8 V V 7 V V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Prim s Algorithm d V p V V V known V V V 3 V V V V 7 V V 6 V 3 V 7 V V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Prim s Algorithm d V p V V V known V V V 3 V V V V 6 V 7 V 6 V 7 V 7 V V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Prim s Algorithm d V p V V V known V V V 3 V V V V 6 V 7 V 6 V 7 V 7 V V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 3
Prim s Algorithm d V p V V V known V V V 3 V V V V 6 V 7 V 6 V 7 V 7 V V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Prim s Algorithm d V p V V V known V V V 3 V V V V 6 V 7 V 6 V 7 V 7 V V V 3 V V 6 V 7 6 V V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu
Kruskal s Algorithm Tambahkan sebuah sisi terkecil pada tiap iterasi. Seluruh sisi dapat di urutkan dulu berdasarkan bobot-nya. Sisi dapat ditambahkan hanya jika tidak menimbulkan cycle, atau tidak menuju simpul yang sudah dikunjungi. Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
Kruskal s Algorithm Edge (V, V (V 6, V 7 (V, V (V 3, V (V, V (V, V 3 (V, V 7 (V 3, V 6 (V, V 7 Weight Action - - - - 3 - - - - 6 - V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 7
Kruskal s Algorithm Edge (V, V (V 6, V 7 (V, V (V 3, V (V, V (V, V 3 (V, V 7 (V 3, V 6 (V, V 7 Weight Action A - - - 3 - - - - 6 - V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 8
Kruskal s Algorithm Edge (V, V (V 6, V 7 (V, V (V 3, V (V, V (V, V 3 (V, V 7 (V 3, V 6 (V, V 7 Weight Action A A - - 3 - - - - 6 - V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 9
Kruskal s Algorithm Edge (V, V (V 6, V 7 (V, V (V 3, V (V, V (V, V 3 (V, V 7 (V 3, V 6 (V, V 7 Weight Action A A A - 3 - - - - 6 - V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
Kruskal s Algorithm Edge (V, V (V 6, V 7 (V, V (V 3, V (V, V (V, V 3 (V, V 7 (V 3, V 6 (V, V 7 Weight Action A A A A 3 - - - - 6 - V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
Kruskal s Algorithm Edge (V, V (V 6, V 7 (V, V (V 3, V (V, V (V, V 3 (V, V 7 (V 3, V 6 (V, V 7 Weight Action A A A A 3 R R A - 6 - V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6
Kruskal s Algorithm Edge Weight Action (V, V A (V6, V7 A (V, V A (V3, V A (V, V 3 R (V, V3 R (V, V7 A (V3, V6 R (V, V7 6 A V V 3 V 8 3 7 V 6 V 7 V 6 V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 63
Kruskal s Algorithm Edge Weight Action (V, V A (V6, V7 A (V, V A (V3, V A (V, V 3 R (V, V3 R (V, V7 A (V3, V6 R (V, V7 6 A V V 3 V V 6 V 7 6 V V Ruli Manurung & Ade Azurat Fasilkom UI - IKI 7/8 Ganjil Minggu 6