Floyd-Warshall algorithm

Slides:



Advertisements
Presentasi serupa
MODUL KULIAH STRUKTUR DATA TANGGAL REVISI TANGGAL BERLAKU KODE DOKUMEN :::::: September Pertemuan Ke : 13 / Page BAB IX GRAPH Dinyatakan.
Advertisements

Praktikum ASDL Pertemuan III – Shortest Path.
Tugas #3 File soal UTS sudah dikirim ke alamat masing-masing.
GRAPH Kata Graph di dalam Matematika mempunyai bermacam- macam arti. Biasanya di kenal kata Graph atau Grafik Fungsi, ataupun relasi. Untuk itu kali ini.
Graf Berarah PART 5 DOSEN : AHMAD APANDI, ST.
Pertemuan 13 GRAPH IMAM SIBRO MALISI NIM :
GRAF TIDAK BERARAH PART 2 Dosen : Ahmad Apandi, ST
Pengenalan Graph Disusun Oleh: Budi Arifitama Pertemuan 9.
Design and Analysis of Algorithm Dynamic Programming
Proses Stokastik.
STRUKTUR DATA GRAPH dan DIGRAPH
G R A P H Graph adalah Himpunan V (Vertex) yang elemennya disebut simpul (atau point atau node atau titik) Himpunan E (Edge) yang merupakan pasangan tak.
GRAPH STRUKTUR DATA Disusun Oleh :
MATRIKS PENYAJIAN GRAPH
4. RELASI.
*copyleft*1 Ade Ariyani A Agung Taufiqurrahman Annas Firdausi Hario Adit W Kartika Anindya P Kelompok XII Implementation of Dijkstra’s Shortest Path Algorithm.
Pendahuluan Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut Representasi : Objek : noktah, bulatan.
Pemrosesan Teks Klasterisasi Dokumen Teknik Informatika STMIK GI MDP 2013 Shinta P.
Masalah Jalur Terpendek
5. Pohon Merentang Minimum
BAB VIII G R A F.
Matakuliah : T0034 / Perancangan & Analisis Algoritma
Pertemuan 24 BRANCH AND BOUND (2)
BAB X BENTUK NORMAL CHOMSKY.
Pertemuan 16 DYNAMIC PROGRAMMING : TRAVELING SALESMAN PROBLEM (TSP)
Cayley’s Spanning Tree Formula
5. RANTAI MARKOV WAKTU DISKRIT
Algoritma Greedy (lanjutan)
Algoritma dan Struktur Data 1 pertemuan 6
Graf Berarah / DIGRAPH PART 5 DOSEN : AHMAD APANDI, ST.
Fak. Teknologi Industri
Algoritma Bruteforce Team Fasilkom.
TEORI GRAPH (LANJUTAN)
METODE SIMPLEKS MINIMALISASI. METODE SIMPLEKS MINIMALISASI.
Operations Management
TEORI GRAPH by Andi Dharmawan.
Teori Graph Ninuk Wiliani.
MATRIKS PENYAJIAN GRAPH
Graf Berlabel Graf Euler Graf Hamilton
Metode Eliminasi Gauss Penyelesaian Sistem Persamaan Linier
Algoritma BFS dan DFS Team Fasilkom.
Program Dinamis.
Studi kasus Graph Ali Ridho Barakbah.
Algoritma Bruteforce (disarikan dari diktat Strategi Algoritma, Rinaldi Munir) Team Fasilkom.
Algoritma Runut-balik (Backtracking)
Pertemuan II : pengenalan graf
Kuliah ke 6 Strategi Algoritma
MATRIKS (ARRAY 2 DIMENSI)
TOPSIS SPK SESI 12.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Matematika Diskrit Semester Ganjil TA Short Path.
BAB 10: Short Path Matematika Diskrit DU1023 Heru Nugroho, S.Si., M.T.
STRUKTUR DATA Struktur Data Graf.
STRUKTUR DATA (9) Struktur Data Graf.
Trees Directed Graph Algoritma Dijkstra
ARRAY.
ALGORITMA GRAF.
Pertemuan 17 Lintasan Terpendek
Algoritma Floyd Teori Optimasi.
ANALISA JARINGAN.
Model Jaringan.
Lossless Join Decomposition
Algoritma dan Struktur Data Lanjut
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma Runut-balik (Backtracking)
Desain dan Analisis Algoritma
Aplikasi Graph Minimum Spaning Tree Shortest Path.
Logika Matematika/DPH1A3
Graf dan Analisa Algoritma
Transcript presentasi:

Floyd-Warshall algorithm

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

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.

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.

Mekanisme algoritma Floyd Warshall 1. 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.

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.

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)

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

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)}

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.

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.

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

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))

2 3 4 1 6 5 7 9

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)=

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)=

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) ê ú ê ú ë ê ú û

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)=

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)=

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

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)=

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

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

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

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

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)=

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)=

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)=

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)=

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)=

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

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