Analisis Algoritma Floyd-Warshall Aplikasi Pencarian Taksi Terdekat Menggunakan Algoritma Floydwarshall

mencari taksi manakah yang kosong, setelah didapatkan taksi mana sajakah yang kosong, dilanjutkan dengan menemukan taksi yang terdekat dari pelanggan menggunakan algoritma Floyd-Warshall. Setelah didapatkan satu taksi yang terdekat dari pelanggan, pesanan taksi dikirimkan dalam bentuk notifikasi kepada supir taksi. Supir menerima notifikasi dan mengkonfirmasi pesanan tersebut. Apabila supir menjemput pelanggan, output yang dihasilkan adalah peta dengan direction yang menghubungkan keberadaan antara taksi dan pelanggan. Server kemudian akan menyimpan ID taksi yang menjemput beserta koordinat taksi. Lalu server akan mengirimkan notifikasi penjemputan tersebut kepada pelanggan. Apabila notifikasi tesrebut dibuka, akan dihasilkan output yang berupa pemberitahuan mengenai ID taksi yang menjemput, nama supir taksi, jarak antara supir dan pelanggan, serta waktu yang dibutuhkan untuk sampai ke lokasi pelanggan. Jarak dan waktu yang ditampilkan akan di-update secara otomatis.

3.7 Analisis Algoritma Floyd-Warshall

3.7.1 Algoritma Floyd-Warshall Dalam permasalahan lintasan terpendek, Algoritma Floyd-Warshall termasuk dalam lintasan terpendek antara semua pasangan simpul atau all pairs shortest. Algoritma ini dapat menghitung bobot positif atau negatif, tetapi tidak dapat menghitung siklus negatif. Algoritma Floyd-Warshall merupakan suatu algoritma dinamis yang mana merupakan algoritma yang menggunakan seluruh pasangan dalam satu waktu dan menghubungkannya dalam saat yang sama. Gambar 3.7 Contoh Lintasan Terpendek Berdasarkan Gambar 3.7, gunakan k sebagai intermediate path antara titik i dan titik j, yang mana k digunakan untuk menghubungkan antara titik i dan titik j. D ij k : bobot dari lintasan terpendek antara titik i menuju titk j dengan seluruh titik tengah antara {1,2,..,k} k ≥ 1 D ij k = D ij k-1 + D ij k-1 Running time: On 3 Gambar 3.8 Contoh Graf Adapun cara kerja algoritma Floyd-Warshall dalam pencarian lintasan terpendek dapat dilihat dari tahap-tahap berikut ini: 1. Pada algoritma Floyd-Warshall yang akan dicari adalah nilai minimum dari perhitungannya. Seperti yang sudah dijelaskan sebelumnya, k adalah intermediate path, oleh karenanya dituliskan D k. Pada Gambar 3.8 terdapat 4 verteks yaitu: 1, 2, 3 dan 4. Sebagai kasus awal yaitu kasus pada Gambar 3.8 nilai k adalah 0 sehingga menjadi D , berikutnya k bernilai 1 sampai 4 menjadi D 1 , D 2 , D 3 dan D 4 . Tabel 3.7 Tabel D 1 2 3 4 1 8 ∞ 1 2 ∞ 1 ∞ 3 4 ∞ ∞ 4 ∞ 2 9 2. Setelah D , dilanjut dengan D 1 yang mana intermediate path-nya adalah 1. Maka k = 1. Dikarenakan intermediate path-nya adalah 1 maka carilah lintasan yang menjadikan 1 sebagai nilai tengah pada Gambar 3.8, seperti: 3 – 1 – 4 : 4 + 1 = 5 3 – 1 – 2 : 4 + 8 = 12 Sehingga pada tabel D 1 nilainya ada yang berubah seperti yang tertulis pada Tabel 3.7 di bawah. Tabel 3.8 Tabel D 1 1 2 3 4 1 8 ∞ 1 2 ∞ 1 ∞ 3 4 12 5 4 ∞ 2 9 3. Setelah selesai dengan perhitungan D 1 , masuk kepada D 2 . Dalam hal ini, yang menjadi intermediate path bukan hanya 2 melainkan 1 dan 2. Kemudian carilah yang intermediate path-nya adalah 1 dan 2 pada Tabel 3.9, kemudian didapatkan: 1 – 2 – 3 : 9 4 – 2 – 3 : 3 Pada tabel 3.3 nilai 3 yang diwarnai kuning sebelumnya adalah 9, namun setelah dapatkan bahwa nilai dari matriks [4,3] adalah 3 yang mana 3 nilainya lebih kecil dari 9, sehingga 3 menggantikan posisi 9 pada Tabel 3.8. Tabel 3.9 Tabel D 2 1 2 3 4 1 8 9 1 2 ∞ 1 ∞ 3 4 12 5 4 ∞ 2 3 4. Lalu masuk kepada perhitungan D 3 , yang mana pada hal ini yang dapat dijadikan sebagai intermediate path nya adalah 1, 2 dan 3. Maka hubungan yang didapatkan melalui Tabel 3.9 adalah: 2 – 3 – 1 : 9 4 – 3 – 1 : 13 4 – 2 – 3 – 1 : 7 2 – 3 – 1 – 4 : 6 Tabel 3.10 Tabel D 3 1 2 3 4 1 8 9 1 2 5 1 6 3 4 12 5 4 13 7 2 3 Pada Tabel 3.10 nilai dari matriks lintasan 4 – 3 – 1 bernilai 13, namun setelah dihitung lagi dengan menggunakan nilai k atau intermediate path nya 2 dan 3 didapatkan lintasan yang lain yang lebih pendek yaitu 4 – 2 – 3 – 1 dengan nilai 7, maka 7 menggantikan nilai 13 pada matriks [4,1]. 5. Setelah itu masuk pada intermediate path terakhir yaitu D 4 yang mana yang dapat menjadi intermediate path adalah 1, 2, 3 dan 4 namun 4 haruslah tetap menjadi intermediate path. Setelah dilakukan perhitungan, berikut adalah lintasan yang menjadikan 4 sebagai intermediate path: 1 – 4 – 2 : 3 1 – 4 – 3 : 10 1 – 4 – 2 – 3 : 4 3 – 1 – 4 – 2 : 7 Tabe 3.10 Tabel D 4 1 2 3 4 1 3 9 4 1 2 5 1 6 3 4 7 5 4 7 2 3 Pada Tabel 3.10 nilai matriks [3,2] berubah menjadi 3, dikarenakan setelah di- update nilai sebelumnya yaitu 8 lebih besar daripada 3, oleh karenanya 3 menggantikan posisi 8. Begitupun pada matriks [1,3], pada lintasan 1 – 4 – 3 ternyata nilai yang dihasilkan adalah 10, namun karena nilai sebelumnya 9 ternyata lebih kecil dibandingkan 10 sehingga nilai tersebut tidak diubah dan tetap 9. Namun pada perhitungan lintasan 1 – 4 – 2 – 3 didapatkan nilai baru yaitu 4 yang lebih kecil dibandingkan 9, oleh karenanya 4 menggantikan posisi 9 sehingga nilai matriks [1,3] menjadi 4. Yang terakhir adalah pada matriks [3,2] setelah dihitung pada lintasan 3 – 1 – 4 – 2 didapatkan nilai baru yaitu 7 yang adalah lebih kecil dibandingkan nilai sebelumnya yaitu 12, sehingga pada matriks [3,2] 7 menggantikan posisi 12. 3.7.2 Pseudocode Algoritma Floyd – Warshall for k = 0; k this-nodes; k++ { for i = 0; i this-nodes; i++ { for j = 0; j this-nodes; j++ { if this-jarak[i][j] this-jarak[i][k] + this-jarak[k][j] { this-jarak[i][j] = this-jarak[i][k] + this-jarak[k][j]; this-pred[i][j] = this-pred[k][j]; }

3.8 Perancangan Sistem