Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Floyd-Warshall algorithm

Presentasi serupa


Presentasi berjudul: "Floyd-Warshall algorithm"— Transcript presentasi:

1 Floyd-Warshall algorithm

2 algoritma Floyd-Warshall
Jika kita mendapatkan jalan terpendek dari A ke B dan dari B ke C, maka kita akan mendapatkan jalan terpendek dari A ke C

3 Algoritma Floyd Warshall
Algoritma Floyd Warshall digunakan untuk mencari jarak terpendek (shortest path) untuk setiap pasangan vertek/node. Algoritma ini menggunakan matriks bobot n x n sebagai masukan, dimana n merupakan jumlah dari vertex.

4 Algoritma Floyd Warshall
Algoritma Floyd-Warshal ini dapat mentolerir negatif edge(tetapi bukan negatif cycle) dan menggunakan suatu tabel dari jarak terpendek untuk setiap pasang node. Ide dari algoritma Floyd Warshal adalah sebagai penentuan awal seluruh jarak terpendek untuk setiap pasang node.

5

6 Mekanisme algoritma Floyd Warshall
Langkah awal yang harus dilakukan untuk menentukan shortest path dengan menggunakan algoritma Floyd Warshal adalah : merepresentasikan suatu graph sebagai suatu matriks bobot. Dimana bobot untuk masing-masing edge adalah: wij = 0 jika i = j, = w(i,j) jika i ≠ j dan (i,j) Є E = ∞ jika i ≠ j dan (i,j) not(E) Format output berupa matrix n x n berjarak D = [dij] dimana dij adalah jarak dari vertex i ke j.

7 Mekanisme algoritma Floyd Warshall
2. Langkah kedua adalah: melakukan dekomposisi Floyd Warshall. Urutannya adalah sebagai berikut: dij(k) merupakan panjang dari shortest path dari i ke j sehingga semua vertex intermediate yang terdapat pada path (jika ada) terkumpul pada (1, 2, …, k}. dij(0) dikumpulkan pada wij, dimana berarti kondisi tidak ada vertex intermediate D(k) menjadi matrix n x n [dij(k)] Tentukan dij(n) sebagai jarak dari i ke j. Jadi, yang dilakukan selanjutnya adalah menghitung D(n) D(n) beranggotakan elemen-elemen dij(n) Hitung D(k) untuk k = 0, 1, …, n.

8 Mekanisme algoritma Floyd Warshall
3. Langkah ketiga adalah: menentukan struktur shortest path. Dalam hal ini, harus dilakukan dua pengamatan terlebih dahulu sebelum melangkah lebih jauh, yaitu: Sebuah shortest path tidak memuat vertex yang sama sebanyak 2 kali. Sebuah path yang memuat vertex 2 kali merupakan cycle. Untuk sebuah shortest path dari i ke j dengan beberapa vertex intermediate pada path dipilih dari kumpulan {1, 2, …, k), dengan 2 kemungkinan: k bukan vertex pada path, path terpendek mempunyai panjang dij(k – 1) k adalah vertex pada path, path terpendek mempunyai panjang dik(k – 1) + dkj(k – 1)

9 Mekanisme algoritma Floyd Warshall
Setelah melakukan pengamatan di atas, kemudian dilakukan penentuan shortest path dari i ke j yang memuat vertex k. Shortest path tersebut memuat sebuah subpath dari i ke k dan sebuah subpath dari k ke j. j k i dik dkj

10 Mekanisme algoritma Floyd Warshall
Setiap subpath hanya dapat memuat vertex intermediate pada {1, …, k-1} dan sedapat mungkin haruslah paling pendek, beri nama panjangnya dik(k – 1) dan dkj(k – 1). Sehingga path mempunyai panjang dik(k – 1) + dkj(k – 1) Dengan menggabungkan dua persamaan tersebut, maka didapat : dij(k) = min { dij(k – 1), dik(k – 1) + dkj(k – 1)}

11 Mekanisme algoritma Floyd Warshall
4. Langkah keempat adalah: melakukan iterasi. Dimulai dari iterasi ke-0 sampai dengan n Perhitungan yang dilakukan adalah: Menentukan D(0) ( iterasi ke-0 )= [wij], merupakan matrix bobot Menentukan D(k) dengan menggunakan dij(k) = min { dij(k – 1), dik(k – 1) + dkj(k – 1)}, untuk k = 1, …, n. Dimana n adalah jumlah verteks.

12 Mekanisme algoritma Floyd Warshall
Hasil akhir dari algoritma Floyd Warshall adalah matriks untuk iterasi ke-n. Dari matriks ke-n ini, dapat dilihat shortest path untuk setiap vertek pada suatu graph.

13 Floyd-Warshall algorithm
RESUME Floyd-Warshall algorithm Catatan: k=0, adalah sebuah path dari vertex i ke vertex j tanpa intermediate vertex. Artinya vertex i ke vertex j terdiri dari 1 link

14 For k 1 to n do for i  1 to n do for j 1 to n dij (k)min(dij(k-1),dik(k-1)+ dkj(k-1))

15

16 2 3 4 1 6 5 7 9

17 Floyd-Warshall algorithm
dij (0)=d15 (0) 2 3 4 1 6 5 7 9 ú û ù ê ë é 3 6 9 1 4 2 7 W=D(0)=

18 k=1 Iterasi ke(1)k=1, untuk baris pertama pada matrix
d11=min(0,0+0)=0 d12=min(3,0+3)=3 d13=min(7,0+7)=7 d14=min(4,0+4)=4 d15=min(∞,0+∞)=∞ d16=min(∞,0+∞)=∞ ú û ù ê ë é 3 6 9 1 4 2 7 W=D(0)=

19 Iterasi ke(1)k=1, untuk baris kedua pada matrix
d21=min(3,3+0)=3 d22=min(0,3+3)=0 d23=min(2,3+7)=2 d24=min(∞,3+4)=7 d25=min(∞,3+∞)=∞ d26=min(9,3+∞)=9 é 3 7 4 ù ê ú 3 2 9 ê ú ê ú ê ú ê ú D21(1)=min(d21(0),d21(0)+d11(0) ê ú ê ú ë ê ú û

20 Iterasi ke(1)k=1, untuk baris ke-tiga dan ke-empat
d31=min(7,7+0)=7 d32=min(2,7+3)=2 d33=min(0,7+7)=0 d34=min(1,7+4)=1 d35=min(3,7+∞)=3 d36=min(6,7+∞)=6 d41=min(4,4+0)=4 d42=min(∞,4+3)=7 d43=min(1,4+7)=1 d44=min(0,4+4)=0 d45=min(3,4+∞)=3 d46=min(∞,4+∞)= ∞ ú û ù ê ë é 3 6 9 1 4 2 7 W=D(0)=

21 Iterasi ke(1)k=1, untuk baris ke-lima dan ke-enam
ú û ù ê ë é 3 6 9 1 4 2 7 d51=min(∞,∞+0)=∞ d52=min(∞,∞+3)=∞ d53=min(3,∞+7)=3 d54=min(3,∞+4)=3 d55=min(0,∞+∞)=0 d56=min(3,∞+∞)=3 d61=min(∞,∞+0)=∞ d62=min(9,∞+3)=9 d63=min(6,∞+7)=6 d64=min(∞,∞+4)=∞ d65=min(3,∞+∞)=3 d66=min(0,∞+∞)=0 W=D(0)=

22 Sehingga matriks akhir untuk Iterasi ke(1)k=1 adalah :
W=D(1) W=D(1) Baris 1(0,3,7,4,∞,∞) Baris 2(3,0,2,∞,∞,9) baris 3(7,2,0,1,3,6) Baris 4(4,7,1,0,3,∞) Baris 5(∞,∞,3,3,0,3) Baris 6(∞,9,6,∞,3,0) ú û ù ê ë é 3 6 9 1 7 4 2

23 Bandingkan hasil iterasi k=0 dan k=1
9 2 6 Shortest path dari 2 ke 4 dan sebaliknya, lewat intermediate 1 3 6 2 3 7 3 1 3 1 5 4 4 3 ú û ù ê ë é 3 6 9 1 4 2 7 ú û ù ê ë é 3 6 9 1 7 4 2 W=D(0)= W=D(1)=

24 Lakukan Iterasi ke(2)k=2
W=D(1) K=2, untuk baris ke-satu dan ke-dua d11=min(0,3+3)=0 d12=min(3,3+0)=3 d13=min(7,3+2)=5 d14=min(4,3+7)=4 d15=min(∞,3+∞)=∞ d16=min(∞,3+9)=12 d21=min(3,0+3)=3 d22=min(0,0+0)=0 d23=min(2,0+2)=2 d24=min(7,0+7)=7 d25=min(∞,0+∞)=∞ d26=min(9,0+9)=9 ú û ù ê ë é 3 6 9 1 7 4 2

25 Iterasi ke(2)k=2, untuk baris ke-tiga dan ke-empat
W=D(1) d31=min(7,2+3)=5 d32=min(2,2+0)=2 d33=min(0,2+2)=0 d34=min(1,2+7)=1 d35=min(3,2+∞)=3 d36=min(6,2+9)=6 d41=min(4,7+3)=4 d42=min(∞,7+0)=7 d43=min(1,7+2)=1 d44=min(0,7+7)=0 d45=min(3,7+∞)=3 d46=min(∞,7+9)= 16 ú û ù ê ë é 3 6 9 1 7 4 2

26 Iterasi ke(2)k=2, untuk baris ke-lima dan ke-enam
d51=min(∞,∞+3)=∞ d52=min(∞,∞+0)=∞ d53=min(3,∞+2)=3 d54=min(3,∞+7)=3 d55=min(0,∞+∞)=0 d56=min(3,∞+9)=3 d61=min(∞,9+3)=12 d62=min(9,9+0)=9 d63=min(6,9+2)=6 d64=min(∞,9+7)=16 d65=min(3,9+∞)=3 d66=min(0,9+9)=0 W=D(1) ú û ù ê ë é 3 6 9 1 7 4 2

27 Matriks akhir hasil Iterasi ke(2)k=2
W=D(2) W=D(2) Baris 1(0,3,5,4,∞,12) Baris 2(3,0,2,7,∞,9) baris 3(5,2,0,1,3,6) Baris 4(4,7,1,0,3,16) Baris 5(∞,∞,3,3,0,3) Baris 6(12,9,6,16,3,0) ú û ù ê ë é 3 16 6 9 12 1 7 4 2 5

28 Bandingkan hasil Iterasi ke(1) dan ke(2)
9 Shortest path dari 1 ke 3 dan sebaliknya, lewat intermediate 2 2 6 3 6 2 3 7 3 1 3 1 5 4 4 3 ú û ù ê ë é 3 6 9 1 7 4 2 ú û ù ê ë é 3 16 6 9 12 1 7 4 2 5 W=D(1)= W=D(2)=

29 Iterasi ke(3)k=3 W=D(2)= W=D(3)=
Shortest path dari 1 ke 5,6 dan sebaliknya, lewat intermediate 2,3 Shortest path dari 2 ke 4,5,6 dan sebaliknya, lewat intermediate 3 Shortest path dari 4 ke 6 dan sebaliknya, lewat intermediate 3 9 2 6 3 6 2 3 7 3 1 3 1 5 4 4 3 ú û ù ê ë é 3 16 6 9 12 1 7 4 2 5 ú û ù ê ë é 3 7 6 8 11 5 1 4 2 W=D(2)= W=D(3)=

30 Iterasi ke(4)k=4 W=D(4)= W=D(3)=
Shortest path dari 1 ke 5 dan sebaliknya, lewat intermediate 4 9 2 6 3 6 2 3 7 3 1 3 1 5 4 4 3 ú û ù ê ë é 3 7 6 8 11 5 1 4 2 ú û ù ê ë é 3 7 6 8 11 5 1 4 2 W=D(4)= W=D(3)=

31 Iterasi ke(5)k=5 W=D(5)= W=D(4)= 2 6
9 2 6 Shortest path dari 4 ke 6 dan sebaliknya, lewat intermediate 5 Shortest path dari 1 ke 6 dan sebaliknya, lewat intermediate4, 5 3 6 2 3 7 3 1 3 1 5 4 4 3 ú û ù ê ë é 3 7 6 8 11 5 1 4 2 ú û ù ê ë é 3 6 8 10 5 7 1 4 2 W=D(5)= W=D(4)=

32 Iterasi ke(5)k=5 W=D(5)= W=D(6)= 2 6 3 1 5 4 ú û ù ê ë é 3 6 8 10 5 7
9 2 6 3 6 2 3 7 3 1 3 1 5 4 4 3 ú û ù ê ë é 3 6 8 10 5 7 1 4 2 ú û ù ê ë é 3 6 8 10 5 7 1 4 2 W=D(5)= W=D(6)=

33 Hasil akhir 9 ú û ù ê ë é 3 6 8 10 5 7 1 4 2 2 6 3 6 2 W=D(6)= 3 7 3 1 3 1 5 4 4 3 Shortest path dari 1 ke 2 dan sebaliknya, tidak ada intermediated12=3 Shortest path dari 1 ke 3 dan sebaliknya, lewat intermediate 2d13=5 Shortest path dari 1 ke 4 dan sebaliknya, tidak ada intermediated14=4 Shortest path dari 1 ke 5 dan sebaliknya, lewat intermediate 4d15=7 Shortest path dari 1 ke 6 dan sebaliknya, lewat intermediate 4,5 d16=10 Dan seterusnya

34 soal Hitunglah D(0), D(1), D(2), D(3), D(4) dan D(5)


Download ppt "Floyd-Warshall algorithm"

Presentasi serupa


Iklan oleh Google