• Tidak ada hasil yang ditemukan

IMPLEMENTASI DAN ANALISIS ALGORITMA PENCARIAN RUTE TERPENDEK DI KOTA SURABAYA

N/A
N/A
Protected

Academic year: 2021

Membagikan "IMPLEMENTASI DAN ANALISIS ALGORITMA PENCARIAN RUTE TERPENDEK DI KOTA SURABAYA"

Copied!
8
0
0

Teks penuh

(1)

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) 1yudhi@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

(2)

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. 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 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

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.

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. 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 masing-masing 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

(3)

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|).

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

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. 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).

(4)

Gambar 5. Jalur tengah dari node c ke node g melalui node h

Penghitungan yang dipakai algoritma floyd untuk mencari rute terpendek adalah dengan menggunakan metode rekursif. Bobot sebuah rute dari node i ke node j adalah k

ij

d dengan k bernilai {1,2,3…k}. Jika k = 0 maka nilai 0 (, )

j i w dij

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: ) , ( 0 j i w dij jika k = 0 (1) 1 1 1 0 , min k kj k ik k ij ij d d d d 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 k ij

d seiring dengan bertambahnya nilai k. Input yang dipakai adalah matriks bobot w, berukuran n x n yang didefinisikan pada Gambar 6. 0 12 0 2 0 5 4 0 5 3 0 5 1 0 8 15 0 ) , ( ji W

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

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 ijkadalah:

nil

ij

0

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

i

ij

0

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

k dengan semua jalur tengahnya berada pada set

{1,2,3,…k-1}. Berikut adalah definisi rekursif untuk k ≥ 1: 1 k ij k ij jika 1 1 1 k kj k ik k ij

d

d

d

(3) 1 k kj k ij jika 1 1 1 k kj k ik k ij

d

d

d

5. 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(n²m) 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 1) sampai node terakhir (node ke-n) secara iteratif.

Gambar 7. Hasil Penghitungan Rute Terpendek dengan Algoritma Two-Queues

(5)

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 segmen-segmen 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. Pemodelan Belokan pada Salah Satu Ruas Jalan di Kota Surabaya

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 Jumlah Node Jumlah Arcs Rasio Arc / Node Panjang Arc Maximum Panjang Arc Minimum SBY 1 285 336 1.18 2203 m 6 m SBY 2 457 571 1.24 2248 m 6 m SBY 3 589 857 1.45 3432 m 2 m SBY 4 697 1143 1.63 7640 m 2 m SBY 5 792 1429 1.80 7640 m 2 m SBY 6 863 1713 1.98 7640 m 2 m

(6)

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 node-nya banode-nyak

Tabel 2. Hasil Uji Coba Berdasarkan waktu eksekusi

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

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

SBY 4 (detik) SBY 5 (detik) SBY 6 (detik) 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 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 55 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 Lontar ke Indragiri Blauran ke Gajahmada

Hangtuah ke Kandangan Jaya

SBY 1

(detik) (detik)SBY 2 (detik)SBY 3 (detik)SBY 4 (detik)SBY 5 (detik)SBY 6 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 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 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 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 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

Lidah Kulon ke Raya Menganti Tandes Utara ke Raya Tandes

Praban ke Kranggan

Ketintang Selatan ke Ketintang Madya

(7)

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

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. Percobaan 4: Uji Coba Kemampuan

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

8. Kesimpulan

SBY 4 (meter) SBY 5 (meter) SBY 6 (meter)

DJIKS + arr 18.682 5.096 3.692 DJIKS + PQ 18.682 5.096 3.692 FLOYD 18.682 11.124 9.086 2-QUEUE 18.682 5.096 3.692 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 DJIKS + arr 14.229 13.393 5.096 DJIKS + PQ 14.229 13.393 5.096 FLOYD 14.229 13.393 8.729 2-QUEUE 14.229 13.393 5.096 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 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 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 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 Hangtuah ke Wonokromo

Iskandar Muda ke Kebonsari

Hangtuah ke Kandangan Jaya Blauran ke Mayjen Sungkono

Blauran ke Gajahmada

Pabean ke Kedung Mangu

(8)

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.

Gambar

Gambar 3. Representasi Graph dengan Matriks
Gambar 6. Representasi Floyd Menggunakan  Matriks dengan Bobot Negatif
Gambar 8. Pemodelan Belokan pada Salah Satu  Ruas Jalan di Kota Surabaya
Tabel 2. Hasil Uji Coba Berdasarkan waktu eksekusi
+2

Referensi

Dokumen terkait

Segala puja dan puji syukur penulis panjatkan kehadirat sang penguasa alam sejati Allah SWT yang telah melimpahkan rahmad dan hidayah-Nya kepada penulis, sehingga penulis

Penelitian menunjukkan bahwa bertambahnya anak bisa menambah stress pasangan, dan mengurangi waktu bersama pasangan (Hendrick &amp; Hendrick, 1992). Kehadiran anak dapat

OGC = -12,868 - 0,903AQ - 0,695ZScore + 6,710ALAG + € Hasil pengujian hipotesis pertama menunjukan bahwa variabel kualitas audit yang diproksikan dengan Kantor Akuntan Publik

Inovasi ialah proses perubahan budaya yang besar tetapi terjadi dalam jangka masa yang tidak.

Kelompok referensi dapat mempengaruhi keputusan pembelian karena saat ini konsumen membeli smartphone iPhone bukan hanya karena keinginan tetapi juga merupakan suatu kebutuhan

baik maka kemampuan perusahaan dalam menghasilkan laba akan semakin tinggi. Modal kerja yang dapat didefinisikan sebagai aktiva lancar

Jawaban mengapa agama secara de facto adalah institusi sosial, jikalau dalam institusi sosial non keagamaan orang menginginkan tercapainya secara pasti kebtuhan sosial dasar,

Data yang diperoleh dari hasil recall pola makan 24 jam. dibandingkan dengan studi literatur Daftar