i
LAPORAN TUGAS AKHIR
PERHITUNGAN JARAK OPTIMAL PENGGUNAAN KABEL
TELEPON MENGGUNAKAN ALGORITMA DIJKSTRA
Laporan ini disusun guna memenuhi salah satu syarat untuk menyelesaikan Program studi Teknik Informatika S-1 pada Fakultas Ilmu Komputer
Universitas Dian Nuswantoro
Disusun Oleh :
Nama
: Dhanu Wijanarko
NIM
: A11.2009.04722
Program Studi : Teknik Informatika
FAKULTAS ILMU KOMPUTER
UNIVERSITAS DIAN NUSWANTORO
SEMARANG
2013
▸ Baca selengkapnya: repeater dipasang jika jarak kabel utp sudah lebih dari...
(2)ii
NIM : A11.2009.04722
Program Studi : Teknik Informatika
Fakultas : Ilmu Komputer
Judul Tugas Akhir : Perhitungan Jarak Optimal Penggunaan Kabel Telepon Menggunakan Algoritma Dijkstra
Tugas akhir ini telah diperiksa dan disetujui, Semarang, 17 Oktober 2013
Menyetujui, Mengetahui,
Pembimbing Dekan Fakultas Ilmu Komputer
iii
PENGESAHAN DEWAN PENGUJI
Nama Pelaksana : Dhanu Wijanarko
NIM : A11.2009.04722
Program Studi : Teknik Informatika
Fakultas : Ilmu Komputer
Judul Tugas Akhir : Perhitungan Jarak Optimal Penggunaan Kabel Telepon Menggunakan Algoritma Dijkstra
Tugas akhir ini telah diujikan dan dipertahankan dihadapan Dewan Penguji pada Sidang tugas akhir tanggal 8 Oktober 2013. Menurut pandangan kami, tugas akhir ini memadai dari segi kualitas maupun kuantitas untuk tujuan penganugerahan gelar Sarjana Komputer (S.Kom).
Semarang, 17 Oktober 2013 Dewan Penguji
Noor Ageng Setyanto, M.Kom Sendi Novianto, S.Kom, MT
Anggota 1 Anggota 2
Sugiyanto, M.Kom
iv
Sebagai mahasiswa Universitas Dian Nuswantoro, yang bertanda tangan di bawah ini, saya :
Nama : Dhanu Wijanarko NIM : A11.2009.04722
Menyatakan bahwa karya ilmiah saya yang berjudul :
PERHITUNGAN JARAK OPTIMAL PENGGUNAAN TELEPON MENGGUNAKAN ALGORITMA DIJKSTRA
Merupakan karya asli saya (kecuali ringkasan dan cuplikan yang masing-masing telah saya jelaskan sumbernya). Apabila di kemudian hari, karya saya disinyalir bukan merupakan karya asli saya, yang disertai dengan bukti-bukti yang cukup, maka saya bersedia untuk dibatalkan gelar saya beserta hak dan kewajiban yang melekat pada gelar tersebut. Demikian surat pernyataan ini saya buat dengan sebenarnya.
Dibuat di : Semarang
Pada tanggal : 17 Oktober 2013
Yang menyatakan
v
PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS
Sebagai mahasiswa Universitas Dian Nuswantoro, yang bertanda tangan di bawah ini, saya:
Nama : Dhanu Wijanarko NIM : A11.2009.04722
demi mengembangkan Ilmu Pengetahuan, menyetujui untuk memberikan kepada Universitas Dian Nuswantoro Hak Bebas Royalti Non-Eksklusif (Non-exclusive Royalty-Free Right) atas karya ilmiah saya yang berjudul:
PERHITUNGAN JARAK OPTIMAL PENGGUNAAN TELEPON MENGGUNAKAN ALGORITMA DIJKSTRA
beserta perangkat yang diperlukan (bila ada). Dengan Hak Bebas Royalti Non-Eksklusif ini Universitas Dian Nuswantoro berhak untuk menyimpan, mengcopy ulang (memperbanyak), menggunakan, mengelolanya dalam bentuk pangkalan data (database), mendistribusikannya dan menampilkan/mempublikasikannya di internet atau media lain untuk kepentingan akademis tanpa perlu meminta izin dari saya selama tetap mencantumkan nama saya sebagai penulis/pencipta.
Saya bersedia untuk menanggung secara pribadi, tanpa melibatkan Universitas Dian Nuswantoro, segala bentuk tuntutan hukum yang timbul atas pelanggaran Hak Cipta dalam karya ilmiah saya ini.
Demikian surat pernyataan ini saya buat dengan sebenarnya.
Dibuat di : Semarang Pada tanggal : 17 Oktober 2013 Yang menyatakan,
vi
Pengasih dan Maha Penyayang yang telah melimpahkan segala rahmat, hidayah dan inayah-Nya kepada penulis sehingga laporan tugas akhir dengan judul “Perhitungan Jarak Optimal Penempatan Tiang Telepon Berbasis Google Maps Menggunakan Algoritma Dijkstra” dapat penulis selesaikan sesuai dengan rencana karena dukungan dari berbagai pihak yang tidak ternilai besarnya. Oleh karena itu penulis menyampaikan terima kasih kepada :
1. Bapak Dr. Ir. Edi Noersasongko, M.Kom, selaku Rektor Universitas Dian Nuswantoro Semarang.
2. Bapak Dr. Abdul Syukur, Drs, MM, selaku Dekan Fakultas Ilmu Komputer Universitas Dian Nuswantoro.
3. Bapak Dr. Heru Agus Santoso, M.Kom, selaku Ka.Progdi Teknik Informatika. 4. Ruri Suko Basuki, M.kom, selaku pembimbing tugas akhir yang memberikan
bimbingan yang berkaitan dengan penelitian penulis.
5. Dosen-dosen pengampu di Fakultas Ilmu Komputer Teknik Informatika Universitas Dian Nuswantoro Semarang yang telah memberikan ilmu dan pengetahuannya masing-masing.
6. Orang tua penulis tercinta Mashoedi dan Sri Atmini, kakak dan kekasih yang telah memberikan motivasi, semangat, nasehat, kasih sayang, doa, dukungan material dan spiritual hingga penulis menyelesaikan laporan Tugas Akhir ini. 7. Pihak-pihak yang telah banyak membantu penulis, yang tidak dapat penulis
sebutkan namanya satu-persatu.
Semoga Tuhan yang Maha Esa memberikan balasan yang lebih besar kepada beliau-beliau, dan pada akhirnya penulis menyadari bahwa masih banyak kesalahan dan kekurangan pada proyek tugas akhir ini, dari sebab itulah penulis memohon maaf atas kesalahan dan kekurangan tersebut.
vii
Penulis sangat berharap proyek ini dapat semakin disempurnakan lagi sehingga dapat menjadi lebih berkembang dan lebih bermanfaat sebagaimana fungsinya.
Semarang, 17 Oktober 2013
viii
telepon. Tahapan penelitian dilakukan dengan akusisi data berupa jarak kabel telepon, determinasi area dan determinasi jarak optimal. Data yang telah didapat akan dimasukan kedalam Google Maps dengan melakukan input posisi dari latitude (garis lintang) dan longitude (garis bujur) kemudian jarak kabel antar tiang telepon dapat diketahui agar bisa dilakukan perhitungan jarak optimal penggunaan kabel telepon. Perhitungan jarak kabel telepon menggunakan metode biasa tanpa memperhatikan keadaan sekitar lokasi dapat menyebabkan jarak yang dihasilkan belum tentu efisien. Algoritma Dijkstra merupakan salah satu algoritma yang digunakan untuk menghitung jarak terpendek. Sebelum melakukan perhitungan dibuat graf yang mendeskripsikan letak tiang telepon yang akan digunakan untuk pemasangan kabel. Dari graf tersebut perhitungan optimal antar tiang telepon dapat dilakukan. Perhitungan jarak tersebut akan dibandingkan dengan perhitungan jarak yang dilakukan dengan sebelumnya tanpa menggunakan suatu metode. Hasil perhitungan sampel jarak optimal kabel telepon menggunakan algoritma Dijkstra dapat memperpendek jarak 55,63% tetapi juga tergantung tempat dilakukan perhitungan jarak sehingga lebih efisien dalam penggunaan kabel dan tiang telepon dibandingkan dengan metode biasa.
Kata kunci : Dijkstra, Google Maps, Jarak Optimal Xiii + 51 halaman, 20 gambar, 5 tabel
ix
DAFTAR ISI
Halaman Sampul Depan... i
Halaman Persetujuan... ii
Halaman Pengesahan ... iii
Halaman Pernyataan Keaslian Tugas Akhir ... iv
Halaman Pernyataan Persetujuan Publikasi ... v
Halaman Ucapan Terima Kasih ... vi
Halaman Abstrak... viii
Halaman Daftar Isi ... ix
Halaman Daftar Gambar ... xi
Halaman Daftar Tabel ... xii
Halaman Daftar Lampiran... xiii
BAB I PENDAHULUAN... 1 1.1 Latar Belakang... 1 1.2 Rumusan Masalah ... 3 1.3 Batasan Masalah ... 3 1.4 Tujuan Penelitian... 3 1.5 Manfaat Penulisan ... 4 1.6 Sistematika Penulisan ... 5
BAB II TINJAUAN PUSTAKA... 6
2.1 Graf... 6
2.1.1 Jenis – Jenis Graf ... 8
2.2 Haversine ... 9
2.3 Algoritma Dijkstra ... 10
2.3.1 Proses Memberi Label Algoritma Dijkstra ... 11
2.3.2 Penerapan Cara Kerja Algoritma Dijkstra ... 11
2.4 Google Maps ... 14
2.4.1 Konsep Google Maps ... 16
2.4.2 Google Maps API... 17
x
3.3 Determination Area ... 22
3.4 Determination Optimal Distance ... 22
3.5 Perhitungan Jarak Kabel ... 23
3.6 Metode Pengumpulan Data ... 23
3.7 Sumber Data ... 23
BAB IV HASIL PENELITIAN DAN PEMBAHASAN... 25
4.1 Akuisisi Data ... 25
4.1.1 Input Posisi... 26
4.2 Determination Area ... 27
4.3 Determination Optimal Distance ... 30
4.3.1 Graf ... 30
4.3.2 Perhitungan Jarak ... 33
4.3.3 Algoritma Dijkstra ... 36
4.3.3.1 Perhitungan Jarak Optimal menggunakan Algoritma Dijkstra... 37 4.4 Pengujian ... 45 4.4.1 Deskripsi Sistem ... 45 4.4.2 Skenario Pengujian... 46 4.4.3 Hasil Pengujian ... 46 BAB V PENUTUP... 51 5.1. Kesimpulan... 51 5.2. Saran... 51 LAMPIRAN
xi
DAFTAR GAMBAR
Gambar 2.1 Tiga buah graf (a) graf sederhana, (b) graf ganda
dan (c) graf semu ... 7
Gambar 2.2 Graf Berarah atau Digraf ... 8
Gambar 2.3 Graf Tidak Berarah... 9
Gambar 2.4 Tampilan Google Maps ... 15
Gamabr 2.5 Pembagian gambar peta sebesar 256 x 256 Pixel... 16
Gamabr 2.6 Tampilan Google Earth ... 18
Gamabr 2.7 Form input posisi... 19
Gamabr 3.1 Alur Penelitian... 21
Gamabr 4.1 Contoh sampel posisi tiang telepon ... 25
Gambar 4.2 Letak posisi tiang telepon ... 26
Gambar 4.3 Form input posisi tiang telepon ... 27
Gambar 4.4 Area yang dipilih sebagai sampel perhitungan jarak kabel telepon... 27
Gambar 4.5 Pemodelan Graf tiang telepon ... 30
Gamabr 4.6 Pemodelan Graf berarah tiang telepon ... 32
Gambar 4.7 Perhitungan jarak kabel antar tiang telepon ... 34
Gambar 4.8 Sample daerah yang akan dilakukan perhitungan ... 36
Gambar 4.9 Penentuan posisi tiang telepon ... 47
Gamabr 4.10 Hasil perhitungan sistem ... 48
xii
Table 4.2 Perhitungan jarak t43 ke t10... 37 Tabel 4.3 Menunjukan jarak kabel antar tiang telepon ... 39 Tabel 4.4 Hasil perhitungan jarak optimal pengunaan
kabel telepon... 47 Tabel 4.5 Hasil perbandingan perhitungan jarak menggunakan
algoritma Dijkstra dengan tidak menggunakan
xiii
DAFTAR LAMPIRAN
Lampiran 1 Tampilan Program ... A-1 Lampiran 2 Tabel sampel jarak antar tiang telepon ... B-1 Lampiran 3 Source Code Dijsktra... C-1
1
1.1 Latar Belakang
Jaringan akses kabel merupakan jaringan akses tertua sejalan dengan lahirnya teknologi telepon. Jaringan akses kabel pada dasarnya terdiri dari sepasang kabel yang ditarik dari sentral sampai ke telepon pelanggan[1]. Pemasangan kabel telepon berkembang 10 - 15% setiap tahun yang digunakan untuk jaringan telepon, broadband dan jaringan televisi berbayar. Penentuan besaran jaringan kabel ditentukan oleh jumlah pelanggan yang akan dilayani, serta perkiraan kebutuhan beberapa tahun ke depan. Oleh sebab itu penentuannya harus dimulai dari penentuan letak DP, penentuan letak dan kapasitas RK, penentuan kapasitas dan tipe kabel sekunder, termasuk penggunaan tiang[2]. Karena keterbatasan pemilihan tempat pemasangan tiang maka tiang telepon yang dipasang ditempatkan disembarang tempat yang masih terdapat lahan kosong dan hanya berjarak kurang lebih 50 meter dari tiang terdekat yang telah terpasang meskipun jauh dari rumah penduduk. Penempatan yang kurang tepat ini menyebabkan penggunaan kabel lebih banyak dari yang seharusnya. Dampaknya biaya yang diperlukan semakin banyak[3].
Untuk memperbaiki dari penggunaan kabel yang berlebihan, petugas teknis berusaha untuk memperbaiki kabel yang tidak teratur dengan Metode Fixed Hierarchical Routing yang merupakan salah satu metode yang digunakan dengan cara menetapkan terlebih dahulu rute mana yang menjadi pilihan pertama dan pilihan alternatif[2]. Kelebihannya tidak ada terjadi perulangan jalur pemasangan kabel telepon dan kekurangannya jalur pemasangan kurang optimal karena ada beberapa kemungkinan jalur dan tidak dipilih mana yang paling optimal. Prosedur pemasangan kabel telepon juga belum efisien karena petugas harus melakukan survey pada wilayah yang akan dipasang untuk mengetahui jaraknya, kemudian perhitungan jarak tersebut akan dijumlahkan secara
2
keseluruhan dan menetukan rute mana saja yang akan dilewati kabel dengan cara perhitungan biasa[4].
Solusi untuk mendapatkan informasi geografi yaitu dengan Geograpichal Information Systems (GIS) sebagai alat bantu dan sangat esensial untuk menyimpan, memanipulasi, menganalisis, dan menampilkan kembali kondisi-kondisi alam dengan bantuan data atribut dan keruangan[5]. Karena Metode Fixed Hierarchical Routing hanya dapat digambarkan dengan graf sehingga dengan dihubungkan dengan GIS akan membantu menampilakan data yang akan digunakan berupa peta dan jalur mana saja yang akan digunakan. Selain itu mempunyai kemampuan untuk dapat mengubah suatu sistem dari yang semula menggunakan konvensional yaitu sistem yang hanya dapat menampilkan data atribut saja menjadi sebuah sistem yang mempunyai basis grafis atau gambar berikut dengan data keruangan beserta atributnya [6].
Dengan bantuan dari Sistem Informasi Geografi ini dapat diberikan informasi lebih akurat tentang letak-letak koordinat tiang telepon sehingga panjang pengunaan kabel dapat diketahui dengan cara melakukan input posisi tiang telepon berupa latitude dan longitude kedalam Google Maps dan jaraknya diketahui menggunakan salah satu fitur perhitungan jarak yang dimiliki oleh Google Maps.
Algoritma Dijkstra merupakan sebuah graph search algorithm yang menyelesaikan single - source shortest path problem di mana Dijkstra akan mencari jalur terpendek dari satu start vertex dengan cara memeriksa dan membandingkan setiap jalur. Walaupun demikian, Dijkstra dapat dimodifikasi sehingga dapat digunakan untuk mencari jalur terpendek dari setiap vertex[7].
Hubungan algoritma Dijkstra dengan perhitungan jarak optimal pengunaan kabel digunakan untuk membuat jarak kabel yang digunakan lebih efisien karena selama ini pemasangan kabel telepon tidak memperhatikan berapa panjang kabel yang dibutuhkan. Dari posisi tiang
telepon yang ada sehingga jarak kabel antar tiang telepon juga dapat diketahui sehingga perhitungan jarak optimal dapat dilakukan.
1.2 Rumusan Masalah
Dari latar belakang yang telah diuraikan, permasalahan yang harus dipecahkan dalam penelitian ini adalah :
1. Saat ini pemasangan kabel hanya menggunakan metode biasa sehingga tidak bisa mengetahui berapa kebutuhan kabel telepon yang disiapkan.
2. Untuk menentukan berapa panjang kabel telepon yang akan digunakan maka diperlukan perhitungan jarak optimal penggunaan kabel telepon.
3. Algoritma Dijkstra digunakan untuk mengetahui jarak optimal penggunaan kabel telepon.
1.3 Batasan Masalah
Untuk menghindari penyimpangan dari judul dan tujuan yang sebenarnya serta keterbatasan pengetahuan yang dimiliki penulis, maka penulis membuat batasan masalah yaitu :
1. Sistem informasi geografi ini hanya digunakan untuk mencari jarak optimal pemasangan kabel dan tiang telepon yang diguanakan hanya untuk penarikan kabel.
2. Sistem informasi ini tidak menyediakan informasi lain selain posisi tiang telepon dan jalur yang akan digunakan.
3. Perhitungan jarak optimal menggunakan Algoritma Dijkstra
1.4 Tujuan penelitian
Tujuan yang akan dicapai dalam penelitian ini adalah memberikan penyelesaian untuk permasalahan pencarian jarak terdekat yang hasilnya diharapkan dapat :
4
1. Untuk membangun sistem yang bisa digunakan untuk menentukan berapa banyak kebutuhan kabel telepon yang akan digunakan.
2. Membuat formula perhitungan jarak yang optimal kabel telepon sehingga dapat mengetahui panjang kabel telepon yang akan digunakan dan dapat mengetahui jumlah penggunaan kabel telepon yang akan dipakai.
3. Mengimplementasikan Algoritma Dijkstra untuk melakukan perhitungan jarak yang optimal penggunaan kabel telepon.
1.5 Manfaat Penelitian
Adapun manfaat yang didapat dari simulasi pencari jarak optimal antar tiang adalah
1. Bagi Penulis
a. Menambah pengetahuan dan pengalaman serta wawasan bagi penulis.
b. Menerapkan ilmu yang telah didapat dari studi atau bangku kuliah secara langsung, mulai dari penganalisa sistem atas dasar spesifikasi sampai pembuatan perangkat lunaknya. c. Hasil dari Pembuatan simulasi pencari jarak terdekat antara
rumah penduduk dengan tiang telepon dengan dukungan sistem informasi geografi dapat menjadi tolak ukur bagi penulis, seberapa jauh dalam penguasaan ilmu dan pengetahuan, sehingga dapat mengetahui apa saja kekurangan yang dimiliki.
2. Bagi Akademik
Tugas akhir yang dibuat oleh penulis dapat dijadikan tolak ukur bagi akademik untuk mengetahui seberapa kemampuan mahasiswa dalam penerimaan ilmu pengetahuan dan pengimplementasian ilmu di kehidupan nyata selama menjalani masa perkuliahan di Universitas Dian Nuswantoro. Sehingga,
nantinya Universitas Dian Nuswantoro Semarang dapat mengetahui apa saja yang harus diperbaiki untuk menjadi universitas yang lebih baik.
3. Bagi Pembaca
Pembaca dapat mengetahui jarak terpedek antara rumah penduduk dengan tiang telepon dengan bantuan program tanpa menghitung langsung.
1.6 Sistematika Penulisan
Pada penulisan tugas akhir ini disajikan secara sistematis yaitu terdiri dari beberapa bab dimana masing-masing bab saling berkesinambungan tahapan-tahapan penyelesaian masalah yang dibahas. Dan untuk lebih jelasnya lagi berikut ini adalah sistematika penulisannya :
BAB I : Pendahuluan
Dalam bab ini penulis menguraikan mengenai latar belakang masalah, perumusan masalah, pembatasan masalah, tujuan tugas akhir, manfaat tugas akhir dan sistematika penulisan dari tugas akhir itu sendiri.
BAB II : Tinjauan Pustaka
Bab ini berisi tentang landasan teori yang digunakan sebagai acuan untuk mendukung penyusunan tugas akhir.
BAB III : Metodologi Penelitian
Bab ini akan membahas metode yang digunakan dalam penelitian dan tahapan penelitian.
BAB IV : Hasil Penelitian dan Pembahasan
Bab ini memuat data hasil penelitian yang relevan.
BAB V : Kesimpulan dan Saran
Bab ini berisi kesimpulan dari keseluruhan tugas akhir serta saran-saran yang bersifat membangun dan menunjang perbaikan berhubungan dengan permasalahan yang dibahas.
6
BAB II
TINJAUAN PUSTAKA
2.1 Graf
Graf digunakan untuk mendeskripsikan objek-objek dan hubungan objek-objek tersebut. Objek yang dimaksud adalah tiang telepon. Karena dengan adanya hubungan antar tiang telepon dapat diketahui kemungkinan jalur mana yang mempunyai jarak yang optimal.
Representasi visual dari graf adalah dengan menyatakan objek sebagai noktah bulatan, titik atau verteks, sedangkan hubungan antara objek dinyatakan dengan garis atau edge [8].
Graf dalam penelitian ini digunakan untuk menggambarkan tiang telepon yang saling berhubungkan dari banyaknya tiang telepon yang ada sehingga akan membentuk jalur yang nantinya akan dipilih mana yang mempunyai jarak yang optimal.
Graf G didefinisikan sebagai pasangan himpunan (V, E), ditulis dengan G = (V, E) yang dalam hal ini adalah himpunan V adalah himpunan tidak kosong dari verteks-verteks dan E adalah himpunan edge yang menghubungkan sepasang verteks.
Simpul pada graf dapat dinomori dengan huruf, seperti a, b, c, …, v, w, ..., dengan bilangan asli 1, 2, 3, ..., atau gabungan keduanya. Sedangkan sisi yang menghubungkan simpul vi dengan simpul vj dinyatakan dengan pasangan (vi, vj) atau dengan lambang e1, e, …. Dengan kata lain, jika e adalah sisi yang menghubungkan simpul vi dengan simpul vj , maka e dapat ditulis sebagai
e = (vi, vj)
Secara geometri graf digambarkan sebagai sekumpulan noktah (simpul) di dalam bidang dwimatra yang dihubungkan dengan sekumpulan garis (sisi).
Gambar 2.1 Tiga buah graf (a) graf sederhana, (b) graf ganda, dan (c) graf semu
Gambar 2.1 memperlihatkan tiga buah graf, G1, G2 dan G3. G1adalah graf dengan himpunan simpul V dan himpunan sisi E adalah
V = { 1, 2, 3, 4 }
E = { (1, 2), (1, 3), (2, 3), (2, 4), (3, 4) }
G2 adalah graf dengan himpunan simpul V dan himpunan sisi E adalah: V = { 1, 2, 3, 4 }
E = { (1, 2), (2, 3), (1, 3), (1, 3), (2, 4), (3, 4), (3, 4) } ⇒ himpunan ganda = { e1, e2, e3, e4, e5, e6, e7}
G3 adalah graf dengan himpunan simpul V dan himpunan sisi E adalah: V = { 1, 2, 3, 4 }
E = { (1, 2), (2, 3), (1, 3), (1, 3), (2, 4), (3, 4), (3, 4), (3, 3) }⇒ himpunan ganda = { e1, e2, e3, e4, e5, e6, e7, e}
Pada G2, sisi e3 = (1, 3) dan sisi e4 = (1, 3) dinamakan sisi-ganda (multiple edges atau paralel edges) karena kedua sisi ini menghubungi dua buah simpul yang sama, yaitu simpul 1 dan simpul 3. Pada G sisi e8= (3, 3) dinamakan gelang atau kalang (loop) karena ia berawal dan berakhir pada simpul yang sama.
8
2.1.1 Jenis – jenis Graf
Berdasarkan orientasi arah pada sisi, graf dapat dibedakan atas dua jenis yaitu [9] :
1. Graf Berarah
Graf G disebut graf berarah (directed graf) jika setiap sisinya berarah. titik awal dari suatu sisi disebut simpul awal (initial vertex) sedangkan titik akhir dari suatu sisi disebut simpul akhir (terminal vertex). Loop pada graf adalah sisi yang simpul awal dan simpul akhirnya sama.
Gambar 2.2 Graf Berarah atau Digraf
Graf berarah pada Gambar 2.2 menunjukkan graf berarah dengan himpunan simpul, V(G) = {v1, v2, v3, v4, v5 } dan himpunan sisi E(G) = {a1,a2, a3, a4, a5, a6} sehingga mempunyai pasanagan {(v1,v2), (v2,v3), (v3,v4), (v4,v5), (v5,v1), (v2,v5)}.
2. Graf Tidak Berarah
Graf Tak Berarah (Undirected Graph) Graf G disebut graf tak berarah jika setiap sisinya tidak berarah.
Gambar 2.3 Graf Tidak Berarah
Graf pada gambar 2.3 menunjukkan graf tidak berarah dengan himpunan simpul, V(G) = { v1, v2, v3, v4, v5 } dan himpunan sisi E(G) = {e1, e2, e3, e4, e5, e6} sehingga mempunyai pasangan {(v1,v2), (v2,v3), (v3,v4), (v4,v5), (v5,v1), (v5,v2)}.
2.2 Haversine
Pemetaan tiang telepon yang telah dilakukan sesuai data harus diketahui jarak antar masing – masing titik untuk bisa dilakukan perhitungan jarak optimal. Dengan menggunakan rumus Haversin dapat diketahui jarak antar titik yang didapat dari latitude dan longitude.
Rumus haversine adalah persamaan penting dalam navigasi, memberikan lingkaran-besar jarak antara dua titik pada bola dari garis bujur dan garis lintang mereka. Ini adalah kasus khusus dari formula yang lebih umum dalam trigonometri bola, hukum haversines, menghubungkan sisi dan sudut dari segitiga bola. Rumus haversine ditulis dalam bentuk fungsi haversin, yaitu (θ) = sin2(θ / 2). Rumus Haversin sebagai berikut [10] :
...2.1
Haversin (θ) = sin2(θ/2) ; Φ1 adalah garis lintang ( latitude ) dari titik 1; D adalah jarak dua titik (antara unit dan teknisi); Φ2 adalah garis lintang ( latitude ) dari titik 2; R adalah jari-jari bola (radius bumi); λ1adalah garis bujur (longitude) dari titik 1; λ2adalah garis bujur (longitude) dari titik 2.
10
Sehinnga rumus Haversine menajdi :
Fungsi Haversine menggunakan derajat dari latitude dan longitude
kemudian derajat diubah menjadi radian (derajat .
).
untuk menghitung jarak antar dua titik maka menggunakan rumus 2.2 [11].... 2.2
Dimana a adalah Haversine; c adalah kalkulasi perpotongan sumbu; d adalah jarak.
2.3 Algoritma Dijkstra
Algoritma ini digunakan untuk mencari lintasan terpendek pada graf berarah, tetapi algoritma ini juga bisa diterapkan pada graf tak berarah. Tiang telepon yang merupakan objek dari penelitian ini akan dicari jarak optimalnya menggunakan Algoritma Dijkstra.
Algoritma Dijkstra digunakan berdasarkan beberapa penelitian pencarian jalur terpendek yang berhasil dilakukan seperti yang dilakukan Sunaryo dengan judul “Pencarian Jalur Terpendek antar Kota di Jawa Tengah dan D.I. Yogyakarta dengan Algoritma Dijkstra via SMS Gateway” dan yang dilakukan oleh Imron Fauzi dengan penelitian yang berjudul “Implementasi Algoritma Dijkstra untuk Mendapatkan Jalur Tercepat dan Jalur Terpendek” [12][13]. Penelitian tersebut menghasilkan bahwa algoritma Dijkstra dapat digunakan untuk mencari jalur terpendek.
Algoritma Dijkstra adalah algoritma untuk mencari jalur (path) yang termurah dari satu vertex ke vertex akhir. Algoritma ini berbasis pada
R = 637100 (Radius Bumi dalam meter)
Δlatitude = latitude2– latitude1
Δlongitude = longitude2- longitude1
a = sin2(Δlatitude / 2) + cos(latitude1) ∙ cos(latitude2) ∙
sin2(Δlongitude / 2) c = 2 ∙ atan2(√a, √(1 - a)) d = R ∙ c
teknik greedy, dimana digunakan sebuah himpunan vertex S yang mula – mula diisi dengan vertex awal. Pada setiap langkah vertex V berikutnya yang memiliki bobot terkecil ditambahkan [14].
2.3.1 Proses Memberi Label Algoritma Dijkstra
Diberikan graf D = (V,A) dengan V = {v1, v2, ...., Vn} dan wij≥ 0∀ vi,vj ∈ V. Misalkan juga v1 sebagai sumber. Proses algortitma Dijkstra adalah proses pemeberian semua simpul pada graf D dengan slah satu label temporer atau permanen.
Label temporer untuk simpul v1 ke simpul vi adalah label yang menunjukan batas atas bobot lintasan dari sumber v1 ke simpul vi. Sedangkan label permanen untuk simpul vi adalah label yang menunjukan bobot lintasan terpendek dari sumber v1ke vi.
Proses memberi label pada algoritma Dijkstra dimulai dengan pemberian label permanen 0 pada sumber v1 dan simpul vi ∈ V selain v1 diberi label temporer. Jika simpul vi bertetangga dengan dengan sumber v1, maka vi diberi label temporer sesuai dengan bobot sisi berarah yang berasal dari v1. Jika tidak seperti ini, maka label temporer ∞. Selanjutnya, label temporer yang terkecil diberi label permanen. Proses pemberian label dilakukan sampai semua simpul mendapatkan label permanen [15].
2.3.2 Penerapan Cara Kerja Algoritma Dijkstra
Diberikan graf D = (V,A) dengan V = {v1, v2, ...., Vn} dan wij≥ 0∀ vi,vj ∈ V. Untuk menentuka lintasan terpendek dari sumber v1 ke simpul vn, langkah – langkah algortima dijkstra adalah sebagai berikut [15] : 1. Berikan sumber v1label permanen 0.
2. Untuk setiap simpul yang bertetangga dengan sumber v1, berilah label temporer sesuai dengan bobot sisi berarah yang berasal dari v1dan yang lain diberi label temporer ∞.
3. Simpul yang mempunyai label temporer yang terkecil diberi label permanen.
12
4. Perhatikan simpul yang memperoleh label permanen yang terakhir, semua simpul yang bertetangga dengan simpul tersebut diberi label dengan Min {(label permanen + jarak antara simpul tersebut dengan label permanen), label simpul sebelumnya}.
5. Jika simpul vn telah mendapatkan label permanen maka proses selesai. Jika tidak, kembali ke nomor 3.
Contoh :
Langkah – langkah algoritma Dijkstra untuk menentukan lintasan terpendek dari v1ke simpul v3sebagai berikut :
a.
Simpul v1, v5berturut – turut diberi label permanen 0, 1 dan simpul v2, v3 berturut – turut diberi label temporer 3, 8 serta simpul v4 diberi label ∞.
3
∞ 1*
0*
b.
Simpul v1, v2, v5berturut – turut diberi label permanen 0, 3, 1 dan simpul v3, v4berturut – turut diberi label temporer 8,7.
c. 8 7 1* 0* 3* 8 4* 1* 0* 3*
14
Simpul v1, v2, v4, v5berturut – turut diberi label permanen 0, 3, 4, 1 dan simpul v3diberi label temporer 8.
d.
Semua simpul v1,v2, v3, v4, v5telah mendapat label permanen berturut – turut 0, 3, 6, 4 dan 1. Proses algoritma Dijkstra selesai.
Berdasarkan hasil diatas, bobot lintasan terpendek dari simpul v1ke simpul v3dengan menggunakan algoritma Dijkstra adalah 6 dengan lintasan v1, v2, v4, v3.
2.4 Google Maps
Produk dari perhitungan jarak antar tiang telepon yang dijadikan penelitian akan ditampilkan kedalam sebuah peta untuk memperlihatkan jalur mana yang akan dilewati, maka Google Maps digunakan sebagai peta yang digunakan untuk menampilkan jalur yang akan dilewati. Ada nya fitur untuk mengetahui jarak antar tiang telepon juga dapat membantu dalam melakukan perhitungan pencarian jarak optimal
Google Maps adalah layanan aplikasi peta online yang disediakan oleh Google secara gratis. Layanan peta Google Maps secara resmi dapat
6*
4* 1*
0*
diakses melalui situs http://maps.google.com. Google Maps digunakan karena peta tersebut sudah memilik letak daerah yang akan digunakan lengkap dengan berbagai macam atribut goegrafi dan bisa melakukan penambahan atribut misalnya tiang telepon dengan memberi simbol tertentu. Pada situs tersebut dapat dilihat informasi geografis pada hampir semua permukaan di bumi kecuali daerah kutub utara dan selatan. Layanan ini dibuat sangat interaktif, karena di dalamnya peta dapat digeser sesuai keinginan pengguna, mengubah level zoom, serta mengubah tampilan jenis peta. Google Maps mempunyai banyak fasilitas yang dapat dipergunakan misalnya pencarian lokasi dengan memasukkan kata kunci, kata kunci yang dimaksud seperti nama tempat kota, atau jalan, fasilitas lainnya yaitu perhitungan rute perjalanan dari satu tempat ke tempat lainnya [16]. Tampilan pada Google Maps dapat dilihat pada gambar 2.4
16
2.4.1 Konsep Google Maps
Google Maps dibuat dengan menggunakan kombinasi dari gambar peta, database, serta obyek-obyek interaktif yang dibuat dengan bahasa pemrograman HTML, Javascript dan AJAX, serta beberapa bahasa pemrograman lainnya. Gambar-gambar yang muncul pada peta merupakan hasil komunikasi dengan database pada web server Google untuk menampilkan gabungan dari potongan – potongan gambar yang diminta. Keseluruhan citra yang ada diintegrasikan kedalam database pada Google Server, yang nantinya akan dapat dipanggil sesuai kebutuhan permintaan. Bagian- bagian gambar map merupakan gabungan dari potongan gambar-gambar bertipe PNG yang disebut tile yang berukuran 256 x 256 pixel seperti gambar berikut [16].
Gambar 2.5 Pembagian gambar peta sebesar 256 x 256 Pixel
Tiap-tiap potongan gambar diatas, mewakili gambar tertentu dalam
longitude, latitude dan zoom level tertentu. Kode Javascript yang digunakan untuk menampilkan peta Google Maps diambil dari link URL. Jadi untuk menampilkan peta suatu lokasi yang diinginkan, dapat dengan cara mengirimkan URL yang diinginkan,misalnya:
http://maps.google.com/?ie=UTF8&ll=6.500899,106.918945&spn=4.32707 8,4.938354&z=8
ie=UTF8, adalah karakter encoding untuk map.
ll=-6.500899,106.918945, adalah posisi titik tengah peta yaitu latitude (lintang) dan longitude (bujur) dari peta yang ditampilkan, pada link diatas posisi titik tengah peta pada latitude: -6.500899 dan logitude: 106.918945.
spn=4.327078,4.938354, adalah rentang dari latitude dan longitudenya.
z=8, adalah tingkatan/level zoom peta
2.4.2 Google Maps API
API atau Application Programming Interface merupakan suatu dokumentasi yang terdiri dari interface, fungsi, kelas, struktur dan sebagainya untuk membangun sebuah perangkat lunak. Dengan adanya API ini, maka memudahkan programmer untuk “membongkar” suatu software untuk kemudian dapat dikembangkan atau diintegrasikan dengan perangkat lunak yang lain. API dapat dikatakan sebagai penghubung suatu aplikasi dengan aplikasi lainnya yang memungkinkan programmer menggunakan fungsi sistem . Proses ini dikelola melalui operating system. Keunggulan dari API ini adalah memungkinkan suatu aplikasi dengan aplikasi lainnya dapat saling berhubungan dan berinteraksi. Bahasa pemrograman yang digunakan oleh Google Maps yang terdiri dari HTML, Javascript dan AJAX serta XML, memungkinkan untuk menampilkan peta Google Maps di website lain. Google juga menyediakan layanan Google Maps API yang memungkinkan para pengembang untuk mengintegrasikan Google Maps ke dalam website masingmasing dengan menambahkan data point sendiri. Dengan menggunakan Google Maps API, Google Maps dapat ditampilkan pada web site eksternal. Agar aplikasi Google Maps dapat muncul di website tertentu, diperlukan adanya API key. API key
18
merupakan kode unik yang digenerasikan oleh google untuk suatu website tertentu, agar server Google Maps dapat mengenali [16] [17].
2.5 Google Earth
Perhitungan jarak tiang telepon yang optimal adalah dengan memperhatikan keadaan daerah yang akan dijadikan sampel perhitungan. Misalnya ada rumah penduduk yang menghalangi, sungai yang menghalangi sehingga untuk mendapatkan mendapatkan jarak optimal harus mencari jalur yang lain. Untuk mengetahui hal tersebut Google Earth digunakan karena dapat menggambarkan peta yang dilengkapi dengan gambar rumah, jalan, sungai, laut ,dll.
Google Earth (GE) adalah Atlas Digital Dunia dan merupakan software buatan Google yang mampu memberikan gambar-gambar dari satelit menjadi salah satu Applikasi GIS (Geographic Information System) gratis yang paling mudah untuk digunakan. Layaknya sebuah applikasi GIS maka data yang tersimpan di GE mengunakan konsep Overlay. Oleh karena sebagai pengguna kita dapat menambahkan sebuah layer untuk mendapatkan informasi raster yang lebih menarik [18]. Gambar 2.6 merupakan tampilan dari Google Earth.
Gambar 2.6 tampilan Google Earth
2.5.1 Input Posisi
Dari data yang didapat berupa latitude (garis lintng) dan longitude (garis bujur) kemudian diinput ke dalam Goolge Earth dengan cara : 1. Toolbar dengan ikon “ ” dipilih kemudian akan tampil form
20
Gambar 2.7 form input posisi
2. Setelah memasukan latitude (garis lintang) dan longitude (garis bujur) kemudian memilih simbol untuk memberi tanda hasil inputan dengan memilih ikon “ ” pada form yang digunakam untuk input latitude (garis lintang) dan longitude (garis bujur). Gambar 2.7 menunjukan hasil setelah dilakukan input.
21
3.1 Alur Penelitian
Alur penelitian terdiri dari input yang berisi input data penelitian, proses berisi tentang bagaimana pemrosesan penelitian, output berisi hasil yang didapat dari bahan penelitian.
Gambar 3.1 Alur Penelitian Mulai Data Akuisisi Output Determination Area Determination Optimal Distance Perhitungan Jarak Kabel
22
3.2. Data Akuisisi
Data akusisi merupakan pengambilan dan pengumpulan data yang akan digunakan. Data yang dimaksud adalah posisi tiang telepon dan jarak kabel antar tiang telepon sebagai objek yang akan dilakukan perhitungan jarak optimalnya dari rumah pengguna tiang telepon sampai ke Telkom sebagai penyedian layanan.
3.3. Determination Area
Dari data yang telah didapat maka area yang akan digunakan untuk melakukan perhitungan jarak optimal penggunaan kabel telepon harus ditentukan letak tiang teleponnya sehingga perhitungan jarak optimal penggunaan kabel telepon tidak sampai ke daerah lain.
3.4. Determination Optimal Distance
Determination optimal distance adalah melakukan perhitungan optimal penggunaan kabel telepon dari awal sampai ketujuan sehingga akan mengetahui jarak yang optimal dari beberapa kemungkinan perhitungan jarak yang bisa terjadi dari banyaknya tiang yang ada. Perhitungan jarak optimal penggunaan kabel telepon menggunakan Algoritma Dijkstra yang merupakan salah satu algoritma yang digunakan untuk pencarian jarak. Berikut ini merupakan tahapan proses Algoritma Dijkstra :
1. Beri nilai bobot (jarak) untuk setiap titik ke titik lainnya,titik yang dimakstud adalah tiang telepon, lalu set nilai 0 pada node awal dan nilai tak hingga terhadap node lain (yang belum terisi).
2. Set semua node “Belum digunakan” dan set node awal sebagai “Node keberangkatan”.
3. Dari node keberangkatan, pertimbangkan node tetangga yang belum digunakan dan hitung jaraknya dari titik keberangkatan.
4. Setelah selesai mempertimbangkan setiap jarak terhadap node tetangga, tandai node yang telah digunakan sebagai “Node digunakan”. Node
digunakan tidak akan pernah di cek kembali, jarak yang disimpan adalah jarak terakhir dan yang paling minimal bobotnya.
5. Set “Node belum digunakan” dengan jarak terkecil (dari node keberangkatan) sebagai “Node Keberangkatan” selanjutnya dan lanjutkan dengan kembali ke step 3.
3.5. Perhitungan Jarak Kabel
Perhitungan jarak optimal yang telah dilakukan akan menghasilkan tiang telepon mana saja yang digunakan sehingga jumlah tiang telepon yang akan dipakai dapat dihitung jumlahnya.
3.6. Metode Pengumpulan Data
Untuk membangun Sistem Informasi Geografi, beberapa teknik pengumpulan data dan variable digunakan, diantaranya adalah :
1. Studi kepustakaan dan literatur, digunakan untuk mendapatkan informasi tentang dasar sistem informasi geografi. Untuk mendapatkan peta yang akan digunakan berasal dari peta yang dimiliki oleh Google, yaitu Google Maps
2. Diskusi dalam proses pengumpulan dan penyusunan instrument data ini dilakukan dengan cara melakukan diskusi yang dilakukan oleh pihak pihak terkait, yaitu PT. Telekomunikasi Indonesia, Tbk kacatel Pati.
3.7. Sumber Data
Sumber data yang digunakan untuk membangun sistem ini diperoleh dari hasil survey lapangan.
a. Jenis dan Sumber Data
Jenis dan sumber data yang menjadi bahan dalam penelitian ini terdiri dari :
1. Data Primer, data dan informasi yang diperoleh langsung dari narasumber yang berupa hasil wawancara
24
tentang cara perhitungan jarak kabel antasr tiang telepon yang sudah digunakan selama ini dan letak tiang telepon.
2. Data Sekunder, data dan informasi yang diperoleh dari dokumen, publikasi, laporan penelitian dari instansi/dinas manapun sumber data lainnya yang menunjang.
25
4.1 Akuisisi Data
Data yang digunakan pada penelitian ini telah disiapkan berupa data posisi tiang telepon dan data jarak antara tiang telepon. Sebelum proses perhitungan, data posisi tiang telepon dilakukan dengan survey secara langsung yang menghasilkan posisi latitude (garis lintang) dan posisi longitude (garis bujur) tiang telepon. Untuk perhitungan jarak optimal antar tiang telepon digunakan algoritma Dijkstra.
Langkah pertama data posisi letak tiang telepon dimasukkan ke dalam peta digital (Google Earth). Dari laitude dan longitude yang didapat diinput satu per satu ke dalam Google Earth sehingga diketahui posisinya kemudian diberi label pada tiap tiang telepon. Seperti diilustrasikan pada gambar 4.1
Gambar 4.1 Contoh sampel posisi tiang telepon
Simbol “ ” merupakan simbol untuk tiang telepon dan t1,t2... meruapakan inisial nama tiang telepon. Dari posisi tiang telepon yang ada akan didapat
26
berapa jauh jarak kabel antar tiang telepon dengan bantuan Google Maps yang selanjutnya digunakan untuk menghitung jarak optimal tiang telepon menggunakan algoritma Dijkstra..
4.1.1 Input Posisi
Dari posisi latitude dan longitude yang telah didapat maka data akan dimasukan kedalam database untuk selanjutnya ditampilkan dalam peta posisi dari tiang telepon. Untuk lebih mempermudah input data posisi tiang telepon, sistem dibuat dengan memilih lokasi di dalam peta sehingga latitude dan longitude dapat keluar dengan sesuai lokasi yang ditunjukan dan tinggal memberi nama inisial tiang telepon. Seperti diilustrasikan pada gambar 4.2
Gambar 4.3 Form input posisi tiang telepon
4.2 Determination Area
Penentuan area digunakan untuk menentukan daerah mana yang akan digunakan sebagai sampel perhitungan jarak optimal penggunaan kabel telepon seperti didesjripsikan pada gambar 4.4. Pemilihan daerah ditentukan dari masalah yang ada, misalnya banyaknya pecabangan jalan yang ada dan banyaknya rumah penduduk sehinnga pemasangan tiang telepon tidak bisa dilakukan sembarang.
28
Gambar diatas merupakan sampel daerah yang digunakan untuk perhitungan jarak penggunaan kabel telepon. Daerah tersebut diajadikan sampel karena banyaknya rumah penduduk yang menyebabkan jarak kabel antar tiang telepon dari awal ke tujuan belum optimal.
Tabel data sampel jarak antar tiang telepon : - t9 sebagai titik awal
Tabel 4.1 jarak kabel antar tiang telepon
No. Awal Tujuan Jarak (km)
1. t10 Telkom 0,4 km 2. t10 t1 0,35 km 3. t10 t2 0,35 km 4. t10 t3 0,3 km 5. t10 t4 0,3 km 6. t10 t5 0,25 km 7. t10 t6 0,23 km 8. t10 t7 0,16 km 9. t10 t8 0,1 km 10. t10 t9 0,062 km 11. t10 t11 0,16 km 12. t10 t12 0,2 km 13. t10 t13 0,22 km 14. t10 t14 0,27 km 15. t10 t15 0,3 km 16. t10 t16 0,35 km 17. t10 t17 0,45 km 18. t10 t18 0,55 km 19. t10 t19 0,6 km 20. t10 t20 0,65 km 21. t10 t21 0,75 km 22. t10 t22 0,65 km
23. t10 t23 0,75 km 24. t10 t24 0,7 km 25. t10 t25 0,65 km 26. t10 t26 0,5 km 27. t10 t27 0,45 km 28. t10 t28 0,45 km 29. t10 t29 0,45 km 30. t10 t30 0,4 km 31. t10 t31 0,35 km 32. t10 t32 0,4 km 33. t10 t33 0,45 km 34. t10 t34 0,5 km 35. t10 t35 0,3 km 36. t10 t36 0,3 km 37. t10 t37 0,3 km 38. t10 t38 0,27 km 39. t10 t39 0,27 km 40. t10 t40 0,2 km 41. t10 t41 0,23 km 42. t10 t42 0,2 km 43. t10 t43 0,15 km 44. t10 t44 0,17 km 45. t10 t45 0,2 km 46. t10 t46 0,28 km 47. t10 t47 0,3 km 48. t10 t48 0,12 km 49. t10 t49 0,3 km 50. t10 t50 0,35 km 51. t10 t51 0,45 km 52. t10 t52 0,5 km
30
53. t10 t53 0,55 km
54. t10 t54 0,55 km
4.3 Determination Optimal Distance
Perhitungan jarak optimal pengguaan kabel telepon menggunakan algoritma Dijkstra merupakan algoritma yang digunakan untuk untuk meneyelesaikan pencarian jarak terpendek diambil dari sebuah graf yang tidak mempunyai bobot dengan nilai yang negatif.
4.3.1. Graf
Graf digunakan untuk menggambarkan hubungan antar obyek yang digunakan untuk melakukan perhitungan jarak terpendek (Shortest path) menggunakan algoritma Dijkstra.
Dari data yang telah diperoleh dibuat graf seperti gambar 4.5
Agar masalah pencarian jarak terpendek dapat dilakukan harus memenuhi kriteria tertentu, yaitu :
1. Setiap ruas pada graf harus mempunyai nilai. 2. Setiap ruas pada graf tidak harus terhubung.
3. Setiap ruas pada graf harus mempunyai arah (berarah).
Karena graf pada gambar 4.5 tidak mempunyai arah atau tidak berarah sehingga untuk melakukan pencarian jarak terpendek tidak bisa dilakukan. Untuk memberi arah graf digunakan rumus seperti persamaan 4.1
Dimana G adalah Graf; ...(4.1)
V adalah Himpunan tidak kosong dari simpul – simpul (node); E adalah Himpunan sisi (edge) yang menhubungkan antar simpul.
Dari data seperti gambar 4.5 diperoleh :
Graf dengan himpunan simpul V dan himpunan sisi E.
V = {T, 1, 2, 3, 4, 5, 6,7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54} E = { (T,1), (T,27), (T,28), (1,T), (1,2), (2,1), (2,3), (3,2), (3,4), (4,3), (4,5), (5,4), (5,6), (6,5), (6,7), (7,6), (7,8), (8,7), (8,9), (9,8), (9,10), (9,48), (10,9), (10,11), (11,10), (11,12), (11,40), (12,11), (12,13), (13,12), (13,14), (14,13), (14,15), (15,14), (15,16), (16,15), (16,17), (17,16), (17,18), (17,34), (18,17), (18,19), (19,18), (19,20), (20,19), (20,21), (21,20), (21,22), (22,21), (22,23), (22,53), (22,54), (23,22), (23,24), (24,23), (24,25), (25,24), (25,26), (26,25), (26,27), (27,T), (27,26), (28,T), (28,30), (29,28), (29,30), (30,29), (30,31), (31,30), (31,32), (31,50), (32,31), (32,33), (33,32), (33,34), (33,51), (34,17), (34,33), (35,36), (35,37), (36,35), (36,37), (37,35), (37,36), (37,38), (37,39), (38,37), (38,39), (38,41), (39,37), (39,38), (39,41), (40,11), (40,41), (41,38), (41,39), (42,41), (42,43), (43,42), (43,44), (43,48), (44,43), (44,45), (45,44), (45,46), (46,45), (46,47), (47,46), (47,49), (48,9), (48,43), (49,47), (49,50), G = (V, E)
32
(50,31), (50,49), (51,33), (51,52), (52,51), (52,53), (52,54), (53,22), (53,52), (53,54), (54,22), (54,52), (54,53) }
Dari perhitungan graf tersebut maka graf dapat dibuat menjadi graf berarah dengan mengbuhungan (V,E) sehingga dapat dibuat menjadi seperti graf dibwah ini.
Gambar 4.6 Pemodelan Graf berarah tiang telepon
Pada graf tersebut, tiang telepon disimbolkan dengan simbol lingakaran yang diberi angka yang diambil secara acak karena tiang telepon tidak mempunyai penomoran tertentu dan jarak antar satu tiang telepon dengan
tiang telepon lain disimbolakan dengan perpaduan antar angka dan huruf alfabet. Sebagai contoh :
- Titik 1 mempunyai (V, E) yaitu (1,T), (1,2)
(1,T) = jarak antara titik 1 ke titik T diberi simbol 1B (1,2) = jarak antara titik 1 ke titik 2 diberi simbol 1A
Hal tersebut dilakuikan terhadap semua titik sehingga akan menjadi lebih jelas kemana arah yang akan dilalui dan bisa membuat pencarian jarak antar tiang telepon lebih efektif.
4.3.2 Perhitungan Jarak
Setelah posisi antar tiang telepon diketahui maka perhitungan jarak kabel dapat dilakukan menggunakan salah satu fitur yang dimiliki Google Maps. Perhitungan jarak juga bisa dicari melalui latitude dan longitude yang telah diketahui menggunakan rumus Haversin. Rumus Haversin sebagai berikut :
...4 .2
Haversin (θ) = sin2(θ/2) ; Φ1adalah garis lintang ( latitude ) dari titik 1; D adalah jarak dua titik (antara unit dan teknisi); Φ2 adalah garis lintang ( latitude ) dari titik 2; R adalah jari-jari bola (radius bumi); λ1 adalah garis bujur (longitude) dari titik 1; λ2adalah garis bujur (longitude) dari titik 2.
34
Sehinnga rumus Haversine menajdi :
Fungsi Haversine menggunakan derajat dari latitude dan longitude kemudian derajat diubah menjadi radian (derajat .
).
untuk menghitung jarak antar dua titik maka menggunakan rumus 4.3... 4.3
Dimana a adalah Haversine; c adalah kalkulasi perpotongan sumbu; d adalah jarak. Gambar 4.7 menunjukan perhitungan jarak dari titk A ke titk B dengan dengan jarak 55 m didapat dari perhitungan Google Maps.
Gambar 4.7 perhitungan jarak kabel antar tiang telepon R = 637100 (Radius Bumi dalam meter)
Δlatitude = latitude2– latitude1
Δlongitude = longitude2- longitude1
a = sin2(Δlatitude / 2) + cos(latitude1) ∙ cos(latitude2) ∙
sin2(Δlongitude / 2) c = 2 ∙ atan2(√a, √(1 - a)) d = R ∙ c
Setelah memilih tiang telepon yang akan dicari jarak kabelnya, gambar diatas mencoba mencari jarak tiang A dan tiang B dengan terlebih dahulu memasukan latitude dan longitude masing – masing tiang kemudian akan muncul jarak antara kedua tiang tersebut atau dapaat dihitung menggunakan rumus Haversine. Dibawah ini contoh perhitungan jarak menggunakan rumus Haversin pada gambar 4.7
Titik Telkom : -6.75094341873(latitude 1), 111.031152986(longitude 1) Titik t1 : -6.75074627391(latitude 2), 111.030685506(longitude 2)
Derajat dari latitude dan longitude tersebut kemudian diubah kedalam bentuk radian.
Titik Telkom : -0.117826190273, 1.93785919189 Titik t1 : -0.117822749446, 1.93785103283 Δlatitude = latitude2– latitude1
= -0.117822749446 – (-0.117826190273) = 0,000003440827
Δlongitude = longitude2- longitude1
= 1.93785103283 - 1.93785919189 = -0,00000815906
a = sin2(Δlatitude / 2) + cos(latitude1) ∙ cos(latitude2) ∙ sin2(Δlongitude / 2) = sin2(0,000003440827/ 2) + cos(-0.117826190273) ∙ cos(-0.117822749446) ∙
sin2(-0,00000815906 / 2) = 1.93724321555 c = 2 ∙ atan2(√a, √(1 - a)) = 2. Atan2 (√1.93724321555, √(1 - 1.93724321555)) =
8.80282503645
d = R ∙ c = 6371000 .8.80282503645
=56.08279830720 m
= 0,056 km
Hal tersebut dilakukan terhadap semua tiang telepon yang dijadikan sebagai sampel sehingga keseluruhan jarak antar tiang telepon dapat diketahui.
36
4.3.3 Algoritma Dijkstra
Algorimtma Dijkstra digunakan untuk mencari jarak terpendek dari sebuah graf. Dalam menentukan jalur terpendek dari suatu graf oleh algoritma dijkstra akan didapatkan jalur yang optimal, karena pada waktu penentuan jalur yang akan dipilih, akan dianalisis bobot dari node yang belum terpilih, lalu dipilih node dengan bobot yang terkecil. Jika ternyata ada bobot yang lebih kecil melalui node tertentu maka bobot akan dapat berubah. Algoritma Dijkstra akan berhenti ketika semua node sudah terpilih.
Untuk mendapatkan jarak optimal penggunaan kabel telepon juga harus memperhatikan kondisi yang ada dilapangan. Jalur pendek yang bisa didapat belum tentu optimal. Gambar dibawah ini merupakan sebuah komplek pertokoan yang akan melakukan pemasanga kabel telepon dari titik 43 ke titik 10. Untuk penarikan kabel dari titik 43 ke titik 10 terhalang bangunan maka penarikan harus melewati beberapa tiang telepon sebelum sampai ke titik 10.
Gambar 4.8 sample daerah yang akan dilakukan perhitungan Ada beberapa kemungkinan jalur yang bisa dilewati, yaitu :
- 43 48 9 10
- 43 42 41 40 11 10 - 43 10
Tabel 4.2 perhitungan jarak t43 ke t10
No. Awal Tiang yang dilewati Tujuan Jarak
1. t43 t48, t9 t10 0,13 km
2. t43 t42, t41, t40, t11 t10 0,293 km
3. t43 t10 t10 0,092 km
Tabel diatas menunujukan jarak terpendek yang bisa dilewati adalah t43 t10 dengan jarak 0,092 km. Meskipun mempunyai jarak terpendek tetapi tidak optimal karenai penarikan kabel dari t43 t10 tidak bisa dilakukan karena kabel terhalang oleh beberapa bangunan sehingga diperlukan jalur lain agar bisa lebih optimal.
Kemungkinan jalur yang dapat dilewati masih ada kemungkinan, yaitu 43 48 9 10 dan 43 42 41 40 11 10. Jalur yang melewat 43 48 9 10 merupakan jalur yang lebih optimal berdasarkan data yang ada.
4.3.3.1 Perhitungan Jarak Optimal menggunakan Algoritma Dijkstra
Graf yang telah dibuat merupakan awal dari perhitungan menggunakan algoritma Dijkstra untuk membuktikan jalur 43 48 9 10 lebih optimal.
38
Untuk menentukan lintasan optimal dari titik 43 ke titik 10 , langkah – langkah algoritma Dijkstra sebagai berikut [15] [19] [20]:
1. Beriakan titik 43 label permanen 0. Karena titik 43 merupakan titik awal sehingga tidak diberikan nilai.
2. Untuk setiap simpul yang bertetangga dengan titik 43, berilah label temporer sesuai dengan bobot sisi berarah dari titik 43 dan yang lainnya diberi label temporer ∞.
Simpul bertetangga yang dimaksud didapat dari graf berarah pada gambar 4.6 yang telah dibuat sehinnga jelas satu titik berhubungan bisa berhubungan dengan titik lain. Bobot yang terdapat pada setiap edge akan disimpan ke dalam array d[v] dan bobot tersebut masih bisa berubah sesuai dengan edge yang dilewati kemudian dimasukan ke priority queue yang merupakan antrian sehingga antrian yang mempunyai mempunyai nilai terkecil mempunyai prioritas terbesar. Contoh :
Diketauhi node a, b, c, d, e dengan array d[v] = 0, 2, 7, ∞, ∞ Priotiry Queue :
v b c d e d[v] 2 7 ∞ ∞
Titik a tidak dimasukan karena a adalah titik awal sehingga mempunyai nilai 0. Dari array yang diketahui mempunyai bobot terkecil adalah b, maka node b akan diproses lagi.
3. Simpul yang mempunyai label temporer yang terkecil, berilah label permanen dengan simbol “*”
4. Perhatikan simpul yang memperoleh label permanen yang terakhir atau titik tujuan, jika simpul telah mendapatkan label permanen , selesai. Jika tidak, kembali ke langkah no. 3
Tabel 4.3 menunjukan jarak kabel antar tiang telepon
No. Tiang telepon jarak
1. t43 t48 0,029 km 2. t48 t9 0,039 km 3. t9 t10 0,062 km 4. t43 t42 0,043 km 5. t42 t41 0,033 km 6. t41 t40 0,029 km 7. t40 t11 0,028 km 8. t11 t10 0,16 km
Berikut proses algoritma Dijkstra : 1. Priority Queue : v 43 42 41 40 11 48 9 10 d[v] 0 43 ∞ ∞ ∞ 29 ∞ ∞ v 42 41 40 11 48 9 10 d[v] 43 ∞ ∞ ∞ 29 ∞ ∞ 0* 29* 43 ∞ ∞ ∞ ∞ ∞
40
Simpul 43, 48 berturut – turut diberi label permanen. Simpul 42 diberi label temporer dan yang lain diberi label ∞
2.
Priority Queue :
Simpul 43, 48, 42 berturut – turut diberi label permanen. Simpul 9 diberi label temporer dan yang lain diberi label ∞
v 43 42 41 40 11 48 9 10 d[v] 0 43 ∞ ∞ ∞ 29 68 ∞ v 42 41 40 11 9 10 d[v] 43 ∞ ∞ ∞ 68 ∞ 29* 0* 43* ∞ ∞ ∞ 68 ∞
3.
Priority Queue :
Simpul 43, 48, 42, 9 berturut – turut diberi label permanen. Simpul 41 diberi label temporer dan yang lain diberi label ∞
v 43 42 41 40 11 48 9 10 d[v] 0 43 76 ∞ ∞ 29 68 ∞ v 41 40 11 9 10 d[v] 76 ∞ ∞ 68 ∞ 29* 0* 68* 43* ∞ ∞ 76 ∞
42
4.
Priority Queue :
Simpul 43, 48, 42, 9 berturut – turut diberi label permanen. Simpul 41 diberi label temporer dan yang lain diberi label ∞. Karena sudah sampai ke simpul 10 maka jarak terpendek diketahui, yaitu 130 m atau 0,13 km.
Karena belum semua simpul mendapat label permanen maka proses dilanjutkan menjadi seperti berikut :
v 43 42 41 40 11 48 9 10 d[v] 0 43 76 ∞ ∞ 29 68 130 v 41 40 11 10 d[v] 76 ∞ ∞ 130 68* 29* 0* 43* 76* ∞ ∞ 130*
5.
Priority Queue :
Node 10 sebagai tujuan kemabali dikosongkan karena belum semua node terlewati. Node 40 diberi label permanen.
v 43 42 41 40 11 48 9 10 d[v] 0 43 76 105 ∞ 29 68 ∞ v 40 11 10 d[v] 105 ∞ ∞ 68* 76* 0* 43* ∞ 29* ∞ 105*
44
6.
Priority Queue :
Node 11 diberi label permanen.
v 43 42 41 40 11 48 9 10 d[v] 0 43 76 105 133 29 68 ∞ v 11 10 d[v] 133 ∞ 68* 76* 0* 43* ∞ 29* 133* 105*
7.
Priority Queue :
Setelah semua simpul mendapat label permanen maka kemungkinan jarak terpendek diketahui yaitu
- 434241401110 dengan jarak 0,293 km - 4348910 dengan jarak 0,13 km
Jadi jarak optimal dari titi 43 ke titik 10 adalah 0,13 km dengan jalur 43 48 9 10. v 43 42 41 40 11 48 9 10 d[v] 0 43 76 105 133 29 68 293 v 10 d[v] 293 68* 76* 0* 43* 293* 29* 133* 105*
46
4.4 Pengujian
4.4.1 Deskripsi Sistem
Sistem ini menggunakan Algoritma Dijkstra yang digunakan untuk melakukan pencarian jarak yang optimalpenggunaan kabel telepon yang telah dipetakan. Peta yang digunakan dalam sistem ini menggunakan Goolge Maps. Berikut analisis dari sistem :
1. Analisis Input
Proses simulasi perhitungan jarak optimal penggunaan kabel telepon membutuhkan data posisi tiang telepon dan jarak kabel antara tiang telepon. Data tiang telepon didapat dengan cara memasukan latitude (garis lintang) dan longitude (garis bujur) yang dimiliki masing – masing tiang telepon. Perhitungan jarak dilakukan menggunakan bantuan google maps sehingga jarak dari satu tiang telepon ke tiang telepon lain dapat diketahui.
2. Analisis Output
Hasil output dari sistem ini berupa posisi rekomendasi jalur kabel telepon yang akan dilewati dan jarak antar tiang telepon .
4.4.2 Skenario Pengujian
Dalam penelitian ini terdapat beberapa skenario yang akan dilakukan dalam pengujian. Pengujian ini dimaksudkan untuk mengetahui ketepatan sistem menghitung jarak menggunakan algoritma Dijkstra. Berikut langkah-langkah yang dilakukan dalam pengujian :
a. Menentukan titik loaksi tiang telepon yang akan diuji perhitungan jaraknya.
b. Menguji perhitungan secara manual dengan membandingakan perhitungan dengan algoritma Dijkstra.
4.4.3 Hasil Pengujian
Berikut hasil pengujian yang telah dilakukan :
1. Menentuka titik tiang yang akan dicari jarak optimalnya.
Titik yang akan diuji adalah titik 43 sebagai titik awal ke titik 10 sebagai titik tujuan.
Gambar 4.9 Penentuan posisi tiang telepon
Gambar diatas yang dilingkari menunjukan tiang telepon yang akan diuji jarak optimalnya.
2. Perhitungan jarak menggunakan algoritma Dijkstra
Setelah melakukan input lokasi yang akan diuji yaitu jarak optimal dari titik tiang telepon 43 ke titik tiang telepon 10. Dari graf yang telah ada ada banyak kemungkinan jalur yang dilewati tetapi hanya satu yang mempunyai jarak yang optimal.
Tabel hasil perhitungan dijkstra :
Tabel 4.4 hasil perhitungan jarak optimal penggunaan kabel telepon
No Titik Graf Jarak
48
2. t48 t9 0,039 km
3. t9 t10 0,062 km
Total jarak 0,13 km
Dibawah ini gambar hasil perhitungan sistem tentang jarak optimal penggunaan kabel telepon menggunakan algoritma Dijkstra :
Gambar 4.11 Rute yang disarankan sistem
3. Evaluasi
Tahapan evaluasi digunakan untuk membandingakan keunggulan perhitungan jarak optimal tiang telepon menggunkan algoritma Dijkstra dengan metode secara manual tanpa memperhitungkan jarak yang selama ini digunkan. Dengan menggunakan sampel sebelumnya yang sudah dilakukan perhitungan,dibawah ini tabel pembanding antara menggunakan algoritma Dijkstra dengan perhitungan biasa :
50
Tabel 4.5 Hasil perbandingan perhitungan jarak menggunakan algoritma Dijkstra dengan tidak menggunakan algoritma Dijkstra. No. Menggunakan Algoritma Dijkstra Tidak menggunakan
Algoritma Dijkstra
Titik Graf Jarak Titik Graf Jarak
1. t43 t48 0,029 km t43 t42 0,043 km
2. t48 t9 0,039 km t42 t41 0,033 km
3. t9 t10 0,062 km t41 t40 0,029 km
4. t40 t11 0,028 km
5. t11 t10 0,16 km
Total jarak 0,13 km Total Jarak 0,293 km
Terbukti algoritma Dijkstra bisa memhasilkan perhitungan jarak tiang telepon yang lebih optimal daripada perhitungan jarak secara manual yang selama ini hanya dipasang seadanya.
Dari pengujian yang telah dilakukan ada beberapa kekuranga dalam hal menampilakan rute kedalam peta karena rute yang ditampilakan merupakan rute perhitungan yang dibuat oleh Google sehingga terkadang jalan yang ditunjukan tidak sesuai dengan apa yang telah dihitung menggunakan algoritma Dijkstra.
51
5.1 Kesimpulan
Setelah dilakukan pengujian terhadap sistem perhitungan jarak optimal antar tiang telepon, maka dapat diambil beberapa kesimpulan sebagai berikut :
1. Hasil perhitungan sampel menggunakan metode biasa menghasilkan jarak 0,293 km, sedangkan hasil perhitungan menggunakan algoritma Dijkstra menghasilkan jarak 0,13 km. Berdasarkan hasil kedua metode tersebut maka dapat diketahui bahwa perhitungan menggunakan algoritma Dijkstra dapat memperpendek jarak 55,63% tetapi juga tergantung tempat dilakukan perhitungan jarak sehingga lebih efisien dalam penggunaan kabel dan tiang telepon dibandingkan dengan metode biasa.
2. Terdapat beberapa faktor yang mempengaruhi keberhasilan sistem yaitu data posisi tiang telepon berupa latitude (garis lintang) dan longitude (garis bujur) dan jarak kabel antar tiang telepon diketahui.
5.2 Saran
Berikut ini merupakan saran yang ditunjukkan untuk penelitian lebih lanjut :
1. Untuk meningkatkan perhitungan jarak kabel telepon disarankan menggunakan perhitungan menggunakan rumus Haversin untuk mengetahui jarak yang lebih akurat daripada menggunakan fitur perhitungan yang dimiliki oleh Goolge Maps.
2. Perhitungan jarak penggunaan kanel telepon sebaiknya memperhatikan kondisi lokasi misalnya, terdapat daerah yang padat pemukiman, sungai, jalur kereta api, dll sehingga jalur yang digunakan dalam perhitungan jarak antar tiang telepon dapat lebih optimal.
DAFTAR PUSTAKA
[1] Suherman. 2005. Desain dan Implementasi Jaringan Akses Kabel Telepon. Tugas Akhir Universitas Sumatera Utara.
[2] Rahmat Fauzi dan Suherman. 2006. Jaringan Telekomunikasi. Medan : Universitas Sumatera Utara
[3] Manalu, Joyce C.R. 2007. Visualisasi Jaringan Telepon Pusat Kota Makassar Menggunakan Sistem Informasi Geografis. Tugas Akhir Universitas Kristen Duta Wacana.
[4] Susanto, Fajar Anas. 2009. Sistem Pendukung Keputusan Menentukan Rute Terpendek Pemasangan Kabel Telepon Menggunakan Metode A* (Studi Kasus di CV. Empat Putra Pandaan. Tugas Akhir Sekolah Tinggi Manajemen Informatika dan Teknik Komputer
[5] Hidayat, Taufiq. 2006. Perancangan Sistem Informasi Geografis Penentuan Jalur Jalan Optimum Kodya Yogyakarta. Tugas Akhir Universitas Islam Indonesia
[6] Munir, Agus Qomaruddin. 2012. Implementasi Sistem Informasi Geografis Penentuan Jalur Jalan Optimum Kodya Yogyakarta Menggunakan Algoritma Dijkstra. Tugas Akhir Universitas Respati [7] Daniel, Ignatius. 2012. Perbandingan algoritma floyd-warshall dan
Dijkstra dengan simulasi permainan hunt the wumpus termodifikasi. Tugas Akhir Universitas Multimedia Nusantara.
[8] Anonim. 2003. Graf. ITB. Bandung. http://kur2003.if.itb.ac.id/file/ /IntroGraph.pdf (diakses pada tanggal 10 September 2013)
[9] Gentara, Giri Mega. 2011. Simulasi Pencarian Jarak Terpendek
Menggunakan Algoritma Dijkstra. Tugas Akhir Universitas Komputer Indonesia
[10] Haversin Formula. http://en.wikipedia.org/wiki/Haversine_formula (diakses pada tanggal 10 September 2013).
[11] Kasim, Crystal. 2013. Aplikasi LBS (Location Based Services)
Akhir Universitas Kristen Duta Wacana.
[13] Imron Fauzi. 2011. Implementasi Algoritma Dijkstra untuk Mendapatkan Jalur Tercepat dan Jalur Terpendek. Tugas Akhir Universitas Islam Negeri Syarif Hidayatullah.
[14] Drs.Suarga, M.Sc, M.Math., Ph.D. 2006. Algoritma dan pemrograman. Yogyakarta : Andi Offset.
[15] Bahri, Syamsul. 1997. Algoritma Penentuan Lintasan Terpendek untuk Semua Pasangan Simpul. Tugas Akhir Institut Pertanian Bogor.
[16] Siswanto. 2012. Sistem Informasi Goegrafis Objek Wisata Menggunakan Google Maps API Studi Kasus Kabupaten Mojokerto. Tugas Akhir Institut Teknologi Sepuluh Nopember.
[17] Handoko, Slamet. 2012. Sistem Informasi Geografi Berbasis Web untuk Pemetaan Sebaran Alumni Menggunakan Metode K – Means. Tesis Universitas Diponegoro.
[18] Cherter, Denny. 2008. Image Overlay Google Earth.
http://ilmukomputer.org/2008/05/28/image-overlay-google-earth/ ( diakses pada tanggal 18 September 2013).
[19] Dijkstra’s Shortest Path Algorithm.
http://www.cse.ust.hk/~dekai/271/notes/L10/L10.pdf (diakses pada tanggal 10 September 2013).
[20] Hilmi, Muhammad Riza, ST. 2012. Heap & Priority Queue Struktur Data. http://materi.rizahilmi.com/Struktur%20Data/08_HEAP-&-PRIORITY-QUEUE.pdf (diakses pada tanggal 19 September 2013).
A-1 Lampiran 1 Tampilan program
B-1
Lampiran 2 Tabel sampel jarak antar tiang telepon
No. Awal Tujuan Jarak (km)
1. t10 Telkom 0,4 km 2. t10 t1 0,35 km 3. t10 t2 0,35 km 4. t10 t3 0,3 km 5. t10 t4 0,3 km 6. t10 t5 0,25 km 7. t10 t6 0,23 km 8. t10 t7 0,16 km 9. t10 t8 0,1 km 10. t10 t9 0,062 km 11. t10 t11 0,16 km 12. t10 t12 0,2 km 13. t10 t13 0,22 km 14. t10 t14 0,27 km 15. t10 t15 0,3 km 16. t10 t16 0,35 km 17. t10 t17 0,45 km 18. t10 t18 0,55 km 19. t10 t19 0,6 km 20. t10 t20 0,65 km 21. t10 t21 0,75 km 22. t10 t22 0,65 km 23. t10 t23 0,75 km 24. t10 t24 0,7 km 25. t10 t25 0,65 km 26. t10 t26 0,5 km 27. t10 t27 0,45 km 28. t10 t28 0,45 km
B-1 33. t10 t33 0,45 km 34. t10 t34 0,5 km 35. t10 t35 0,3 km 36. t10 t36 0,3 km 37. t10 t37 0,3 km 38. t10 t38 0,27 km 39. t10 t39 0,27 km 40. t10 t40 0,2 km 41. t10 t41 0,23 km 42. t10 t42 0,2 km 43. t10 t43 0,15 km 44. t10 t44 0,17 km 45. t10 t45 0,2 km 46. t10 t46 0,28 km 47. t10 t47 0,3 km 48. t10 t48 0,12 km 49. t10 t49 0,3 km 50. t10 t50 0,35 km 51. t10 t51 0,45 km 52. t10 t52 0,5 km 53. t10 t53 0,55 km 54. t10 t54 0,55 km
C-1 Lampiran 3 Source Code Dijkstra
<?php /* * Author: [email protected] */ require_once("PriorityQueue.php"); class Edge { public $start; public $end; public $weight;
public function __construct($start, $end, $weight) { $this->start = $start; $this->end = $end; $this->weight = $weight; } } class Graph {
public $nodes = array();
public function addedge($start, $end, $weight = 0) { if (!isset($this->nodes[$start])) {
$this->nodes[$start] = array(); }
array_push($this->nodes[$start], new Edge($start, $end, $weight));
}
public function removenode($index) {
array_splice($this->nodes, $index, 1); }
C-2 $previous = array(); $queue = array(); $Q = new PriorityQueue("compareWeights"); $Q->add(array($dist[$from], $from)); $nodes = $this->nodes; while($Q->size() > 0) {
list($distance, $u) = $Q->remove(); if (isset($visited[$u])) {
continue; }
$visited[$u] = True; if (!isset($nodes[$u])) {
print "WARNING: '$u' is not found in the node list\n";
}
foreach($nodes[$u] as $edge) {
$alt = $dist[$u] + $edge->weight; $end = $edge->end;
if (!isset($dist[$end]) || $alt < $dist[$end]) { $previous[$end] = $u; $dist[$end] = $alt; $Q->add(array($dist[$end], $end)); } } }
return array($dist, $previous); }
C-3
public function paths_to($node_dsts, $tonode) {
// unwind the previous nodes for the specific destination node $current = $tonode;
$path = array();
if (isset($node_dsts[$current])) { // only add if there is a path to node array_push($path, $tonode); } while(isset($node_dsts[$current])) { $nextnode = $node_dsts[$current]; array_push($path, $nextnode); $current = $nextnode; } return array_reverse($path); }
public function getpath($from, $to) {
list($distances, $prev) = $this->paths_from($from); return $this->paths_to($prev, $to);
} }
function compareWeights($a, $b) { return $a->data[0] - $b->data[0]; }