Algoritma Warshall
Algoritma Warshall
PATH MINIMUM
1. Algoritma Warshall
Algoritma yang ditemukan oleh Warshall untuk mencari path terpendek
merupakan algoritma yang sederhana dan mudah implementasinya.
Masukan Algoritma Warshall adalah matriks hubung graf berarah berlabel,
dan keluarannya adalah path terpendek dari semua titik ke semua titik.
Dalam usaha untuk mencari path terpendek, algoritma Warshall
memulai iterasi dari titik awalnya kemudian memperpanjang path dengan
mengevaluasi titik demi titik hingga mencapai titik tujuan dengan jumlah
bobot yang seminimum mungkin.
Misalkan W o adalah matriks hubung graf berarah berlabel mula-mula.
¿ ¿
W adalah matriks hubung minimal dengan w ij = path terpendek dari titik
v i ke v j.
Algoritma Warshall untuk mencari path terpendek adalah sebagai berikut :
1. W =W o
2. Untuk k = 1 hingga n, lakukan :
Untuk i = 1 hingga n, lakkukan :
Untuk j = 1 hingga n lakukan :
Jika W i,j > W i,k + W k,j
maka tukar W i,j dengan W i,k + W k,j
3. W ¿ =W
Keterangan :
W = matrik
WO = matriks ketetanggaan awal
k = iterasi 1 sampai ke-n
i = titik awal v i
j = titik awal v j.
¿
W = hasil matrik setelah perbandingan
Dalam iterasinya untuk mencari path terpendek, algoritma Warshall
membentuk n matriks, sesuai dengan iterasi–k. Ini menyebabkan waktu
prosesnya lambat, terutama untuk n yang besar. Meskipun waktu prosesnya
bukanlah yang tercepat, algoritma Warshall sering dipergunakan untuk
menghitung path terpendek karena kesederhanaan algoritmanya. Program
implementasi algoritma Warshall sangat mudah dibuat.
Algoritma Warshall Untuk Graf Tidak Berarah
Algoritma Warshall dikembangkan oleh R. W. Floyd sehingga
Algoritma Warshall dapat digunakan untuk mencari jarak antara semua
titik dalam graf. Algoritma ini sangat efesien dari sudut pandang
penyimpanan data karena dapat diimplementasikan dengan hanya
pengubahan sebuah matriks jarak. Algoritma Warssshall memiliki input
graf tak berarah dan berbobot (V, E), yang berupa himpunan titik (titik
V) dan himpunan sisi (sisi E). Bobot sisi e dapat diberi symbol d ( i, j ) .
Diketahui n titik dalam graf tidak berarah adalah v 1 , v 2 , v 3 , … , v n
untuk menentukan lintasan terpendek di antara semua pasangan titik,
dengan langkah sebagai berikut.
Langkah 1
Untuk i≠ j, jika v i v j adalah sisi, ambil d ( i, j ) sebagai bobot dari sisi
tersebut . Jika tidak ada sisi yang mehubungkan langsung antara i
dan j ditulis d ( i, j )=∞ , untuk i= j, maka ditulis d ( i, j )=0.
Langkah 2
Untuk i , j=1 sampai n ditulis d ( i, j )=min { +d ( k , j ) }
Nilai akhir dari d ( i, j ) adalah jarak dari v i ke v j. (Goodaire &
parmeter, 1998:382)
Contoh :
Carilah path terpendek dari titik v l ke titik v j (i , j=1 , 2… ,6) graf berarah
berlabel pada gambar berikut :
Penyelesaian :
Matriks hubung graf gambar diatas adalah
Iterasi untuk k =1
Untuk setiap sel matriks W dicek apakah W [ i, j ] >W [ i ,1 ] +W [1 , j].
Jika ya, maka W [ i, j ]diganti dengan W [ i, 1 ] +W [1 , j]. Sebagai contoh :
W [ 1 ,2 ]=7 , sedangkan W [ 1 ,1 ] +W [ 1 ,2 ]=∞+ 7.
Karena W [ 1 ,2 ] ≯ W [ 1 , 1 ] +W [ 1 , 2 ] maka harga W [ 1 ,2 ] tidak diubah.
W [ 5 , 4 ] =∞ , sedangkan W [ 5 ,1 ] +W [ 1 , 4 ] =2+2=4.
Karena W [ 5 , 4 ] >W [ 5 , 1 ] + W [ 1 , 4 ] maka harga W [ 5 , 4 ]diubah menjadi
4.
Ini berarti bahwa ada path dari v 5 ke v 4 melalui v 1 yang mempunyai
bobot lebih kecil (yaitu path v 5 v 1 v 4dengan jumlah bobot 4)
dibandingkan dengan path dari v 5 ke v 4 secara langsung (bobot =
karena tidak ada path dari v 5 ke v 4secara langsung).
Dengan cara yang sama, harga W [ i, j ]dihitung untuk setiap i dan j.
Didapatkan matriks :
Iterasi untuk k =2
Iterasi untuk k =2 dilakukan dengan cara yang sama seperti iterasi untuk
k =1, hanya titik perantaranya adalah titik v 2. Sebagai contoh :
W [ 6 , 5 ] =∞ , sedangkan W [ 6 , 2 ] + W [ 2 , 5 ] =1+1=2. Karena
W [ 6 , 5 ] >¿ W [ 6 , 2 ] + W [ 2 , 5 ] maka harga W [6 , 5] diganti dengan
2. Ini berarti bahwa path dari v 6ke v 5 melalui v 2(v 6 v 2 v 5 )lebih
pendek dibandingkan path dari v 6 ke v 5 secara langsung atau
melalui v 1.
Proses yang sama dilakukan untuk semua harga i dan j. Didapatkan :