ANALISIS PERBANDINGAN ALGORITMA DIJKSTRA DAN ALGORITMA A* (A-STAR) DALAM PENCARIAN RUTE TERPENDEK
(STUDI KASUS: SPBU DI KOTA MEDAN)
SKRIPSI
KEVIN HARTANTO 161401065
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2020
ANALISIS PERBANDINGAN ALGORITMA DIJKSTRA DAN ALGORITMA A* (A-STAR) DALAM PENCARIAN RUTE TERPENDEK
(STUDI KASUS: SPBU DI KOTA MEDAN)
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
KEVIN HARTANTO 161401065
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN
2020
PERNYATAAN
ANALISIS PERBANDINGAN ALGORITMA DIJKSTRA DAN ALGORITMA A* (A-STAR) DALAM PENCARIAN RUTE TERPENDEK
(STUDI KASUS: SPBU DI KOTA MEDAN)
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 21 Juli 2020
Kevin Hartanto
161401065
PENGHARGAAN
Segala puji, hormat, dan syukur kepada Tuhan Yang Maha Esa sebab berkat, rahmat dan kasih karunia-Nya yang diberikan kepada penulis sehingga penulis dapat menyelesaikan penulisan skripsi ini sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
Penulis menyampaikan terima kasih yang sebesar-besarnya kepada orang tua penulis bapak Drs. Suryadi Hartanto dan ibu Lindawaty Tan, juga adik Calvina Hartanto, S.KG. yang selama ini senantiasa memberikan kasih sayang, doa, dan dukungan baik moral maupun materil kepada penulis selama proses penyelesaian skripsi ini.
Selama proses penelitian, penyusunan, dan penulisan skripsi ini, penulis banyak mendapatkan bimbingan, pengarahan, dan bantuan dari berbagai pihak.
Untuk itu, pada kesempatan ini dengan segala kerendahan hati, penulis ingin mengucapkan terima kasih kepada:
1. Bapak Prof. Dr. Runtung Sitepu, S.H, M.Hum. sebagai Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc. sebagai Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom. sebagai Ketua Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
4. Bapak Dr. Eng. Ade Candra sebagai Dosen Pembimbing I yang telah memberikan arahan, kritik, saran dan motivasi yang luar biasa kepada penulis serta bersedia dalam mendengarkan keluh dan kesah penulis selama pengerjaan skripsi ini.
5. Bapak M. Andri Budiman, S.T, M.Comp.Sc, M.E.M. sebagai Dosen
Pembimbing II yang telah memberikan arahan, kritik, saran dan motivasi
yang sangat berharga kepada penulis dalam pengerjaan skripsi ini.
6. Ibu Dr. Elviawaty Muisa Zamzami, S.T, M.T, M.M. sebagai Dosen Pembanding I yang telah memberikan kritik dan saran terhadap skripsi ini.
7. Ibu Dian Rachmawati, S.Si, M.Kom. sebagai Dosen Pembanding II yang telah memberikan kritik dan saran terhadap skripsi ini.
8. Seluruh dosen serta staf pegawai di Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
9. Sahabat-sahabat penulis Calvin, Gindo Linardi, David Franli, Kelvin Prasetia, Kenny Andrico, Selina Amelia Savittri, Indah Permata Syahnan, dan Masmur Sijabat atas semangat dan dukungan yang diberikan kepada penulis selama melakukan penelitian dan penyusunan skripsi ini.
10. Teman-teman seperjuangan skripsi di Program Studi Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara:
Wilyanto, Syarifah Kemala Putri, Rizki Nofianty Tanjung, Nazli Alvira Siregar, Dwi Fimoza, T. Amadhea Irvida, Novli Felisia Situmorang, Mohammad Firenza Kurniawan, Hilda Suci Ardianti, Ika Nurul Faradillah, Yuri Utari Ollinka, dan juga segenap mahasiswa Ilmu Komputer Universitas Sumatera Utara stambuk 2016 yang telah memenuhi ruang dan memberikan warna-warni selama masa perkuliahan penulis.
11. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu penyelesaian skripsi ini.
Semoga semua kebaikan, bantuan, perhatian, serta dukungan yang telah diberikan kepada penulis mendapatkan berkat yang melimpah dari Tuhan Yang Maha Kuasa.
Medan, 21 Juli 2020 Penulis,
Kevin Hartanto
ABSTRAK
Sebagai salah satu algoritma greedy, Dijkstra dapat menyelesaikan pencarian jalur terpendek yang menghasilkan solusi optimal dengan waktu pencarian lebih lama.
Dijkstra bertentangan dengan A-Star, algoritma best-first search, yang dapat menyelesaikan pencarian jalur terpendek dengan waktu yang lebih cepat tetapi tidak selalu memberikan solusi optimal. Dengan melihat kelebihan dan kekurangan algoritma Dijkstra dan algoritma A-Star, penulis membandingkan dua algoritma untuk menunjukkan solusi optimal dengan studi kasus pemilihan rute antara 24 lokasi SPBU (pompa bensin) di kota Medan yang direpresentasikan dalam graf berarah. SPBU dipilih sebagai studi kasus karena merupakan salah satu fasilitas publik yang harus tersedia di kota untuk mendukung kegiatan warganya. Perbandingan algoritma Dijkstra dan algoritma A-star berdasarkan kompleksitas Big-Theta (Θ) dan running time dalam satuan milidetik (ms). Hasil penelitian menunjukkan bahwa pencarian jalur terpendek antara SPBU dapat diselesaikan dengan algoritma Dijkstra dan A-Star, untuk beberapa kasus rute yang dihasilkan oleh kedua algoritma yang berbeda sehingga total jarak yang dihasilkan juga berbeda. Running time dalam algoritma A-Star terbukti lebih cepat daripada algoritma Dijkstra dan juga sesuai dengan prinsip A-Star yang memilih titik lokasi berdasarkan nilai heuristik terbaik sementara Dijkstra tidak memilih titik lokasi berdasarkan nilai heuristik. Untuk kompleksitas, Dijkstra adalah Θ (n
2) dan A-Star adalah Θ (m*n), dimana 0 ≤ m ≤ n.
Kunci: A-Star, Dijkstra, Big-Theta, running time, SPBU.
COMPARATIVE ANALYSIS OF DIJKSTRA‟S ALGORITHM AND A-STAR ALGORITHM IN FINDING THE SHORTEST PATH
(CASE STUDY: SPBU IN MEDAN)
ABSTRACT
As one form of greedy algorithm, Dijkstra can solve the shortest path problem with a optimum solution in longer search time. Dijkstra is contrary to A-Star, a best-first search algorithm, which can handle the shortest path search with a faster time but not always optimum. By looking at the advantages and disadvantages of Dijkstra and A-Star, the authors compare the two algortihm to point out the optimum solution with a case study on the routes selection between 24 SPBU (gas stations) in Medan city that are represented in directed graph. SPBU were chosen as a case study because it is one of the public facilities that must be available in a city to support its community activities. The comparison of Dijkstra and A-star itself is based on the complexity of Big-Theta (Θ) and the running time in millisecond. The results show that the shortest path search between SPBU can be completed with Dijkstra and A-Star where in some cases the routes produced by the two algorithms are different so that the total distance generated is also different. The running time of A-Star is proven to be faster than Dijkstra and it is in accordance with A-Star principle which selects the location point based on the best heuristic value while Dijkstra does not select the location point based on the heuristic value. For the complexity, Dijkstra is Θ(n
2) and A-Star is Θ(m*n), where 0 ≤ m ≤ n.
Keywords: A-Star, Dijkstra, Big-Theta, running time, SPBU.
DAFTAR ISI
Halaman
PERSETUJUAN ... ii
PERNYATAAN ... iii
PENGHARGAAN ... iv
ABSTRAK ... vi
ABSTRACT ... vii
DAFTAR ISI ... viii
DAFTAR TABEL ... xi
DAFTAR GAMBAR ... xii
DAFTAR LAMPIRAN ... xiv
BAB I PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Rumusan Masalah ... 2
1.3. Batasan Masalah ... 2
1.4. Tujuan Penelitian ... 4
1.5. Manfaat Penelitian ... 4
1.6. Metodologi Penelitian ... 4
1.7. Sitematika Penulisan ... 5
BAB II LANDASAN TEORI ... 7
2.1. Konsep Dasar Graf ... 7
2.1.1. Sejarah Graf ... 7
2.1.2. Definisi Graf ... 9
2.1.3. Jenis-Jenis Graf ... 9
2.1.4. Graf Berbobot (Weighted Graph) ... 12
2.2. Shortest Path ... 12
2.2.1. Metode Konvensional ... 13
2.2.2. Metode Heuristik ... 13
2.3. Algoritma ... 14
2.4. Algoritma Dijkstra ... 15
2.5. Algoritma A* (A-Star) ... 19
2.6. Kompleksitas Algoritma ... 24
2.6.1. Kompleksitas Waktu ... 24
2.6.2. Kompleksitas Waktu Asimptotik ... 24
2.7. Penelitian yang Relevan ... 30
BAB III ANALISIS DAN PERANCANGAN SISTEM ... 32
3.1. Analisis Sistem ... 32
3.1.1. Analisis Masalah ... 32
3.1.2. Analisis Kebutuhan Sistem ... 33
3.1.2.1. Kebutuhan Fungsional ... 34
3.1.2.2. Kebutuhan Non-Fungsional ... 34
3.1.3. Analisis Proses ... 34
3.2. Perancangan Sistem ... 35
3.2.1. Use-Case Diagram ... 36
3.2.2. Activity Diagram ... 37
3.2.3. Sequence Diagram ... 38
3.2.4. Flowchart ... 39
3.2.4.1. Flowchart Sistem ... 39
3.2.4.2. Flowchart Algoritma Dijkstra ... 40
3.2.4.3. Flowchart Algoritma A* (A-Star) ... 41
3.2.5. Mock-Up ... 42
3.2.5.1. Halaman Utama ... 42
3.2.5.2. Halaman Shortest Path ... 43
BAB IV IMPLEMENTASI ... 45
4.1. Implementasi ... 45
4.1.1. Halaman Awal ... 45
4.1.2. Halaman Shortest Path ... 46
4.2. Pengujian ... 47
4.2.1. Pengujian Proses Implementasi... 47
4.2.2. Pengujian Proses Algoritma Dijkstra ... 49
4.2.2.1. Perhitungan Manual Algoritma Dijkstra ... 52
4.2.3. Pengujian Proses Algoritma A* (A-Star) ... 57
4.2.3.1. Perhitungan Manual Algoritma A* (A-Star) .. 60
4.3. Kompleksitas ... 65
4.3.1. Kompleksitas Algoritma Dijkstra ... 65
4.3.2. Kompleksitas Algoritma A* (A-Star) ... 66
4.4. Pengujian Waktu Proses ... 67
4.4.1. Algoritma Dijkstra ... 67
4.4.2. Algoritma A* (A-Star) ... 68
BAB V KESIMPULAN DAN SARAN ... 70
5.1. Kesimpulan ... 70
5.2. Saran ... 71
DAFTAR PUSTAKA ... 72
DAFTAR TABEL
Halaman
Tabel 2.1. Iterasi 0 dan 1 ... 17
Tabel 2.2. Iterasi 2 ... 17
Tabel 2.3. Iterasi 3 ... 17
Tabel 2.4. Iterasi 4 ... 18
Tabel 2.5. Tabel Kompleksitas Θ (Big-Theta) ... 26
Tabel 2.6. Tabel Kompleksitas O (Big-Oh) ... 27
Tabel 2.7. Tabel Kompleksitas Ω (Big-Omega) ... 29
Tabel 4.1. Daftar Lokasi SPBU di Kota Medan... 52
Tabel 4.2. Hasil Perhitungan Manual Algoritma Dijsktra ... 54
Tabel 4.3. Daftar Nilai Heuristik h(asal,tujuan) ... 61
Tabel 4.4. Tabel Kompleksitas Algoritma Dijkstra ... 65
Tabel 4.5. Tabel Kompleksitas Algoritma A* (A-Star) ... 66
Tabel 4.6. Hasil Pengujian Waktu Eksekusi Algoritma Dijkstra (PC_1) ... 67
Tabel 4.7. Hasil Pengujian Waktu Eksekusi Algoritma A* (A-Star) (PC_1) .. 67
DAFTAR GAMBAR
Halaman
Gambar 2.1. Representasi Jembatan Königsberg ... 7
Gambar 2.2. Graf Representasi Jembatan Königsberg ... 8
Gambar 2.3. Graf Sederhana ... 9
Gambar 2.4. Graf Ganda ... 10
Gambar 2.5. Graf Semu ... 10
Gambar 2.6. Graf Tidak Berarah ... 11
Gambar 2.7. Graf Berarah dan Graf-Ganda Berarah ... 11
Gambar 2.8. Weighted Undirected Graph dan Weighted Directed Graph ... 12
Gambar 2.9. Soal Graf dengan Algoritma Dijkstra ... 16
Gambar 2.10. Hasil Graf dengan Algoritma Dijkstra ... 18
Gambar 2.11. Soal Graf dengan Algoritma A* (A-Star) ... 21
Gambar 2.12. Hasil Graf dengan Algoritma A* (A-Star) ... 23
Gambar 2.13. Grafik Notasi Big-Theta ... 25
Gambar 2.14. Grafik Notasi Big-Oh ... 27
Gambar 2.15. Grafik Notasi Big-Omega ... 28
Gambar 3.1. Diagram Ishikawa ... 33
Gambar 3.2. Diagram Umum ... 35
Gambar 3.3. Use-Case Diagram ... 36
Gambar 3.4. Activity Diagram ... 37
Gambar 3.5. Sequence Diagram ... 38
Gambar 3.6. Flowchart Sistem ... 39
Gambar 3.7. Flowchart Algoritma Dijkstra ... 40
Gambar 3.8. Flowchart Algoritma A* (A-Star) ... 41
Gambar 3.9. Halaman Awal ... 42
Gambar 3.10. Halaman Shortest Path ... 43
Gambar 4.1. Halaman Awal ... 45
Gambar 4.2. Halaman Shortest Path ... 46
Gambar 4.3. Pengujian Proses Implementasi pada Lokasi SPBU Asal ... 48
Gambar 4.4. Pengujian Proses Implementasi pada Lokasi SPBU Tujuan ... 48
Gambar 4.5. Pengujian Proses Implementasi pada Algoritma ... 49
Gambar 4.6. Pengujian Proses Algoritma Dijkstra menggunakan PC_1 ... 50
Gambar 4.7. Pengujian Proses Algoritma Dijkstra menggunakan PC_2 ... 50
Gambar 4.8. Pengujian Proses Algoritma Dijkstra menggunakan PC_3 ... 51
Gambar 4.9. Pengujian Proses Algoritma Dijkstra menggunakan PC_1 ... 51
Gambar 4.10. Hasil Graf pada Algoritma Dijkstra ... 52
Gambar 4.11. Hasil Peta pada Algoritma Dijkstra ... 57
Gambar 4.12. Pengujian Proses Algoritma A* (A-star) menggunakan PC_1 ... 58
Gambar 4.13. Pengujian Proses Algoritma A* (A-star) menggunakan PC_2 ... 58
Gambar 4.14. Pengujian Proses Algoritma A* (A-star) menggunakan PC_3 ... 59
Gambar 4.15. Hasil Graf pada Algoritma A* (A-star) ... 59
Gambar 4.16. Pencarian Pertama dalam Algoritma A* (A-star) ... 62
Gambar 4.17. Pencarian Kedua dalam Algoritma A* (A-star) ... 64
Gambar 4.18. Grafik Waktu Eksekusi Algoritma Dijkstra ... 68
Gambar 4.19. Grafik Waktu Eksekusi Algoritma A* (A-Star) ... 69
DAFTAR GAMBAR
Halaman
Lampiran 1 Listing Program ... A-1
Lampiran 2 Curriculum Vitae ... B-1
BAB I PENDAHULUAN
1.1. Latar Belakang
Permasalahan transportasi merupakan keadaan yang selalu dihadapi oleh negara-negara yang telah maju dan juga oleh negara yang sedang berkembang seperti Indonesia, baik dibidang transportasi perkotaan maupun transportasi antar kota. Sehingga terjadi penurunan kecepatan dan bertambahnya kerapatan antar kendaraan (Indrajaya, et al., 2003).
Faktor utama dari permasalahan yang mepengaruhi kinerja sistem kontrol lalu lintas adalah yang pertama kemacetan menjadikan dari sistem konvensional tidak mampu mengatasi fenomena antrian, yang kedua yaitu pola perubahan lalu lintas sangat signifikan dan manajemen transportasi, pemantauan polusi kendaraan (Bielli, et al., 1996).
Rute terpendek (shortest path) adalah pencarian rute yang memiliki penjumlahan nilai edge dan nilai heuristik yang terkecil antara node yang ada pada graf tersebut. Pencarian rute terpendek ini telah diterapkan dalam berbagai bidang untuk mengoptimasi kinerja suatu sistem, baik untuk meminimalkan biayanya atau mempercepat prosesnya (Purwananto, et al., 2005). Dalam menentukan rute terpendek (shortest path) antar lokasi tersebut, penulis menggunakan algoritma Dijkstra dan algoritma A* (A-star). Algoritma adalah runtunan logis yang menjelaskan tahapan-tahapan penyelesaian masalah yang dirangkum secara sistematis untuk menyelesaikan masalah suatu masalah (Munir, 2012).
Algoritma Dijkstra adalah salah satu bentuk algoritma greedy. Algoritma ini termasuk algoritma pencarian graf yang digunakan untuk menyelesaikan masalah lintasan terpendek dengan satu sumber pada sebuah graf yang tidak memiliki cost sisi negatif, dan menghasilkan sebuah pohon lintasan terpendek. Algoritma ini sering digunakan pada routing (Retnani, et al., 2015).
Algoritma A* (A-star) merupakan algoritma best first search dengan
pemodifikasian fungsi heuristik. Algoritma ini meminimalkan total biaya lintasan,
dan pada kondisi yang tepat akan memberikan solusi yang terbaik dalam waktu yang optimal (Ahmad, 2017 & Anita, et al., 2006).
Algoritma Dijkstra dapat menangani jalur terpendek dengan hasil yang selalu benar, tetapi waktu yang digunakan untuk pencarian jalur terpendek lebih lama. Sedangkan, algoritma A* (A-star) dapat menangani jalur terpendek dengan waktu yang lebih cepat, tetapi tidak selalu benar. Kelebihan dengan aplikasi lain yang ada (misalnya Google Maps / Waze) adalah dapat mengetahui algoritma apa yang digunakan, dan running time pada algoritma tersebut.
Dengan melihat kelebihan dan kekurangan dari algoritma Dijkstra dan algoritma A* (A-star), penulis membandingkan keduanya untuk menunjukkan hasil dari kedua algoritma berdasarkan deterministik, salah satunya akan menjadi solusi teroptimal. Berdasarkan latar belakang yang telah diuraikan, maka pada kesempatan kali ini, penulis ingin melakukan penelitian dengan judul
“Perbandingan Algoritma Dijkstra dan Algoritma A* (A-star) dalam Pencarian Rute Terpendek”.
1.2. Rumusan Masalah
Berdasarkan latar belakang, maka rumusan masalah dalam penelitian ini adalah bagaimana menentukan algoritma yang lebih optimal antara Dijkstra dan A* (A-star) dalam pencarian rute terpendek.
1.3. Batasan Masalah
Dalam melakukan penelitian ini, peneliti membatasi ruang masalah yang akan diteliti. Batasan-batasan masalah yang digunakan adalah :
1. Dalam kasus ini yang diteliti adalah graf berarah terhubung (directed connected graph) yaitu graf yang setiap sisinya memiliki bobot dengan menggunakan vertex yang sudah ditentukan.
2. Bobot yang digunakan adalah jarak (dalam km) antar SPBU di
Medan. Pengambilan data bobot jarak tersebut menggunakan bantuan
Google Maps.
3. Aplikasi ini menetapkan titik asal merupakan salah satu lokasi SPBU di Medan yang sudah ditentukan.
4. Shortest Path ini hanya berlaku pada beberapa lokasi SPBU di Medan dan titik lokasi yang akan dikunjungi sebanyak dua puluh empat titik destinasi SPBU di Medan, yaitu:
a. SPBU Merak Jingga 11.201.102 b. SPBU Katamso 11.201.103 c. SPBU Gatot Subroto 11.201.104 d. SPBU TBBM Medan Grup 11.201.105 e. SPBU Polonia ex Petronas 11.201.106 f. SPBU H.M.Yamin 11.201.107
g. SPBU Klambir Lima 14.201.1102 h. SPBU Sei Batang Hari 14.201.1108 i. SPBU Ringroad 14.201.1121
j. SPBU Brigjen Katamso 14.201.1126 k. SPBU Setia Budi 14.201.1134
l. SPBU Platina Raya Titi Papan 14.201.1140 m. SPBU Kasuari 14.201.1150
n. SPBU Raya Medan Tenggara 14.201.1151 o. SPBU Karya Wisata 14.201.1152
p. SPBU Sempakata Simpang Pemda 14.201.121 q. SPBU Gatot Subroto 14.201.123
r. SPBU Tritura 14.201.167
s. SPBU Sutomo Ujung 14.202.1119
t. SPBU Krakatau Simpang Metal 14.202.1128 u. SPBU Yos Sudarso 14.202.1137
v. SPBU Marelan Raya Pasar III 14.202.1141 w. SPBU Sisingamangaraja 14.202.126 x. SPBU Jamin Ginting 14.203.199
5. Pencarian nilai heuristik dengan menggunakan metode Euclidean
Distance.
6. Membandingkan algoritma Dijkstra dan algoritma A* (A-star) menggunakan paramater kompleksitas Big-Theta (Θ), dan waktu proses dengan satuan waktu milisekon (ms).
7. Aplikasi ini offline dan perangkat yang digunakan dalam perancangan aplikasi adalah SharpDevelop dengan menggunakan bahasa C#.
1.4. Tujuan Penelitian
Berdasarkan rumusan masalah di atas, maka tujuan penelitian dari judul ini adalah untuk mengimplementasikan dan membandingkan algoritma Dijkstra dan algoritma A* (A-star) dalam menentukan rute terpendek antar lokasi SPBU di Medan.
1.5. Manfaat Penelitian
Manfaat yang diharapkan diperoleh dari penelitian ini antara lain :
1. Menciptakan aplikasi yang dapat memberi hasil (result) dalam pencarian rute terpendek antar lokasi SPBU di Medan.
2. Mengetahui algoritma yang mana lebih optimal antara algoritma Dijkstra dan algoritma A* (A-star) untuk pencarian tersebut.
1.6. Metodologi Penelitian
Dalam penelitian ini, ada beberapa tahapan-tahapan yang dilakukan adalah:
1. Studi Pustaka
Pada tahap ini, penelitian dimulai dengan peninjauan pustaka berupa buku, artikel, paper, jurnal, makalah, penelitian dan situs-situs internet lainnya yang didokumentasikan dalam bentuk jurnal yang berhubungan dengan Graf, Shortest Path, Dijkstra, A* (A-star).
2. Analisis Sistem
Berdasarkan ruang lingkup penelitian, penulis melakukan analisis
terhadap apa saja yang dibutuhkan dalam penelitian penentuan rute
terpendek menggunakan algoritma Dijkstra dan algoritma A* (A-star).
3. Perancangan Sistem
Pada tahap ini, melakukan perancangan dalam sebuah diagram Ishikawa, diagram umum sistem, use-case diagram, activity diagram, sequence diagram, diagram alir (flowchart), dan perancangan tampilan form pada aplikasi.
4. Implementasi Sistem
Pada tahap ini, membuat sebuah sistem dengan menggunakan bahasa pemrograman C# sesuai dengan diagram alir yang telah dirancang.
5. Pengujian Sistem
Pada tahap ini, melakukan proses pengujian dan percobaan terhadap sistem sesuai dengan kebutuhan yang ditentukan sebelumnya serta memastikan program yang dibuat berjalan seperti yang diharapkan.
6. Dokumentasi Sistem
Pada tahap ini, penelitian dilakukan dokumentasi dan penulisan laporan mengenai program tersebut yang bertujuan untuk menunjukkan hasil penelitian ini.
1.7. Sistematika Penulisan
Sistematika penulisan skripsi ini terdiri dari beberapa bagian utama, yaitu:
BAB 1 PENDAHULUAN
Bab ini menjelaskan latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.
BAB 2 LANDASAN TEORI
Bab ini berisi tentang penjelasan mengenai konsep dasar graf, shortest path, algoritma Dijkstra, dan algoritma A*
(A-star), dan sebagainya.
BAB 3 ANALISIS DAN PERANCANGAN SISTEM
Bab ini menjelaskan uraian analisis terhadap masalah penelitian dan perancangan terhadap sistem yang akan dibangun, seperti diagram Ishikawa, diagram umum sistem, use-case diagram, activity diagram, sequence diagram, diagram alir (flowchart), dan perancangan tampilan form pada aplikasi.
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Bab ini berisi tentang implementasi algoritma Dijkstra dan algoritma A* (A-star) dalam menentukan rute terpendek (Studi Kasus: SPBU di Kota Medan). Kemudian, dilakukan pengujian terhadap sistem tersebut.
BAB 5 KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan yang diperoleh dari keseluruhan
uraian dari bab-bab sebelumnya dan saran-saran yang
berguna untuk pengembangan penelitian selanjutnya.
BAB II
LANDASAN TEORI
2.1. Konsep Dasar Graf
Graf digunakan untuk menggambarkan objek-objek diskrit dengan cara menyatakan objek tersebut sebagai titik dan hubungan antara objek-objek tersebut dinyatakan dengan garis atau sisi (Munir, 2012). Representasi graf bertujuan agar penggambaran terhadap objek-objek dapat lebih mudah dipahami (Siang, 2009).
Graf dapat diimplementasikan dalam banyak bidang dalam kehidupan sehari-hari seperti pengaturan lampu lalu lintas, travelling salesmen problem, pencarian rute terpendek, dan lain-lain. Bahkan peta adalah sebuah graf, dimana kota adalah objek yang dinyatakan dengan titik dan jalan dinyatakan dengan sisi (Munir, 2012).
2.1.1. Sejarah Graf
Menurut catatan sejarah, pada tahun 1736 adalah pertama kali penggunaan graf yang diterapkan pada penyelesaian masalah jembatan Königsberg. Kota Königsberg berada di sebelah timur negara bagian Prussia, Jerman dan sekarang bernama Kaliningrad, dimana di kota tersebut terdapat sungai Pregal yang mengalir mengitari pulau Kneiphof lalu bercabang menjadi dua buah anak sungai (Iryanto, 2003). Ada tujuh jembatan yang menghubungkan daratan yang dipisahkan oleh sungai tersebut sebagaimana direpresentasikan pada Gambar 2.1.
Gambar 2.1. Representasi Jembatan Königsberg
(Encyclopaedia Britannica, Inc. 2010)
Masalah jembatan Königsberg adalah apakah mungkin melalui ketujuh buah jembatan tersebut masing-masing tepat satu kali, dan kembali ke tempat semula. Pada tahun 1736, seorang matematikawan asal Swiss bernama Leonhard Euler adalah orang pertama yang membuktikan bahwa perjalanan seperti itu tidak mungkin dapat dilakukan (Iryanto, 2003). Pembuktian tersebut dengan cara membuat model masalah ini ke dalam graf. Daratan dinyatakan sebagai titik yang disebut simpul (vertex) dan jembatan dinyatakan sebagai garis yang disebut sisi (edge) (Munir, 2012). Setiap titik diberi label 1, 2, 3, dan 4. Graf yang dimodelkan oleh Euler diperlihatkan pada Gambar 2.2. Bagian A.
Gambar 2.2. Graf Representasi Jembatan Königsberg (Encyclopaedia Britannica, Inc. 1994)
Jawaban yang diungkapkan Euler adalah orang tidak mungkin melalui
ketujuh jembatan tersebut masing-masing satu kali dan kembali lagi ke tempat
asal keberangkatan jika derajat setiap simpul tidak seluruhnya genap (Iryanto,
2003). Hal ini dapat diperlihatkan pada Gambar 2.2. Bagian B dimana vertex 4
memiliki 5 edge(s) sedangkan vertex 1, 2, dan 3 memiliki 3 edge(s).
2.1.2. Definisi Graf
Suatu graf sederhana G adalah suatu pasangan terurut (V,E), dimana V disebut vertex yaitu suatu himpunan berhingga yang tidak kosong dan elemen- elemennya dan E disebut edge yaitu suatu himpunan sisi yang menghubungkan dua elemen subset dari V (Iryanto, 2003). Secara matematis, Graf G didefinisikan sebagai pasangan himpunan (V,E) dapat ditulis dengan notasi G = (V,E) dimana dalam hal ini V adalah himpunan tidak-kosong dari simpul-simpul (vertices atau node) dan E adalah himpunan sisi (edge atau arc) untuk menghubungkan sepasang simpul (Munir, 2012). Maka V tidak boleh kosong, sedangkan E boleh kosong.
2.1.3. Jenis-jenis Graf
Graf dapat dikelompokkan menjadi beberapa jenis hal ini berdasarkan ada tidaknya sisi ganda, jumlah simpul, atau orientasi arah pada sisi (Munir, 2012).
Berdasarkan ada tidaknya sisi ganda atau loop pada suatu graf, maka secara umum graf dapat digolongkan menjadi:
a. Graf Sederhana (Simple Graph)
Graf sederhana adalah graf yang tidak mengandung sisi ganda maupun gelang (loop) (Munir, 2012). Pada Gambar 2.3. adalah contoh graf sederhana 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)}
Gambar 2.3. Graf Sederhana (Munir, 2012)
b. Graf tak-sederhana (Nonsimple Graph)
Graf tak-sederhana adalah graf yang mengandung sisi ganda atau loop.
Ada dua macam graf tak-sederhana, yaitu graf ganda (multigraph) dan graf semu (pseudograph) (Munir, 2012). Graf ganda adalah graf yang mengandung sisi ganda seperti pada Gambar 2.4. 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) } E = {e
1, e
2, e
3, e
4, e
5, e
6, e
7}
Gambar 2.4. Graf Ganda (Munir, 2012)
Graf semu adalah graf yang mengandung loop (Munir, 2012). Pada Gambar 2.5. adalah contoh graf semu 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) }
E = {e
1, e
2, e
3, e
4, e
5, e
6, e
7, e
8}
Gambar 2.5. Graf Semu (Munir, 2012)
Dilihat dari orientasi arah pada sisinya, maka secara umum graf dikelompokkan menjadi dua yaitu :
1. Graf tidak berarah (undirected graph) adalah graph yang sisinya tidak mempunyai orientasi arah. Pada graf ini, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan (Munir, 2012). Contoh graf tidak berarah dapat dilihat pada Gambar 2.6.
Gambar 2.6. Graf Tidak Berarah (Munir, 2012)
2. Graf berarah (directed graph) adalah graf yang setiap sisinya diberikan
orientasi arah. Pada graf berarah, (u,v) dan (v,u) menyatakan dua buah
busur yang berbeda, dengan kata lain (u,v) ≠ (v,u). Untuk busur (u,v),
simpul u dinamakan simpul asal (initial vertex) dan simpul v dinamakan
simpul terminal (terminal vertex) (Munir, 2012). Contoh graf berarah
dapat dilihat pada Gambar 2.7.
Gambar 2.7. (a) Graf Berarah, (b) Graf-Ganda Berarah 2.1.4. Graf Berbobot (Weighted Graph)
Graf berbobot adalah graf yang setiap sisinya memiliki harga (bobot).
Bobot pada tiap sisi bergantung pada masalah yang dimodelkan sehingga nilainya dapat berbeda-beda. Bobot tersebut dapat menyatakan jarak antara dua buah kota, waktu tempuh pesan (message) dari sebuah simpul komunikasi ke simpul komunikasi lain (dalam jaringan komputer), ongkos produksi dan sebagainya (Munir, 2012). Contoh graf berbobot dapat dilihat ada Gambar 2.8.
Gambar 2.8. Weighted Undirected Graph (kiri), dan Weighted Directed Graph (kanan)
2.2. Shortest Path
Shortest Path adalah pencarian lintasan, rute, jangkauan, atau pun jalur
yang akan dilalui dari satu titik ke titik lainnya untuk menentukan lintasan
menggunakan metode heuristik dengan nilai paling minimum / optimal.
Penyelesaian untuk hal tersebut adalah dengan merepresentasikannya ke dalam bentuk graf. Bentuk graf representasinya adalah dengan membuat simpul dalam graf sebagai representasi objek masalah dan membuat representasi hubungan antar objek dengan garis yang menghubungkan simpul-simpul tersebut (Sutojo, et al., 2011). Graf yang akan digunakan adalah graf berbobot (weighted graph) yang memiliki nilai atau bobot. Semua bobot diasumsikan bernilai positif. Dalam studi kasus ini, bobot pada sisi graf menyatakan jarak antar lokasi SPBU di Medan.
Cara algoritmis yang umum di pakai untuk menyelesaikan permasalahan di atas adalah dengan menggunakan optimasi teknik pencarian berupa metode konvensional dan metode heuristik. Untuk mengukur peforma metode pencarian, terdapat empat kriteria yang dapat dilakukan (Russel, et al., 1995), yaitu:
1. Completeness. Apakah metode tersebut menjamin penemuan solusi jika solusinya memang ada ?
2. Time complexity. Berapa lama waktu yang diperlukan untuk menemukan solusi tersebut ?
3. Space complexity. Berapa banyak memori yang diperlukan ?
4. Optimality. Apakah metode tersebut menjamin menemukan solusi terbaik ?
2.2.1. Metode Konvensional
Metode konvensional adalah metode yang menggunakan perhitungan
matematika dalam penerapannya. Metode konvensional yaitu berupa algoritma
yang menggunakan perhitungan matematis biasa. Pada metode ini hanya
membandingkan jarak masing-masing node untuk kemudian mencari jarak dengan
bobot terpendek (Mutakhiroh, et al., 2007). Beberapa diantaranya adalah
algoritma Dijkstra, algoritma Floyd-Warshall, dan algoritma Bellman-Ford.
2.2.2. Metode Heuristik
Metode heuristik merupakan bagian bidang dari kecerdasan buatan yang digunakan untuk melakukan pencarian (Mutakhiroh, et al., 2007). Asal mula kata heuristik berasal dari kata kerja bahasa Yunani, yaitu heurisken yang artinya
„mencari‟ atau „menemukan‟. Proses pencarian pada metode ini dilakukan dengan selektif dan dapat memberikan panduan untuk proses pencarian berikutnya yang memiliki kemungkinan sukses paling besar (Berlianty, et al., 2010). Beberapa diantaranya adalah algoritma A*, algoritma Simple Hill Climbing, algoritma Steepest-Ascent Hill Climbing, dan algoritma Genetika.
2.3. Algoritma
Ditelaah dari asal usul kata, kata algorism berarti proses menghitung dengan angka Arab. Kata tersebut berasal dari nama penulis buku Arab yang terkenal bernama Abu Ja‟far Muhammad Ibnu Musa al-Khuwarizmi dimana orang barat membaca al-Khuwarizmi menjadi algorism. Beliau menulis buku yang berjudul Kitab al jabar walmuqabala, yang artinya “Buku Pemugaran dan Pengurangan” (The Book of Restoration and Reduction). Dari judul buku itu juga merupakan asal kata “aljabar” (algebra). Perubahan kata algorism menjadi algorithm terjadi karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran -sm berubah menjadi -thm. Lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya. Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma (Munir, 2012).
Berikut beberapa definisi Algoritma berdasarkan beberapa sumber, yaitu :
1. Menurut Kamus Besar Bahasa Indonesia (KBBI), Algoritma adalah urutan
logis pengambilan suatu keputusan dalam memecahkan suatu permasalahan
(Pusat Bahasa Depertemen Pendidikan Nasional, 2008).
2. Algoritma adalah runtunan logis yang menjelaskan tahapan-tahapan penyelesaian masalah yang dirangkum secara sistematis untuk menyelesaikan suatu masalah (Munir, 2012).
3. Algoritma adalah ilmu yang mempelajari tentang bagaimana cara menyelesaikan suatu masalah berdasarkan urutan langkah-langkah terbatas yang disusun secara sistematis dan menggunakan bahasa yang logis dengan tujuan tertentu (Barakbah, et al., 2013).
Menurut Donald E. Knuth (Knuth, 1997) algoritma yang baik dan benar harus memiliki karakteristik sebagai berikut:
1. Input: Sebuah algoritma harus memiliki nol atau lebih inputan dari pengguna sebagai data masukan untuk diolah.
2. Output: Sebuah algoritma harus memiliki minimal sebuah ouput yang merupakan hasil dari olahan data.
3. Finiteness: Sebuah algoritma harus terbatas dan berhenti dari proses yang telah dieksekusi.
4. Defineteness: Sebuah Algoritma harus jelas dan tidak menimbulkan makna ganda (ambigious).
5. Effectiveness: Langkah-langkah algoritma dikerjakan dalam waktu yang wajar.
2.4. Algoritma Dijkstra
Algoritma Dijkstra yang merupakan salah satu dari banyaknya algoritma
shortest path yang populer. Edsger W. Dijkstra adalah ilmuwan komputer yang
merumuskan algoritma Dijkstra pada tahun 1956 dan mempublikasikannya pada
tahun 1959. Algoritma Dijkstra menyelesaikan masalah pencarian sebuah shortest
path dari titik satu ke titik lainnya dimana graf tersebut harus memiliki bobot yang
bernilai positif (Popa, et al., 2016). Sehingga apabila graf tersebut memiliki bobot
yang bernilai negatif maka lintasan tersebut tidak dapat dilintasi dan
penyelesaiannya berupa infiniti (Laaksonen, 2017). Algoritma ini memilih titik
terdekat yaitu titik dengan bobot yang terkecil (Pandey, et al., 2016), bobot
tersebut merupakan bobot yang dimiliki tiap edge (Cruz, et al., 2016).
Keuntungan algoritma Dijkstra ialah lebih efisien dan dapat digunakan untuk memproses graf dikarenakan hanya memproses tiap titik pada graf sekali. Jumlah titik menentukan tingkat kecepatan menemukan solusi dari algoritma Dijkstra.
Langkah-langkah algoritma Dijkstra, sebagai berikut:
1. Beri nilai bobot untuk setiap titik ke titik lainnya, lalu set nilai 0 pada node awal dan nilai tak hingga “∞” terhadap node lain (belum terisi).
2. Set semua node dengan label “unvisited” dan set node awal sebagai “start”.
3. Menghitung semua jarak yang terhubung dari titik start. Jika jarak ini lebih kecil dari sebelumya (yang telah terekam sebelumnya) hapus data lama, simpan data jarak dengan jarak yang baru.
4. Saat selesai mempertimbangkan setiap jarak terhadap node tetangga, tandai yang telah dikunjungi sebagai “visited”. Node “visited” tidak akan pernah dicek kembali, jarak yang disimpan adalah jarak yang terakhir dan yang paling minimal bobotnya.
5. Set node “unvisited” dengan jarak terkecil (dari node start) sebagai “start”
selanjutnya dan lanjutkan kembali ke step 3.
Contoh :
Tentukanlah jalur terpendek dari graf yang ditunjukkan pada Gambar 2.9 dengan titik asal = A, dan titik tujuan = E.
Gambar 2.9. Soal Graf dengan Algoritma Dijkstra 2
C
A B
E D
8 8
10
10 5
8
Langkah 1:
- Buatlah tabel untuk hasil lintasan dengan keterangan i (iterasi), u (titik yang belum dikunjungi), v (titik yang telah dikunjungi), c (current state), dan titik A, B, C, D, E seperti pada Tabel 2.2.
- i = 0 adalah keadaan awal.
- Pada i = 1 dapat dilihat pada Tabel 2.1, AB = 2, AC = 10. Lintasan AB adalah lintasan dengan bobot terendah dengan bobot = 2.
- Maka, tentukan B sebagai node “start” untuk i = 2.
Tabel 2.1. Iterasi 0 dan 1
iteration unvisited current node A B C D E
0 ABCDE - 0,- ∞,- ∞,- ∞,- ∞,-
1 BCDE A 0,- 2,A 10,A ∞,- ∞,-
Langkah 2:
- Pada i = 2 dapat dilihat pada Tabel 2.2, BC = 2+8 = 10, BD = 2+8 = 10.
- Pada node C sekarang [10,B] sama dengan node C sebelumnya [10,A], maka nilai node C bisa menjadi [10,B] atau [10,A].
- Maka, tentukan C sebagai node “start” sesuai alphabet order untuk i = 3.
Tabel 2.2. Iterasi 2
iteration unvisited current node A B C D E
0 ABCDE - 0,- ∞,- ∞,- ∞,- ∞,-
1 BCDE A 0,- 2,A 10,A ∞,- ∞,-
2 CDE B 0,- 2,A 10,B 10,B ∞,-
Langkah 3:
- Pada i = 3 dapat dilihat pada Tabel 2.3, CD = 10+5 = 15, CE = 10+10 = 20.
- Pada node D sekarang [15,C] lebih besar dari node sebelumnya [10,B], maka nilainya diganti menjadi [10,B] dari [15,C].
- Maka, tentukan D sebagai node “start” untuk i = 4.
Tabel 2.3. Iterasi 3
iteration unvisited current node A B C D E
0 ABCDE - 0,- ∞,- ∞,- ∞,- ∞,-
1 BCDE A 0,- 2,A 10,A ∞,- ∞,-
2 CDE B 0,- 2,A 10,B 10,B ∞,-
3 DE C 0,- 2,A 10,B 10,B 20,C
Langkah 4:
- Pada i = 4 dapat dilihat pada Tabel 2.4, DE = 10+8 = 8.
- Pada node E sekarang [20,C] lebih besar dari node sebelumnya [18,D], maka nilainya tidak berubah / tetap [18,D].
- Maka, tentukan E tidak bisa sebagai node “start” karena node E sebagai node tujuan.
- Selesai.
Tabel 2.4. Iterasi 4
iteration unvisited current node A B C D E
0 ABCDE - 0,- ∞,- ∞,- ∞,- ∞,-
1 BCDE A 0,- 2,A 10,A ∞,- ∞,-
2 CDE B 0,- 2,A 10,B 10,B ∞,-
3 DE C 0,- 2,A 10,B 10,B 20,C
4 E D 0,- 2,A 10,B 10,B 18,D
Jadi, hasi rute dalam Algoritma Dijkstra adalah A-B-D-E
Gambar 2.10. Hasil Graf dengan Algoritma Dijkstra
2.5. Algoritma A* (A-star)
A* diperkenalkan oleh Peter Hart, Nils Nilsson dan Bertram Raphael pertama kali pada tahun 1968 dengan menggunakan heuristik (Hart, et al., 1968).
Algoritma A* (A-star) adalah salah satu algoritma pencarian yang menganalisa input, mengevaluasi sejumlah jalur yang mungkin dilewati dan menghasilkan solusi teroptimal. Algoritma A* adalah algoritma komputer yang digunakan secara luas dalam graph traversal dan penemuan jalur serta proses perencanaan jalur yang bisa dilewati secara efisien di sekitar titik-titik yang disebut node (Reddy, 2013).
Karakteristik yang menjelaskan algoritma A-star adalah pengembangan dari “daftar tertutup” untuk merekam area yang dievaluasi. Daftar tertutup ini adalah sebuah daftar untuk merekam area berdekatan yang sudah dievaluasi, kemudian melakukan perhitungan jarak yang dikunjungi dari “titik awal” dengan jarak diperkirakan ke “titik tujuan” (Reddy, 2013).
A* (A-star) juga merupakan bentuk dari Best First Search (BFS). A-star mengevaluasi node dengan menggabungkan , yaitu cost untuk mencapai
2
C
A B
E D
8 10 8
10 5
8
node, dan , yaitu cost yang diperlukan dari node untuk mencapai tujuan, dalam notasi matematika dituliskan sebagai: .
Dimana:
= Biaya evaluasi
= Biaya yang sudah dikeluarkan dari keadaan awal sampai keadaan n = Estimasi biaya untuk sampai pada suatu tujuan mulai dari n
Suatu fungsi heuristik dikatakan baik, apabila dapat memberikan biaya perkiraan yang mendekati biaya sebenarnya. Semakin mendekati biaya sebenarnya, fungsi heuristik tersebut semakin baik. Dalam masalah pencarian rute terpendek dalam graph, salah satu fungsi heuristik yang dapat digunakan adalah Euclidean Distance.
Euclidean Distance adalah fungsi heuristik yang diperoleh berdasarkan jarak langsung bebas hambatan seperti untuk menghitung kesamaan 2 vektor (Putra, 2010). Tetapi sebelum mendapatkan hasil kedua titik direpresentasikan ke dalam koordinat 2 dimensi, sehingga dapat dihitung melalui rumus:
√∑(
)
√
Keterangan:
: estimasi jarak A ke B
: koordinat x pada titik A
: koordinat x pada titik B
: koordinat y pada titik A
: koordinat y pada titik B
Langkah-langkah algoritma A* (A-star), sebagai berikut:
1. Mulai.
2. Node “start” sebagai successor.
3. Menghitung semua biaya evaluasi yang terhubung dari successor.
4. Melakukan pengujian: jika calon successor- successor merupakan tujuan, maka akan berhenti; dan jika tidak, maka lanjutkan ke langkah berikutnya.
5. Tentukan successor baru dari biaya evalusi terbaik (biaya paling minimum) dan alphabet order (apabila ada kedua biaya evaluasi memiliki nilai yang sama) dari successor-successor sebelumnya.
6. Dan lanjutkan kembali ke langkah 4.
Contoh:
Tentukanlah jalur terpendek dari graf yang ditunjukkan pada Gambar 8.11 dengan titik asal = A, dan titik tujuan = E. Setiap titik memiliki koordinat, yaitu: A(0,0), B(1.5,2.5), C(0,5), D(4,4), E(4,6).
Gambar 2.11. Soal Graf dengan Algoritma A* (A-star)
Langkah 1:
√ √
2
C
A B
E D
8 10 8
10 5
8
√ √ √
√ √ √
√ √
Langkah 2:
√ √ √
√
A
B C
2 10
2+4.3 = 6.3 10+4.12 = 14.12
Langkah 3:
A
B C
2 10
2+4.3 = 6.3 10+4.12 = 14.12
8 8
10+4.12 = 14.12 10+2 = 12
C D
A
B C
2 10
2+4.3 = 6.3 10+4.12 = 14.12
8 8
10+4.12 = 14.12 10+2 = 12
C D
5 8
15+4.12 = 19.12 18+0 = 14
C E final state
Jadi, hasil rute dalam Algoritma A* (A-Star) adalah A-B-D-E
Gambar 2.12. Hasil Graf dengan Algoritma A* (A-Star)
2.6. Kompleksitas Algoritma
Algoritma yang dapat dikatakan sebagai algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya (meminimumkan kebutuhan waktu dan ruang). Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan jumlah data yang diproses yang disimbolkan dengan n. (Munir, 2012).
Terminologi yang diperlukan dalam membahas kompleksitas waktu dan kompleksitas ruang suatu algoritma adalah :
1. Ukuran besar masukan data untuk suatu algoritma n. Misal, jika masukan algoritma adalah graf, maka ukuran masukan adalah jumlah simpul dan sisi.
2. Kompleksitas waktu, t(n) adalah jumlah operasi yang dilakukan untuk melaksanakan algoritma sebagai fungsi dari ukuran masukan n.
3. Kompleksitas ruang, s(n) adalah ruang memori yang dibutuhkan algoritma sebagai fungsi dari ukuran masukan n (Munir, 2012).
2
C
A B
E D
8 10 8
10 5
8
2.6.1. Kompleksitas Waktu
Kompleksitas waktu atau t(n) diproses berdasarkan jumlah tahapan komputasi dimana memperhatikan jumlah data yang menjadi ukuran masukan n dari sebuah algoritma. Dengan menggunakan kompleksitas waktu dapat dilihat proses peningkatan waktu, t(n) dengan peningkatan ukuran, s(n) yang dibutuhkan.
2.6.2. Kompleksitas Waktu Asimptotik
Kompleksitas waktu asimptotik adalah analisis efisiensi asimptotik dari suatu algoritma untuk menentukan kompleksitas waktu yang sesuai.
Analisis dilakukan untuk nilai n cukup besar dan bahkan tidak terbatas.
Notasi asimptotik adalah notasi yang memperhatikan waktu tempuh (running time) dari algoritma untuk menjelaskan kompleksitas waktu asimptotiknya. Kompleksitas waktu asimptotik dibagi menjadi tiga, yaitu:
1. Notasi Θ (Big-Theta)
Fungsi t(n) didefinisikan dalam Θ(g(n)) dan dilambangkan t(n) ∈ Θ(g(n)). Fungsi t(n) tersebut diberi batas atas dan batas bawah oleh beberapa kelipatan konstanta positif dari g(n) untuk semua n bernilai besar jika ada beberapa konstanta positif (c
1dan c
2) dan beberapa bilangan bulat non-negatif n
0(Levitin, 2009), sedemikian sehingga
, untuk semua
Grafik fungsi Big-Theta dapat dilihat pada gambar 2.13.
Gambar 2.13. Grafik Notasi Big-Theta (Levitin, 2009)
Contoh Kompleksitas Notasi Θ (Big-Theta):
Tentukan notasi Θ untuk T(n) = 2n
2+ 6n + 1.
a. 2n
2+ 6n + 1 2n
2+ 6n
2+ n
2= 9n
2untuk semua n 1 (C = 9 dan n
0= 1) maka dengan C = 9 memperoleh
2n
2+ 6n + 1 = O(n
2).
b. 2n
2+ 6n + 1 2n
2untuk semua n 1 (C = 2 dan n
0= 1) maka dengan C = 2 memperoleh
2n
2+ 6n + 1 = Ω(n
2).
c. Karena 2n
2+ 6n + 1 = O(n
2) dan 2n
2+ 6n + 1 = Ω(n
2), maka 2n
2+ 6n + 1 = Θ(n
2)
(Munir, 2012)
Tinjau algoritma menghitung rata-rata dari sebuah larik (array).
Tabel 2.5. Tabel Kompleksitas Notasi Θ (Big-Theta)
Listing Program C # C #
sum = 0 C
11 C
1for i = 1 to n do C
2n C
2*n
sum = sum + a[i] C
1n C
1*n
endfor C
2n C
2*n
rata_rata = sum/n C
11 C
1C
1= operator dasar (+ , - , * , / , = ) C
2= operator for
Untuk C
n, n merupakan urutan yang mana muncul terlebih dahulu dan juga merupakan sintaks yang sama.
T(n) = (C
2+C
1+C
2)*n + (C
1+C
1)*n
0T(n) = (C
1+2*C
2)*n + (2*C
1)*n
0T(n) = Θ(n)
2. Notasi O (Big-Oh)
Fungsi t(n) didefinisikan dalam O(g(n)) dan dilambangkan t(n) ∈ O(g(n)). Fungsi t(n) tersebut diberi batas atas oleh beberapa kelipatan konstanta dari g(n) untuk semua n bernilai besar jika ada beberapa konstanta positif c dan beberapa bilangan bulat non-negatif n
0(Levitin, 2009), sedemikian sehingga
, untuk semua
Grafik fungsi Big-Oh dapat dilihat pada gambar 2.14.
Gambar 2.14. Grafik Notasi Big-Oh (Levitin, 2009)
Contoh Kompleksitas Notasi O (Big-Oh):
Tentukan notasi O untuk T(n) = 2n
2+ 6n + 1.
a. Karena 2n
2+ 6n + 1 2n
2+ 6n
2+ n
2= 9n
2untuk semua n 1 (C = 9 dan n
0= 1), maka memperoleh
2n
2+ 6n + 1 = O(n
2) (Munir, 2012)
Tinjau algoritma menghitung rata-rata dari sebuah larik (array).
Tabel 2.6. Tabel Kompleksitas Notasi O (Big-Oh)
Listing Program C # C #
sum = 0 C
11 C
1for i = 1 to n do C
2n C
2*n
sum = sum + a[i] C
1n C
1*n
endfor C
2n C
2*n
rata_rata = sum/n C
11 C
1C
1= operator dasar (+ , - , * , / , = ) C
2= operator for
Untuk C
n, n merupakan urutan yang mana muncul terlebih dahulu dan
juga merupakan sintaks yang sama.
T(n) = (C
2+C
1+C
2)*n + (C
1+C
1)*n
0T(n) = (C
1+2*C
2)*n + (2*C
1)*n
0T(n) = O(n)
3. Notasi Ω (Big-Omega)
Fungsi t(n) didefinisikan dalam Ω (g(n)) dan dilambangkan t(n) ∈ Ω(g(n)). Fungsi t(n) tersebut diberi batas bawah oleh beberapa kelipatan konstanta positif dari g(n) untuk semua n bernilai besar jika ada beberapa konstanta positif c dan beberapa bilangan bulat non- negatif n
0(Levitin, 2009), sedemikian sehingga
, untuk semua
Grafik fungsi Big-Omega dapat dilihat pada gambar 2.15.
Gambar 2.15. Grafik Notasi Big-Omega (Levitin, 2009)
Contoh Kompleksitas Notasi Ω (Big-Omega):
Tentukan notasi Ω untuk T(n) = 2n
2+ 6n + 1.
a. Karena 2n
2+ 6n + 1 2n
2untuk semua n 1 (C = 2 dan n
0= 1) maka memperoleh
2n
2+ 6n + 1 = Ω(n
2) (Munir, 2012)
Tinjau algoritma menghitung rata-rata dari sebuah larik (array).
Tabel 2.7. Tabel Kompleksitas Notasi Ω (Big-Omega)
Listing Program C # C #
sum = 0 C
11 C
1for i = 1 to n do C
2n C
2*n
sum = sum + a[i] C
1n C
1*n
endfor C
2n C
2*n
rata_rata = sum/n C
11 C
1C
1= operator dasar (+ , - , * , / , = ) C
2= operator for
Untuk C
n, n merupakan urutan yang mana muncul terlebih dahulu dan juga merupakan sintaks yang sama.
T(n) = (C
2+C
1+C
2)*n + (C
1+C
1)*n
0T(n) = (C
1+2*C
2)*n + (2*C
1)*n
0T(n) = Ω(n)
Penelitian ini menggunakan Notasi Θ (Big-Theta). Notasi Θ (Big-Theta)
dipilih karena notasi Θ (Big-Theta) lebih akurat dari notasi O (Big-Oh) dan notasi
Ω (Big-Omega). Notasi Θ (Big-Theta) digunakan untuk mengkategorikan
algoritma ke dalam fungsi yang menggambarkan tight bound dimana dapat diberi
batas atas (upper bound) dan batas bawah (lower bound) dari pertumbuhan sebuah
fungsi ketika masukan dari fungsi tersebut bertambah banyak.
2.7. Penelitian yang Relevan
Berikut ini beberapa penelitian tentang jarak terpendek (shortest path) yang membahas algoritma Dijkstra dan algoritma A* (A-star):
1. Budiman, M. A. & Rachmawati, D. (2017) dalam judul “On factoring RSA modulus using random-restart hill-climbing algorithm and Pollard’s rho algorithm”. Penelitian menunjukkan sejumlah algoritma deterministik untuk memfaktorkan bilangan bulat menjadi faktor prima yang telah diteliti dalam bidang teori bilangan, seperti Fermat, Euler, Kraitchick, dan beberapa varian dari algoritma Pollard. Sementara itu, saat ini ada kekurangan dalam penelitian tentang penggunaan metaheuristik untuk faktorisasi bilangan bulat, seperti tabu search, hill-climbing, simulated annealing, and ant colony optimization algorithms.
2. Potdar, G. P. & Thool, R. C. (2014) dalam judul “Comparison Of Various Heuristic Search Techniques For Finding Shortest Path”. Penelitian menunjukkan perbandingan algoritma Simple Hill Climbing, algoritma Steepest Ascent Hill Climbing, dan algortima A* dengan hasil bahwa keseluruhan algoritma tersebut dapat diimplementasikan dalam pencarian lintasan terpendek, hanya saja ketiga algoritma dengan metode heuristik tersebut tidak ada kepastian untuk menemukan solusi akhir yang optimal.
3. Reedy, Harika (2013) dalam judul “Path Finding-Dijkstra’s and A*
Algorithm’s”. Algoritma A-star merupakan pencarian heuristik murni yang mampu berkomputasi solusi optimal.
4. Ratnasari, Asti, Ardiani, Farida & A., Feny Nurvita (2013) dalam judul
“Penentuan Jarak Terpendek dan Jarak Terpendek Alternatif Menggunakan
Algoritma Dijkstra Serta Estimasi Waktu Tempuh”. Penelitian menunjukkan
perbandingan algoritma Greedy dan Dijkstra berdasarkan jarak lintasannya,
algoritma Greedy didasarkan pada pemindahan edge per edge dan pada setiap
langkah yang diambil tidak memikirkan konsekuensi ke depan, dan juga tidak
beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada,
sehingga tidak selalu berhasil memberikan solusi yang benar-benar optimal
tetapi memberikan solusi yang mendekati nilai optimal, sedangkan algoritma
Dijkstra beroperasi secara menyeluruh terhadap semua alternatif yang ada, sehingga dapat dipastikan memberikan solusi optimal.
5. Siang, J.J. (2009) dalam judul “Matematika Diskrit dan Aplikasinya pada
Ilmu Komputer”. Algoritma Dijkstra menyelesaikan masalah pencarian jalur
terpendek (sebuah lintasan yang mempunyai panjang minimum) dari verteks
a ke verteks z dalam graf berbobot, bobot tersebut adalah bilangan positif jadi
tidak dapat dilalui oleh node negative.
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis Sistem
Sistem ini akan melakukan pencarian rute terpendek antar SPBU di Kota Medan dengan menggunakan algoritma Dijkstra dan algortima A* (A-star).
Analisis sistem memiliki tiga tahapan dalam mendeskripsikan pengembangan sistem, yaitu :
1. Analisis masalah
Analisis masalah digunakan untuk mempelajari, mengidentifikasi, dan menganalisis suatu masalah serta batasan-batasan masalahnya.
2. Analisis kebutuhan
Analisis kebutuhan digunakan untuk mendeskripsikan fungsi-fungsi yang diberikan dan dapat dikerjakan oleh sistem, baik kebutuhan fungsional maupun non-fungsional.
3. Analisis proses.
Analisis proses digunakan untuk menggambarkan pola tingkah laku yang dimiliki sistem.
3.1.1. Analisis Masalah
Luasnya sebuah wilayah dapat menyebabkan seseorang mengalami kesulitan untuk menentukan rute terpendek dari satu lokasi ke lokasi lainnya.
Setiap orang yang ingin menuju ke lokasi SPBU tertentu, cenderung memilih rute terpendek. Posisi awal pelanggan ditentukan oleh lokasi SPBU yang berada, dan diasumsikan bahwa pelanggan telah berada di salah satu lokasi SPBU tersebut.
Permasalahan pada penelitian ini adalah pencarian rute terpendek dengan
menggunakan algoritma Dijkstra dan algortima A* (A-star) terhadap graf yang
sama dan melakukan perbandingan dari sisi waktu proses terhadap kedua
algoritma tersebut dalam menentukan jarak terpendek antar lokasi SPBU di Kota
Medan. Penulis membatasi masalah dengan 24 buah titik (node) yang merupakan
beberapa nama lokasi SPBU di Kota Medan, dan edge merupakan panjang jarak yang akan dilintasi dari lokasi SPBU ke lokasi SPBU yang lainnya. Graf yang digunakan merupakan graf berarah terhubung.
Masalah penelitian ini dapat dilihat pada Gambar 3.1 yang dirancang dalam diagram Ishikawa yang menggambarkan hubungan sebab akibat dari masalah penelitian.
Berdasarkan Gambar 3.1, diketahui bahwa permasalahan berada pada kepala ikan (segi empat paling kanan). Terdapat empat kategori masalah yaitu Manusia, Metode, Material dan Sistem yang terhubung dengan tulang utama (garis horizontal yang terhubung ke kepala ikan). Penyebab dari masalah yang berada di kepala ikan ditunjukkan oleh tulang-tulang kecil yang digambarkan oleh garis panah menuju ke tulang-tulang kategori masalah.
Gambar 3.1. Diagram Ishikawa
3.1.2. Analisis Kebutuhan Sistem
Analisis kebutuhan terbagi atas dua bagian, yaitu kebutuhan fungsional dan kebutuhan non-fungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan oleh sistem, sedangkan kebutuhan non-fungsional mendeskripsikan karakteristik.
MANUSIA
MATERIAL SISTEM
METODE
Kurangnya informasi mengenai SPBU di Medan.
Algoritma Dijkstra memerlukan waktu eksekusi lebih lama.
Algoritma A* (A-star) tidak selalu menghasilkan solusi teroptimal.
Banyaknya data lokasi SPBU yang masih bersifat statis (tidak melakukan penambahan data), sangat terbatas, dan tidak berlaku jika ada SPBU baru dibangun.
Belum ada sistem yang dapat membandingkan algoritma Dijkstra dan algoritma A*
(A-star) dalam pencarian rute terpendek antar lokasi SPBU di Kota Medan.
Menentukan Rute Terpendek antar Lokasi SPBU di Medan dengan Perbandingan Algoritma Dijkstra
dan Algoritma A* (A-star)
3.1.2.1. Kebutuhan Fungsional
Analisis kebutuhan fungsional disini menjelaskan tentang sistem yang disediakan. Sistem ini melakukan perhitungan, perbandingan jarak dan waktu pencarian rute terpendek antar lokasi SPBU di Kota Medan Serdang. Untuk menerapkan sistem tersebut, kebutuhan fungsional yang harus dipenuhi antara lain:
1. Sistem ini menggunakan graf lokasi SPBU di Kota Medan yang telah ditentukan.
2. Sistem ini menggunakan node awal yang sudah ditentukan sebagai node asal (sumber).
3. Sistem ini mendapatkan hasil rute yang akan dilewati pada graf dan waktu eksekusi (running time) pada program dengan menggunakan algoritma Dijkstra dan algoritma A* (A-star).
3.1.2.2. Kebutuhan Non-Fungsional
Kebutuhan non-fungsional yang harus dipenuhi antara lain sebagai berikut:
1. Sistem yang dibangun bersifat murah, karena dapat digunakan secara offline (tanpa menggunakan internet).
2. Sistem yang dibangun memiliki tampilan user-friendly.
3. Sistem yang dibangun memiliki informasi tentang data-data yang akan digunakan pada sistem tersebut.
4. Sistem yang dibangun tidak memerlukan perangkat tambahan yang dapat mengeluarkan biaya dan bebas digunakan.
5. Sistem dirancang secara sederhana, dapat memudahkan pengguna dalam menggunakan aplikasi tersebut tanpa membutuhkan spesifikasi laptop/
komputer yang tinggi.
3.1.3. Analisis Proses
Sistem yang dibangun akan menggunakan bahasa pemrograman C#
dengan bantuan SharpDevelop 5.1. Pada analisis proses ini menggunakan
algoritma Dijkstra dan algoritma A* (A-star) dalam proses pencarian rute terpendek antar lokasi SPBU di Kota Medan. Pengguna dapat melakukan pencarian dengan memasukkan lokasi SPBU asal dan lokasi SPBU tujuan yang diinginkan (terdapat 21 lokasi SPBU di Kota Medan). Lalu, pengguna memilih algoritma yang akan digunakan sebagai perbandingan satu sama lain. Selanjutnya, sistem akan menampilkan hasil berupa total jarak, rute, dan waktu yang dibutuhkan untuk mengeksekusi program berdasarkan algoritma yang dipilih.
Diagram umum ini dapat dilihat pada Gambar 3.2.
Gambar 3.2. Diagram Umum
3.2. Perancangan Sistem
Pada penelitian ini, untuk mendesain dan merancang sistem pencarian jarak terpendek antar lokasi SPBU di Kota Medan menggunakan use-case diagram, activity diagram, dan sequence diagram.
User Menginput lokasi SPBU awal dan lokasi SPBU
tujuan
Algoritma A* (A-Star) Algoritma Dijkstra
Menampilkan hasil total jarak, rute, dan running
time