Anda di halaman 1dari 8

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

Pencarian rute terpendek merupakan suatu


masalah yang paling banyak dibahas dan dipelajari
sejak akhir tahun 1950. Pencarian rute terpendek ini
telah diterapkan di berbagai bidang untuk
mengoptimasi kinerja suatu sistem, baik untuk
meminimalkan biaya atau mempercepat jalannya
suatu proses. Salah satu aplikasi pencarian rute
terpendek yang paling menarik untuk dibahas adalah
pada masalah transportasi.
Dalam pencarian rute terpendek, penghitungan
dapat dilakukan dengan beberapa macam algoritma.
Secara garis besar algoritma penghitungan rute
terpendek dibagi menjadi dua kelas berdasarkan
metode pemberian labelnya, yaitu algoritma label
setting dan algoritma label correcting[3]. Metode
label setting menentukan label jarak sebagai jarak

permanen pada setiap iterasinya, sedangkan metode


label correcting menentukan label jarak sebagai
temporal pada setiap iterasi sampai langkah akhir
ketika semua node telah melewati proses
pemeriksaan, maka labelnya akan ditentukan sebagai
permanen. algoritma dijkstra adalah salah satu
algoritma penghitungan rute terpendek kelas label
Setting, sedangkan pada kelas label correcting
terdapat algoritma floyd dan algoritma two-queues.
Ketiga
algoritma
ini
akan
dibandingkan
performanya, dan juga akan dievaluasi untuk
mengetahui faktor-faktor yang mempengaruhi
performa dari masing-masing algoritma.
Jaringan jalan yang akan digunakan sebagai
bahan penghitungan adalah jaringan jalan yang ada
di kota Surabaya. Algoritma yang paling cepat
dalam melakukan penghitungan akan dipakai dalam
aplikasi berbasis teknologi Wireless Application

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

95

Protocol (WAP) untuk mendukung faktor mobilitas


dan kemudahan mengakses dari aplikasi. WAP
adalah sebuah fasilitas
yang memungkinkan
mengakses internet melalui alat-alat komunikasi
elektronik tanpa kabel (mobile device). Fasilitas
WAP biasa terdapat pada handphone atau PDA
(Personal Digital Assistance). Diharapkan dengan
digunakannya fasilitas WAP, pengguna bisa
mendapatkan segala macam dan bentuk informasi
yang dibutuhkan dengan mudah dan cepat, termasuk
informasi tentang transportasi.
2.

label yaitu : label jarak d(i), parent node p(I,) dan


status node S(i).
Proses pemberian label berjalan seiring dengan
proses scanning (pemeriksaan). Proses pemeriksaan
node adalah proses membandingkan jarak antara
node awal s dengan node i melalui node j sebagai
node lain dalam suatu jaringan.

Teori Dasar Graph dan Pencarian Rute


Terpendek

Graph terdiri dari sekumpulan node yang


dihubungkan dengan sekumpulan arc. Notasi untuk
mendeskripsikan suatu graph adalah ( , ), dimana
adalah sekumpulan node (vertex) dan
adalah
sekumpulan dari arc (edge) dengan nilai-nilai yang
berasosiasi pada setiap node. Nilai-nilai yang
berasosiasi itu adalah jumlah node, jumlah arc, dan
panjang dari arc yang menghubungkan antara node i
dan j yang dinotasikan sebagai d(i,j). Suatu jaringan
dapat direpresentasikan sebagai graph. Beberapa
contoh model jaringan dalam dunia nyata yang dapat
direpresentasikan sebagai graph adalah desain
jaringan pipa minyak, jaringan fisik seperti jalan, rel
kereta api, atau rute pesawat terbang, jaringan kabel
listrik, dan sebagainya. Gambar 1 menunjukkan
sebuah jaringan fisik jalan di kota Surabaya yang
sebagian dimodelkan dengan graph G terdiri dari
delapan node = {A,B,C,D,E,F,G,H}.

Gambar 2. Graph dari Diagram Data Jalan Kota


Surabaya
Pada Gambar 2, node A akan dianggap sebagai
node awal dan node G dianggap sebagai node
tujuan. Node A mempunyai label status r
(permanen), label jarak d(s) = 0, dan label parent
p(s) = 0, oleh karena itu node A dianggap sebagai
node awal. Node B dan node F mempunyai label
status t (temporal) yang berarti node tersebut telah
melalui proses pemberian label tetapi belum melalui
proses pemeriksaan. Node C, D, E dan G
mempunyai label status u (unreached), label
jaraknya d(i) = ~, dan label parent p(i) = null, karena
node-node tersebut belum melalui proses pemberian
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.

Gambar 1. Diagram Data Jalan Kota Surabaya


Proses penghitungan rute terpendek adalah
proses mencari jarak terpendek atau biaya terkecil
suatu rute dari node awal ke node tujuan dalam
sebuah jaringan. Nilai d(i) merupakan nilai jarak
atau bobot total terkecil dari suatu rute.
Pada proses penghitungan rute terpendek
terdapat dua macam proses yaitu proses pemberian
label dan proses pemeriksaan node. Metode
pemberian label adalah metode untuk memberikan
identifikasi pada setiap node dalam jaringan. Pada
sebagian besar algoritma penghitungan rute
terpendek, terdapat 3(tiga) label informasi yang
dikelola untuk setiap node i pada proses pemberian

Algoritma Dijkstra

Algoritma dijkstra pertama kali dikembangkan


oleh E.W. Dijkstra. Pada perkembangannya,
algoritma ini menggunakan struktur data yang
berbeda-beda.
Pada umumnya, graph setidaknya mempunyai
satu arc penghubung dari satu node ke node yang
lain, sehingga konsekuensinya |E|=| |2. Jika masingmasing node terhubung dengan semua node lainnya
pada suatu jaringan, maka |E|= (| |2). Graph dengan
(| |2) disebut dengan dense graph. Pada dunia
nyata nilai
=(| |) karena tidak semua node
terhubung dengan masing-masing node lainnya.
Keadaan ini disebut dengan sparse graph.
Untuk merepresentasikan suatu graph dapat
digunakan matriks dua dimensi. Untuk tiap node
(i,j), nilai bobotnya dapat dimasukkan ke dalam aij.
Untuk node yang tidak saling terhubung, nilai
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


yang dibutuhkan sebanyak
(| |2). Penggunaan
matriks ini cocok untuk merepresentasikan dense
graph (lihat Gambar 3), sedangkan untuk sparse
graph representasi yang cocok adalah menggunakan
adjacent list (lihat Gambar 4), dimana suatu graph
akan direpresentasikan secara linier, sehingga
memori yang dibutuhkan untuk merepresentasikan
sparse graph menggunakan adjacent list adalah
(|E|).

dalam suatu jaringan, kemudian rute-rute ini akan


dibandingkan, dan rute dengan jarak yang paling
pendek akan dipilih sebagai rute terpendek. Proses
ini akan terus berlangsung secara iterasi dan akan
berhenti ketika mencapai node tujuan.
Pada algoritma dijkstra, node-node dibagi
menjadi dua set. Set pertama berisi node yang telah
diperiksa, sedangkan set kedua berisi node yang
belum diperiksa. Untuk menyimpan node-node itu
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.

Gambar 3. Representasi Graph dengan Matriks

Gambar 4. Representasi Graph dengan Adjacent List


Algoritma dijkstra di sini menggunakan
adjacent list untuk merepresentasikan sebuah
jaringan. Secara garis besar algortima dijkstra
membagi semua node menjadi dua, kemudian
dimasukkan ke dalam tabel yang berbeda, yaitu tabel
permanen dan tabel temporal. Tabel permanen berisi
node awal dan node-node yang telah melalui proses
pemeriksaan dan labelnya telah diubah dari temporal
menjadi permanen. Tabel temporal berisi node-node
yang berhubungan dengan node pada tabel
permanen.
Pemilihan rute algoritma dijkstra dilakukan
dengan Best First Search (BFS), dimana sebuah rute
akan dihitung jaraknya dari node awal ke node lain

Algoritma Floyd

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.
Algoritma floyd mampu menghitung bobot
terkecil dari jaringan dengan bobot negatif. Pada
kasus tertentu seperti proses penghitungan biaya
dengan kemungkinan mengandung bobot negatif,
algoritma
floyd mempunyai kelebihan dalam
memecahkan proses penghitungannya.
Algoritma floyd akan memeriksa setiap arc dan
membandingkan setiap jalur tengah untuk
mendapatkan rute terpendek. Jalur tengah adalah
rute yang dilalui dari node c ke node g dengan
melewati node perantara h. Jalur tengah pada
Gambar 5 akan dipilih sebagai rute terpendek dari
node c ke node g jika jarak dari node c ke node h
ditambah jarak dari node h ke node g lebih kecil dari
jarak dari node c ke node g , d(c, h)+d(h, g)<d(c, g).

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
rekursif dari

Gambar 5. Jalur tengah dari node c ke node g


melalui node h

dij0 min dijk 1 , dikk 1 d kjk 1 jika k 1


Hasil akhir yang diperoleh adalah d(i,j) yang
merupakan bobot terkecil untuk semua rute dari
node i ke node j, dimana i,j .
Berdasarkan definisi rekursif , sebuah prosedur
bottom-up (mencari dari nilai yang terkecil) dapat
digunakan untuk mencari nilai dijk seiring dengan
bertambahnya nilai k. Input yang dipakai adalah
matriks bobot w, berukuran n x n yang didefinisikan
pada Gambar 6.
0

W (i, j )

15
0

0
ij

nil jika i = j atau w(i,j) =

0
ij

i jika i j dan w(i,j) <

(2)

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
k dengan semua jalur tengahnya berada pada set
{1,2,3,k-1}. Berikut adalah definisi rekursif untuk
k 1:

Penghitungan yang dipakai algoritma floyd


untuk mencari rute terpendek adalah dengan
menggunakan metode rekursif. Bobot sebuah rute
dari node i ke node j adalah dijk dengan k bernilai
{1,2,3k}. Jika k = 0 maka nilai dij0 w(i, j )
karena dari node i ke node j tidak terdapat jalur
tengah yang dapat dibandingkan dengan bobot rute
dari node i ke node j secara langsung, dengan w(i,j)
adalah nilai bobot awal pada matriks yang pertama
kali dibuat.
Definisi rekursif yang terdapat pada algoritma
floyd adalah sebagai berikut:
(1)
dij0 w(i, j ) jika k = 0

k
ij adalah:

5.

k
ij

k 1
ij

k
ij

k 1
kj jika

jika

d ijk

d ikk 1

d kjk 1

d ijk

d ikk 1

d kjk 1

(3)

Algoritma Two Queues

Algoritma Graph growth implemented with two


queues (TQQ) dikembangkan Pallotino pada tahun
1984. Algoritma TQQ menggunakan 2 set label
untuk mengatur node-node yang diperiksa, Q1 dan
Q2. Q1 merupakan set label prioritas yang berisi
node yang telah melalui proses pemeriksaan
setidaknya satu kali, dan Q2 merupakan set label non
prioritas yang berisi node-node sisanya. Algoritma
TQQ menggunakan dua buah queue sebagai struktur
datanya dan pemilihan rutenya menggunakan FIFO.
Kompleksitas dari algoritma ini adalah O(nm)
dengan n adalah jumlah node dan m adalah jumlah
arc.
Dengan menggunakan Gambar 2, dapat
diberikan contoh penghitungan rute terpendek dari
node A ke node G menggunakan algoritma two
queues . Algoritma ini akan memeriksa satu persatu
jarak dan successsor dari semua node, mulai node
pertama (node ke-1) sampai node terakhir (node ken) secara iteratif.

8
1
0

5
3
0
5

5
4
0
2

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
matriks adalah berupa matriks 0, 1, 2, , n
dimana
= n dan kij didefinisikan sebagai
predecessor dari arc atau node j dan rute terpendek

Gambar 7. Hasil Penghitungan Rute Terpendek


dengan Algoritma Two-Queues

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

98

Node A akan diperiksa pertama kali sebagai


node ke-1 maka jarak node A, d(A) = 0 dan node B
serta F sebagai successor. Node B dan node F akan
dimasukkan ke Q2 untuk diperiksa selanjutnya. Pada
saat pemeriksaan, algoritma two queues juga
melakukan pemberian label terhadap node-node
yang nilai jaraknya berubah. Jika node yang nilai
jaraknya berubah pernah diperiksa sebelumnya
setidaknya satu kali maka node ini
akan
dimasukkan ke Q2 dan diberi label temporal, jika
belum pernah diperiksa akan dimasukkan ke Q1 dan
diberi label unreached. Proses ini akan terus
berlangsung sampai Q1 dan Q2 kosong sehingga
hasil akhir yang diperoleh merupakan rute terpendek
dari node awal A ke node tujuan G, seperti
ditunjukkan pada Gambar 7.
6.

Sumber Data

Data input yang diperlukan berupa data


jaringan jalan yang direpresentasikan sebagai graph.
Suatu pemodelan jalan memerlukan aturan-aturan
tertentu agar sesuai dengan kondisi jalan yang
direpresentasikannya. Ketika suatu segmen garis
bertemu dengan segmen garis yang lain dan saling
berinterseksi, maka terdapat tiga kemungkinan dari
interseksi tersebut :
a. Segmen-segmen garis tersebut benar-benar
saling berinterseksi dan diperbolehkan untuk
melakukan sembarang belokan dari segmensegmen garis yang berinterseksi tersebut.
b. Segmen-segmen garis tersebut benar-benar
saling berinterseksi, namun tidak diperbolehkan
antar segmen garis tersebut untuk saling
berhubungan, misalnya, melakukan belokan dari
segmen garis yang saling berinterseksi. Hal ini
dapat terjadi karena adanya aturan-aturan lalu
lintas yang harus dipatuhi.
c. Segmen-segmen garis tersebut tidak benar-benar
saling berinterseksi. Hal ini karena suatu
segmen garis dalam kondisi riil berada di atas
segmen garis yang saling berinterseksi tersebut
(misalnya, dalam memodelkan jalan tol yang
berada di atas jalan yang lain).

Gambar 8 adalah contoh interseksi model


kedua. Jalan Blauran berinterseksi dengan Jalan
Bubutan, Jalan Kranggan, Jalan Baliwerti, dan Jalan
Praban. Tetapi dari arah jalan Blauran hanya boleh
mengarah ke jalan Praban atau jalan Bubutan, hal ini
dikarenakan ada peraturan jalan yang melarang dari
arah jalan Blauran belok ke arah jalan Kranggan.
7.

Uji Coba dan Evaluasi

Penggunaan perangkat pendukung yang


membentuk purwarupa sistem layanan informasi
pencarian rute terpendek untuk kota Surabaya
dilakukan pada komputer dengan prosesor AMD
Athlon 850MHz, memori 320 MB, hard disk 20 GB
dan memori video 64 MB. Sedangkan lingkungan
perangkat lunaknya adalah sistem operasi Microsoft
XP Professional, Linux Mandrake 9.1, web server
Apache, DBMS server MySQL Server Ver 11.15
Distrib 3.23.42-nt, dengan bahasa web scripting PHP
v4.2.1, kompiler GCC dan web browser Internet
Explorer 6.0. serta WAP browser M3Gate.
Pada pengujian digunakan jaringan jalan kota
Surabaya yang diperoleh dari Instansi Pemerintah
Surabaya pada tahun 2000. Data jaringan jalan
tersebut akan dibagi menjadi 6(enam) bagian yang
berbeda jumlah total node dalam jaringan, jumlah
arc, dan panjang arc, ditunjukkan pada Tabel 1.
Uji coba dilakukan untuk mengetahui
kecepatan eksekusi dari masing-masing algoritma
penghitungan rute terpendek. Pada uji coba ini akan
dipilih variabel-variabel yang mempunyai korelasi
dengan algoritma penghitungan rute terpendek
sehingga dapat diketahui variabel yang bisa
mempengaruhi kecepatan eksekusi dari algoritma.
Variabel-variabel ini antara lain : panjang jarak antar
node, jumlah node yang diperiksa, dan jumlah node
total dalam jaringan.
Pada algoritma dijkstra akan diujicobakan
menggunakan struktur data yang berbeda yaitu array
dan priority queue. Hal ini bertujuan untuk
mengetahui struktur data yang paling tepat untuk
digunakan pada algoritma dijkstra. Pada algoritma
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
Kota

Gambar 8. Pemodelan Belokan pada Salah Satu


Ruas Jalan di Kota Surabaya

Jumlah
Node

Jumlah Rasio Arc


Arcs
/ Node

Panjang Panjang
Arc
Arc
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

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


faktor jumlah node yang diperiksa dapat
mempengaruhi waktu eksekusi program dengan
membuat skenario jumlah node sama dalam
jaringannya. Data yang digunakan hanya data
Surabaya 4 Surabaya 6. Data Surabaya 1
Surabaya 3 tidak dapat digunakan karena sebagian
besar node tidak terhubung antara satu dengan yang
lainnya. Waktu eksekusi yang dicatat merupakan
waktu eksekusi rata-rata dari 10 kali percobaan.
Tabel 2 menampilkan hasil uji coba dengan
data Surabaya 5, algoritma dijkstra memerlukan
waktu eksekusi yang lebih lama ketika jumlah nodenya banyak
Tabel 2. Hasil Uji Coba Berdasarkan waktu eksekusi
SBY 4
(detik)

SBY 5
(detik)

SBY 6
(detik)

Lontar ke Indragiri

Node yang
Dilewati
13

DJIKS + arr

0,09931

0,11666

0,13537

DJIKS + PQ

0,06108

0,07566

0,08293

FLOYD

4,31942

4,35703

4,40016

2-QUEUE

0,34336

0,61585

1,30520

Blauran ke Gajahmada

29

DJIKS + arr

0,10946

0,13056

0,13999

DJIKS + PQ

0,06119

0,07628

0,08334

FLOYD

4,31898

4,35515

4,39555

2-QUEUE

0,34071

0,59309

1,31564

Hangtuah ke Kandangan Jaya


DJIKS + arr

0,12835

0,16135

0,16377

DJIKS + PQ

0,06815

0,07864

0,08733

FLOYD

4,32769

4,35708

4,41861

2-QUEUE

0,34733

0,64217

1,32175

55

Algoritma dijkstra dengan priority queue lebih


cepat waktu eksekusinya dibandingkan dengan
array. Waktu eksekusi algoritma floyd dan two
queues tidak terpengaruh oleh penambahan jumlah
node. Selisih waktu tercepat dan terlama pada
algoritma floyd dan two queues adalah 0,03 detik,
sedangkan pada algoritma dijkstra selisihnya adalah
0,07 detik.
Pada data hasil uji coba Surabaya 6,
peningkatan waktu eksekusi algoritma dijkstra dan
floyd tidak terlalu signifikan dibandingkan dengan
data Surabaya 5. Waktu eksekusi yang diperlukan
algoritma two queues pada Surabaya 6 adalah dua
kali waktu eksekusi pada Surabaya 5. Selisih waktu
eksekusi tercepat dan terlama untuk algoritma
dijkstra =0,05 detik, two queues= 0,1 detik ,dan
untuk floyd = 0,01 detik.
Hasil uji coba menggunakan Surabaya 5 dan
Surabaya 6 pada algoritma dijkstra menunjukkan
kecenderungan naik. Hal ini menggambarkan bahwa
perbedaan jumlah node yang diperiksa berpengaruh
terhadap waktu eksekusi.
Pada algoritma floyd hasilnya cenderung stabil
yang menggambarkan bahwa perbedaan jumlah
node yang diperiksa tidak terlalu berpengaruh
terhadap waktu eksekusi.

Sedangkan untuk algoritma two queues pada


beberapa kasus mungkin terjadi peningkatan cukup
tajam, seperti saat menghitung node 29 dengan data
Surabaya 5, tapi hanya terjadi sesekali.
Peningkatan waktu eksekusi dari node yang
sedikit ke node yang banyak relatif kecil sehingga
terlihat stabil.
b.

Percobaan 2: Uji Coba Berdasarkan Jarak


Antar Node yang Berbeda

Skenario ini hanya mengubah jarak antar node


yang diperiksa, sedangkan jumlah node yang
diperiksa dan jumlah node dalam jaringan yang
diperiksa adalah sama.
Uji coba dilakukan untuk mengetahui apakah
faktor jarak yang dihitung dapat mempengaruhi
waktu eksekusi program.
Pada data Surabaya 2 akan melewati jumlah
node yang sama sedangkan jarak yang diperiksa
akan semakin panjang dibanding Surabaya 1. Untuk
algoritma dijkstra dengan priority queue dan
algoritma two queues waktu eksekusinya kurang
dari 1 detik. Selisih waktu tercepat dengan
terlamanya adalah 0,01 detik untuk algoritma
dijkstra array ; 0,003 detik untuk algoritma dijkstra
priority queue; dan 0,004 detik untuk algoritma two
queues , sedangkan untuk algoritma floyd waktu
eksekusinya berkisar 4 detik dengan selisih waktu
0,01 detik.
Tabel 3. Hasil Uji Coba Berdasarkan Jarak
SBY 1
(detik)

SBY 2
(detik)

SBY 3
(detik)

SBY 4
(detik)

SBY 5
(detik)

Tandes Utara ke Raya Tandes

SBY 6
(detik)
130 m

DJIKS + arr

0,08254

0,08602

0,09068

0,09092

0,10201

0,11447

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

2-QUEUE

0,03954

0,08442

0,16910

0,28363

0,70662

Praban ke Kranggan

1,31700
342 m

DJIKS + arr

0,08263

0,09436

0,09261

0,09960

0,10167

0,12041

DJIKS + PQ

0,03870

0,05112

0,05278

0,06139

0,07373

0,08226

FLOYD

4,20434

4,22942

4,29424

4,32264

4,35515

4,40105

2-QUEUE

0,03561

0,08511

0,16801

0,32173

0,59188

Ketintang Selatan ke Ketintang Madya

1,30071
779 m

DJIKS + arr

0,08122

0,09671

0,08863

0,09899

0,09893

0,11220

DJIKS + PQ

0,03766

0,04840

0,05130

0,06101

0,07309

0,08226

FLOYD

4,15336

4,21766

4,29112

4,32836

4,36208

4,40874

2-QUEUE

0,04344

0,08754

0,16393

0,32121

0,62777

Semolowaru Tengah ke Klampis Harapan

1,31900
1325 m

DJIKS + arr

0,07625

0,08442

0,09628

0,09109

0,09547

0,11354

DJIKS + PQ

0,03836

0,04819

0,05251

0,05872

0,07334

0,08273

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

Lidah Kulon ke Raya Menganti

1,36430
2203 m

DJIKS + arr

0,07917

0,08558

0,09144

0,09301

0,10100

0,11270

DJIKS + PQ

0,04241

0,04752

0,05121

0,05954

0,07327

0,08169

FLOYD

4,20533

4,22142

4,29262

4,33026

4,36538

4,39595

2-QUEUE

0,03614

0,08517

0,16713

0,34733

0,63216

1,38570

Uji coba menggunakan data Surabaya 3, waktu


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


untuk algoritma two queues . Jika dibandingkan
waktu eksekusi algoritma two queues menggunakan
data Surabaya 2 dengan data Surabaya 3 terdapat
peningkatan yang cukup signifikan, sekitar 2 kali
lipat untuk penambahan jumlah node dalam
jaringan. Waktu eksekusi yang diperlukan floyd
tetap sekitar 4 detik, dengan selisih waktu terlama
dan tercepatnya 0,01 detik.
Waktu eksekusi yang diperlukan algoritma two
queues pada Surabaya 5 adalah 2 kali waktu
eksekusi pada Surabaya 4. Pada data Surabaya 6
waktu eksekusi algoritma dijkstra masih berkisar
kurang dari satu detik, yaitu 0,12 detik, dengan
selisih waktu tercepat dan terlamanya adalah 0,01
detik. Waktu eksekusi dari algoritma two queues
sekitar 2 kali lipat dari Surabaya 5, yaitu berkisar
pada 1,3 detik dengan selisih antara waktu tercepat
dan waktu terlamanya adalah 0,08 detik. Pada
algoritma floyd waktu eksekusinya sekitar 4,4 detik
dengan selisih antara waktu tercepat dan waktu
terlamanya adalah 0,03 detik.
Hasil uji coba pada Tabel 3 menunjukkan
kecenderungan bergerak stabil. Sehingga faktor
jarak antar node yang dihitung dapat diabaikan
karena tidak berpengaruh signifikan terhadap waktu
eksekusi.
c.

Percobaan 3: Uji Coba Kebenaran Hasil


Tabel 4. Hasil Uji Coba Kebenaran
SBY 4 (meter) SBY 5 (meter) SBY 6 (meter)
Blauran ke Mayjen Sungkono
DJIKS + arr

18.682

5.096

DJIKS + PQ

18.682

5.096

3.692

FLOYD

18.682

11.124

9.086

18.682

5.096

3.692

2-QUEUE

3.692

Blauran ke Gajahmada
DJIKS + arr

22.339

8.085

4.650

DJIKS + PQ

22.339

8.085

4.650

FLOYD

22.339

11.024

4.650

2-QUEUE

22.339

8.085

4.650

Pabean ke Kedung Mangu


DJIKS + arr

14.229

13.393

DJIKS + PQ

14.229

13.393

5.096

FLOYD

14.229

13.393

8.729

14.229

13.393

5.096

2-QUEUE

5.096

Blauran ke Rungkut Madya


DJIKS + arr

25.040

13.137

7.921

DJIKS + PQ

25.040

13.137

7.921

FLOYD

25.040

13.330

7.921

2-QUEUE

25.040

13.137

7.921

Berikutnya akan diamati hasil rute terpendek


yang diperoleh dari masing-masing algoritma
penghitungan dengan data jaringan jalan Surabaya 4
Surabaya 6, sehingga dapat diketahui algoritma
yang dapat menghasilkan rute terpendek dibanding
algoritma lain. Pada Tabel 4 panjang rute yang
dihasilkan tidak sama antara algoritma yang satu
dengan yang lain.
Jarak yang dihasilkan masing-masing algoritma
penghitungan rute terpendek menggunakan data
Surabaya 4 adalah sama, sedangkan dengan data
Surabaya 5, kemampuan setiap algoritma
menemukan rute terpendek berbeda-beda. Pada
semua kasus menggunakan data Surabaya 5, dijkstra
menemukan rute paling pendek. Dijkstra dan two
queues memberikan jarak rute terpendek yang sama
pada semua kasus uji coba menggunakan data
Surabaya 6. Hasil penghitungan menggunakan
algoritma dijkstra array tidak berbeda dengan
algoritma dijkstra priority queue.
d.

Uji coba kemampuan bertujuan untuk


mengetahui batasan kemampuan dari masing-masing
algoritma untuk melakukan penghitungan rute
terpendek. Dari hasil uji coba yang telah dilakukan
terhadap masing-masing algoritma penghitungan
rute terpendek menggunakan data jaringan jalan
utama Indonesia dengan jumlah node mencapai
4200 dan jumlah arc lebih dari 6000, algoritma floyd
sama sekali tidak mampu melakukan penghitungan
rute terpendek. Algoritma dijkstra hanya mampu
melakukan penghitungan rute terpendek pada
sebagian kecil kasus yang diujicobakan, sedangkan
algoritma two queues mampu menyelesaikan semua
kasus yang diujicobakan dengan waktu eksekusi
program rata-rata berkisar pada 15 detik.
Uji coba kemampuan juga dilakukan dengan
melihat penggunaan memori dari masing-masing
algoritma penghitungan rute terpendek dengan data
Surabaya 1 Surabaya 6, dicatat menggunakan
fungsi khusus yang dibuat dalam bahasa
pemrograman C. Fungsi tersebut akan mencatat ID
eksekusi untuk mendapatkan log penggunaan
memorinya. Hasil uji coba penggunaan memori
dicatat pada Tabel 5.
Tabel 5. Penggunaan Memori pada Uji Coba

Hangtuah ke Wonokromo
DJIKS + arr

29.542

15.288

7.129

DJIKS + PQ

29.542

15.288

7.129

FLOYD

29.542

18.227

7.129

29.543

15.288

7.129

2-QUEUE

Percobaan 4: Uji Coba Kemampuan

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.

DJIKS + arr

30.707

16.748

DJIKS + PQ

30.707

16.748

9.956

FLOYD

30.707

16.748

15.892

2-QUEUE

30.707

16.748

9.956

Kesimpulan

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)

Anda mungkin juga menyukai