2.2 Algoritma Dijkstra
Algoritma Dijkstra ditemukan oleh seorang berkebangsaan Belanda yang telah menjadi ilmuan komputer yang terdepan dan menghasilkan beberapa algoritma
didalam suatu graf yaitu Edsger Wybe Dijkstra. Algoritma Dijkstra menemukan rute terpendek dari sebuah simpul spesifik A menuju simpul spesifik E, jika diteruskan
maka akan memberikan rute terpendek dari simpul spesifik A menuju seluruh simpul – simpul didalam sebuah graf [2].
Pseudocode algoritma Dijkstra : Untuk setiap node tetapkan totalJarak[verteks] = HIGH
verteksTerselesaikan = kosong verteksBelumTerselesaikan = kosong
tambahkan verteksTitikAwal kedalam verteksBelumTerselesaikan totalJarak[verteksTitikAwal] = 0
selama verteksBelumTerselesaikan tidak kosong {
verteksEvaluasi = cariVerteksDenganTotalJarakTerkecil verteksBelumTerselesaikan
hapus verteksEvaluasi dari verteksBelumTerselesaikan tambahkan verteksEvaluasi ke verteksTerselesaikan
evaluasiTetanggaverteksEvaluasi }
cariVerteksDenganTotalJarakTerkecilverteksBelumTerselesaikan {
temukan verteks dengan jarak terkecil dalam verteksBelumTerselesaikan dan kembalikan
} evaluasiTetanggaverteksEvaluasi {
untuk setiap verteksTujuan yang dapat dicapai dengan sebuah edge dari verteksEvaluasi dan bukan termasuk verteksTerselesaikan {
jarakEdge = cariJarakedgeverteksEvaluasi, verteksTujuan jarakBaru = jarak[verteksEvaluasi] + jarakEdge
jika jarak[verteksTujuan] jarakBaru { jarak[verteksTujuan] = jarakBaru
tambahkan verteksTujuan ke verteksBelumTerselesaikan }
} }
Algoritma Dijkstra akan mengunjungi seluruh node yang terdapat dalam suatu kesatuan graf. Satu kesatuan graf ini merupakan data tiap – tiap simpul yang berada
dalam graf tersebut dengan menghubungkan nya secara bertetanggaan dengan simpul
Universitas Sumatera Utara
– simpul yang lain dengan memiliki suatu nilai dalam hal ini jarak dalam hubungan ketetanggaannya. Algoritma ini akan memulai kerjanya setelah mendapatkan inputan
simpul awal yang merupakan anggota dari kesatuan graf. Setelah mendapatkan inputan node awal, Algoritma Dijkstra akan memberikan nilai pada masing – masing
simpul bernilai tak berhingga atau infinity kecuali simpul awal yang diberi nilai nol. Kemudian algoritma Dijkstra akan mengunjungi setiap simpul yang bertetanggaan
dengan simpul awal dan mengambil nilai jarak diantara keduanya. Nilai jarak tersebut akan ditotalkan dengan nilai simpul awal dan kemudian dibandingkan dengan nilai
simpul tetangga yang sedang dikunjungi. Apabila nilai yang baru bernilai lebih kecil daripada nilai sebelumnya maka nilai dari simpul tetangga yang sedang dikunjungi
tadi akan diubah dengan nilai yang baru. Proses ini dilakukan untuk setiap simpul tetangga yang dimiliki simpul awal. Setelah seluruh simpul tetangga telah memiliki
nilai baru yang tentu saja bukan lagi tak berhingga infinity maka simpul awal dapat ditinggalkan dan proses akan kembali berulang untuk simpul yang memiliki nilai
paling kecil diantara simpul tetangga. Proses ini akan terus dilakukan sampai seluruh simpul telah dikunjungi.
Pada prosesnya algoritma Dijkstra akan memberikan sebuah petunjuk pada masing – masing simpul selain inputan simpul awal yaitu sebuah kode yang
menunjukkan bahwa nilai yang dimiliki sebuah simpul merupakan nilai yang paling kecil yang didapat setelah dikunjungi simpul yang lain. Kode ini berisi nama simpul
yang akan digunakan dalam menyusun sebuah jalur terpendek ke simpul tersebut yang berasal dari simpul inputan awal.
Jika proses yang dilakukan oleh algoritma Dijkstra telah selesai maka kita akan mendapatkan dua hal, yaitu nilai pada masing – masing simpul dan petunjuk
pada masing – masing simpul yang merupakan rute terpendek. Dengan dua hasil ini pengguna hanya perlu memberikan inputan simpul akhir maka program akan
menunjukkan sebuah rute yang paling pendek untuk menuju inputan simpul akhir dari inputan simpul awal.
Universitas Sumatera Utara
2.3 Sistem Informasi Geografis