Algoritma Floyd-Warshall Aplikasi Pencarian Taksi Terdekat Menggunakan Algoritma Floydwarshall

Google Maps API merupakan aplikasi antarmuka yang dapat diakses lewat javascript agar Google Maps dapat ditampilkan pada halaman web yang sedang dibangun. Dengan menggunakan Google Maps API dapat menghemat waktu dan biaya untuk membangun aplikasi peta digital yang handal, karena pengguna hanya fokus pada data-data yang ingin dikostumisasi saja, untuk data peta sudah disediakan oleh Google Maps. Ada 2 cara untuk mengakses data Google Maps, tergantung dari data yang ingin diambil dan diuraikan dari Google Maps Sirenden Dachi, 2012, yaitu: 1. Mengakses data Google Maps tanpa menggunakan API key. 2. Mengakses data Google Maps menggunakan API key. 3. Pendaftaran API key dilakukan dengan data pendaftaran berupa nama domain web yang kita bangun.

2.5 Algoritma Floyd-Warshall

Algoritma Warshall dikembangkan oleh R.W. Floyd sehingga matriks merupakan graf berbobot dan bukan lagi matriks Boolean Goodaire, 1998. Algoritma Floyd- Warshall adalah sebuah algoritma analisis graf untuk mencari bobot minimum dari graf berarah. Dari 4 jenis permasalahan lintasan terpendek, Algoritma Floyd-Warshall termasuk dalam lintasan terpendek antara semua pasangan simpul atau all pairs shortest path Levitin, 2009. Algoritma ini dapat menghitung bobot positif atau negatif, tetapi tidak dapat menghitung siklus negatif Sharma Kurana, 2013. Dalam satu kali eksekusi algoritma, akan didapatkan jarak sebagai jumlah bobot dari lintasan terpendek antar setiap pasang simpul tanpa memperhitungkan informasi mengenai simpul-simpul yang dilaluinya. Algoritma yang juga dikenal dengan nama Roy-Floyd ini merupakan penerapan strategi dynamic programming. Di sinilah peran pemrograman dinamis yang mencoba untuk memberikan solusi yang memiliki pemikiran terhadap konsekuensi yang ditimbulkan dari pengambilan keputusan pada suatu tahap. Pemrograman dinamis mampu mengurangi penumerasian keputusan yang tidak mengarah ke solusi. Prinsip yang dipegang oleh pemrograman dinamis adalah prinsip optimalitas, yaitu jika solusi total optimal, maka bagian solusi sampai suatu tahap misalnya tahap ke-i juga optimal. Algoritma Floyd-Warshall menyediakan lintasan terpendek antara semua pasangan simpul dengan hanya dijalankan sekali dan merupakan algoritma paling cepat Awasthi et al, 2013. Algoritma Floyd-Warshall dapat digunakan secara efektif pada sistem dengan jumlah node yang besar dan mengarahkan pada perbaikan yang signifikan dalan keefisiensian pada saat dijalankan. Tahapan Algoritma Floyd: 1. Bentuklah sebuat matriks dari graf yang memiliki bobot. 2. Isi sesuai hubungan antara vertex satu ke vertex lainnya. 3. Bandingkan semua vertex dengan rumus ik + kj ij, maka nilai ij diganti dengan nilai ik + kj. 4. Setelah dibandingkan terhadap semua vertex, maka didapatkan hasil terkecil. Algoritma Floyd: 1. n ⃪ rowsF 2. D0 ⃪ F

3. for k ⃪ 1 to n

4. do for i ⃪ to n

5. do for j ⃪ to n

6. � ⃪ � −� , � −� + � −�

7. return Dn

Running time dari algoritma Floyd ditentukan oleh perulangan for bersarang rangkap tiga pada baris 3-6. Setiap eksekusi dari baris ke-6 mengambil O1 kali. Sehingga algoritma ini berjalan dalam waktu Θ n 3 Cormen et al, 1990. Algoritma Floyd membandingkan semua kemungkinan lintasan pada graf untuk setiap sisi dari semua simpul. Algoritma ini mampu mengerjakan proses perbandingkan ini sebanyak Θn 3 kali bandingkan dengan kemungkinan jumlah sisi sebanyak Ωn 2 kuadrat jumlah simpul pada graf, dan setiap kombinasi sisi diujikan. Hal tersebut bisa terjadi karena adanya perkiraan pengambilan keputusan pemilihan lintasan terpendek pada setiap tahap antara dua simpul, hingga perkiraan tersebut diketahui sebagai nilai optimal. Pencarian lintasan terpendek dengan menggunakan algoritma Floyd dapat dilihat dalam contoh kasus berikut. Diketahui sebuah graf seperti pada Gambar 2.11, permasalahannya adalah bagaimana menemukan lintasan terpendek antara semua pasangan simpul. Gambar 2.11 Contoh Graf Boffey, 1982 Langkah-langkah untuk mendapatkan lintasan terpendek antara semua pasangan simpul dengan menggunakan algoritma Floyd: 1. Representasi graf dalam matriks ketetanggaan. 2. Matriks n x n untuk graf dimana n adalah jumlah simpul. 3. Jika i=j maka sisinya bernilai 0, dan jika tidak ada jarak antara i ke j maka sisinya bernilai ∞. 4. Jarak terpendek dari A ke B adalah perpotongan antara baris dan kolom. D =                 7 7 6 5 2 3 11 2 ϴ ⃪             4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 D 1 =                 7 7 6 5 2 3 11 2 ϴ ⃪             4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 D 2 =                7 7 6 5 2 3 11 5 2 ϴ ⃪             4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 D 3 =               7 7 6 5 2 8 3 10 5 2 ϴ ⃪             4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1 D 4 =             7 7 6 5 2 11 8 3 14 10 5 2 ϴ ⃪             4 4 4 4 3 3 3 3 2 2 2 2 1 1 1 1

2.6 Penelitian Terdahulu