Abstract-Pemilihan rute perjalanan tentu sarana transportasi yang dapat menghubungkan dari
sangat penting bagi keluarga jika ingin berpergian dari satu tempat ke tempat lain. Dengan adanya jalan,
suatu tempat ke tempat lainnya demi kenyamanan saat manusia dapat berpindah dari satu tempat ke tempat
diperjalanan dan menghemat waktu, kali ini penulis lain dengan waktu yang lebih efisien. Saat ini, jalan
mencoba untuk membuat suatu program pada rute
terbagi-bagi menjadi beberapa ruas meskipun menuju
perjalanan agar para pengendaran dapat menemukan
rute tercepat untuk sampai dari titik awal ke titik tujuan
ke satu titik yang mungkin saja menjadi tujuan dan
melalui jalur yang mana dari sekian banyak jalur yang sering kali terjadi kemacetan dibeberapa ruas jalan
dapat dilewati. Sehingga, perjalanan lebih efisien Untuk tiba disatu destinasi atau di satu tujuan
termasuk menghemat waktu perjalanan lebih baik jika ering kali memiliki banyak jalur yang dapat dilalui.
dibandingkan melalui jalur yang lainnya Oleh karena Sehingga terkadang pengendara bingung memutuskan
itu, dibutuhkan suatu perhitungan untuk dapat memilih jalur yang mana pada perjalanannya apalagi
memaksimalkan rute perjalanan sehingga menghasilkan jika tujuannya adalah tempat yang pertama kali dia
rute terpendek yang dilalui dari titik awal ke titik tujuan
tuju dan belum pernah kesana sama sekali. Para
dengan menggunakan algoritma dikjstra yang
pengendara cenderung mengikuti petunjuk yang ada di
implementasinya mirip pada rute yang diberikan oleh
google maps. Google Maps adalah salah satu contoh
pinggir jalan untuk memastikan arahnya sudah benar
aplikasi yang dimana menerapkan algoritma dijkstra atau kemana tujuan mereka. Padahal dibeberapa
pada penggunaannya, tidak hanya menunjukkan simpang yang tidak memberikan arahan petunjuk,
lintasan atau jalur, google maps juga menunjukkan ternyata memiliki jalur yang lebih cepat untuk sampai
status lalu lintas selama perjalanan dari titk ke tujuan. Banyaknya pilihan lintasan mendefinisikan
keberangkatan sampai titik tujuan dan selalu update waktu, jarak, dan biaya yang dibutuhkan agar sampai
dengan koneksi jaringan internet. Google maps dapat ke tujuan. Shortest path adalah masalah yang paling
memberikan petunjuk arah pada pengguna selama umum dalam kehidupan sehari-hari seperti sector
berkendara dan menampilkan jalur alternative jika
transportasi, komunikasi dan lainnya. Hal ini yang
terjadi kemacetan pada rute yang dilalui juga dapat
mengatur pengguna untuk menggunakan jalan tol guna
dapat menjadi pertimbangan dalam penggunaan
mempersingkat waktu perjalanan. Mencari shortest path google maps.
antara vertek pada suatu graf merupakan sesuatu yang Perjalanan dari Takengon menuju Medan dapat
dapat diselesaikan dengan menggunakan algoritma ditempuh melalui beberapa jalur yang pada setiap jalur
dikjstra seperti pencarian rute terpendek dari Takengon berkesinambungan sehingga dapat melewati semua
menuju ke Medan sehingga dapat menampilkan rute jalur bahkan berputar untuk dilalui.
mana yang dapat dipilih agar perjalanan lebih cepat dari Algoritma adalah salah satu ilmu sains tentang
beberapa jalur yang dapat dilewati seperti . kecerdasan. Merupakan manifestasi alamiah dari
penalaran logis ataupun induksi matematika. Banyak
Keywords: Algoritma Dikjstra; Rute Terpendek;
graf
langkah dalam pengerjaan suatu algoritma yang
memiliki hubungan sehingga menjadi relasi
pengulangan sederhana, langkah rekursif yang
I. PENDAHULUAN
menghasilkan kompleksitas tanpa batas. Dan dalam
Rute perjalanan merupakan arah atau jarak yang
penyelesaiannya dibutuhkan perhitungan yang sesuai
harus ditempuh oleh para pengendara. Rute perjalanan
untuk melihat nilai kompleksitasnya.
dimulai dari titik awal ke titik tujuan, Jalan adalah
Pelopor Algoritma Dijkstra adalah Edsger W masalah dapat dicapai dengan elegan, sederhana, dan
Dijkstra. Dengan temuannya inilah yang membuat bahkan secara intuitif di atas kertas.
algoritma ini dinamakan algoritma Dijkstra sesuai
dengan nama aslinya dan dianggap sebagai salah satu II. DASAR TEORI
temuan yang cerdas dalam bidang ilmu computer. Algoritma Dijkstra adalah algoritma yang dapat
Dasarnya adalah bahwa Dijkstra percaya pada setiap digunakan untuk menyederhanakan permasalahan
masalah rumit memiliki rantai yang mudah diakses yang di anggap komplek hingga menjadi bagian-
dan matematika adalah alat untuk membedah bagian yang dapat dikerjakan sehingga terlihat
permasalahan tersebut. gampang dalam penyelesaiannya. Dijkstra merupakan
Cara mudah untuk menjelaskan algoritma algoritma yang menerapkan graf berarah juga
Dijkstra bisa dengan menggunakan contoh graf, berbobot, dimana jarak antar titik adalah bobok pada
dimana bobot yang diberikan terdapat pada setiap titik tiap vertek (Lubis,2009). Algoritma ini mencari jalur
yang tersambung. Sebagai contoh kita menempatkan s dengan rute terpendek antar satu dengan lainnya
adalah posisi awal dengan nilai 0. Maka dari itu hingga sampai pada tujuan. Algoritma juga merupakan
dibutuhkan 0 meter untuk dapat sampai ke titik ini lagi pengembangan dari algoritma greedy sehingga
karena ia adalah posisi awal. Kemudian, kita beroperasi pada seluruh fungsi yang ada hingga
sambungkan simpul-simpul pada vertek s untuk menentukan rute terpendek.
menjelajahi. Graf dalam algoritma dijkstra memiliki bobot
pada setiap sisinya. Pada setiap sisi memiliki bobot
yang berbeda-beda tergantung pada model grafnya.
Bobot ini dapat menyatakan jarak antar kota atau antar
node, bobot ini menyatakan estimasi perjalanan, biaya
perjalanan, waktu tempuh pesan, ongkos produksi dan
lainnya.
Google Maps saat ini menjadi pilihan aplikasi
untuk memfasilitasi perjalanan dalam pemilihan rute.
Google Maps tersedia secara gratis yang dikeluarkan
oleh Google dalam kategori teknologi yang
Fig 1. Contoh graf dalam implementasi algoritma Dijkstra
Sumber https://motherboard.vice.com/en_us/ menunjukkan citra satelit, peta jalan, panorama jalan
article/4x3pp9/the-simple-elegant-algorithm-that-makes-google- 360 derajat.
maps-possible Dalam kasus kali ini kita mencari rute terpendek
Pada iterasi pertama, kita melihat ke vertek di dalam graf. Graf yang kita gunakan dalam mencari
terdekat yaitu 1 dan melabelkan dengan node a, dan lintasan terpendek adalah weighted graph yang
selanjutnya dengan jarak masing-masing. Sampai dimana setiap sisinya diberikan bobot atau nilai. Bobot
terhitung semua, dan karena kita mencari rute ini menyatakan jarak antar kota, ongkos perjalanan
terpendek maka kita terpaksa pindah ke d dari node s dan lain-lainnya. Asumsinya disini adalah setiap bobot
dan menetapkan nilai 2 hingga ke d. pada iterasi bernilai positif dan pada setiap rute hingga tujuan kita
berikutnya kita melihat ke c yang jauh yaitu 12. Tetapi akan menentukan jalur paling efektifnya atau
kita masih melihat dari segi yang lainnya yaitu a terpendeknya.
dimana jarak ia ke c bernilai 3. Dan dari a ke b bernilai Tujuan penulisan makalah ini adalah untuk dapat
2. Namun dari b ke t menempuh jarak yang cukup jauh menentukan rute perjlanan terpendek dari
yaitu 12 (akumulasi dari awal) sehingga kita berpindah implementasi medan perjalanan dari Takengon ke
menghitung dari a menuju ke c yang bernilai 3. Hal ini Medan dengan algoritma Dijkstra dan
terlihat rumit, nyatanya tidak karena dengan seperti ini implementasinya dalam Google Maps yang sudah
kita langsung menempuh langsung ke vertek t yang menggunakan
bernilai 4 dari akumulasi awal dan merupakan jalur III. PENYELESAIAN PERHITUNGAN
terpendek yang dapat ditempuh. Dan dengan demikian PENCARIAN RUTE DENGAN
kompleks yang kompleks - eksplosif kompleks- ALGORITMA DIJKSTRA
Shortest path merupakan metode pencarian rute 1. Pilih vertek vi+1 dengan label L(vi+1)
terpendek antara titik pada graf atau jalur yang akan minimum, lalu
dilalui. Masalah yang terjadi pada pencarian lintasan 2. Si+1 = Si {vi+1}
terpendek adalah bagaimana kita mencari sebuah jalur 3. I=i+1, jika i=n-1, selesai. Jika tidak
maka kembali kelangkah kedua.
pada graf yang akan menunjukkan bobot edge
minimum pembentuk jalur tersebut. Untuk Dalam metode lainnya, berikut adalah
memecahkan masalah pencarian rute terpendek dapat algoritma Dijkstra dinyatakan dalam
dilakukan dengan Algoritma Dijkstra. Urutan pseudo-code seperti berikut (Rinaldi
logikanya adalah sebagai berikut: Munir 2005, hal 414) :
1. Berikan bobot untuk setiap titik ke titik Produce Dijkstra (input a: simpul awal,
m:matrix)
lainnya, lalu atur nilai 0 pada node awal dan
(
nilai tak hingga ke node lainnya yang belum Algoritma ini untuk mencari lintasan
terisi. terpendek dari titik atau simpul awal (a)
2. Tambahkan keterangan pada semua titik ke semua simpul yang
“belum terkunjungi” dan set node awal berkesinambungan.
sebagai “Node keberangkatan”. Input : matix (m) dari graf berbobot G
3. Dari node keberangkatan, pertimbangkan dan simpul awal (a)
Output: lintasan terpendek dari a ke
node tetangga yang belum dikunjungi dan simpul lainnya.
hitung jaraknya dimulai dari titik )
keberangkatan. Deklarasi
4. Jika sudah selesai mempertimbangkan setiap s1, s2, ..., sn :integer (tabel integer)
jarak terhadap node tetangga, kita lalu d1, d2, ..., dn :integer (tabel integer)
menandai node yang telah terkunjungi i, j, k: integer
sebagai “Node terkunjungi”. Node Algoritma
( langkah 0 (Inisialisasi:)
terkunjungi tidak akan pernah dicek kembali, for i 1 to n do
jarak yang tersimpan adalah jarak terakhir si0
dan yang paling minimum bobotnya. di mai
Set “Node belum terkunjungi” dengan jarak endfor
paling kecil dari node keberangkatan sebagai (Langkah 1:)
“Node keberangkatan” dan lanjutkan dengan Sa1
Daoo
kembali ke langkah ketiga. Pencarian rute
(Langkah 2,3…,n-1:)
terpendek menggunakan algoritma Dijkstra For k 2 to n do
secara formal akan mengikuti langkah- Jsimpul dengan sj = 0, dj
langkah sebagai berikut: minimal
1. Inisialisasi : i = 0, S0 = {v0} beri vertek Sj1
v0 dengan (0,-) dan pada setiap v v0 akan For semua simpul I dengan si=0 do
diberikan label (~,-). Jika n=1, V={v0} If dj+mji<di then
Didj+mji
maka selesai, jika n lebih dari 1,
Endif
lanjutkan ke langkah kedua. Endfor
2. Untuk setiap v ϵ Si gantikan label pada v Endfor
dengan (L(v),y) dengan : )
previous[v] := undefined ;
end for
dist[source] := 0 ;
Q := the set of all nodes in Graph ;