Aplikasi Graph Minimum Spaning Tree Shortest Path
Pohon Merentang Minimum (Minimum Spanning Tree) Contoh Aplikasi Teori Graph Pohon Merentang Minimum (Minimum Spanning Tree) (a) Graf G = (V, E) (b) Pohon merentang minimum
(a) Algoritma Prim Strategi greedy yang digunakan: Pada setiap langkah, pilih sisi e dari graf G(V, E) yang mempunyai bobot terkecil dan bersisian dengan simpul- simpul di T tetapi e tidak membentuk sirkuit di T. Komplesiats algoritma: O(n2)
In computer science, Prim's algorithm is an algorithm that finds a minimum spanning tree for a connected weighted undirected graph. This means it finds a subset of the edges that forms a tree that includes every vertex, where the total weight of all the edges in the tree is minimized. Prim's algorithm is an example of a greedy algorithm. The algorithm was developed in 1930 by Czech mathematician Vojtěch Jarník and later independently by computer scientist Robert C. Prim in 1957 and rediscovered by Edsger Dijkstra in 1959. Therefore it is also sometimes called the DJP algorithm, the Jarník algorithm, or the Prim–Jarník algorithm.
Pada algoritma prim, dimulai pada vertex yang mempunyai sisi (edge) dengan bobot terkecil. Sisi yang dimasukkan ke dalam himpunan T adalah sisi graph G yang bersisian dengan sebuah simpul di T, sedemikian sehingga T adalah Tree (pohon). Sisi dari Graph G ditambahkan ke T jika ia tidak membentuk cycle. (NOTE: dua atau lebih edge kemungkinan mempunyai bobot yang sama, sehingga terdapat pilihan vertice, dalam hal ini dapat diambil salah satunya.)
Ambil sisi (edge) dari graph yg berbobot minimum, masukkan ke dalam T Pilih sisi (edge) (i,j) yg berbobot minimum dan bersisisan dengan simpul di T, tetapi (i,j) tidak membentuk cycle di T. tambahkan (i,j) ke dalam T Ulangi prosedur no 2 sebanyak (n-2) kali
PROCEDURE Prim (G: weighted connected undirected graph with n vertices) BEGIN T := a minimum-weight edge FOR i := 1 to n-2 DO e := a minimum-weight edge one of whose vertices is in T, and one is not in T T := T with e added END RETURN T
Solusi : 37 E D G C B H A F I 4 8 11 7 2 6 1 9 14 10 LANGKAH SISI BOBOT 1 (H,G) 2 (G,F) 3 (F,C) 4 (C,I) 5 (C,D) 7 6 (C,B) 8 (B,A) (D,E) 9 E D G C B H A F I 4 8 11 7 2 6 1 9 14 10 Solusi : 37
Langkah 1 Langkah 3 Langkah 3 Langkah 2
Langkah 6 Langkah 4 Langkah 5 Langkah 7
Try It 2 3 F C a e c b d f 10 15 13 20 12 5 11 21 16 10 A 7 3 4 8 18 4 B D 9 H 10 25 2 3 G E 7
(a) Algoritma Kruskal Strategi greedy yang digunakan: Pada setiap langkah, pilih sisi e dari graf G yang mempunyai bobot minimum tetapi e tidak membentuk sirkuit di T. Kompleksitas algoritma: O(|E| log |E|)
Pada algoritma kruskal, sisi (edge) dari Graph diurut terlebih dahulu berdasarkan bobotnya dari kecil ke besar. Sisi yang dimasukkan ke dalam himpunan T adalah sisi graph G yang sedemikian sehingga T adalah Tree (pohon). Sisi dari Graph G ditambahkan ke T jika ia tidak membentuk cycle. T masih kosong pilih sisi (i,j) dengan bobot minimum pilih sisi (i,j) dengan bobot minimum berikutnya yang tidak membentuk cycle di T, tambahkan (i,j) ke T Ulangi langkah 3 sebanyak (n-2) kali. Total langkah (n-1) kali
(Sort the edges in an increasing order) A:={} while E is not empty do { take an edge (u, v) that is shortest in E and delete it from E if u and v are in different components then add (u, v) to A Note: each time a shortest edge in E is considered.
Langkah Sisi bobot 1 e-c 5 2 a-b 10 3 d-e 11 4 c-f 12 b-e 13 a e c b d 1 e-c 5 2 a-b 10 3 d-e 11 4 c-f 12 b-e 13 a e c b d f 10 15 13 20 12 5 11 21 16
10 10 20 20 10 20 a b c a b c a b c 13 13 5 5 13 15 12 15 12 5 15 12 e e e 21 21 21 11 11 11 d f d f d f 16 16 16 10 10 20 20 a b c a b c 13 13 5 5 15 12 15 12 e e 21 21 11 11 d f d f 16 16
Try It
Langkah Sisi bobot 1 N1,N2 2 N7,N8 3 N2,N3 4 N1,N6 5 N3,N4 6 N2,N7 7 N4,N5
Both Prim’s and Kruskal’s Algorithms work with undirected graphs Both work with weighted and unweighted graphs but are more interesting when edges are weighted Both are greedy algorithms that produce optimal solutions
7. Lintasan Terpendek (Shortest Path) Beberapa macam persoalan lintasan terpendek: Lintasan terpendek antara dua buah simpul tertentu (a pair shortest path). Lintasan terpendek antara semua pasangan simpul (all pairs shortest path). Lintasan terpendek dari simpul tertentu ke semua simpul yang lain (single-source shortest path). Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu (intermediate shortest path).
Persoalan: Diberikan graf berbobot G = (V, E) Persoalan: Diberikan graf berbobot G = (V, E). Tentukan lintasan terpendek dari sebuah simpul asal a ke setiap simpul lainnya di G. Asumsi yang kita buat adalah bahwa semua sisi berbobot positif. Algoritma Dijkstra adalah salah satu metode untuk memecahkan masalah pencarian rute terpendek. Algoritma ini biasanya diterapkan pada sebuah aplikasi pencari rute jalan yang terdekat dari suatu daerah ke daerah lainnya.
Strategi greedy: Lintasan dibentuk satu per satu Strategi greedy: Lintasan dibentuk satu per satu. Lintasan berikutnya yang dibentuk ialah lintasan yang meminimumkan jumlah jaraknya.
Contoh 8.
Algoritma Dijkstra Strategi greedy: Pada setiap langkah, ambil sisi yang berbobot minimum yang menghubungkan sebuah simpul yang sudah terpilih dengan sebuah simpul lain yang belum terpilih. Lintasan dari simpul asal ke simpul yang baru haruslah merupakan lintasan yang terpendek diantara semua lintasannya ke simpul-simpul yang belum terpilih.
Tentukan MST nya
Tentukan lintasan terpendek dari A menuju B menggunakan Algoritma Dijkstra C B A 10 100 30 50 5 20