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

12
Algoritma Bellman-Ford dan Floyd-Warshall

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

Page 1: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

AlgoritmaBellman-Ford dan Floyd-Warshall

Page 2: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 3: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 4: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 5: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 6: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 7: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 8: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 9: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 10: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 11: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.

Page 12: Algoritma Bellman-Ford dan Floyd-Warshall · Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi ... •Hal yang membedakan pencarian solusi menggunakan

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.