Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang...

Post on 08-Mar-2019

232 views 0 download

Transcript of Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang...

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.