Anda di halaman 1dari 9

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/260302626

IMPLEMENTASI DAN ANALISIS ALGORITMA PENCARIAN RUTE TERPENDEK


DI KOTA SURABAYA

Article

CITATIONS READS

8 11,414

3 authors, including:

Diana Purwitasari
Institut Teknologi Sepuluh Nopember
24 PUBLICATIONS   31 CITATIONS   

SEE PROFILE

All content following this page was uploaded by Diana Purwitasari on 13 August 2014.

The user has requested enhancement of the downloaded file.


94

IMPLEMENTASI DAN ANALISIS ALGORITMA PENCARIAN RUTE TERPENDEK


DI KOTA SURABAYA
Yudhi Purwananto1, Diana Purwitasari2, Agung Wahyu Wibowo

Jurusan Teknik Informatika, Institut Teknologi Sepuluh Nopember (ITS)


1
yudhi@if.its.ac.id, 2diana@if.its.ac.id

Abstrak

Pencarian rute terpendek merupakan satu masalah yang paling banyak dibahas dengan transportasi
sebagai salah satu contoh menarik. Pada beberapa masalah transportasi, penghitungan rute terpendek
memegang peranan penting karena harus dilakukan dalam waktu yang sangat singkat dan pada saat itu
juga. Tiga algoritma penghitungan rute terpendek, yaitu algoritma dijkstra, algoritma floyd, dan
algoritma two queues, akan diujicoba dan dievaluasi untuk mengetahui algoritma yang paling cepat
eksekusinya dengan memperhitungkan faktor-faktor tertentu. Ujicoba dilakukan dengan menggunakan
data jaringan jalan kota Surabaya yang disimpan dalam basis data MySQL. Algoritma penghitungan
diimplementasikan dalam bentuk aplikasi berbasis WEB dan WAP, yang akan memudahkan pengguna
untuk mendapatkan informasi rute terpendek. Berdasarkan uji coba yang telah dilakukan, lama waktu
eksekusi algoritma penghitungan rute terpendek dipengaruhi oleh jumlah node dalam suatu jaringan dan
jumlah node yang diperiksa. Untuk kasus yang jumlah node-nya kurang dari 1000, algoritma dijkstra
mampu menghasilkan waktu eksekusi lebih cepat, yaitu kurang dari 1 detik, sedangkan untuk kasus yang
jumlah node-nya lebih dari 1000, lebih tepat menggunakan algoritma two queues.

Kata kunci : algoritma pencarian rute terpendek, algoritma dijkstra, algoritma floyd, algoritma two
queues, WAP.

Abstract

Shortest path problem is a frequent illustration in optimazion with transportation domain as one of
exciting model. For some transportation cases, finding a shortest path takes important role because the
process is a real time problem. The used algorithms to solve shortest path problem are dijkstra algorithm,
floyd algorithm and two queues algorithm. Those three algorithms will be evaluated for finding the fastest
in execution time considered with some issues. The street network of Surabaya is used as data in MySQL
database for evaluating algorithms. Calculation process for finding shortest path is implemented into web
based and WAP based application to make user get the solution easily. Execution time of shortest path
algorithm is influenced by the amount of nodes being existed in street network and nodes being checked.
For some cases, the amount of nodes under 1000 have dijkstra algorithm as the fastest algorithm with
execution time no more than one second. While other cases two queues algorithm is proved better.

Keywords : shortest path algorithm, dijkstra algorithm, floyd algorithm, two queues algorithm, WAP.

1. Pendahuluan permanen pada setiap iterasinya, sedangkan metode


label correcting menentukan label jarak sebagai
Pencarian rute terpendek merupakan suatu temporal pada setiap iterasi sampai langkah akhir
masalah yang paling banyak dibahas dan dipelajari ketika semua node telah melewati proses
sejak akhir tahun 1950. Pencarian rute terpendek ini pemeriksaan, maka labelnya akan ditentukan sebagai
telah diterapkan di berbagai bidang untuk permanen. algoritma dijkstra adalah salah satu
mengoptimasi kinerja suatu sistem, baik untuk algoritma penghitungan rute terpendek kelas label
meminimalkan biaya atau mempercepat jalannya Setting, sedangkan pada kelas label correcting
suatu proses. Salah satu aplikasi pencarian rute terdapat algoritma floyd dan algoritma two-queues.
terpendek yang paling menarik untuk dibahas adalah Ketiga algoritma ini akan dibandingkan
pada masalah transportasi. performanya, dan juga akan dievaluasi untuk
Dalam pencarian rute terpendek, penghitungan mengetahui faktor-faktor yang mempengaruhi
dapat dilakukan dengan beberapa macam algoritma. performa dari masing-masing algoritma.
Secara garis besar algoritma penghitungan rute Jaringan jalan yang akan digunakan sebagai
terpendek dibagi menjadi dua kelas berdasarkan bahan penghitungan adalah jaringan jalan yang ada
metode pemberian labelnya, yaitu algoritma label di kota Surabaya. Algoritma yang paling cepat
setting dan algoritma label correcting[3]. Metode dalam melakukan penghitungan akan dipakai dalam
label setting menentukan label jarak sebagai jarak aplikasi berbasis teknologi Wireless Application

Jurnal Penelitian dan Pengembangan TELEKOMUNIKASI, Desember 2005, Vol. 10, No. 2
95

Protocol (WAP) untuk mendukung faktor mobilitas label yaitu : label jarak d(i), parent node p(I,) dan
dan kemudahan mengakses dari aplikasi. WAP status node S(i).
adalah sebuah fasilitas yang memungkinkan Proses pemberian label berjalan seiring dengan
mengakses internet melalui alat-alat komunikasi proses scanning (pemeriksaan). Proses pemeriksaan
elektronik tanpa kabel (mobile device). Fasilitas node adalah proses membandingkan jarak antara
WAP biasa terdapat pada handphone atau PDA node awal s dengan node i melalui node j sebagai
(Personal Digital Assistance). Diharapkan dengan node lain dalam suatu jaringan.
digunakannya fasilitas WAP, pengguna bisa
mendapatkan segala macam dan bentuk informasi
yang dibutuhkan dengan mudah dan cepat, termasuk
informasi tentang transportasi.

2. Teori Dasar Graph dan Pencarian Rute


Terpendek

Graph terdiri dari sekumpulan node yang


dihubungkan dengan sekumpulan arc. Notasi untuk
mendeskripsikan suatu graph adalah ( , ), dimana Gambar 2. Graph dari Diagram Data Jalan Kota
adalah sekumpulan node (vertex) dan adalah Surabaya
sekumpulan dari arc (edge) dengan nilai-nilai yang
berasosiasi pada setiap node. Nilai-nilai yang Pada Gambar 2, node A akan dianggap sebagai
berasosiasi itu adalah jumlah node, jumlah arc, dan node awal dan node G dianggap sebagai node
panjang dari arc yang menghubungkan antara node i tujuan. Node A mempunyai label status r
dan j yang dinotasikan sebagai d(i,j). Suatu jaringan (permanen), label jarak d(s) = 0, dan label parent
dapat direpresentasikan sebagai graph. Beberapa p(s) = 0, oleh karena itu node A dianggap sebagai
contoh model jaringan dalam dunia nyata yang dapat node awal. Node B dan node F mempunyai label
direpresentasikan sebagai graph adalah desain status t (temporal) yang berarti node tersebut telah
jaringan pipa minyak, jaringan fisik seperti jalan, rel melalui proses pemberian label tetapi belum melalui
kereta api, atau rute pesawat terbang, jaringan kabel proses pemeriksaan. Node C, D, E dan G
listrik, dan sebagainya. Gambar 1 menunjukkan mempunyai label status u (unreached), label
sebuah jaringan fisik jalan di kota Surabaya yang jaraknya d(i) = ~, dan label parent p(i) = null, karena
sebagian dimodelkan dengan graph G terdiri dari node-node tersebut belum melalui proses pemberian
delapan node = {A,B,C,D,E,F,G,H}. label dan proses pemeriksaan. Pada proses
pemeriksaan node B dan node F, akan dipilih node
dengan nilai bobot yang terkecil yaitu node F, oleh
karena itu, maka label status node F, s(b), akan
berubah menjadi r, label parent, p(b), menjadi A,
dan label jaraknya, d(b) menjadi 8. Proses ini akan
terus berlangsung sampai node tujuan tercapai.

3. Algoritma Dijkstra

Algoritma dijkstra pertama kali dikembangkan


oleh E.W. Dijkstra. Pada perkembangannya,
algoritma ini menggunakan struktur data yang
Gambar 1. Diagram Data Jalan Kota Surabaya berbeda-beda.
Pada umumnya, graph setidaknya mempunyai
Proses penghitungan rute terpendek adalah satu arc penghubung dari satu node ke node yang
proses mencari jarak terpendek atau biaya terkecil lain, sehingga konsekuensinya |E|=| |2. Jika masing-
suatu rute dari node awal ke node tujuan dalam masing node terhubung dengan semua node lainnya
sebuah jaringan. Nilai d(i) merupakan nilai jarak
pada suatu jaringan, maka |E|= (| |2). Graph dengan
atau bobot total terkecil dari suatu rute.
(| |2) disebut dengan dense graph. Pada dunia
Pada proses penghitungan rute terpendek
terdapat dua macam proses yaitu proses pemberian nyata nilai =(| |) karena tidak semua node
label dan proses pemeriksaan node. Metode terhubung dengan masing-masing node lainnya.
pemberian label adalah metode untuk memberikan Keadaan ini disebut dengan sparse graph.
identifikasi pada setiap node dalam jaringan. Pada Untuk merepresentasikan suatu graph dapat
sebagian besar algoritma penghitungan rute digunakan matriks dua dimensi. Untuk tiap node
terpendek, terdapat 3(tiga) label informasi yang (i,j), nilai bobotnya dapat dimasukkan ke dalam aij.
Untuk node yang tidak saling terhubung, nilai
dikelola untuk setiap node i pada proses pemberian
bobotnya dapat diisi dengan tak terhingga. Proses ini

Implementasi dan Analisa Algoritma Pencarian Rute Terpendek di Kota Surabaya (Yudhi Purwananto)
96

memerlukan waktu (| |2) dengan jumlah memori dalam suatu jaringan, kemudian rute-rute ini akan
yang dibutuhkan sebanyak (| |2). Penggunaan dibandingkan, dan rute dengan jarak yang paling
matriks ini cocok untuk merepresentasikan dense pendek akan dipilih sebagai rute terpendek. Proses
graph (lihat Gambar 3), sedangkan untuk sparse ini akan terus berlangsung secara iterasi dan akan
graph representasi yang cocok adalah menggunakan berhenti ketika mencapai node tujuan.
adjacent list (lihat Gambar 4), dimana suatu graph Pada algoritma dijkstra, node-node dibagi
akan direpresentasikan secara linier, sehingga menjadi dua set. Set pertama berisi node yang telah
memori yang dibutuhkan untuk merepresentasikan diperiksa, sedangkan set kedua berisi node yang
sparse graph menggunakan adjacent list adalah belum diperiksa. Untuk menyimpan node-node itu
(|E|). dapat digunakan struktur data array dan priority
queue dengan elemen yang mempunyai urutan
tertentu, yaitu ascending atau descending.
Dengan priority queue, pemilihan node yang
akan diperiksa dilakukan dengan menghapus bobot
paling kecil sampai node tujuan tercapai. Ukuran
dari priority queue dapat mencapai |E|. Terdapat
sejumlah |E| proses memasukkan node serta
menghapus node, maka waktu eksekusinya menjadi
(|E|log|E|), dimana |E| | |2, sehingga akan
mempengaruhi waktu eksekusi menjadi
log|E| 2log| |.

4. Algoritma Floyd

Gambar 3. Representasi Graph dengan Matriks Algoritma floyd adalah algoritma penghitungan
rute terpendek yang dapat mencari semua jarak node
(all pairs shortest path) pada suatu jaringan.
Algoritma floyd menggunakan matriks dua
dimensi sebagai representasi dari sebuah jaringan.
Jika suatu jaringan terdiri dari n buah arc maka
matriks yang akan dibentuk oleh algoritma floyd
untuk proses penghitungan adalah sebesar n x n.
Matriks ini merepresentasikan bobot w dari
keseluruhan arc yang ada pada graph ( , ,) dengan
w(i,j) dimana i adalah node awal dan j adalah node
tujuan.
Bobot dari node i ke node j atau w(i,j)
mempunyai tiga kemungkinan nilai yaitu :
w(i,j) = 0 jika i = j (dari node i ke node i itu
sendiri)
w(i,j) = bobot arc jika i ≠ j dan node i terhubung
dengan node j
w(i,j) = jika i ≠ j dan node i tidak terhubung
dengan node j.
Gambar 4. Representasi Graph dengan Adjacent List Algoritma floyd mampu menghitung bobot
terkecil dari jaringan dengan bobot negatif. Pada
Algoritma dijkstra di sini menggunakan kasus tertentu seperti proses penghitungan biaya
adjacent list untuk merepresentasikan sebuah dengan kemungkinan mengandung bobot negatif,
jaringan. Secara garis besar algortima dijkstra algoritma floyd mempunyai kelebihan dalam
membagi semua node menjadi dua, kemudian memecahkan proses penghitungannya.
dimasukkan ke dalam tabel yang berbeda, yaitu tabel Algoritma floyd akan memeriksa setiap arc dan
permanen dan tabel temporal. Tabel permanen berisi membandingkan setiap “jalur tengah” untuk
node awal dan node-node yang telah melalui proses mendapatkan rute terpendek. Jalur tengah adalah
pemeriksaan dan labelnya telah diubah dari temporal rute yang dilalui dari node c ke node g dengan
menjadi permanen. Tabel temporal berisi node-node melewati node perantara h. Jalur tengah pada
yang berhubungan dengan node pada tabel Gambar 5 akan dipilih sebagai rute terpendek dari
permanen. node c ke node g jika jarak dari node c ke node h
Pemilihan rute algoritma dijkstra dilakukan ditambah jarak dari node h ke node g lebih kecil dari
dengan Best First Search (BFS), dimana sebuah rute jarak dari node c ke node g , d(c, h)+d(h, g)<d(c, g).
akan dihitung jaraknya dari node awal ke node lain

Jurnal Penelitian dan Pengembangan TELEKOMUNIKASI, Desember 2005, Vol. 10, No. 2
97

dari node i dengan semua jalur tengahnya berada


pada set {1,2,3,…k}.
Ketika k = 0 maka rute terpendek dari node i ke
node j tidak terdapat jalur tengah, sehingga definisi
k
rekursif dari ij adalah:
0
ij nil jika i = j atau w(i,j) = (2)
0
ij i jika i ≠ j dan w(i,j) <
Untuk k ≥ 1, jika rute yang terpilih adalah i 
k  j dimana k ≠ j maka predecessor j yang terpilih
sama dengan predecessor j rute terpendek dari node
Gambar 5. Jalur tengah dari node c ke node g k dengan semua jalur tengahnya berada pada set
melalui node h {1,2,3,…k-1}. Berikut adalah definisi rekursif untuk
k ≥ 1:
k k 1
Penghitungan yang dipakai algoritma floyd
ij ij jika d ijk 1
d ikk 1 d kjk 1 (3)
untuk mencari rute terpendek adalah dengan
k k 1
menggunakan metode rekursif. Bobot sebuah rute ij kj jika d ijk 1
d ikk 1 d kjk 1
dari node i ke node j adalah dijk dengan k bernilai
{1,2,3…k}. Jika k = 0 maka nilai dij0 w(i, j ) 5. Algoritma Two Queues
karena dari node i ke node j tidak terdapat jalur Algoritma Graph growth implemented with two
tengah yang dapat dibandingkan dengan bobot rute queues (TQQ) dikembangkan Pallotino pada tahun
dari node i ke node j secara langsung, dengan w(i,j) 1984. Algoritma TQQ menggunakan 2 set label
adalah nilai bobot awal pada matriks yang pertama untuk mengatur node-node yang diperiksa, Q1 dan
kali dibuat. Q2. Q1 merupakan set label prioritas yang berisi
Definisi rekursif yang terdapat pada algoritma node yang telah melalui proses pemeriksaan
floyd adalah sebagai berikut: setidaknya satu kali, dan Q2 merupakan set label non
dij0 w(i, j ) jika k = 0 (1) prioritas yang berisi node-node sisanya. Algoritma
dij0 min dijk 1 , dikk 1 d kjk 1 jika k ≥ 1 TQQ menggunakan dua buah queue sebagai struktur
datanya dan pemilihan rutenya menggunakan FIFO.
Hasil akhir yang diperoleh adalah d(i,j) yang
Kompleksitas dari algoritma ini adalah O(n²m)
merupakan bobot terkecil untuk semua rute dari
dengan n adalah jumlah node dan m adalah jumlah
node i ke node j, dimana i,j . arc.
Berdasarkan definisi rekursif , sebuah prosedur Dengan menggunakan Gambar 2, dapat
bottom-up (mencari dari nilai yang terkecil) dapat diberikan contoh penghitungan rute terpendek dari
digunakan untuk mencari nilai dijk seiring dengan node A ke node G menggunakan algoritma two
bertambahnya nilai k. Input yang dipakai adalah queues . Algoritma ini akan memeriksa satu persatu
matriks bobot w, berukuran n x n yang didefinisikan jarak dan successsor dari semua node, mulai node
pada Gambar 6. pertama (node ke-1) sampai node terakhir (node ke-
n) secara iteratif.
0 15 8
0 1 5
0 3 5
W (i, j ) 0 4
5 0
2 0 12
0

Gambar 6. Representasi Floyd Menggunakan


Matriks dengan Bobot Negatif

Prosedur algoritma floyd akan menghasilkan


matriks D yang merupakan matriks dengan nilai
bobot antar node terkecil, kemudian membuat
predecessor matriks dari matriks D. Bentuk dari Gambar 7. Hasil Penghitungan Rute Terpendek
matriks adalah berupa matriks 0, 1, 2, …, n dengan Algoritma Two-Queues
dimana = n dan kij didefinisikan sebagai
predecessor dari arc atau node j dan rute terpendek

Implementasi dan Analisa Algoritma Pencarian Rute Terpendek di Kota Surabaya (Yudhi Purwananto)
98

Node A akan diperiksa pertama kali sebagai Gambar 8 adalah contoh interseksi model
node ke-1 maka jarak node A, d(A) = 0 dan node B kedua. Jalan Blauran berinterseksi dengan Jalan
serta F sebagai successor. Node B dan node F akan Bubutan, Jalan Kranggan, Jalan Baliwerti, dan Jalan
dimasukkan ke Q2 untuk diperiksa selanjutnya. Pada Praban. Tetapi dari arah jalan Blauran hanya boleh
saat pemeriksaan, algoritma two queues juga mengarah ke jalan Praban atau jalan Bubutan, hal ini
melakukan pemberian label terhadap node-node dikarenakan ada peraturan jalan yang melarang dari
yang nilai jaraknya berubah. Jika node yang nilai arah jalan Blauran belok ke arah jalan Kranggan.
jaraknya berubah pernah diperiksa sebelumnya
setidaknya satu kali maka node ini akan 7. Uji Coba dan Evaluasi
dimasukkan ke Q2 dan diberi label temporal, jika
belum pernah diperiksa akan dimasukkan ke Q1 dan Penggunaan perangkat pendukung yang
diberi label unreached. Proses ini akan terus membentuk purwarupa sistem layanan informasi
berlangsung sampai Q1 dan Q2 kosong sehingga pencarian rute terpendek untuk kota Surabaya
hasil akhir yang diperoleh merupakan rute terpendek dilakukan pada komputer dengan prosesor AMD
dari node awal A ke node tujuan G, seperti Athlon 850MHz, memori 320 MB, hard disk 20 GB
ditunjukkan pada Gambar 7. dan memori video 64 MB. Sedangkan lingkungan
perangkat lunaknya adalah sistem operasi Microsoft
6. Sumber Data XP Professional, Linux Mandrake 9.1, web server
Apache, DBMS server MySQL Server Ver 11.15
Data input yang diperlukan berupa data Distrib 3.23.42-nt, dengan bahasa web scripting PHP
jaringan jalan yang direpresentasikan sebagai graph. v4.2.1, kompiler GCC dan web browser Internet
Suatu pemodelan jalan memerlukan aturan-aturan Explorer 6.0. serta WAP browser M3Gate.
tertentu agar sesuai dengan kondisi jalan yang Pada pengujian digunakan jaringan jalan kota
direpresentasikannya. Ketika suatu segmen garis Surabaya yang diperoleh dari Instansi Pemerintah
bertemu dengan segmen garis yang lain dan saling Surabaya pada tahun 2000. Data jaringan jalan
berinterseksi, maka terdapat tiga kemungkinan dari tersebut akan dibagi menjadi 6(enam) bagian yang
interseksi tersebut : berbeda jumlah total node dalam jaringan, jumlah
a. Segmen-segmen garis tersebut benar-benar arc, dan panjang arc, ditunjukkan pada Tabel 1.
saling berinterseksi dan diperbolehkan untuk Uji coba dilakukan untuk mengetahui
melakukan sembarang belokan dari segmen- kecepatan eksekusi dari masing-masing algoritma
segmen garis yang berinterseksi tersebut. penghitungan rute terpendek. Pada uji coba ini akan
b. Segmen-segmen garis tersebut benar-benar dipilih variabel-variabel yang mempunyai korelasi
saling berinterseksi, namun tidak diperbolehkan dengan algoritma penghitungan rute terpendek
antar segmen garis tersebut untuk saling sehingga dapat diketahui variabel yang bisa
berhubungan, misalnya, melakukan belokan dari mempengaruhi kecepatan eksekusi dari algoritma.
segmen garis yang saling berinterseksi. Hal ini Variabel-variabel ini antara lain : panjang jarak antar
dapat terjadi karena adanya aturan-aturan lalu node, jumlah node yang diperiksa, dan jumlah node
lintas yang harus dipatuhi. total dalam jaringan.
c. Segmen-segmen garis tersebut tidak benar-benar Pada algoritma dijkstra akan diujicobakan
saling berinterseksi. Hal ini karena suatu menggunakan struktur data yang berbeda yaitu array
segmen garis dalam kondisi riil berada di atas dan priority queue. Hal ini bertujuan untuk
segmen garis yang saling berinterseksi tersebut mengetahui struktur data yang paling tepat untuk
(misalnya, dalam memodelkan jalan tol yang digunakan pada algoritma dijkstra. Pada algoritma
berada di atas jalan yang lain). floyd dan two queues struktur data yang digunakan
adalah array karena input dan output dari
perhitungan algoritma floyd dan two queues
berbentuk array.

a. Percobaan 1: Uji Coba Berdasarkan Jumlah


Node
Tabel 1. Data Jaringan Jalan Kota
Panjang Panjang
Jumlah Jumlah Rasio Arc
Kota Arc Arc
Node Arcs / Node
Maximum Minimum
SBY 1 285 336 1.18 2203 m 6m
SBY 2 457 571 1.24 2248 m 6m
SBY 3 589 857 1.45 3432 m 2m
SBY 4 697 1143 1.63 7640 m 2m
Gambar 8. Pemodelan Belokan pada Salah Satu
Ruas Jalan di Kota Surabaya SBY 5 792 1429 1.80 7640 m 2m
SBY 6 863 1713 1.98 7640 m 2m

Jurnal Penelitian dan Pengembangan TELEKOMUNIKASI, Desember 2005, Vol. 10, No. 2
99

Uji coba dilakukan untuk mengetahui, apakah Sedangkan untuk algoritma two queues pada
faktor jumlah node yang diperiksa dapat beberapa kasus mungkin terjadi peningkatan cukup
mempengaruhi waktu eksekusi program dengan tajam, seperti saat menghitung node 29 dengan data
membuat skenario jumlah node sama dalam Surabaya 5, tapi hanya terjadi sesekali.
jaringannya. Data yang digunakan hanya data Peningkatan waktu eksekusi dari node yang
Surabaya 4 – Surabaya 6. Data Surabaya 1 – sedikit ke node yang banyak relatif kecil sehingga
Surabaya 3 tidak dapat digunakan karena sebagian terlihat stabil.
besar node tidak terhubung antara satu dengan yang
lainnya. Waktu eksekusi yang dicatat merupakan b. Percobaan 2: Uji Coba Berdasarkan Jarak
waktu eksekusi rata-rata dari 10 kali percobaan. Antar Node yang Berbeda
Tabel 2 menampilkan hasil uji coba dengan
data Surabaya 5, algoritma dijkstra memerlukan Skenario ini hanya mengubah jarak antar node
waktu eksekusi yang lebih lama ketika jumlah node- yang diperiksa, sedangkan jumlah node yang
nya banyak diperiksa dan jumlah node dalam jaringan yang
diperiksa adalah sama.
Tabel 2. Hasil Uji Coba Berdasarkan waktu eksekusi Uji coba dilakukan untuk mengetahui apakah
SBY 4 SBY 5 SBY 6 Node yang
faktor jarak yang dihitung dapat mempengaruhi
(detik) (detik) (detik) Dilewati waktu eksekusi program.
Lontar ke Indragiri 13 Pada data Surabaya 2 akan melewati jumlah
DJIKS + arr 0,09931 0,11666 0,13537 node yang sama sedangkan jarak yang diperiksa
DJIKS + PQ 0,06108 0,07566 0,08293 akan semakin panjang dibanding Surabaya 1. Untuk
FLOYD 4,31942 4,35703 4,40016
algoritma dijkstra dengan priority queue dan
2-QUEUE 0,34336 0,61585 1,30520
Blauran ke Gajahmada
algoritma two queues waktu eksekusinya kurang
29
dari 1 detik. Selisih waktu tercepat dengan
DJIKS + arr 0,10946 0,13056 0,13999
DJIKS + PQ 0,06119 0,07628 0,08334
terlamanya adalah 0,01 detik untuk algoritma
FLOYD 4,31898 4,35515 4,39555
dijkstra array ; 0,003 detik untuk algoritma dijkstra
2-QUEUE 0,34071 0,59309 1,31564 priority queue; dan 0,004 detik untuk algoritma two
Hangtuah ke Kandangan Jaya 55 queues , sedangkan untuk algoritma floyd waktu
DJIKS + arr 0,12835 0,16135 0,16377 eksekusinya berkisar 4 detik dengan selisih waktu
DJIKS + PQ 0,06815 0,07864 0,08733 0,01 detik.
FLOYD 4,32769 4,35708 4,41861
2-QUEUE 0,34733 0,64217 1,32175 Tabel 3. Hasil Uji Coba Berdasarkan Jarak
SBY 1 SBY 2 SBY 3 SBY 4 SBY 5 SBY 6
Algoritma dijkstra dengan priority queue lebih (detik) (detik) (detik) (detik) (detik) (detik)

cepat waktu eksekusinya dibandingkan dengan Tandes Utara ke Raya Tandes 130 m

array. Waktu eksekusi algoritma floyd dan two DJIKS + arr 0,08254 0,08602 0,09068 0,09092 0,10201 0,11447

queues tidak terpengaruh oleh penambahan jumlah DJIKS + PQ 0,04116 0,04743 0,05216 0,06102 0,07300 0,08246
FLOYD 4,20292 4,21615 4,29923 4,32750 4,35703 4,39690
node. Selisih waktu tercepat dan terlama pada
2-QUEUE 0,03954 0,08442 0,16910 0,28363 0,70662 1,31700
algoritma floyd dan two queues adalah 0,03 detik, Praban ke Kranggan 342 m
sedangkan pada algoritma dijkstra selisihnya adalah DJIKS + arr 0,08263 0,09436 0,09261 0,09960 0,10167 0,12041
0,07 detik. DJIKS + PQ 0,03870 0,05112 0,05278 0,06139 0,07373 0,08226
Pada data hasil uji coba Surabaya 6, FLOYD 4,20434 4,22942 4,29424 4,32264 4,35515 4,40105

peningkatan waktu eksekusi algoritma dijkstra dan 2-QUEUE 0,03561 0,08511 0,16801 0,32173 0,59188 1,30071
Ketintang Selatan ke Ketintang Madya 779 m
floyd tidak terlalu signifikan dibandingkan dengan
DJIKS + arr 0,08122 0,09671 0,08863 0,09899 0,09893 0,11220
data Surabaya 5. Waktu eksekusi yang diperlukan
DJIKS + PQ 0,03766 0,04840 0,05130 0,06101 0,07309 0,08226
algoritma two queues pada Surabaya 6 adalah dua
FLOYD 4,15336 4,21766 4,29112 4,32836 4,36208 4,40874
kali waktu eksekusi pada Surabaya 5. Selisih waktu 2-QUEUE 0,04344 0,08754 0,16393 0,32121 0,62777 1,31900
eksekusi tercepat dan terlama untuk algoritma Semolowaru Tengah ke Klampis Harapan 1325 m
dijkstra =0,05 detik, two queues= 0,1 detik ,dan DJIKS + arr 0,07625 0,08442 0,09628 0,09109 0,09547 0,11354
untuk floyd = 0,01 detik. DJIKS + PQ 0,03836 0,04819 0,05251 0,05872 0,07334 0,08273

Hasil uji coba menggunakan Surabaya 5 dan FLOYD 4,20021 4,22633 4,28872 4,32617 4,35232 4,40495
2-QUEUE 0,03411 0,08371 0,16445 0,34290 0,68356 1,36430
Surabaya 6 pada algoritma dijkstra menunjukkan
Lidah Kulon ke Raya Menganti 2203 m
kecenderungan naik. Hal ini menggambarkan bahwa
DJIKS + arr 0,07917 0,08558 0,09144 0,09301 0,10100 0,11270
perbedaan jumlah node yang diperiksa berpengaruh DJIKS + PQ 0,04241 0,04752 0,05121 0,05954 0,07327 0,08169
terhadap waktu eksekusi. FLOYD 4,20533 4,22142 4,29262 4,33026 4,36538 4,39595
Pada algoritma floyd hasilnya cenderung stabil 2-QUEUE 0,03614 0,08517 0,16713 0,34733 0,63216 1,38570
yang menggambarkan bahwa perbedaan jumlah
node yang diperiksa tidak terlalu berpengaruh Uji coba menggunakan data Surabaya 3, waktu
terhadap waktu eksekusi. eksekusi algoritma dijkstra dan two queues tetap
kurang dari 1 detik dengan selisih waktu 0,01 detik
untuk algoritma dijkstra array; 0,0018 untuk

Implementasi dan Analisa Algoritma Pencarian Rute Terpendek di Kota Surabaya (Yudhi Purwananto)
100

algoritma dijkstra priority queue; dan 0,004 detik Berikutnya akan diamati hasil rute terpendek
untuk algoritma two queues . Jika dibandingkan yang diperoleh dari masing-masing algoritma
waktu eksekusi algoritma two queues menggunakan penghitungan dengan data jaringan jalan Surabaya 4
data Surabaya 2 dengan data Surabaya 3 terdapat – Surabaya 6, sehingga dapat diketahui algoritma
peningkatan yang cukup signifikan, sekitar 2 kali yang dapat menghasilkan rute terpendek dibanding
lipat untuk penambahan jumlah node dalam algoritma lain. Pada Tabel 4 panjang rute yang
jaringan. Waktu eksekusi yang diperlukan floyd dihasilkan tidak sama antara algoritma yang satu
tetap sekitar 4 detik, dengan selisih waktu terlama dengan yang lain.
dan tercepatnya 0,01 detik. Jarak yang dihasilkan masing-masing algoritma
Waktu eksekusi yang diperlukan algoritma two penghitungan rute terpendek menggunakan data
queues pada Surabaya 5 adalah 2 kali waktu Surabaya 4 adalah sama, sedangkan dengan data
eksekusi pada Surabaya 4. Pada data Surabaya 6 Surabaya 5, kemampuan setiap algoritma
waktu eksekusi algoritma dijkstra masih berkisar menemukan rute terpendek berbeda-beda. Pada
kurang dari satu detik, yaitu 0,12 detik, dengan semua kasus menggunakan data Surabaya 5, dijkstra
selisih waktu tercepat dan terlamanya adalah 0,01 menemukan rute paling pendek. Dijkstra dan two
detik. Waktu eksekusi dari algoritma two queues queues memberikan jarak rute terpendek yang sama
sekitar 2 kali lipat dari Surabaya 5, yaitu berkisar pada semua kasus uji coba menggunakan data
pada 1,3 detik dengan selisih antara waktu tercepat Surabaya 6. Hasil penghitungan menggunakan
dan waktu terlamanya adalah 0,08 detik. Pada algoritma dijkstra array tidak berbeda dengan
algoritma floyd waktu eksekusinya sekitar 4,4 detik algoritma dijkstra priority queue.
dengan selisih antara waktu tercepat dan waktu
terlamanya adalah 0,03 detik. d. Percobaan 4: Uji Coba Kemampuan
Hasil uji coba pada Tabel 3 menunjukkan
kecenderungan bergerak stabil. Sehingga faktor Uji coba kemampuan bertujuan untuk
jarak antar node yang dihitung dapat diabaikan mengetahui batasan kemampuan dari masing-masing
karena tidak berpengaruh signifikan terhadap waktu algoritma untuk melakukan penghitungan rute
eksekusi. terpendek. Dari hasil uji coba yang telah dilakukan
terhadap masing-masing algoritma penghitungan
c. Percobaan 3: Uji Coba Kebenaran Hasil rute terpendek menggunakan data jaringan jalan
utama Indonesia dengan jumlah node mencapai
Tabel 4. Hasil Uji Coba Kebenaran 4200 dan jumlah arc lebih dari 6000, algoritma floyd
SBY 4 (meter) SBY 5 (meter) SBY 6 (meter)
sama sekali tidak mampu melakukan penghitungan
rute terpendek. Algoritma dijkstra hanya mampu
Blauran ke Mayjen Sungkono

DJIKS + arr 18.682 5.096 3.692


melakukan penghitungan rute terpendek pada
DJIKS + PQ 18.682 5.096 3.692 sebagian kecil kasus yang diujicobakan, sedangkan
FLOYD 18.682 11.124 9.086 algoritma two queues mampu menyelesaikan semua
2-QUEUE 18.682 5.096 3.692
Blauran ke Gajahmada
kasus yang diujicobakan dengan waktu eksekusi
DJIKS + arr 22.339 8.085 4.650
program rata-rata berkisar pada 15 detik.
DJIKS + PQ 22.339 8.085 4.650 Uji coba kemampuan juga dilakukan dengan
FLOYD 22.339 11.024 4.650 melihat penggunaan memori dari masing-masing
2-QUEUE 22.339 8.085 4.650
Pabean ke Kedung Mangu
algoritma penghitungan rute terpendek dengan data
DJIKS + arr 14.229 13.393 5.096
Surabaya 1 – Surabaya 6, dicatat menggunakan
DJIKS + PQ 14.229 13.393 5.096 fungsi khusus yang dibuat dalam bahasa
FLOYD 14.229 13.393 8.729 pemrograman C. Fungsi tersebut akan mencatat ID
2-QUEUE 14.229 13.393 5.096
Blauran ke Rungkut Madya
eksekusi untuk mendapatkan log penggunaan
DJIKS + arr 25.040 13.137 7.921
memorinya. Hasil uji coba penggunaan memori
DJIKS + PQ 25.040 13.137 7.921 dicatat pada Tabel 5.
FLOYD 25.040 13.330 7.921
2-QUEUE 25.040 13.137 7.921
Hangtuah ke Wonokromo
Tabel 5. Penggunaan Memori pada Uji Coba
DJIKS + arr 29.542 15.288 7.129
DJIKS + PQ 29.542 15.288 7.129
FLOYD 29.542 18.227 7.129
2-QUEUE 29.543 15.288 7.129
Iskandar Muda ke Kebonsari

DJIKS + arr 29.989 17.998 8.729


DJIKS + PQ 29.989 17.998 8.729
FLOYD 29.989 17.998 8.729
2-QUEUE 29.989 18.314 8.729
Hangtuah ke Kandangan Jaya
8. Kesimpulan
DJIKS + arr 30.707 16.748 9.956
DJIKS + PQ 30.707 16.748 9.956
FLOYD 30.707 16.748 15.892
2-QUEUE 30.707 16.748 9.956

Jurnal Penelitian dan Pengembangan TELEKOMUNIKASI, Desember 2005, Vol. 10, No. 2
101

8. Kesimpulan

Untuk studi kasus kota Surabaya, waktu


eksekusi pada algoritma dijkstra, algoritma floyd,
dan algoritma two queues, tidak terpengaruh oleh
variabel jarak yang diperiksa.
Dari hasil rute terpendek yang diperiksa,
kinerja algoritma dijkstra lebih baik daripada dua
algoritma penghitungan rute terpendek yang lainnya.
Hal ini terlihat dari waktu eksekusi yang diperlukan
oleh algoritma dijkstra dan algoritma two queues
berbanding quadratic dengan jumlah node yang
diperiksa, sedangkan untuk algoritma floyd waktu
eksekusinya berbanding cubic dengan pertambahan
jumlah node dalam jaringan.
Untuk suatu kasus data yang memerlukan
penghitungan kurang dari 1000 node, algoritma
dijkstra mempunyai kecepatan eksekusi lebih baik,
yaitu kurang dari 1 detik. Untuk suatu kasus data
yang memerlukan penghitungan lebih dari 1000
node, algoritma two queues lebih tepat untuk
digunakan. Waktu eksekusi dari algoritma label
correcting lebih stabil, tidak terpengaruh oleh
jumlah node yang diperiksa, tetapi lebih ditentukan
oleh jumlah node dalam jaringan.
Penggunaan struktur data priority queue pada
algoritma dijkstra pemakaian space memorinya
lebih kecil dibanding dengan pemakaian struktur
data array.

Daftar Pustaka
[1] Benjamin Zhan, F., 2000, Three Fastest
Shortest Path Algorithms on Real Road
Networks: Data Structures and Procedures,
Journal of Geographic Information and
Decision Analysis, vol.1, no.1, pp. 69-82
[2] Purba, Jan Waren, 2003, Sistem Informasi
Geografis Berbasis Web Dengan Menggunakan
Teknologi Scalable Vector Graphic (SVG) Studi
Kasus Pencarian Lokasi Pelayanan Kesehatan
Terdekat, Tugas Akhir : Jurusan Teknik
Informatika Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember, Surabaya
[3] Zhan, F.B., Noon, C.E, 2000, A Comparison
Between Label-Setting and Label Correcting
Algorithms for Computing One-to-One Shortest
Path, Journal of Geographic Information and
Decision Analysis, Vol. 4 No. 2.

Implementasi dan Analisa Algoritma Pencarian Rute Terpendek di Kota Surabaya (Yudhi Purwananto)

View publication stats

Anda mungkin juga menyukai