ALGORITMA GRAF
Ada dua jenis algoritma dalam bab ini, yaitu : a. Algoritma Kruskal Algoritma ini digunakan untuk menentukan pohon perentang terbobot minimum. b. Algoritma Dijkstra Algoritma ini digunakan untuk menentukan lintasan terpendek pada graf berbobot.
Algoritma Kruskal : Pilih busur e1 sehingga bobot w(e1) yang paling kecil. 2. Jika busur e1, e2, ..., ek telah terpilih, pilih busur ek+1 dari busur yang belum dipilih sedemikian hingga (i) ek+1 tidak menjadi siklus di G dengan busur e1, e2, ..., ek (ii) w(ek+1) sekecil mungkin berhubungan dengan (i) 3. Berhenti ketika langkah 2 tidak dapat dilanjutkan lagi.
Algoritma Kruskal Contoh : Gunakan Algoritma Kruskal untuk menentukan pohon perentang terbobot minimum ! 6 7 5 4 8 2 3 1
Algoritma Kruskal Solusi : 6 7 5 4 8 2 3 1 6 7 5 4 8 2 3 1 6 7 5 4 8 2 3 1 6 7 5 4 8 2 3 1 6 7 5 4 8 2 3 1 6 7 5 4 8 2 3 1
hasil 2 3 4 1 2 5 Bobot dari minimal spanning tree adalah : 17
Lintasan Terpendek Lintasan terpendek dapat diartikan sebagai bobot minimal dari suatu lintasan, yaitu jumlah bobot dari seluruh busur yang membentuk lintasan. Hanya terdapat satu bobot lintasan yang memenuhi, sedangkan lintasannya sendiri dapat lebih dari satu dengan bobot yang sama. Ada beberapa metode yang dapat digunakan untuk menentukan lintasan terpendek, yaitu metode Dijkstra, Moore, Bellman, Matriks, dan Ford
Terminologi & Asumsi Length merupakan jumlah bobot dari lintasan, sedangkan bobot minimum dari lintasan (u,v) disebut distance d(u,v). Bobot minimum lintasan disebut lintasan terpendek. Jika eЄ E(G) maka w(e) = ∞ Asumsi mencari lintasan terpendek yaitu : 1. G merupakan graf simpel 2. Semua bobot di G positif
Algoritma Dijkstra : Tentukan u0 paling kiri. Biasanya u0 diberi tahu. Lintasan berakhir paling ujung. Lintasan atau busur yang dilalui tidak boleh membentuk cycle. Harus berurutan pemberian labelnya pada tiap simpul. Carilah busur dengan bobot yang paling minimum.
Algoritma Dijkstra [inisialisasi] Ambil L(a)=0. untuk semua vertex x≠a, buat L(x)=∞. Ambil T sebagai himpunan Vertex. Bila z T, stop (L(z) adalah panjang dari path terpendek dari a ke z) Pilih v Є T dengan harga terkecil dari L(v). Tempatkan T=T-(v) Untuk tiap-tiap vertex x Є T adjacent dengan v, buat L(x)=min(L(x),L(V)+W(v,x) Kembali ke langkah 2 Є
Algoritma Dijkstra Contoh : Carilah lintasan terpendek dari u0 ke setiap simpul lainnya, dari graf di bawah ini ! U0 1 4 5 2 3 8 6
Solusi S={u0 } S={u0 , u1 , u 2 , u3 u4 } 5 2 3 8 6 U2 U1 U3 U4 S={u0 , u1 , u 2 , u3 u4 } U0 1 4 5 2 3 8 6 S={u0 } U0 1 4 5 2 3 8 6 U1 S={u0 , u1} U5 U0 1 4 5 2 3 8 6 U2 U1 U3 U4 S={u0 , u1 , u 2 , u3 u4 , u5 } U0 1 4 5 2 3 8 6 U2 U1 S={u0 , u1 , u 2 } U5 U0 1 4 5 2 3 8 6 U2 U1 U3 U4 U6 S={u0 , u1 , u 2 , u3 u4 , u5 ,u6 } U0 1 4 5 2 3 8 6 U2 U1 U3 S={u0 , u1 , u 2 ,u3 } U7 U5 U0 1 4 5 2 3 8 6 U2 U1 U3 U4 U6 S={u0 , u1 , u 2 , u3 u4 , u5 ,u6 ,u7}
Hasil : Jarak u0 ke u1 adalah : 1 Jarak u0 ke u2 adalah : 1+2 = 3 4 5 2 3 8 6 U2 U1 U3 U4 U6 S={u0 , u1 , u 2 , u3 u4 , u5 ,u6 ,u7} Jarak u0 ke u1 adalah : 1 Jarak u0 ke u2 adalah : 1+2 = 3 Jarak u0 ke u3 adalah : 4 Jarak u0 ke u4 adalah : 1+2+2 = 5 Jarak u0 ke u5 adalah : 1+5 = 6 Jarak u0 ke u6 adalah : 1+2+4 = 7 Jarak u0 ke u7 adalah : 1+2+4+1 = 8 S={u0 , u1 , u 2 , u3 u4 , u5 ,u6 ,u7}