bantu = new DecimalFormat..formatsPath[tujuan].getJarak+:;
while tujuan = awal { paths = daftarVertex[tujuan].getNama
+ \n + paths; tujuan =
findIndexdaftarVertex[sPath[tujuan].getFrom] .getNama;
} paths = daftarVertex[awal].getNama + \n
+ paths; paths = bantu + paths;
} return paths;
} public String dijkstraString awal, String tujuan {
int a = findIndexawal; int b = findIndextujuan;
daftarVertex[a].setInGraphtrue; jumGraph = 1;
for int i = 0; i jumlah_vertex; i++ { double jarakSementara = edge[a][i];
sPath[i] = new TemporaryJalur_n_Jaraka, jarakSementara;
} while jumGraph jumlah_vertex {
int minIndeks = getMin; double minDist =
sPath[minIndeks].getJarak; if minDist == INFINITE {
break; } else {
vertSkrg = minIndeks;
SYSTOOLS DEMO
int finish = findIndextujuan; String paths, bantu;
int[][] path = new int[jumlahHalte][jumlahHalte]; for int i = 0; i path.length; i++ {
for int j = 0; j path.length; j++ { if jarak[i][j] == INFINITE {
path[i][j] = -1; } else {
path[i][j] = i; }
} }
for int i = 0; i jumlahHalte; i++ { path[i][i] = i;
} for int i = 0; i jarak.length; i++ {
for int j = 0; j jarak.length; j++ { for int k = 0; k jarak.length; k++ {
if jarak[j][i] + jarak[i][k] jarak[j][k] {
jarak[j][k] = jarak[j][i] + jarak[i][k];
path[j][k] = path[i][k]; }
} }
} bantu =
newDecimalFormat..formatjarak[start][finish]+:; paths = daftarVertex[finish].getNama;
while path[start][finish] = start { paths =
daftarVertex[path[start][finish]].getNama + \n + paths;
SYSTOOLS DEMO
public ListString perpindahanBus2StringTokenizer stoken {
ListString answer = new ArrayListString; ListString jalurPilihan = new
ArrayListString; while stoken.hasMoreElements {
jalurPilihan.addstoken.nextToken\n; }
ListList daftarTrayek = new ArrayListList; for int i = 0; i jalurPilihan.size; i++ {
if i = 0 { int awal =
findIndexjalurPilihan.geti - 1; int tujuan =
findIndexjalurPilihan.geti; daftarTrayek.addedgeTrayek[awal][tujuan];
} }
ListString bantu = daftarTrayek.get0; String baru = ;
String perpindahanHalte = ; for int i = 1; i daftarTrayek.size; i++ {
baru = ; for int j = 0; j bantu.size; j++ {
for int k = 0; k daftarTrayek.geti.size; k++ {
if bantu.getj.equalsdaftarTrayek.geti.getk {
SYSTOOLS DEMO
answer.addNaik bus trayek: + bantu.geti;
} }
answer.addperpindahanHalte; return answer;
}
Gambar 4.3 Gambar Source Code untuk Perpindahan Bus
4.4. Implementasi Penghitungan Running Time Sebuah Algoritma pada
Kelas SitesOverlay
Penghitungan running time algoritma dilakukan pada kelas SitesOverlay dengan memanfaatkan syntax System.nanoTime yang
diletakkan di awal sebelum pemanggilan algoritma dan di akhir sesudah pemanggilan algoritma. Hal ini dilakukan untuk memeperoleh waktu mulai
dan waktu selesai jalannya sebuah algoritma. Waktu selesai kemudian harus dikurangi dengan waktu mulai agar mendapatkan lawa waktu yang diperlukan
bagi sebuah algoritma untuk melakukan penghitungan. Lama waktu yang didapat kemudian dibagi dengan satu juta untuk mendapatkan waktu dalam
satuan milliseconds. Gambar 4.4 adalah gambar yang berisi source code untuk penghitungan running time setiap algoritma yang digunakan dalam sistem.
startTime = System.nanoTime; bantuToken = new StringTokenizergraph.dijkstraawal[i],
tujuan[j],:; finishTime = System.nanoTime;
SYSTOOLS DEMO
belakang, sedangkan tiga button digunakan untuk mengakses halaman peta dan Help. Gambar 4.5 adalah gambar dari hasil
halaman menu yang telah dibuat dan gambar 4.6 adalah source code yang digunakan untuk membuat halaman menu.
Gambar 4.5 Tampilan Halaman Menu
?xml version=1.0 encoding=utf-8? RelativeLayout
xmlns:android=http:schemas.android.comapkresandroi d
android:layout_width=match_parent android:layout_height=match_parent
ImageView android:id=+idimageView1
android:layout_width=wrap_content android:layout_height=wrap_content
android:layout_alignParentTop=true android:src=drawabletitle
SYSTOOLS DEMO
menggunakan MapView dari Google yang telah diisi API Key- nya. Pada halaman ini juga digunakan AutoCompleteTextView
yang digunakan untuk menginputkan nama halte yang akan dicari oleh pengguna. File
“activity_main.xml” juga menggunakan
file xml lain yang bernama
“mydropdownstyle.xml” yang digunakan untuk merubah warna text dan latar belakang pada AutoCompleteTextView yang
digunakan. Berikut ini adalah gambar 4.7, 4.8, dan 4.9 yang merupakan tampilan dari halaman peta dan source code dari
file xml dari “activity_main.xml” dan “mydropdownstyle.xml”.
SYSTOOLS DEMO
android:layout_height=wrap_content android:layout_alignParentBottom=true
android:layout_centerHorizontal=true android:text=stringDetail
LinearLayout android:id=+idzoomControls1
android:layout_width=wrap_content android:layout_height=100dp
android:layout_alignParentBottom=true android:layout_centerHorizontal=true
android:orientation=vertical LinearLayout
AutoCompleteTextView android:id=+ideditText1
android:layout_width=wrap_content android:layout_height=wrap_content
android:layout_alignParentLeft=true android:layout_alignParentTop=true
android:layout_toLeftOf=+idbutton1 android:textColor=000000
android:ems=10 android:text=stringempty
requestFocus Button
android:id=+idbutton1 android:layout_width=wrap_content
android:layout_height=wrap_content android:layout_alignParentRight=true
android:layout_alignParentTop=true android:text=stringsearch
RelativeLayout
Gambar 4.8 activity_main.xml
SYSTOOLS DEMO
Gambar 4.10 Tampilan Halaman Details
AlertDialog.Builder dialog = new AlertDialog.Buildercontext;
dialog.setTitleDetails by + param + Algorithm;
dialog.setMessageJARAK: + jarak + km\nTIME ELAPSED:
+ new DecimalFormat..formatfinishTime - startTime 1000000
+ ms\n------- + \nJALUR:\n + paths
+ \n-------\nSARAN:\n + sarans;
dialog.setPositiveButtonOK, null; dialog.show;
Gambar 4.11 Source Code Halaman Details
4.5.4. Implementasi Halaman Help
Tampilan halaman “Help” dibuat dengan membuat sebuah
file xml bernama “help.xml”. Halaman ini
SYSTOOLS DEMO
android:layout_width=match_parent android:layout_height=match_parent
android:orientation=vertical TextView
android:id=+idtextView1 android:layout_width=wrap_content
android:layout_height=wrap_content android:text=stringhowTo
android:textAppearance=?android:attrtextAppearanceLarg e
ImageView android:id=+idimageView4
android:layout_width=match_parent android:layout_height=wrap_content
android:scaleType=center android:src=drawabletitle_screen
TextView android:id=+idtextView17
android:layout_width=wrap_content android:layout_height=wrap_content
android:text=stringjudul android:textAppearance=?android:attrtextAppearanceMedi
um LinearLayout
android:layout_width=match_parent android:layout_height=wrap_content
TextView android:id=+idtextView19
android:layout_width=wrap_content android:layout_height=wrap_content
android:text=stringone
SYSTOOLS DEMO
android:layout_height=wrap_content android:text=stringmenu3
LinearLayout TextView
android:id=+idtextView25 android:layout_width=wrap_content
android:layout_height=wrap_content android:text=stringemptySource
ImageView android:id=+idimageView5
android:layout_width=match_parent android:layout_height=170dp
android:src=drawablemap TextView
android:id=+idtextView18 android:layout_width=wrap_content
android:layout_height=wrap_content android:text=stringhalamanMap
android:textAppearance=?android:attrtextAppearanceMedi um
LinearLayout android:layout_width=match_parent
android:layout_height=wrap_content TextView
android:id=+idtextView12 android:layout_width=wrap_content
android:layout_height=wrap_content android:text=stringone
TextView android:id=+idtextView13
android:layout_width=wrap_content
SYSTOOLS DEMO
android:layout_height=wrap_content android:paddingLeft=15dp
android:text=stringcancelSource TextView
android:id=+idtextView8 android:layout_width=wrap_content
android:layout_height=wrap_content android:text=stringemptySource
LinearLayout android:layout_width=match_parent
android:layout_height=wrap_content TextView
android:id=+idtextView7 android:layout_width=wrap_content
android:layout_height=wrap_content android:text=stringthree
TextView android:id=+idtextView3
android:layout_width=wrap_content android:layout_height=wrap_content
android:text=stringhowToAddDest LinearLayout
ImageView android:id=+idimageView2
android:layout_width=wrap_content android:layout_height=wrap_content
android:paddingLeft=15dp android:src=drawableend_point
TextView android:id=+idtextView9
android:layout_width=wrap_content android:layout_height=wrap_content
SYSTOOLS DEMO
android:text=stringpindahHalte
LinearLayout ImageView
android:id=+idimageView3 android:layout_width=wrap_content
android:layout_height=wrap_content android:paddingLeft=15dp
android:src=drawablehalte_change LinearLayout
ScrollView LinearLayout
Gambar 4.13 help.xml
SYSTOOLS DEMO
2 Membatalka n titik awal.
Halte bus yang telah ditentukan
sebagai titk awal sebelumnya.
Muncul pesan apakah titik awal
akan dibatalkan atau tidak.
Muncul pesan apakah titik awal
akan dibatalkan atau tidak.
3 Menentukan titik tujuan.
Halte bus yang ada pada peta selain
yang telah ditandai sebagai titik awal.
Halte bus yang disentuh akan
ditandai dengan ikon baru sebagai
titik tujuan. Muncul garis pada
peta yang menghubungkan
antar halte yang merupakan jalur
tempuh dari titik awal ke titik
tujuan. Halte bus yang
disentuh akan ditandai dengan
ikon baru sebagai titik
tujuan. Muncul garis
pada peta yang menghubungkan
antar halte yang merupakan jalur
tempuh dari titik awal ke titik
tujuan. 4 Melihat
jalur bus yang
ditempuh. Tombol “Details”
disentuh. Rute jalur
terpendek yang harus ditempuh
menggunakan bus akan
muncul berupa poin-poin.
Rute jalur terpendek yang
harus ditempuh menggunakan
bus akan muncul berupa poin-
poin. 5 Melihat
nilai jarak yang
Tombol “Details” disentuh.
Tampil total nilai jarak terpendek
yang harus Tampil total nilai
jarak terpendek yang harus
SYSTOOLS DEMO
RINGROAD UTARA
KENTUNGAN
SUGIYONO 2 MUSEUM
PERJUANGAN User diarahkan ke
posisi halte RINGROAD
UTARA KENTUNGAN
User diarahkan ke posisi halte
SUGIYONO 2 MUSEUM
PERJUANGAN ke posisi halte
RINGROAD UTARA
KENTUNGAN
User diarahkan ke posisi halte
SUGIYONO 2 MUSEUM
PERJUANGAN
9 Mencari halte.
“ ”
TINUS
SEMBARANG Tampil pesan
bahwa halte yang dicari tidak
diketahui.
Tampil pesan bahwa halte yang
dicari tidak diketahui.
Tampil pesan bahwa halte yang
dicari tidak diketahui.
Tampil pesan bahwa halte
yang dicari tidak diketahui.
Tampil pesan bahwa halte
yang dicari tidak diketahui.
Tampil pesan bahwa halte
yang dicari tidak diketahui.
1 Menguji
Awal: Jarak: 4,604 km
Dijkstra:
SYSTOOLS DEMO
KOREM -SANATA
DHARMA -JL. COLOMBO
SAMIRONO -JL. COLOMBO
PANTI RAPIH -CIK DI TIRO 1
MUSEUM KOREM
Saran: Naik 2B.
luaran yang diharapkan.
Awal: MT
HARYONO 2 SMA 7
Tujuan: TENTARA
PELAJAR 1 SMP 14
Jarak: 4,299 km Jalur:
-MT HARYONO 2 SMA 7
-TEJOKUSUMAN -NGABEAN
- COKROAMINOT
O SMA 1 -SMPN 11
-TENTARA PELAJAR 1 SMP
14 Saran:
Naik 3B – pindah ke 2B di Ngabean.
Dijkstra: Sama dengan
luaran yang diharapkan.
Floyd: Sama dengan
luaran yang diharapkan.
Tabel 5.1 Tabel Hasil Pengujian
SYSTOOLS DEMO
public int getMin { double jarakTerpendek = INFINITE;
O1
int minIndeks = 0; O1
for int i = 1; i jumlah_vertex; i++ { n
if daftarVertex[i].isInGraph sPath[i].getJarak jarakTerpendek{
jarakTerpendek = sPath[i].getJarak;
O1
minIndeks = i; O1
} }
return minIndeks; O1
}
Gambar 5.1 Source Code Method getMin
Berdasarkan gambar 5.1 method getMin memiliki kompleksitas waktu asimtotik On. Hal tersebut diperoleh melalui
perhitungan berikut: O1+O1+n.O1+O1+ O1
= O1+O1+n.O1+O1 = O1+O1+On+O1
= On Gambar 5.2 adalah hasil penghitungan kompleksitas waktu
asimtotik tiap baris source code yang dimiliki oleh method adjust_sPath.
public void adjust_sPath { int kolom = 0;
O1
SYSTOOLS DEMO
bantu = new DecimalFormat..formatsPath[tujuan].getJarak+:;
O1
while tujuan = awal { n
paths = daftarVertex[tujuan].getNama + \n + paths;
O1
tujuan = findIndexdaftarVertex[sPath[tujuan].getFrom] .getNama;
O1 }
paths = daftarVertex[awal].getNama + \n + paths;
O1
paths = bantu + paths; O1
} return paths;
O1 }
Gambar 5.3 Source Code Method displayPaths
Kompleksitas waktu asimtotik dari method displayPaths adalah:
O1+O1+O1+n.O1+O1+O1+O1+O1 = O1+O1+O1+On+O1+O1+O1
= O1+O1+On+O1 = On
public int findIndexString index { int a = 0;
O1
while a jumlah_vertex { n
if index.equalsdaftarVertex[a].getNama {
return a;
O1
} else {
SYSTOOLS DEMO
sPath[i] = new TemporaryJalur_n_Jaraka, jarakSementara;
O1 }
while jumGraph jumlah_vertex { n
int minIndeks = getMin; On
double minDist = sPath[minIndeks].getJarak;
O1
if minDist == INFINITE { break;
} else { vertSkrg = minIndeks;
O1
mulaiSmpSkrg = sPath[minIndeks].getJarak;
O1 }
daftarVertex[vertSkrg].setInGraphtrue; O1
jumGraph++; O1
adjust_sPath; On
} jumGraph = 0;
O1
for int i = 0; i jumlah_vertex; i++ { n
daftarVertex[i].setInGraphfalse; O1
} return displayPathsb, a;
On
}
Gambar 5.5 Source Code Method dijkstra
Penghitungan kompleksitas waktu asimtotik algoritma Dijkstra berdasarkan gambar 5.3 adalah On
2
. Penghitungan yang dilakukan untuk memperoleh hasil tersebut adalah:
On+On+O1+O1+n.O1+O1+n.On+O1+O1 +O1+O1+O1+On+O1+n.O1+On
= On+On+O1+O1+On+On
2
+O1+On+On
SYSTOOLS DEMO
Kompleksitas waktu asimtotik untuk method findIndex
berdasarkan pada gambar 5.6 adalah O1+n.O1+O1 = On. Analisis hasil nilai Big Oh untuk setiap baris source code
yang dimiliki oleh method deepCopyIntMatrix tertuang pada gambar 5.7
public static double[][] deepCopyIntMatrixdouble[][] input { if input == null
return null; O1
double[][] result = new double[input.length][]; O1
for int r = 0; r input.length; r++ { n
result[r] = input[r].clone;
O1 }
return result; }
Gambar 5.7 Source Code Method deepCopyIntMatrix
Kompleksitas waktu asimtotik untuk method deepCopyMatrix berdasarkan pada gambar 5.7 adalah O1 + O1 + n.O1 = On.
Setelah memperoleh nilai Big Oh dari method findIndex dan deepCopyIntMatrix, penghitungan nilai Big Oh method floyd
dilakukan. Penghitungan nilai Big Oh dari method floyd dilakukan dengan melihat gambar 5.8.
public String floydString awal, String tujuan { double[][] jarak = this.deepCopyIntMatrixedge;
On
SYSTOOLS DEMO
} paths = daftarVertex[start].getNama + \n + paths;
O1
paths = bantu + paths; O1
return paths;
O1 }
Gambar 5.8 Source Code Method Floyd
Dengan menggunakan gambar 5.8, penghitungan kompleksitas waktu asimtotik dari algoritma Floyd-Warshall adalah:
On+On+On+O1+n.n.O1+O1+n.O1+n.O1+n .n.n.O1+O1+O1+O1+n.O1+O1+O1+O1+O
1 =
On+On+On+O1+On
2
+On+On+On
3
+O1+On+O1 +O1+O1+O1
= On
3
5.3. Pengujian dan Analisa Hasil Perbandingan Running Time Algoritma
Dijkstra dan Floyd-Warshall
Pengujian running time masing-masing algoritma dilakukan dengan menggunakan sepuluh kasus. Pengujian direpresentasikan melalui tabel 5.2.
Kolom pertama adalah nomor uji, kolom kedua merupakan titik awal, kolom kedua merupakan titik tujuan, kolom keempat merupakan running time
algoritma Dijkstra, dan kolom terakhir merupakan running time algoritma
SYSTOOLS DEMO
UTARA INSTIPER 1INSTIPER 2
TAMAN PINTARTAMAN
SENOPATI 6.
TERMINAL CONDONGCATUR
GIWANGAN 16 ms
233 ms
7. SUDIRMAN 3
GONDOLAYU JL. COLOMBO
KOSUDGAMA 9 ms
220 ms
8. MT HARYONO 2
SMA 7 RINGROAD
UTARA INSTIPER
1INSTIPER 2 9 ms
222 ms
9. MANGKUBUMI 1
TUGU AHMAD YANI
BENTENG VREDEBURG
8 ms 222 ms
10 MT HARYONO 2
SMA 7 KATAMSO 2
IMMACULATA 9 ms
225 ms
Tabel 5.2 Tabel Hasil Pengujian Running Time Kedua Algoritma
Berdasarkan tabel 5.2, dari sepuluh kasus yang diberikan, algoritma Dijkstra mampu memberikan solusi lebih cepat dari algoritma Floyd-
Warshall untuk semua kasus yang diberikan. Hal tersebut dikarenakan algoritma Dijkstra mempunyai kompleksitas waktu asimtotik Big Oh yang
SYSTOOLS DEMO
BAB VI KESIMPULAN DAN SARAN
Pada bab ini akan dibahas mengenai kesimpulan dan saran dari penelitian yang telah dibuat.
6.1. Kesimpulan
Kesimpulan dari penelitian yang telah dilakukan adalah: 1. Penggunaan metode greedy dan metode pemrograman dinamis yang
masing-masing diwakili oleh algoritma Dijkstra dan Floyd-Warshall mampu memberikan solusi yang tepat pada kasus pencarian jalur
terpendek pada Bus Trans Jogja. 2. Algoritma
Dijkstra dan algoritma Floyd-Warshall
mampu diimplementasikan dalam sistem pencarian jalur terpendek untuk kasus
Bus Trans Jogja karena mampu memberikan solusi jalur terpendek yang tepat.
3. Running time dari algoritma Dijkstra lebih cepat daripada running time dari algoritma Floyd-Warshall dalam memberikan solusi kepada
pengguna. Hal tersebut juga Nampak pada kompleksitas waktu asimtotik dari algoritma Dijkstra yang lebih sederhana, yakni On
2
dibandingkan dengan kompleksitas waktu asimtotik dari algoritma Floyd-Warshall
yang adalah On
3
.
128
SYSTOOLS DEMO
DAFTAR PUSTAKA
Arifianto, Sofyan. 2012.
Sistem Aplikasi Penentuan Rute Terpendek Pada Jaringan Multi Moda Transportas Umum Menggunakan Algoritma Dijkstra.
Tesis S-2 pada Universitas Diponegoro Semarang: tidak diterbitkan.
Bell, Donalds. 2004. UML Basics: The Class Diagram. Online. Tersedia: http:www.ibm.comdeveloperworksrationallibrarycontentRationalEdgese
p04bell . 28 Mei 2013.
Bell, Rob. 2009. A Beginner’s Guide to Big O Notation. Online. Tersedia: http:rob-bell.net200906a-beginners-guide-to-big-o-notation
. 5 Juni 2013. Cooper, Leon dan Mary W. Cooper. 1981. Introduction to Dynammic
Programming. Dallas: Pergamon Press.
Denardo, Eric V. 2003. Dynamic Programming Models and Applications. New York: Dover Publications, Inc.
Fanani, Lutfi. 2012. Rancang Bangun Aplikasi Web Pencarian Rute Terpendek Antar Gedung di Kampus Menggunakan Algoritma Floyd-
Warshall. Journal Basic Science And Technology. 13, 7-11.
130
SYSTOOLS DEMO
LAMPIRAN
Lampiran 1: User Manual
1. Sentuh tombol “Algoritma Dijkstra” untuk masuk ke halaman “Map” dan kemudian melakukan pencarian jalur terpendek dengan menggunakan
algoritma Dijkstra. 2. Sentuh tombol “Algoritma Floyd-W” untuk masuk ke halaman “Map” dan
kemudian melakukan pencarian jalur terpendek dengan menggunakan algoritma Floyd-Warshall.
3. Sentuh tombol “Help” untuk masuk ke halaman “Help” yang berisi cara penggunaan sistem.
132
SYSTOOLS DEMO
Lampiran 2: Gambar Peta Jalur dan Halte Bus Trans Jogja
SYSTOOLS DEMO
RINGROAD UTARA MONJALI 2 RINGROAD UTARA STIKES GUNA
BANGSA
RINGROAD UTARA UPN RS AU DR. S. HARDJOLUKITO
RS DR YAP RSI HIDAYATULAH
RSUP DR. SARDJITO SANATA DHARMA
SANTREN SENOPATI 1 TAMAN SENOPATI
SENOPATI 2 TAMAN PINTAR SMP 5 YOGYAKARTA
SMPN 11 SOROGENEN NITIKAN
SOROGENEN WIROSABAN SUDIRMAN 2 BUMI PUTERA
SUDIRMAN 3 GONDOLAYU SUDRIMAN 1 BETHESDA
SUGIYONO 1 SD PUJOKUSUMAN SUGIYONO 2 MUSEUM
PERJUANGAN
SUSTERAN NOVISIAT TEGAL GENDU 1
TEGAL GENDU 2 TEGALTURI 1
TEGALTURI 2 TEJOKUSUMAN
TENTARA PELAJAR 1 SMP 14 TENTARA PELAJAR 2 SAMSAT
TERMINAL CONDONGCATUR TERMINAL JOMBOR
UNY URIP SUMOHARJO LPP
SYSTOOLS DEMO
SENOPATI 1 TAMAN SENOPATI TENTARA PELAJAR 1 SMP 14
2.84 1B RS DR YAP
JL. COLOMBO KOSUDGAMA 0.905 1B
JL. COLOMBO UNY JL. SOLO DE BRITTO
1.47 1B JL. SOLO DE BRITTO
JL. SOLO AMBARUKMO 0.941 1B
JL. SOLO AMBARUKMO JANTI FLYOVER
1.16 1B JANTI FLYOVER
JL. SOLO JANTI 0.611 1B
RINGROAD UTARA MONJALI 1 AM. SANGAJI 2 JETIS
3.155 2A AM. SANGAJI 2 JETIS
MANGKUBUMI 1 TUGU 0.999 2A
SENOPATI 2 TAMAN PINTAR KATAMSO 1 PURAWISATA
0.981 2A KATAMSO 1 PURAWISATA
SUGIYONO 1 SD PUJOKUSUMAN 0.791 2A
SUGIYONO 1 SD PUJOKUSUMAN RSI HIDAYATULAH
1.984 2A RSI HIDAYATULAH
NGEKSIGONDO DIKLAT PU 1.302 2A
NGEKSIGONDO DIKLAT PU GEDONG KUNING DEP.KEHUTANAN
0.764 2A GEDONG KUNING DEP.KEHUTANAN
KUSUMANEGARA GEMBIRALOKA 2.27 2A
KUSUMANEGARA GEMBIRALOKA KUSUMANEGARA 4 SGM
0.598 2A 1B
KUSUMANEGARA 4 SGM KENARI 2 MANDALA KRIDA
1.676 2A KENARI 2 MANDALA KRIDA
SMP 5 YOGYAKARTA 2.601 2A
SMP 5 YOGYAKARTA SUDRIMAN 1 BETHESDA
0.981 2A SUDRIMAN 1 BETHESDA
RS DR YAP 0.533 2A
RS DR YAP JL. COLOMBO KOSUDGAMA
0.905 2A JL. COLOMBO KOSUDGAMA
JL. COLOMBO UNY 0.916 2A
1B JL. COLOMBO UNY
UNY 0.512 2A
UNY SANTREN
0.958 2A SANTREN
TERMINAL CONDONGCATUR 1.249 2A
RINGROAD UTARA MANGGUNG RINGROAD UTARA MONJALI 2
2.198 2A TERMINAL JOMBOR
RINGROAD UTARA MONJALI 1 0.949 2B
2A
SYSTOOLS DEMO