Upload
duongque
View
233
Download
0
Embed Size (px)
Citation preview
AlgoritmaBellman-Ford dan Floyd-Warshall
Algoritma Bellman-Ford
• Algoritma Bellman-Ford menghitung jarakterpendek (dari satu sumber) pada sebuahdigraf berbobot. Maksudnya dari satu sumberialah bahwa ia menghitung semua jarakterpendek yang berawal dari satu titik node. Algoritma Dijkstra dapat lebih cepat mencarihal yang sama dengan syarat tidak ada sisi(edge) yang berbobot negatif. Maka AlgoritmaBellman-Ford hanya digunakan jika ada sisiberbobot negatif.
0
99
99
99
99
9999
99
99
99
6
4
8
3-4 5
-3
-8
2 -5 -2 3
-45
-2
1 4
-3 4
Bellman-Ford1 Disini kita akan menghitung jarak
terpendek (shortest path) dari atashingga bawah.
0
6
4
8
99
9999
99
99
99
6
4
8
3-4 5
-3
-8
2 -5 -2 3
-45
-2
1 4
-3 4
Bellman-Ford2 Pertama kita lihat bahwa untuk
langkah pertama terdapat tigapilihan, yaitu melalui jalur 6, 4, dan 8. Disini meskipun yang terkecil adalah empat, tetapidalam algoritma Bellman-Ford memperhatikan juga solusitotalnya dan memperhatikan jugajalur negatif yang akan dilalui, sehingga jalur 6 dipilih karenakemudian hasilnya akan lebihsedikit dibanding jalur 4.
0
6
3
8
9
9999
5
99
99
6
4
8
3-4 5
-3
-8
2 -5 -2 3
-45
-2
1 4
-3 4
Bellman-Ford3 Langkah kedua kita pilih jalur -3
karena hasilnya akan lebih sedikitdibanding jika kita memilih jalur 3.
0
6
3
8
-1
9999
8
-5
99
6
4
8
3-4 5
-3
-8
2 -5 -2 3
-45
-2
1 4
-3 4
Bellman-Ford4 Berikutnya kita pilih jalur -4,
sehingga sampai saat ini hasilnyaadalah -1, paling sedikit dibandingjika kita memilih jalur-jalur yang lain.
0
6
3
8
-1
111
8
-6
99
6
4
8
3-4 5
-3
-8
2 -5 -2 3
-45
-2
1 4
-3 4
Bellman-Ford5 Selanjutnya kita pilih jalur -5
sehingga hasilnya akan lebihsedikit lagi yaitu -6.
0
6
3
8
-1
-10-8
8
-6
-6
6
4
8
3-4 5
-3
-8
2 -5 -2 3
-45
-2
1 4
-3 4
Bellman-Ford6 Disini terdapat dua pilihan yaitu
melalui jalur -2 atau -4, meskipunkita lihat -4 lebih sedikit dan akanmenghasilkan hasil yang lebih kecildibanding jika kita memilih -2, namun perlu kita perhatikanlangkah selanjutnya, pada jalur -4,setelah kita melewatinya akanterdapat penjumlahan dengan 4 sehingga menghasilkan hasil akhiryaitu -6, sedangkan pada jalur -2, setelah kita melewatinya, akanterdapat penjumlahan dengan 1 sehingga hasilnya adalah -7 jelaslebih kecil dibanding jalur yang lain.
0
6
3
8
-1
-10-8
8
-6
-7
6
4
8
3-4 5
-3
-8
2 -5 -2 3
-45
-2
1 4
-3 4
Bellman-Ford7 Inilah hasil akhir dari algoritma
Bellman-Ford.
Floyd-Warshall
• Algoritma Floyd-Warshall adalah salah satuvarian dari pemrograman dinamis, yaitu suatumetode yang melakukan pemecahan masalahdengan memandang solusi yang akandiperoleh sebagai suatu keputusan yang salingterkait. Artinya solusi-solusi tersebut dibentukdari solusi yang berasal dari tahap sebelumnyadan ada kemungkinan solusi lebih dari satu.
Floyd-Warshall
• Hal yang membedakan pencarian solusimenggunakan pemrograman dinamis denganalgoritma greedy adalah bahwa keputusan yang diambil pada tiap tahap pada algoritma greedy hanya berdasarkan pada informasi yang terbatassehingga nilai optimum yang diperoleh pada saatitu Jadi pada algoritma greedy, kita tidakmemikirkan konsekuensi yang akan terjadiseandainya kita memilih suatu keputusan padasuatu tahap.
30 km
15 km
42 km
60 km
25 km
20 km
23 km
26 km
28 km
15 km
20 km
G B
A
C
H
F
D
E
Floyd-Warshall
Pada algoritma ini diperhatikan agar hasil akhir adalah se-optimum mungkin. Pada jarak antar kota di atas, dari kota A untuk menuju kota F terdapat beberapa jalur, dapat melalui kota B terlebih dahulu, kota E, atau kota C. Pada algoritma ini dipilih jalur melalui kota C kemudian kekota F sehingga jarak tempuh total adalah 72 km. Berbeda jika kitamemilih kota B atau E terlebih dahulu, karena akan menhasilkan jaraktempuh yang lebih panjang.