ALGORITMA GRAF - Wawan Laksito

Download Report

Transcript ALGORITMA GRAF - Wawan Laksito

ALGORITMA GRAF
1
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.
2
Algoritma Kruskal :
1. 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.
3
Algoritma Kruskal
Contoh :
 Gunakan Algoritma Kruskal untuk
menentukan pohon perentang terbobot
minimum !
5
6
3
2
4
1
7
5
4
2
6
8
4
Algoritma Kruskal
Solusi :
5
6
1
7
3
2
5
5
6
4
4
6
1
2
7
8
3
5
2
1
7
3
5
2
2
7
5
2
6
2
1
7
3
5
2
2
5
4
6
2
1
7
8
4
8
4
6
4
6
5
4
8
4
1
3
8
4
6
6
4
6
5
6
5
3
5
2
4
4
6
2
8
5
hasil
3
1
2
4
2
5
Bobot dari minimal spanning tree adalah : 17
6
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
7
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
8
Algoritma Dijkstra :
1. Tentukan u0 paling kiri. Biasanya u0 diberi
2.
3.
4.
5.
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.
9
Algoritma Dijkstra
1. [inisialisasi] Ambil L(a)=0. untuk semua
2.
3.
4.
5.
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
10
Algoritma Dijkstra
Contoh :
 Carilah lintasan terpendek dari u0 ke setiap
simpul lainnya, dari graf di bawah ini !
5
1
6
2
5
U0
2
5
2
6
4
3
4
3
1
8
11
Solusi
1
5
U0
S={u0 }
U1
5
2
2
3
4
6
2
4
1
5
U0
S={u0 , u1}
2
2
3
4
6
4
1
8
U1
U0
S={u0 , u1 , u 2 }
6
2
2
U2
3
4
1
8
U1
5
6
2
2
U2
4
S={u0 , u1 , u 2 ,u3 } U3
3
4
8
6
2
2
U2
6
3
1
5
S={u0 , u1 , u 2 , u3
u4 , u5 ,u6 ,u7}
1
U6
2
3
U3
6
U5
6
U2
4
U4
5
2
2
U4
U6
5
6
3
4
8
5
3
8
1
U0
2
4
3
U3
5
U5
5
U1
2
1
8
4
5
1
U0
S={u0 , u1 , u 2 , u3
u4 , u5 ,u6 }
6
3
1
5
5
U4
4
3
U0
2
2
U2
U3
5
6
3
4
6
2
U1
2
1
U5
5
4
5
1
5
S={u0 , u1 , u 2 , u3
u4 , u 5 }
6
3
8
1
5
5
U4
4
3
U1
U0
2
2
U2
U3
5
6
3
6
2
4
S={u0 , u1 , u 2 , u3
u4 }
5
2
5
U0
1
8
U1
1
5
6
3
5
U7
1
12
U1
Hasil :
1
6
S={u0 , u1 , u 2 , u3 u4 , u5 ,u6 ,u7}
U5
5
2
5
2
U0
5
U4
2
U2
3
4
6
U7
3
4
1
U3
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
8
U6
13