PERBANDINGAN ALGORITMA A* DAN BREADTH FIRST SEARCH UNTUK PENCARIAN HOTEL TERDEKAT
DARI STASIUN KERETA API MEDAN
RODIYAH AINI MANURUNG 121401057
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2016
2
PERBANDINGAN ALGORITMA A* DAN BREADTH FIRST SEARCH UNTUK PENCARIAN HOTEL TERDEKAT
DARI STASIUN KERETA API MEDAN
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
RODIYAH AINI MANURUNG 121401057
PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS ILMI KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2016
3
PERSETUJUAN
Judul : PERBANDINGAN ALGORITMA A* DAN
BREADTH FIRST SEARCH UNTUK PENCARIAN HOTEL TERDEKAT DARI STASIUN KERETA API MEDAN
Kategori : DESAIN DAN ANALISIS ALGORITMA
Nama : RODIYAH AINI MANURUNG
Nomor Induk Mahasiswa : 121401057
Program Studi : S-1 ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dian Rachmawati S.Si, M.Kom Drs. Agus Salim Harahap, M.Si
NIP. 198307232009122004 NIP. 195408281981031004
Diketahui/disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 196202171991031001
4
PERNYATAAN
PERBANDINGAN ALGORITMA A* DAN BREADTH FIRST SEARCH UNTUK PENCARIAN HOTEL TERDEKAT
DARI STASIUN KERETA API MEDAN
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, Oktober 2016
Rodiyah Aini Manurung 121401057
5
PENGHARGAAN
Alhamdulillahirrabbil’alamin. Puji dan syukur penulis ucapkan atas kehadirat Allah SWT yang telah memberikan limpahan rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara. Shalawat beriring salam penulis juga persembahkan kepada Nabi Besar Muhammad SAW.
Dengan segala kerendahan hati, pada kesempatan ini penulis menyampaikan terima kasih kepada semua pihak yang telah membantu penyelesaian skripsi dengan judul Perbandingan Algoritma A* dan Breadth First Search untuk Pencarian Hotel terdekat dari Stasiun Kereta Api Medan. Penulis mengucapkan terima kasih kepada:
1. Prof. Dr. Runtung Sitepu, SH, M.Hum sebagai Rektor Universitas Sumatera Utara (USU).
2. Prof. Dr. Opim Salim Sitompul sebagai Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Dr. Poltak Sihombing, M.Kom sebagai Ketua Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
4. Drs. Agus Salim Harahap, M.Si sebagai Dosen Pembimbing I yang telah memberikan arahan, ilmu dan motivasi kepada penulis dalam pengerjaan skripsi ini.
5. Ibu Dian Rachmawati, S.Si, M.Kom sebagai Dosen Pembimbing II yang telah memberikan arahan, ilmu dan motivasi kepada penulis dalam pengerjaan skripsi ini.
6. Bapak M. Andri Budiman, S.T., M.Komp.Sc., M.E.M dan Ibu Elviwani, S.T., S.Kom., M.Kom selaku Dosen Penguji yang telah memberikan saran dan kritik kepada penulis dalam penyempurnaan skripsi ini.
7. Seluruh Dosen serta staf Pegawai di Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
6
8. Kedua Orang tua penulis tercinta Ibunda Masjidawati dan Ayahanda Effendi Manurung serta adik tercinta Rahmat Riyadi Manurung dan Annisa Rahmayani Manurung yang telah memberikan do’a, dukungan, perhatian, kesabaran serta kasih sayang yang tulus serta pengorbanan yang tidak ternilai harganya.
9. Angkatan Sepuluh Pasbrata keluarga kedua penulis yang tulus memberikan do’a dan dukungan serta selalu mendegarkan cerita penulis baik suka maupun duka yang tidak bisa penulis sebutkan satu-persatu.
10. Terima kasih kepada Julilmi Harahap, S.Kom, Ananda Dwi Putri, S.Kom, Nurul Utami Marza, Rahma Isnaini Masya, S.Kom dan Tristania Marcelina Siagian, S.Kom yang selama perkuliahan menjadi tempat berbagi suka dan duka selama perkuliahan dan pengerjaan skripsi ini.
11. Teman- teman kuliah, khususnya Arif Setiawan, S.Kom, Boris Mario, S.Kom, Ridho Amanda Putra, Johan Surya, S.Kom, serta Stambuk 2012 yang tidak dapat disebut satu-persatu, yang telah banyak membantu dalam pengerjaan skripsi ini.
12. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu penyelesaian skripsi ini.
Sekali lagi penulis mengucapkan terima kasih kepada semua pihak yang membantu dalam penyelesaian skripsi ini yang tidak dapat disebutkan satu persatu, terima kasih atas ide, saran dan motivasi yang diberikan. Semoga Allah SWT memberikan limpahan karunia kepada semua pihak yang telah memberikan bantuan, perhatian, kasih sayang serta dukungan kepada penulis dalam menyelesaikan skripsi ini.
Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan karena kesempurnaan hanyalah milik Allah SWT semata. Oleh karena itu penulis menerima kritik dan saran dari semua pihak yang bersifat membangun dan menyempurnakan skripsi ini.
Penulis berharap semoga skripsi ini bermanfaat bagi penulis sendiri pada khususnya dan pembaca pada umumnya.
Medan, Oktober 2016 Penulis,
7
ABSTRAK
Stasiun Kereta Api Medan (KAI) merupakan tempat menaikkan dan menurunkan penumpang yang menggunakan jasa transportasi kereta api. Kebanyakan wisatawan atau pegawai yang melakukan perjalanan dinas berasal dari Kabupaten/Kota Madya Sumatera Utara. Kereta api menjadi pilihan kebanyakan orang, selain murah kereta api juga tergolong transportasi yang cepat dan bebas hambatan. seorang wisatawan atau orang yang melakukan perjalanan dinas kerap kali mencari penginapan terdekat dari Stasiun Kereta Api. Karena itu penulis membuat sebuah sistem yang mampu membantu kita dalam menentukan penginapan yang terdekat dari stasiun kereta api Medan. A* dan Breadth First Search (BFS) adalah algoritma yang digunakan untuk membangun sistem. Sistem dibangun dengan menggunakan Visual Basic 2010. Pada implementasinya proses pencarian hotel dengan menggunakan algoritma A* lebih cepat dibandingkan dengan algoritma Breadth First Search (BFS).
Kata Kunci: A*, Breadth First Search (BFS), shortest path.
8
COMPARISON OF A* WITH BREADHT FIRST SEARCH ALGORITHMS IN SEARCHING OF THE NEAREST HOTEL FROM
RAILWAY STATION IN MEDAN
ABSTRACT
Medan Railway Station is the place to transport and drop off passengers which uses train as transportation service. Most of people who are using this kind of transportation service are travelers or North Sumatera Regency employees who are doing service trip. Train is chosen by most people besides because of it is inexpensive, it is quite fast and one of a freeway type of transportation. A traveler or an employee who is in a service trip usually look for the nearest lodging from The Train Station.
Based on that case, writer has made a system which is capable to help in determining the nearest lodging from Medan Train Station. A* Algorithm and Breadth First Search (BFS) Algorithm are the algorithms which are utilized to build the system. This system is built by utilizing Visual Basic 2010. On the implementation of lodging searching process, A* Algorithm is worked faster than Breadth First Search (BFS) Algorithm.
Keywords: A*, Breadth First Search, Shortest Path
9
DAFTAR ISI
Hal.
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
Bab 1 Pendahuluan
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Ruang Lingkup Masalah 2
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 3
1.7 Sistematika Penulisan 5
Bab 2 Tinjauan Pustaka
2.1 Graf 6
2.1.1 Pengertian Graf 6
2.1.2 Jenis-jenis Graf 6
2.1.3 Terminologi Dasar 9
2.2 Shortest Path 10
2.2.1 Pengertian Shortest path 10
2.3 Algoritma 11
2.3.1 Pengertian Algoritma 11
2.3.2 Ciri-ciri Algoritma 11
2.3.3 A* (A Star) 11
2.3.4 Breadth First Search (BFS) 16
2.4 Google Maps 18
2.4.1 Pengertian Google Maps 18
2.4.2 Cara kerja Google Maps 18
2.4.3 Google Maps API 20
Bab 3 Analisis dan Perancangan Sistem
3.1 Analisis Sistem 22
10
3.1.1 Analisis Masalah 22
3.1.2 Analisis Kebutuhan Sistem 23
3.1.2.1 Analisis Kebutuhan Fungsional Sistem 23 3.1.2.2 Analisis Kebutuhan Non-fungsional Sistem 24
3.1.3 Pemodelan Sistem 25
3.1.3.1 Use Case Diagram 25
3.1.3.2 Activity Diagram 27
3.1.3.3 Sequence Diagram 28
3.1.3.4 Flowchart Sistem dan Algoritma 29
3.2 Perancangan Interface 33
3.2.1 Interface Menu Utama 33
3.2.2 Halaman Hasil Pencarian 34
3.2.3 Halaman Help 35
3.2.4 Halaman About 36
Bab 4 Implementasi dan Pengujian
4.1 Implementasi 38
4.1.1 Halaman Home 38
4.1.2 Halaman Hotel 39
4.1.3 Halaman About 40
4.1.4 Halaman Help 41
4.2 Pengujian Proses Perhitungan Hotel dengan Algoritma A* 41 4.3 Pengujian Proses Perhitungan dengan Algoritma 45
Breadth First Search
4.4 Perhitungan Kompleksitas Algoritma 47
4.5 Pengujian Algoritma Terhadapa Waktu 48
Bab 5 Kesimpulan dan Saran
5.1 Kesimpulan 52
5.2 Saran 53
Daftar Pustaka 54
Listing Program A-1
Curriculum Vitae B-
1
11
DAFTAR TABEL
Hal.
TABEL 2.1. URL untuk menampilkan peta suatu lokasi ... 19
TABEL 2.2 Script kode Google Maps API... 20
TABEL 3.1. Deskripsi Pilih Jenis Bintang ... 26
TABEL 3.2. Deskripsi Pilih Hotel ... 26
TABEL 3.3. Deskripsi Menampilkan Rute dan Jarak ... 27
TABEL 4.1. Jarak Stasiun KAI antar Hotel Bintang 1 ... 42
TABEL 4.2. Jarak Heuristik KAI antar Hotel Bintang 1 ... 43
TABEL 4.3. Perhitungan dengan Algoritma Breadth First Search ... 46
TABEL 4.4. Perhitungan Kompleksitas Algoritma A*……….……….47
TABEL 4.5. Perhitungan Kompleksitas Algoritma Breadth First Searc…………47
TABEL 4.6. Waktu Proses pada Algoritma A* ... 48
TABEL 4.7. Waktu Proses pada Algoritma Breadth First Search ... 49
12
DAFTAR GAMBAR
GAMBAR 2.1. Contoh Graf Sederhana ... 7
GAMBAR 2.2. Graf Tidak Sederhana ... 7
GAMBAR 2.3. Graf tak berarah ... 8
GAMBAR 2.4 Contoh Graf Berarah ... 9
GAMBAR 2.5 Contoh Graf Tidak Berbobot dan Graf Berbobot ... 10
GAMBAR 2.6 Contoh Graf Untuk Pencarian Urutan Lintasan A* ... 15
GAMBAR 2.7 Contoh Graf Untuk Pencarian Urutan Lintasan BFS ... 17
GAMBAR 2.8 Pembagian gambar peta pada Google Maps ... 19
GAMBAR 3.1. Fishbone Diagram ... 23
GAMBAR 3.2. Use Case Diagram Sistem ... 25
GAMBAR 3.3. Activity Diagram Proses Pencarian Istilah ... 28
GAMBAR 3.4. Sequence Diagram ... 29
GAMBAR 3.5. Flowchart Sistem Pencarian Hotel dengan Algoritma A* dan BFS 30 GAMBAR 3.6. Flowchart Algoritma A* ... 31
GAMBAR 3.7. Flowchart Algoritma Breadth First Search ... 32
GAMBAR 3.8. Halaman Utama Sistem ... 33
GAMBAR 3.9. Halaman Hasil Pencarian ... 34
GAMBAR 3.10. Tampilan Halaman Help Sistem ... 35
GAMBAR 3.11. Tampilan Halaman About Sistem ... 36
GAMBAR 4.1. Tampilan Halaman Home ... 38
GAMBAR 4.2. Tampilan Halaman Hotel ... 39
GAMBAR 4.3. Menampilkan Rute dari Hotel yang dipilih ... 40
GAMBAR 4.4. Tampilan Halaman About ... 40
GAMBAR 4.5. Tampilan Halaman Help... 41
GAMBAR 4.6. Graph Algoritma A* ... 42
13
BAB 1 PENDAHULUAN
1.1 Latar Belakang
Dewasa ini, perkembangan teknologi dan internet sangat mempermudah orang dalam mencari informasi. Semua orang dapat memperoleh informasi dimana saja dan kapan saja dengan mengakses suatu alamat informasi hanya dengan menggunakan alat teknologi canggih seperti laptop ataupun telepon genggam.
Stasiun Kereta Api Medan (KAI) merupakan tempat menaikkan dan menurunkan penumpang yang menggunakan jasa transportasi kereta api. Setiap harinya Stasiun Kereta Api Medan melayani 2000-2500 penumpang ke seluruh wilayah Sumatera Utara dan stasiun ini berada di pusat kota Medan. Kebanyakan wisatawan atau pegawai yang melakukan perjalanan dinas berasal dari Kabupaten/Kota Madya Sumatera Utara. Untuk menuju kota Medan ada dua transportasi yang biasa digunakan masyarakat yaitu jalur kereta api atau darat seperti mobil, bus atau motor. Tetapi kereta api menjadi pilihan kebanyakan orang, selain murah kereta api juga tergolong transportasi yang cepat dan bebas hambatan. Hal penting lainnya bagi wisatawan adalah penginapan. Saat melakukan perjalanan keluar kota, seorang wisatawan atau orang yang melakukan perjalanan dinas kerap kali mencari penginapan terdekat dari Stasiun Kereta Api. Kita perlu memperhitungkan waktu dan biaya selama perjalanan. Mulai dari harga penginapan sampai transportasi selama perjalanan bisnis. Karena itu dibutuhkan sistem yang mampu membantu kita dalam menentukan penginapan yang dekat dengan pemberhentian kita serta dapat melihat harga sesuai keinginan kita.
Algoritma A* adalah sebuah algoritma yang telah diperkaya dengan menerapkan suatu heuristik. Algoritma ini membuang langkah-langkah yang tidak perlu dengan pertimbangan bahwa langkah-langkah yang dibuang sudah pasti
merupakan langkah yang tidak akan mencapai solusi yang diinginkan. Heuristik adalah nilai yang memberi nilai pada tiap simpul yang memandu A* mendapatkan solusi yang diinginkan.
Dengan heuristik, maka A* pasti akan mendapatkan solusi (Putra, R.D. 2012).
Breadth First Search (BFS) merupakan metode yang menguji semua keadaan dalam pohon pelacakan dalam waktu yang sama. Dari kiri ke kanan dari atas ke bawah satu tingkat pada waktu yang sama. Mulai dari keadaan awal, Breadth First Search memperhatikan semua keadaan pada tiap tingkat sebelum meneruskan ke tingkat lebih bawah berikutnya (Syahfitri, D. 2013).
Berdasarkan uraian di atas, penulis akan merancang suatu sistem aplikasi pencarian penginapan terdekat dari Stasiun Kereta Api Medan sebagai titik awal pengguna. Sistem ini menggunakan algoritma A* dan Breadth First Search..
1.2 Rumusan Masalah
Rumusan masalah pada penelitian ini adalah bagaimana memanfaatkan teknologi informasi sebagai solusi untuk menentukan jarak terpendek dalam pencarian hotel terdekat dari stasiun kereta api Medan dengan membandingkan algoritma A* dan Breadth First Search.
1.3 Ruang Lingkup Masalah
Ruang lingkup masalah dalam penelitian ini adalah sebagai berikut:
1. Menggunakan bahasa pemrograman Visual Basic dan MySQL sebagai DBMS.
2. Penginapan yang dibahas adalah hotel bintang satu sampai lima.
3. Inputan sistem ini berupa list view hotel bintang satu sampai lima.
4. Menggunakan algoritma shortest path A* dan Breadth First Search (BFS).
5. Membahas theoritical running time.
6. Membahas kompleksitas algoritma.
7. Memperhitungkan jalan yang satu arah dan dua arah.
7
1. Tujuan penelitian ini adalah membuat suatu sistem aplikasi pencarian rute terpendek (shortest path) dalam menentukan hotel terdekat dari stasiun kereta api medan berbasis android
2. Membandingkan Algoritma A* dan Breadth First Search (BFS) dalam menentukan hotel terdekat dari stasiun kereta api medan.
1.5 Manfaat Penelitian
Penelitian ini diharapkan dapat memberikan manfaat sebagai berikut:
1. Memajukan teknologi dalam bidang Informasi Telekomunikasi.
2. Membantu pengguna dalam menemukan dan cara mudah mencapai hotel terdekat dari stasiun kereta api Medan.
3. Sebagai bahan referensi bagi peneliti lain yang ingin membahas topik yang terkait dengan penelitian ini.
1.6 Metodologi Penelitian
Tahapan penelitian yang dilakukan dalam penelitian ini adalah : 1. Studi Literatur
Pada tahap ini dilakukan peninjauan terhadap buku, artikel, jurnal, maupun hasil penelitian terdahulu sebagai referensi yang diperlukan dalam melakukan penelitian. Ini dilakukan untuk memperoleh informasi yang terkait dengan Breadth First Search, A*, serta pemrograman Visual Basic.
2. Analisis dan Perancangan
Tahap ini digunakan untuk mengolah data dari hasil studi literatur yang kemudian dilakukan analisis dan perancangan menggunakan algoritma Breadth First Search dan A* sehingga menjadi suatu aplikasi yang terstruktur dan jelas. Proses ini meliputi pembuatan algoritma program, Use case Scenario, flowchart sistem, flowchart algoritma, rancangan aplikasi, dan pembuatan User Interface aplikasi.
3. Implementasi
8
Algoritma Breadth First Search dan A* diimplementasikan ke dalam pembuatan suatu aplikasi pencarian rute terpendek untuk pencarian hotel terdekat dengan menggunakan bahasa pemrograman Visual Basic.
4. Pengujian
Menguji apakah aplikasi yang dibuat telah berhasil berjalan sesuai dengan keinginan dan melakukan perbaikan kesalahan jika masih tedapat error pada aplikasi.
5. Dokumentasi
Pada tahap ini berisi laporan dan kesimpulan akhir dari hasil akhir analisa dan pengujian dalam bentuk skripsi.
9
1.7 Sistematika Penulisan
Untuk membuat penulisan lebih terstruktur, maka penulisan ini dibagi menjadi lima bab, yaitu:
BAB 1 PENDAHULUAN
Bab ini berisi penjelasan mengenai latar belakang masalah, rumusan masalah, batasan penelitian, tujuan penelitian, manfaat penelitian, metodologi penelitian, dan sistematika penulisan skripsi.
BAB 2 LANDASAN TEORI
Pada bab ini berisi penjelasan mengenai teori-teori yang terkait dengan penelitian ini diantaranya adalah shortest path, Algoritma A*, Algortima Breadth First Search, Google Maps dan API Google Maps.
BAB 3 ANALISIS DAN PERANCANGAN SISTEM
Bab ini berisi analisis sistem dalam pembuatan kamus pada visual basic, desain sistem dan perancangan sistem.
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini akan membahas tentang implementasi hasil penelitian menjadi sebuah aplikasi untuk membuat Kamus Istilah Psikologi pada visual basic.
Kemudian dilanjutkan dengan tahapan pengujian sistem untuk menguji apakah sistem sudah berjalan sesuai dengan perancangan.
BAB 5 KESIMPULAN DAN SARAN
Pada bab ini berisi kesimpulan yang diperoleh dalam penelitian dan saran yang diberikan untuk pengembangan lebih lanjut.
10
BAB 2
LANDASAN TEORI
2.1 Graf
2.1.1 Pengertian Graf
Graf sudah lama digunakan pada bidang ilmu komputer terutama pengantar algoritma dasar.
Bukan hanya permasalahan pada bidang ilmu komputer saja, banyak permasalahan di dunia ini dapat dengan mudah diselesaikan dengan menggunakan graf. Graf adalah diagram simpel yang mengolah dan menampilkan data dengan menggunakan vertex yang berhubungan dengan edge (Maxwell, A. 2010). Sebuah edge berfungsi untuk menunjukkan hubungan antara dua vertex. Notasi graf G (V, E) artinya graf G memiliki V sebagai kumpulan vertex- vertex dan E sebagai kumpulan edge-edge.
2.1.2 Jenis-jenis graf
Graf dapat dikelompokkan berdasarkan ada tidaknya edge yang paralel (loop), jumlah verteks, berdasarkan ada tidaknya arah pada edge, ada tidaknya bobot pada edge, atau ada tidaknya hubungan dengan graf yang lain.
Berikut ini adalah jenis graf berdasarkan ada tidaknya edge yang paralel atau loop.
1. Graf Sederhana
Graf sederhana adalah graf yang tidak mempunyai edge ganda dan atau loop. Loop adalah edge yang menghubungkan sebuah verteks dengan dirinya sendiri. Contoh Graf Sederhana bisa dilihat pada Gambar 2.1.
Gambar 2.1. Contoh Graf Sederhana
Pada Gambar 2.1 menjelaskan bahwa titik-titik pada graf sederhana dihubungkan tepat dengan satu garis ke setiap titik yang lain dan tidak ada garis yang titik awal dan akhirnya sama.
2. Graf Tak Sederhana
Graf tak sederhana adalah graf yang memiliki edges ganda atau loop. Graf tak sederhana dibagi menjadi dua yaitu Graf Ganda (multiple graf) dan Graf Semu (pseudo graph). Graf Ganda adalah graf yang mengandung edge ganda. Sisi ganda yang menghubungkan sepasang verteks bisa lebih dari dua buah. Graf semu (pseudo graph), adalah graf yang mempunyi loop, termasuk juga graf yang mempunyai loop dan edge ganda karena itu graf semu lebih umum dari pada graf ganda, karena graf semu edgenya dapat terhubung dengan dirinya sendiri. Gambar 2.2 menunjukkan contoh graf tidak sederhana dan perbedaan antara Graf Ganda dan Graf Semu.
(a) Contoh Graf Semu (b) Contoh Graf Ganda
Gambar 2.2. Graf Tidak Sederhana
Pada Gambar 2.2 terlihat Graf Semu (pseudo graph) mempunyai loop dan garis paralel sedangkan Graf Ganda (multiple graph) hanya memiliki garis paralel tetapi tidak memiliki loop.
Selain berdasarkan ada tidaknya edge yang paralel atau loop, graf dapat juga di kelompokkan berdasarkan orientasi arah atau panah.
1. Graf tak-berarah (undirected graph)
Graf tak berarah adalah graf yang edge nya tidak mempunyai orientasi arah atau panah.
Pada graf ini, urutan pasangan verteks yang dihubungkan oleh edge tidak diperhatikan.
Contoh Graf tak-berarah dapat dilihat pada Gambar 2.3.
Gambar 2.3. Graf tak berarah
Pada Gambar 2.3 menunjukkan jika semua garisnya tidak berarah maka disebut graf tidak berarah (undirected graph).
2. Graf Berarah (directed graph atau digraph)
Graf berarah adalah graf yang setiap edge nya memiliki orientasi arah atau panah.
Gambar 2.4 menunjukkan contoh Graf Berarah.
Gambar 2.4. Contoh Graf Berarah
2.1.3 Terminologi Dasar
Dibawah ini adalah beberapa terminologi (istilah) dasar yang berkaitan dengan graf.
1. Bertetangga (Adjacent)
Dua buah verteks pada graf tak berarah G dikatakan bertetangga bila keduanya terhubung langsung dengan sebuah edge.
2. Derajat (Degree)
Derajat suatu verteks pada graf tak berarah adalah jumlah edge yang bersisian dengan verteks tersebut.
Pada graf berarah, derajat verteks v dinyatakan dengan Din (V) dan Dout (V), yang dalam hal ini:
Din (V) = derajat masuk (in-degree)
= jumlah verteks yang masuk ke verteks v Dout (V) = derajat keluar (out-degree)
= jumlah verteks yang keluar dari verteks v dan
D(V) = Din (V) + Dout (V) Dalam hal ini D (V) menyatakan derajat verteks.
3. Lintasan (path)
Lintasan yang panjangnya n dari edge awal v0 ke verteks tujuan vn di dalam graf ialah barisan berselang-seling verteks dan edgenya. Sebuah lintasan dikatakan lintasan sederhana (simple path) jika semua verteksnya berbeda atau setiap edge yang dilalui hanya satu kali. Lintasan yang berawal dan berakhir pada verteks yang sama disebut
lintasan tertutup (closed path) sedangkan lintasan yang memiliki verteks awal dan verteks akhir yang berbeda disebut lintasan terbuka (open path).
4. Graf Berbobot (weighted graph) dan Graf Tidak Berbobot
Graf berbobot adalah graf yang setiap sisinya diberikan sebuah harga (bobot). Bobot pada setiap sisi dapat menyatakan jarak antara dua buah kota, biaya perjalanan, waktu tempuh, ongkos produksi, dan sebagainya. Graf tidak berbobot adalah graf yang tidak memiliki nilai untuk setiap garisnya. Contoh Graf Berbobot dan Graf Tidak Berbobot pada Gambar 2.5.
(a) Graf tidak berbobot (b) Graf berbobot Gambar 2.5. Contoh Graf Tidak Berbobot dan Graf Berbobot
Pada Gambar 2.5 menunjukkan bahwa perbedaan terletak pada edge yang diberi nilai pada Graf Berbobot sedangkan Graf Tidak Berbobot tidak diberi nilai (cost).
2.2 Shortest Path
2.2.1 Pengertian Shortest Path
Lintasan Terpendek (Shortest Path) merupakan lintasan minimum yang diperlukan untuk mencapai suatu titik dari titik tertentu. Dalam pencarian lintasan terpendek masalah yang dihadapi adalah mancari lintasan mana yang akan dilalui sehingga didapat lintasan yang paling pendek dari satu vertex ke vertex yang lain.
Ada beberapa macam persoalan lintasan terpendek, antara lain :
Pada tugas akhir ini persoalan lintasan terpendek yang menjadi masalah adalah lintasan terpendek antara dua buah vertex dimana bobot pada setiap edge graf di gunakan untuk menyatakan jarak antara stasiun kereta api pada hotel terdekat dalam satuan kilometer (km). Algoritma yang digunakan adalah algoritma A* dalam menentukan lintasan terpendek.
2.3 Algoritma
2.3.1 Pengertian Algoritma
Algoritma berasal dari nama seorang Ilmuwan Arab yang bernama Abu Jafar Muhammad Ibnu Musa Al Khuwarizmi penulis buku berjudul Al Jabar Wal Muqabala. Kata Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian lambat laun menjadi Algorithm diserap dalam bahasa Indonesia menjadi Algoritma. Ketika membuat sebua program komputer, pada umumnya kita mengimplementasikan metode yang telah dirancang sebelumnya untuk menyelesaikan sebuah masalah. Metode ini sering digunakan para
programmer pada bahasa program untuk menyelesaikan masalah. Algoritma bisa kita jelaskan dengan mendeskripsikan prosedur-prosedur untuk menyelesaikan sebuah masalah
(Sedgewick, Robert. 2011)
2.3.2 Ciri-ciri algoritma
1. Finiteness (keterbatasan), algoritma harus berakhir setelah mengerjakan sejumlah langkah proses.
2. Definiteness (kepastian), setiap langkah harus didefinisikan secara tepat dan tidak berarti ganda.
3. Input (masukan), algoritma memiliki nol atau lebih data masukan (input).
4. Output (keluaran), algoritma mempunyai nol atau lebih hasil keluaran (output).
5. Effectiveness (efektivitas), algoritma harus sangkil (efektif), langkah-langkah algoritma dikerjakan dalam waktu yang wajar.
2.3.3 A* (A Star)
Algoritma A* pertama kali ditemukan oleh Peter Hart, Nils Nilsson, dan Bertram Raphael dari Stanford Reasearch Institute pada tahun 1963. Algoritma A* merupakan pengembangan dari Algoritma Djikstra yang ditemukan tahun 1959. Algoritma A* dianggap menghasilkan hasil yang lebih baik daripada Djikstra karena menggunakan fungsi heuristik. Fungsi heuristik akan membantu penentuan titik mana yang akan dikunjungi terlebih dahulu (Aini, D.Y. 2010).
Heuristik adalah fungsi yang memberi nilai pada setiap simpul yang memandu A*
mendapatkan solusi yang diinginkan. Dengan heuristik maka A* pasti akan mendapatkan solusi yang terbaik (jika memang ada solusinya). Dengan demikian fungsi optimasi yang menjadikan A* lebih baik dari algoritma lainnya (Putra, R.D. 2012).
Algoritma A* dimulai dari titik awal kemudian ke antrian prioritas dan melanjutkan proses sampai mencapai titik tujuan. (Sedgewick, R. 2011). Algoritma A* menggabungkan cost yang dibutuhkan untuk mencapai suatu node yaitu g(n) dan cost yang didapatkan dari node ke tujuan yaitu h(n) (Pearl, Judea. 1985). Algoritma A* dapat dirumuskan :
f(n) = g (n) + h (n) ...(1) Keterangan :
f(n): perkiraan total biaya (cost) sebuah sebuah jalur (path) dari node awal ke node tujuan melalui node n
g(n): biaya (cost) yang dibutuhkan oleh sebuah jalur (path) untuk mencapai node n dari node awal
h(n): perkiraan biaya (cost) sebuah jalur (path) Beberapa istilah yang terdapat pada algoritma A*:
1) Starting point merupakan terminologi untuk posisi awal .
2) Simpul (node) merupakan titik yang merepresentasikan suatu tujuan. Bentuknya dapat berupa persegi, segitiga, ataupun lingkaran
3) A merupakan simpul yang sedang berjalan dalam pencarian jalur terpendek 4) Open list merupakan simpul yang mungkin diakses dari starting point maupun
simbol yang sedang dijalankan.
5) Closed List merupakan simpul yang telah dipilih sebagai pemilihan dari jalur terpendek.
6) Harga (cost) merupakan nilai dari f(n)
7) Halangan (unwalked) merupakan sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat dilalui oleh A.
Pada umumnya, algoritma A* mempresentasikan simpul-simpul pada graf dengan menggunakan dua buah himpunan, yaitu Open List dan Close list. Setiap kali menelusuri sebuah simpul yang baru, maka simpul tersebut dibandingkan dengan simpul-simpul lain yang berada di dalam Open list dan Close List, untuk memeriksa apakah simpul baru tersebut sudah pernah ditelusuri atau belum. Untuk simpul awal sudah termasuk pada Open List (Alshawi, I.S et all, 2012). Sedangkan simpul lain akan dipindahkan ke Open List akan dibandingkan sesuai dengan fungsi heuristic pada algoritma A* (Dong, Z & Li, M. 2009). Open list berisi
1. Jarak Manhattan
Fungsi ini merupakan fungsi heuristik yang paling umum digunakan. Fungsi ini menjumlahkan selisih nilai x dan y dari dua buah titik. Fungsi ini dinamakan fungsi Manhattan karena fungsi ini mengadopsi keadaan di kota Manhattan. Di kota Manhattan, jarak dari dua lokasi dihitung dari blok-blok yang harus dilalui saja. Jarak tersebut tidak bisa dilewati secara diagonal. Perhitungannya yaitu :
h(n)= |(x1-x2)| + |(y1-y2)| ...(2) Dimana h(n) merupakan perkiraan cost dari noden ke node tujuan yang dihitung dengan fungsi heuristik. Variabel x1 merupakan koordinat x dari node asal, sedangkan variabel y1 merupakan koordinat y dari node asal. Variabel x2
merupakan koordinat x dari node tujuan dan y2 merupakan koordinat koordinat y dari node tujuan. Nilai dari h(n) akan selalu bernilai positif.
2. Jarak Euclid
Heuristik ini akan menghitung jarak berdasarkan panjang garis yang dapat ditarik dari dua buah titik. Perhitungannya dapat dituliskan sebagai berikut:
h(n) = √ ...(3) Dalam kasus ini, skala relatif nilai g mungkin akan tidak sesuai lagi dengan nilai fungsi heuristik h. Karena jarak jarak Euclid selalu lebih pendek dari jarak Manhattan, maka dapat dipastikan selalu akan didapat jalur terpendek, walaupun secara komputasi lebih berat. Untuk penelitian ini maka akan dipilih jarak Euclid untuk fungsi heuristiknya.
3. Jarak Euclidian Kuadrat
Dalam beberapa literatur disebutkan jika nilai g adalah 0, maka lebih baik jika komputasi untuk pengakaran heuristik nilai euclid dihilangkan saja. Sehingga didapatkan rumus :
h(n)² = ...(4) Algoritma A* memilih titik tujuan berdasarakan simpul yang paling dekat ke titik awal (sesuai dengan algoritma Djikstra) dan juga paling dekat ke titik akhir (sesuai dengan algoritma best first search). Jadi, dengan memperhitungkan jarak sebenarnya (biasa disebut g(n)) dan jarak perkiraan (biasa disebut h(n)), algoritma ini dianggap akan memberikan hasil yang optimal.
Pada algoritma A* ada tiga tipe keadaan pada proses pencarian jarak terpendek. Keadaan pertama yaitu berada pada posisi OPEN. Keadaan kedua berada pada posisi CLOSE. Keadaan ketiga menyatakan belum berada di posisi OPEN maupun CLOSE.
Titik yang berada pada posisi OPEN menunjukkan titik tersebut telah dibangkitkan untuk selanjutnya diseleksi apakah terpilih sebagai titik tujuan terbaik.
Titik yang berada pada posisi CLOSE menunjukkan titik tersebut telah terpilih sebagai tujuan terbaik karena memiliki cost terkecil. Titik yang belum berada pada posisi OPEN maupun CLOSE menunjukkan bahwa titik tersebut belum terpilih sebagai tujuan terbaik dan bahkan belum dibangkitkan untuk masuk ke daftar
pemilihan tujuan selanjutnya. Perhitungan biaya atau cost pada algoritma ini menggunakan rumus :
f(n) = g (n) + h (n) ...(5)
Gambar 2.6. Contoh Graf Untuk Pencarian Urutan Lintasan A*
Pada Gambar 2.6 terlihat graf berarah dimana jarak satu titik ke titik lainnya belum tentu sama dengan keadaan sebaliknya. Hal ini sebagai contoh yang menunjukkan adanya jalan satu arah yang menyebabkan perubahan jalur ketika mengunjungi tempat tertentu. Setiap node menunjukkan hotel terdekat. Busur menyatakan besarnya jarak sebenarnya antara satu titik dengan titik lain.
Berikut adalah jarak real antara titik awal atau Stasiun KAI ke hotel terdekat sesuai pada Gambar 2.6. Ukuran jaraknya dalam satuan kilometer (KM).
Stasiun KAI – Hotel Grand Aston Medan = 0,75 KM Stasiun KAI – D’primahotel Medan = 0,1 KM
Stasiun KAI – Hotel Seochi International Medan = 1 KM
Pada algoritma A*, perhitungan penentuan tujuan dari satu titik ke titik berikutnya
menggunakan fungsi heuristik h(n). Berikut nilai h(n) atau fungsi heuristik jarak euclid untuk setiap node.
Stasiun KAI – Hotel Grand Aston Medan = 0,0429 KM Stasiun KAI – D’primahotel Medan = 0,3522 KM
Stasiun KAI – Hotel Seochi International Medan = 0,9380 KM
Berikut langkah-langkah untuk menentukan tujuan dari titik KAI dengan menggunakan algoritma A* untuk mendapatkan shortest path.
Sebagai titik awal, karena telah ditentukan titik awal adalah KAI, maka KAI yang semula pada keadaan OPEN dipilih sebagai best node dan dipindah pada keadaan CLOSED
Fungsi Evaluasi :
Total jarak sebenarnya dengan jarak euclid didapatkan hasil sebagai berikut : f (GA) = g(KAI ke GA) + h (O ke A) = 0,75 + 0,3522 = 1,1 KM
f (DPH) = g(KAI ke DPH) + h (O ke B) = 0,5 + 0,0429 = 0,54 KM f (SCH) = g(KAI ke SCH) + h (O ke C) = 1 + 0,9380 = 1,9 KM
Dari evaluasi tersebut didapat hotel terdekat dari titik awal atau Stasiun KAI adalah titik DPH dan semua titik telah masuk ke best node. Maka, hotel yang paling dekat jaraknya dari titik KAI berdasarkan perhitungan A* adalah D’primahotel Medan (DPH) dengan jarak 0,54 kilometer (KM)
2.3.4 Breadth First Search (BFS)
Breadth First Search merupakan algoritma graf yang digunakan sebagai prototipe pada minimum spanning tree dan shortest path (Yun, L. 2002). Algoritma untuk pencarian graf dengan cara Breadth-First sudah dipelajari selama 50 tahun. Breadth First Search (BFS) ditemukan oleh Edward F. Moore pada tahun 1950 saat mencari rute terpendek untuk keluar dari sebuah labirin. Pada tahun 1961 penemuan lainnya dipublikasikan oleh C.Y. Lee saat perutean sebuah printed circuit boards (PCB) untuk pemilihan jalur yang harus dilalui.
Breadth First Search (BFS) adalah salah satu dari algoritma graf yang mengunjungi seluruh node dari node akar atau awal. Pada prosedur BFS (Breadth First Search) inisial dari simpul adalah kunci utama untuk menemukan rute. Dalam urutan pencarian rute yang akurat insial simpul adalah kumpulan jalan-jalan yang ada didekat simpul awal (Hsu, C.M. 2011).
Cara kerja algoritma Breadth First Search (BFS) dilakukan pada semua verteks dilevel n secara berurutan dari kiri kekanan. Jika pada satu level belum ditemukan solusi, maka pencarian dilanjutkan pada level berikutnya (n+1). Demikian seterusnya sampai ditemukan solusi. Dengan strategi ini, maka dapat dijamin bahwa solusi yang ditemukan adalah yang paling baik (Optimal). Tetapi BFS harus
menyimpan semua node yang pernah dibangkitkan, hal ini harus dilakukan untuk penelusuran balik jika solusi sudah ditemukan, sehingga membutuhkan memori yang cukup banyak. Pada Gambar 2.7 menunjukkan contoh Pencarian Lintasan Terpendek Pada Algoritma Breadth First Search.
Gambar 2.7. Contoh Graf Untuk Pencarian Urutan Lintasan BFS
Gambar 2.7 menunjukkan ada 13 node dan masing-masing memiliki bobot yang berbeda dengan titik tujuan yang sama yaitu titik KAI. Setiap node menunjukkan hotel terdekat dari titik tujuan Stasiun KAI Medan. Pada pengertian Breadth First Search (BFS) menjelaskan jika node pertama pada level 1 bukan tujuannya maka akan terus dilanjutkan pada node berikutnya, jika node pertama adalah tujuannya maka selesai.
KAI merupakan titik awal pencarian dan akan mengunjungi titik-titik lainnya yaitu GA (Grand Aston) – SCH (Hotel Seochi International) – DPH (D’primahotel Medan) – ADH (Aryaduta Hotel) – STH (Santika Hotel) – CHM (Cordela Hotel Medan) – GSM (Grand Swiss Medan) – JWM (JW Mariott Medan) – GAM (Grand Angkasa Medan) – HDT (Hotel Danau Toba Medan) – HPH (Hermes Palaces Hotel) – HM (Hotel Madani). Pada Algoritma Breadth First Search (BFS) sudah ditentukan tujuan dari pencarian adalah jarak tempuh minimum dari titik awal atau KAI. Berikut adalah perhitungan dari proses pencarian hotel yang dilakukan dari akar atau titik awal.
KAI – GA = 0,75 KAI – SCH = 0,9 KAI – DPH = 0,1 KAI – ADH = 2,25 KAI – STH = 3,05
KAI – HPH = 1,3 KAI – CHM = 5,05 KAI – GAM = 4, 65 KAI – HDT = 5,45
Dari pencarian menggunakan algoritma Breadth First Search sesuai pada Gambar 2.7 maka diperoleh KAI – DPH (D’primahotel Medan) adalah jarak tempuh terpendek. Dengan jarak 0,1 kilometer (KM).
2.4. Google Maps
2.4.1 Pengertian Google Maps
Google Maps adalah aplikasi desktop dan mobile peta online dibawah pimpinan Google. Google Maps dapat diakses pada situs official https://www.maps.google.com atau mengunduh aplikasi mobile untuk smartphone dengna sistem operasi Android atau iOS.
Google Maps menyajikan citra satelit, rute peta dasar dan tampilan jalan yang persepektif.
Google Maps mengintegrasikan rute jalan dasar dan tampilan 3D. Google Maps
memberikan fitur yang menampilkan situasi jalan atau tempat tujuan sehingga pengguna dapat melihat tempatnya sebelum dikunjungi (Google Developer, 2012). Google Maps juga
menyediakan fitur petunjuk arah yang memungkimkan pengguna menemukan cara mereka menuju tempat tujuan (Google Work, 2012).
Google Maps juga memiliki fasilitas traffic atau jalur lalu lintas di daerah tertentu.
Rute hijau, kuning dan merah yang ditampilkan Google Maps merupakan tanda untuk menunjukkan jalanan yang bergerak lancar, lambat atau sedang macet. Kita dapat memanfaatkannya untuk menentukan cara cepat sampai ke tujuan (Fadhlia, N. 2015).
2.4.2. Cara Kerja 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 (Cita, 2008).
Gambar 2.8. Pembagian gambar peta pada Google Maps
Pada Gambar 2.8 menjelaskan bahwa tiap-tiap potongan gambar diatas, mewakili gambar tertentu dalam longitude, latitude dan zoom level tertentu. Latitude adalah garis yang melintang di antara kutub utara dan kutub selatan, yang menghubungkan antara sisi timur dan barat bagian bumi. Sedangkan longitude adalah garis membujur yang menghubungkan antara sisi utara sisi selatan bumi (kutub). Kode Java script 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. Tabel 2.1 menunjukkan contoh URL suatu lokasi.
Tabel 2.1. URL untuk menampilkan peta suatu lokasi
Pada Tabel 2.1 berdasarkan link URL tersebut maka ie = UTF8 merupakan 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 longitude: 106.918945. Sedangkan spn =
4.327078,4.938354 merupakan rentang dari latitude dan longitude nya dan z = 8, adalah tingkatan atau level zoom peta (Fadhlia, N. 2015).
2.4.3. Google Maps API
Google Maps adalah layanan pemetaan berbasis web service yang disediakan oleh Google dan bersifat gratis, yang memiliki kemampuan terhadap banyak layanan pemetaan berbasis web. Google Maps juga memiliki sifat server side, yaitu peta yang tersimpan pada server Google dapat dimanfaatkan oleh pengguna (Cita, 2008). API atau Application Programming Interface merupakan suatu dokumentasi yang terdiri dari interface, fungsi,
http://maps.google.com/?ie=UTF8&ll=-
6.500899,106.918945&spn=4.327078,4.938354&z=8
Untuk membangun aplikasi yang memanfaatkan Google Maps di desktop dan mobile device maka akan digunakan Google Maps JavaScript API v3 yang memiliki keunggulan lebih cepat dari versi sebelumnya (Fadhlia, N. 2015).
Google Maps API menawarkan alat analisis yang memungkinkan para pengembang melihat cara pengunung berinteraksi dengan peta. Pengembang dapat melihat berapa banyak pengunjung yang beralih ke tampilan satelit, memperbesar atau memperkecil tampilan serta fitur mana dari peta tersebut yang paling sering digunakan oleh pengunjung (Google Developer, 2012).
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 merupakan kode unik yang digenerasikan oleh Google untuk suatu website tertentu, agar server Google Maps dapat mengenali. Script Google Maps API dapat dilihat pada Tabel 2.2
Tabel 2.2. Script kode Google Maps API
Pada Tabel 2.2 kode yang bercetak biru adalah script kode dari Google Maps API. Untuk mendapatkan kode itu dapat mendaftar pada http://code.google.com /apis/maps/ signup.html agar website mendapatkan kunci untuk mengakses API pada Google. Key akan berbeda untuk setiap website yang didaftarkan ke Google maps.
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Analisis sistem dilakukan untuk dapat memahami kebutuhan sistem dan gambaran tugas-tugas yang akan dikerjakan, sebelum membangun sistem terlebih dahulu
<scripttype=”text/javascript”src=”http://maps.google.com/maps?file=
api&v=2&sensor=false&key=ABQIAAAAbE7c_nBHqt2 MsYavLihx9hQJ7kqb6IJHXd0Q5wX6KEaY9g0umROwx63Z3Gq2UYSM8 sC7Ngl45s6nw“></script>
dilakukan beberapa tahap analisis untuk mengidentifikasi segala kebutuhan yang akan diterapkan dalam sistem agar tidak terjadi kesalahan dan sistem yang dibangun akan optimal.
3.1.1 Analisis Masalah
Mengidentifikasi masalah merupakan langkah pertama yang dilakukan dalam tahap analisis sistem. Masalah dapat didefinisikan sebagai suatu pertanyaan yang diinginkan untuk
dipecahkan. Masalah inilah yang menyebabkan sasaran dari sistem tidak dapat dicapai. Oleh karena itu langkah pertama yang harus dilakukan pada tahap ini adalah mengidentifikasi terlebih dahulu masalah yang terjadi (identify).
Masalah yang akan dibahas dalam penelitian ini adalah bagaimana menentukan urutan kunjungan ketika mengunjungi beberapa tempat yang letaknya tidak saling berdekatan
sehingga didapatkan jarak total yang minimum (shortest path).
Analisis masalah dapat diuraikan sebagai berikut:
1. User merupakan orang yang melakukan proses pencarian hotel.
2. Metode merupakan proses yang digunakan untuk menyelesaikan permasalahan.
3. Material merupakan kebutuhan yang digunakan untuk menjalankan proses.
4. Sistem menunjukan pencarian rute terdekat dengan algoritma A* dan Breadth First Search (BFS).
Selanjutnya, untuk mengidentifikasi masalah yang dijelaskan di atas digunakan Diagram Ishikawa (Fishbone Diagram). Diagram Tulang Ikan (Fishbone) adalah sebuah alat visual untuk mengidentifikasi, mengeksplorasi dan secara grafik menggambarkan secara detail semua penyebab yang berhubungan dengan suatu permasalahan. Untuk lebih jelasnya
mengenai Diagram Fishbone, dapat dilihat pada Gambar 3.1.
Seperti yang terlihat pada Gambar 3.1 di atas, masalah utama adalah pada persegi panjang di posisi paling kanan gambar (bagian kepala) diagram fishbone.
Kategori ditunjukkan pada empat persegi panjang yang masing-masing terhubung ke garis utama, sedangkan sebab-akibat ditunjukkan dalam bentuk tanda panah horizontal pada masing-masing kategori masalah.
3.1.2 Analisis Kebutuhan Sistem
Dalam analisis kebutuhan sistem terdapat dua bagian penting yang harus dipenuhi, yaitu analisis kebutuhan fungsional sistem dan analisis kebutuhan non-fungsional sistem.
3.1.2.1 Analisis Kebutuhan Fungsional Sistem
Analisis kebutuhan fungsional sistem adalah analisis terhadap kebutuhan secara fungsional baik dalam aliran data ataupun informasi dan merupakan hal yang harus dimiliki oleh sistem untuk mencapai tujuannya. Berikut ini merupakan beberapa kebutuhan fungsional sistem yang akan dibangun, antara lain:
1. Sistem mampu mencari data hotel yang telah diinput pada database.
2. Sistem mampu mencari pencarian rute terdekat dengan menggunakan algorima A* dan Breadth First Search (BFS).
3. Sistem mampu meminta jarak sebenarnya dan arah menuju hotel yang ditentukan pengguna.
4. Sistem menggunakan running time theorytical untuk menentukan kinerja algoritma.
3.1.2.2 Analisis Kebutuhan Non-Fungsional Sistem
Analisis kebutuhan non-fungsional adalah suatu analisis untuk mengetahui elemen- elemen apa saja yang berhubungan dengan sistem yang sedang berjalan. Untuk mendukung kinerja sistem, sistem sebaiknya dapat berfungsi sebagai berikut:
Persyaratan non-fungsional adalah persyaratan yang dimiliki suatu sistem yang menggambarkan karakteristik dan batasan kemampuan suatu sistem yang menjadi dasar penentuan apakah daya guna suatu sistem sudah baik atau belum. Adapun persyaratan non- fungsional yang harus dipenuhi diantaranya : (Whitten, 2004)
1. Performa
Suatu sistem yang dibangun harus dapat menunjukkan hasil dari urutan tujuan yang harus dicapai dengan menampilkan jarak total yang akan ditempuh.
2. Informasi
Persyaratan informasi mempresentasikan informasi yang sangat penting bagi pengguna dalam konteks isi, akurasi, dan format.
3. Ekonomi
Sistem atau perangkat lunak yang akan dibangun tidak memerlukan perangkat tambahan yang mahal.
4. Efisiensi
Sistem harus mampu menghasilkan output dengan tingkat ketidakefisienan yang minimal.
5. Kontrol dan keamanan
Sistem mampu menampilkan pesan kesalahan ketika terjadi kesalahan input data oleh pengguna. Keamanan dapat diterapkan dengan perbedaan hak antara user dan admin.
6. Pelayanan
Memperesentasikan kebutuhan agar sistem menjadi reliabel, fleksibel, dan dapat diperluas.
3.1.3 Pemodelan Sistem
Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan kegunaannya.
Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai bahasa pemodelan untuk mendesain merancang sistem yang akan dibangun. UML yang digunakan antara lain use case diagram, activity diagram dan sequence diagram.
3.1.3.1 Use Case Diagram
Use Case Diagram menggambarkan kebutuhan sistem secara fungsional dengan mengidentifikasi aktor-aktor yang terlibat dan berinteraksi dengan fungsi dasar pada
Gambar 3.2 Use Case Diagram Sistem
Pada Gambar 3.2 menunjukkan untuk mendapatkan rute dan jarak hotel terdekat, user terlebih dahulu memilih jenis bintang kemudian memilih hotel yang diinginkan berdasarkan algoritma. Untuk deskripsi Pilih Jenis Bintang dapat dilihat pada tabel 3.1.
Tabel 3.1 Deskripsi Pilih Jenis Bintang Name Use-Case Pilih Jenis Bintang
Actor User
Trigger User memilih jenis bintang.
Pre condition User mempersiapkan data hotel berdasarkan jenis bintang.
Post condition User dapat memilih hotel berdasarkan jenis bintang yang dipilih.
Success scenario 1. user telah memilih jenis bintang.
2. user mengakses tombol search.
3. Sistem melakukan proses pencarian hotel.
4. user mendapatkan list hotel terdekat berdasarkan jenis bintang
Alternative flow -
Deskripsi dari Pilih Hotel dapat dilihat pada tabel 3.2.
Tabel 3.1 Deskripsi Pilih Hotel Name Use-Case Pilih Hotel
Actor User
Trigger User memilih hotel terdekat.
Pre condition User memilih jenis bintang.
Post condition User mendapatkan rute hotel.
Success scenario 1. User telah memilih hotel terdekat.
2. Sistem melakukan proses pencarian rute.
3. User mendapatkan rute hotel yang dipilih.
Alternative flow -
Deskripsi Menampilkan Rute dan Jarak dapat dilihat pada tabel 3.3.
Tabel 3.1 Deskripsi Menampilkan Rute dan Jarak
Pre condition User memilih hotel yang terdekat.
Post condition User memastikan adanya jaringan internet.
Success scenario 1. Sistem dapat mengakses google maps.
2.Sistem menampilkan rute dan jarak.
Alternative flow Jika tidak ada jaringan internet sistem tidak dapat menampilkan maps.
3.1.3.2 Activity Diagram
Activity Diagram menggambarkan berbagai aktivitas alir dalam sistem yang sedang dirancang. Untuk proses pencarian hotel terdekat pada stasiun kereta api Medan dengan algoritma A* dan Breadth First Search dapat dilihat pada Gambar 3.3 berikut.
Gambar 3.3 Activity Diagram Proses Pencarian Istilah
Seperti yang terlihat pada Gambar 3.3, sistem menampilkan proses kerja dari sistem sampai dengan selesai. Fungsi utama dari sistem ini adalah mencari hotel terdekat dari stasiun kereta api Medan dengan menggunakan algoritma A* dan Breadth First Search.
3.1.3.3 Sequence Diagram
Sequence Diagram digunakan untuk menggambarkan interaksi antara objek dengan proses yang terkait pada kelas diagram melalui message dalam eksekusi operation, untuk satu buah use case. Sequence membantu untuk menggambarkan data yang masuk dan keluar dari system, seperti yang terlihat pada Gambar 3.4 berikut.
Gambar 3.4 Sequence Diagram
dengan meminta jarak yang sebenarnya dan arah dari GoogleMaps kemudian A* dan Breadth First Search menghitung jarak antara stasiun ke semua hotel yang sudah diseleksi sesuai bintang yang dipilih. Kemudian menampilkan hasil pencarian hotel terdekat dari stasiun kereta api Medan.
3.1.3.4 Flowchart Sistem dan Algoritma
Flowchart merupakan gambar atau bagan yang menunjukkan aliran data di dalam sistem secara logika. Flowchart sistem dapat didefinisikan sebagai bagan yang menunjukkan aliran pekerjaan secara keseluruhan dari sistem. Bagan ini menjelaskan urutan-urutan dari prosedur yang ada di dalam sistem. Flowchart dari sistem yang akan dibangun dapat dilihat pada Gambar 3.5 berikut ini.
Gambar 3.5 Flowchart Sistem Pencarian Hotel dengan Algoritma A* dan BFS
Gambar 3.6 Flowchart Algoritma A*
Gambar 3.7 Flowchart Algoritma Breadth First Search
3.2 Perancangan Interface
Perancangan antarmuka (interface) merupakan salah satu bagian yang sangat penting dalam sebuah perancangan sistem. Perancangan antarmuka dibuat agar mudah dalam membangun sebuah sistem. Sebuah antarmuka harus dirancang dengan memperhatikan pengguna sehingga dapat memberikan kemudahan dan kenyamanan untuk digunakan oleh pengguna.
3.2.1 Interface Menu Utama
Menu utama adalah halaman yang pertama kali muncul ketika pertama sekali sistem dijalankan. Halaman utama ini adalah halaman untuk login sebelum masuk ke menu selanjutnya untuk menggunakan aplikasi. Tampilan rancangan halaman utama dapat dilihat pada Gambar 3.8.
Keterangan:
1. Merupakan menu button Home
2. Merupakan menu scrolldown Hotel yang akan menampilkan list bintang.
3. Merupakan menu button Help untuk membantu user menggunakan sistem 4. Merupakan menu button About keterangan dari sistem.
5. Merupakan menu label menunjukkan judul dari sistem.
6. Merupakan logo dari Universitas Sumatera Utara.
7. Merupakan menu label menunjukkan nama penulis.
8. Merupakan menu label menunjukkan nomor induk mahasiswa penulis.
9. Merupakan menu label menunjukkan keterangan fakultas dan jurusan serta tahun ajaran penulis.
10. Merupakan menu label menunjukkan hak cipta pembuat.
3.2.2 Halaman Hasil Pencarian
Halaman ini merupakan hasil dari pencarian sesuai bintang yang dipilih. Untuk melihat rancangan pada halaman hasil pencarian dapat dilihat pada Gambar 3.9 berikut:
Gambar 3.9 Halaman Hasil Pencarian Keterangan:
1. Merupakan menu button Home
2. Merupakan menu scrolldown Hotel yang akan menampilkan list bintang.
3. Merupakan menu button Help untuk membantu user menggunakan sistem 4. Merupakan menu button About keterangan dari sistem.
5. Merupakan menu label menunjukkan sistem sedang berada pada halam hasil pencarian.
6. Merupakan menu scrolldown untuk menampung hasil dari pencarian hotel untuk algoritma A Star.
7. Merupakan menu scrolldown untuk menampung hasil dari pencarian hotel untuk algoritma Breadth First Search.
8. Merupakan scrolldown untuk melihat list hotel dari hasil pencarian dengan algoritma
11. Merupakan menu label menunjukkan hak cipta.
3.2.3 Halaman Help
Halaman ini merupakan halaman bantuan untuk pengguna dalam menggunakan sistem. Untuk melihat rancangan pada halaman ini dapat dilihat pada Gambar 3.10 berikut
Gambar 3.10 Tampilan Halaman Help Sistem
Keterangan:
1. Merupakan menu button Home
2. Merupakan menu scrolldown Hotel yang akan menampilkan list bintang.
3. Merupakan menu button Help untuk membantu user menggunakan sistem 4. Merupakan menu button About keterangan dari sistem.
5. Merupakan menu label menunjukkan sistem sedang berada pada halaman Help.
6. Merupakan menu label menunjukkan hak cipta sistem.
3.2.4 Halaman About
Halaman ini berisi keterangan tentang dan versi sistem. Halaman ini juga menyajikan profil singkat penulis. Unuk melihat rancangan pada halaman ini dapat dilihat pada Gambar 3.11 berikut:
Gambar 3.11 Tampilan Halaman About Sistem
Keterangan:
1. Merupakan menu button Home
2. Merupakan menu scrolldown Hotel yang akan menampilkan list bintang.
3. Merupakan menu button Help untuk membantu user menggunakan sistem 4. Merupakan menu button About keterangan dari sistem.
5. Merupakan menu label menunjukkan sistem sedang berada pada halaman Help.
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi
Setelah sistem dianalisis dan dirancang seperti yang telah diuraikan pada bab sebelumnya, tahap selanjutnya adalah mengimplementasikan sistem tersebut kedalam bahasa pemrograman. Sistem ini dibangun dengan menggunakan Microsoft Visual Basic 2010. Pada sistem ini terdapat empat halaman, yaitu : halaman Home, halaman Process, halaman About, dan halaman Help.
4.1.1 Halaman Home
Halaman Home merupakan halaman yang pertama kali tampil pada saat sistem dijalankan. Tampilan halaman Home dapat dilihat pada Gambar 4.1.
Gambar 4.1 Tampilan Halaman Home
.Pada Gambar 4.1 terdapat 4 menu yang dapat memanggil halaman yang lain, yaitu:
menu Hotel, menu About, menu Help, dan menu Exit. Pada halaman Home juga terdapat informasi judul.
4.1.2 Halaman Hotel
Halaman Hotel merupakan halaman yang ditampilkan jika user memilih menu
“Hotel” yang terdapat pada halaman Home. Tampilan dari halaman Hotel dapat dilihat pada Gambar 4.2.
Gambar 4.2 Tampilan Halaman Hotel
Pada Gambar 4.2 menunjukkan halaman yang digunakan untuk melakukan proses pencarian hotel terdekat dari stasiun kereta api Medan sesuai dengan bintang yang dipilih. Tampilan awal dari halaman ini terdapat satu button search yang berproses
Gambar 4.3 Menampilkan rute dari hotel yang dipilih.
Pada Gambar 4.3 menampilkan rute dari hotel yang dipilih. Setelah user memilih bintang hotel maka sistem akan memberikan list hotel terdekat dari bintang tersebut dan user memilih hotel yang diinginkan untuk ditampilkan rute pada map.
4.1.3 Halaman About
Halaman About merupakan halaman yang ditampilkan jika pengguna memilih menu
“About”. Adapun tampilan dari halaman About dapat dilihat pada Gambar 4.4.
Gambar 4.4 Tampilan Halaman About
Pada Gambar 4.4 ditampilkan informasi judul dan biodata singkat dari penulis.
4.1.4 Halaman Help
Halaman Help merupakan halaman yang ditampilkan oleh sistem jika pengguna memilih menu “Help”. Adapun tampilan dari halaman Help dapat dilihat pada Gambar 4.5.
Gambar 4.5 Tampilan Halaman Help
Pada Gambar 4.5 ditampilkan informasi mengenai langkah-langkah
Pada tahap ini akan dilakukan pengujian keberhasilan sistem dalam melakukan proses pencarian hotel terdekat dari stasiun dengan menggunakan algoritma A*. Perhitungan biaya atau cost pada algoritma ini menggunakan rumus :
f(n) = g (n) + h (n)...(1)
Gambar 4.6 Graph Algoritma A*
Pada Gambar 4.6 menjelaskan keadaan hotel bintang satu yang berlokasi di stasiun kereta api dan keadaan pada graf belum tentu kejadian yang sebenarnya. Titik awal pencarian dimulai dari KAI dan akan dijalankan fungsi heuristk untuk mencari hotel yang paling dekat jaraknya dengan stasiun. Jarak antar titik untuk Gambar 4.6 dapat dilihat di Tabel 4.1. Ukuran jarak adalah dalam satuan kilometer (km).
Tabel 4.1 Jarak Stasiun KAI antar hotel bintang 1
NO HOTEL ID STASIUN KAI
1 GARUDA CITRA HOTEL GCA
2,1
2 WISMA SEDERHANA WS 1,2
3 RESIDENCE HOTEL RH 2,5
4 KANASHA HOTEL KH 1,6
5 SUMATERA HOTEL SH 2
6 AIRY HOTEL AH 2,3
7 HOTEL UKM HK 2,2
8 HOTEL WISMA YULI HWY 2,2
9 ZAKIA HOTEL ZH 2,9
10 PERMATA INN PI 1,8
Pada algoritma A*, perhitungan penentuan tujuan dari satu titik ke titik berikutnya menggunakan fungsi heuristik h(n). Untuk nilai h(n) atau fungsi heuristik jarak euclid didapat nilai heuristik untuk setiap node seperti Tabel 4.2 :
Tabel 4.2 Jarak Heuristik KAI antar hotel bintang 1
NO HOTEL ID STASIUN KAI
1 GARUDA CITRA HOTEL GCA 0,015070043
2 WISMA SEDERHANA WS 0,009127208
3 RESIDENCE HOTEL RH 0,01621232
4 KANASHA HOTEL KH 0,013278034
5 SUMATERA HOTEL SH 0,014620463
6 AIRY HOTEL AH 0,017505316
7 HOTEL UKM HK 0,017631621
8 HOTEL WISMA YULI HWY 0,017697811
9 ZAKIA HOTEL ZH 0,018279274
10 PERMATA INN PI 0,010440833
Berikut langkah-langkah untuk menentukan urutan tujuan dari titik KAI
Total jarak sebenarnya dengan jarak euclid didapatkan hasil sebagai berikut :
f (GCA) = g(KAI ke GCA) + h (KAI ke GCA) = 2.1 + 0.01507 = 2.11507 Km f (WS) = g(KAI ke WS) + h (KAI ke WS) = 1.3 + 0.00912 = 1.30912 Km f (RH) = g(KAI ke RH) + h (KAI ke RH) = 2.9 + 0.01327 = 2.91327 Km f (KH) = g(KAI ke KH) + h (KAI ke KH) = 1.6 + 0.01327 = 1.61087 Km f (SH) = g(KAI ke SH) + h (KAI ke SH) = 2 + 0.01087 = 2.01087 Km f (AH) = g(KAI ke AH) + h (KAI ke AH) = 2.3 + 0.01750 = 2.31769 Km f (HK) = g(KAI ke HK) + h (KAI ke HK = 2.2 + 0.01769 = 2.21769 Km f (HWY) = g(KAI ke HWY) + h (KAI ke HWY)) = 2.3 + 0.01769 = 2.31769Km f (ZH) = g(KAI ke ZH) + h (KAI ke ZH) = 2.9 + 0.01827 = 2.91827 Km f (PI) = g(KAI ke PI) + h (KAI ke PI) = 1.8 + 0.01044 = 1.81044 Km
Maka semua titik telah masuk ke bestnode dan perhitungan selesai. Dari hasil perhitungan dengan menggunakan algoritma A* maka didapatkan hotel dengan jarak terdekat yaitu . 1.30912 Km. Untuk hasil pencarian menggunakan sistem dapat dilihat pada Gambar 4.7.