ANALISIS ALGORITMA A STAR (A*) DAN IMPLEMENTASINYA
DALAM PENCARIAN JALUR TERPENDEK PADA JALUR
LINTAS SUMATERA DI PROVINSI SUMATERA UTARA
SKRIPSI
DEWI YUSRA AINI
061401053
PROGRAM STUDI S1 ILMU KOMPUTER
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
ANALISIS ALGORITMA A STAR (A*) DAN IMPLEMENTASINYA DALAM PENCARIAN JALUR TERPENDEK PADA JALUR LINTAS SUMATERA
DI PROVINSI SUMATERA UTARA
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer
DEWI YUSRA AINI 061401053
PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : ANALISIS ALGORITMA A* DAN IMPLEMENTASINYA DALAM PENCARIAN RUTE TERPENDEK PADA JALUR LINTAS
SUMATERA DI PROVINSI SUMATERA UTARA
Kategori : SKRIPSI
Nama : DEWI YUSRA AINI
Nomor Induk Mahasiswa : 061401053
Program Studi : SARJANA (S1) ILMU KOMPUTER Departemen : ILMU KOMPUTER
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN
ALAM (FMIPA) UNIVERSITAS SUMATERA
Dian Rachmawati, S.Si, M.Kom Maya Silvi Lydia, B.Sc, M.Sc NIP.198307232009122004 NIP. 197401272002122001 Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer FMIPA USU Ketua,
PERNYATAAN
ANALISIS ALGORITMA A* DAN IMPLEMENTASINYA DALAM PENCARIAN RUTE TERPENDEK PADA JALUR LINTAS SUMATERA
DI PROVINSI SUMATERA UTARA
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, 19 Desember 2010
PENGHARGAAN
Assalamu’alaikum Wr.Wb
Rasa syukur yang tidak terhingga penulis ucapkan kepada Allah SWT, Pencipta alam semesta yang memberikan rahmad dan karunia-Nya kepada Penulis sehingga akhirnya atas izin Allah SWT Penulis dapat menyelesaikan tugas akhir ini dengan baik. Shalawat dan salam kepada Nabi Muhammad SAW yang telah membawa pencerahan bagi umat manusia dalam menjalani hidup dan kehidupan.
Dalam menyelesaikan tugas akhir ini penulis telah banyak menerima bimbingan, arahan, masukan, serta dorongan semangat dari berbagai pihak. Untuk itu penulis mengucapkan terima kasih yang tak terhingga kepada :
1. Buat ayah dan ibu penulis tercinta yang terus memberikan curahan kasih sayangnya, terus memotivasi penulis dalam menyelasaikan tugas akhir ini, cinta kalian akan terus terpatri dalam jiwa penulis, Terima kasih Ayah dan Ibu penulis.
2. Ibu Maya Silvi Lydia, B.Sc, M.Sc dan Ibu Dian Rachmawati,S.Si,M.Kom sebagai Dosen Pembimbing penulis yang telah banyak memberikan masukan, bimbingan, motivasi dan perhatian kepada penulis sehingga skripsi ini dapat selesai dengan baik.
3. Bapak Prof. Dr. Iryanto,M.Si dan Bapak Drs. H. Agus Salim Harahap,M.Si sebagai Dosen Penguji yang juga telah banyak memberi masukan, kritik maupun saran dalam penulisan skripsi ini
4. Bapak Prof. Dr. Muhammad Zarlis dan Bapak Syahriol Sitorus S.Si, M.IT selaku ketua dan sekretaris Departemen Ilmu Komputer S-1 Universitas Sumatera Utara.
5. Seluruh Dosen dan Asisten lab di lingkungan S1 Ilmu Komputer USU yang telah banyak memberikan ilmu kepada penulis mulai dari penulis menginjakkan kaki di kampus tercinta ini sampai pada penulis menyelesaikan kuliah.
6. Seluruh staf pegawai yang telah banyak membantu selama perkuliahan.
7. Buat teman-teman tersayang, Tuil (Rifnatul), Moly (Asmaina), Jannah, ipeh (iva/shareefah/iva kitty/sarifah/sarivah), pipit (pipyd atau fitri), koko Hadi, makasih atas tawaran dan dorongannya, walau g’ jadi, dan teman-teman lainnya Winda, Riri, Icha, Ara, Alvin, komting kom A (Rifki) dan kom B (Reza) dan teman-teman yang lainnya .
8. Buat anak-anak ’06 semuanya, semoga kebersamaan kita selama 4 tahun menjadi hari-hari yang tak terlupakan.
9. Buat seluruh mahasiswa ilkom, anak-anak musholla Al-Khwarizmi, terima kasih semuanya.
menjaga nama baik dan mencintai almamater FMIPA USU, Maju terus Ilmu Komputer USU dalam mendidik mahasiswa yang berprestasi dan berbudi pekerti. Wassalmu’alaikum warahmatullahi wabarakatuh
Medan, Desember 2010 Penulis,
ABSTRAK
ANALYSIS A STAR (A*) ALGORITHM AND ITS IMPLEMENTATION IN SHORTEST PATH SEARCHING IN TRANS-SUMATERAN
HIGHWAY IN PROVINCE OF NORTH SUMATERA
ABSTRACT
Daftar Isi
BAB 3 ANALISIS ALGORITMA 3.1 Analisa Algoritma A* 24
3.3 Perancangan Antarmuka 34
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM
4.5.1 Pengujian Pencarian Rute atau Lintasan Terpendek dari Aplikasi yang Telah Dibuat 40
DAFTAR TABEL
DAFTAR GAMBAR
Halaman
Gambar 2.1 Contoh Graf Sederhana 6
Gambar 2.2 Contoh Graf Ganda 6
Gambar 2.3 Contoh Graf Semu 6
Gambar 2.4 Graf Tak Berarah 7
Gambar 2.5 Contoh Graf Berarah 7
Gambar 2.6 Graf Tak Berhingga 8
Gambar 2.7 Graf G1 8
Gambar 2.8 Contoh Graf Berbobot 10
Gambar 2.9 Sirkuit v1-v2-v3-v1 10
Gambar 2.10 Contoh Graf Lengkap 11
Gambar 2.11 Contoh Graf Lingkaran 11
Gambar 2.12 Graf teratur derajat 4 dan 2 11
Gambar 2.13 Contoh Graf Bipartit 12
Gambar 2.14 Contoh Graf yang Isomorfik 12
Gambar 2.15 Contoh Graf Planar K4 13
Gambar 2.16 Graf G 14
Gambar 2.17 Graf A 15
Gambar 2.18 Tree untuk Breadth First Search 17
Gambar 2.19 Tree untuk Depth First Search 18
Gambar 2.20 Tampilan awal Matlab 23
Gambar 2.21 Tampilan Gui Matlab 23
Gambar 3.1 Graf 1 26
Gambar 3.8 Flowchart pencarian lintasan terpendek dengan algoritma A* 33
Gambar 3.9 Gambaran sistem antarmuka 34
Gambar 4.1 Tampilan Awal Aplikasi 37
Gambar 4.2 Tampilan Pemilihan Verteks 38
Gambar 4.3 Tampilan Pencarian Lintasan 38
Gambar 4.4 Tampilan Lintasan Terpendek 39
Gambar 4.5 Pesan Peringatan 40
Gambar 4.6 Penginputan/pemilihan verteks awal dan verteks akhir 40
Gambar 4.7 Hasil Proses Pencarian 41
Gambar 4.8 Pemilihan Kota Medan dan Lima Puluh 42
ABSTRAK
ANALYSIS A STAR (A*) ALGORITHM AND ITS IMPLEMENTATION IN SHORTEST PATH SEARCHING IN TRANS-SUMATERAN
HIGHWAY IN PROVINCE OF NORTH SUMATERA
ABSTRACT
BAB 1
PENDAHULUAN
1.1 Latar Belakang Masalah
Dalam kehidupan sehari-hari sangat lazim bila kita berpergian dari satu tempat ke tempat tujuan dengan melewati jalan yang kita anggap merupakan jalan terpendek untuk sampai di tujuan. Yang menjadi masalah adalah banyak dari kita yang tidak menyadari bahwa jalan yang kita anggap merupakan lintasan yang paling pendek untuk mencapai titik tujuan, bukanlah lintasan yang terpendek yang merupakan lintasan minimum yang diperlukan untuk mencapai suatu titik dari titik tertentu.
Untuk menyelesaikan masalah diatas maka diperlukan suatu sistem yang dapat membantu dalam mencari dan menentukan lintasan terpendek sehingga didapat suatu jalur yang paling minimum untuk mencapai suatu kota. Dalam tugas akhir ini akan dibuat sebuah perangkat lunak yang dapat menyelesaikan permasalahan diatas yaitu suatu perangkat lunak yang dapat memberikan rute jarak paling mimimum pada sebuah peta dengan menggunakan metode Algoritma A*. Pencarian ini akan direpresentasikan dalam bentuk graf berbobot dimana setiap vertex digambarkan dengan koordinat dua dimensi serta bobot edge nya adalah jarak antara vertek yang bersesuaian.
1.2 Tujuan Penelitian
Tujuan dari penulisan tugas akhir ini adalah untuk memperoleh suatu aplikasi dengan tujuan untuk mencari lintasan terpendek antakota pada Jalur Lintas Sumatera di Provinsi Sumatera Utara yang direpresentasikan dengan konsep graf dengan menggunakan Algoritma A*.
1.3 Rumusan Masalah
Bagaimana membangun suatu aplikasi untuk menentukan rute terpendek pada jalur lintas sumatera di provinsi sumatera utara dengan menggunakan Algoritma A*.
1.4 Batasan Masalah
Batasan masalah pada tugas akhir ini adalah sebagai berikut:
1. Inputan berupa kota awal dan kota tujuan, tanpa harus melewati suatu kota
tertentu.
2. Kota yang menjadi objek adalah kota di Provinsi Sumatera Utara yang terdapat pada Sketsa Jalan Lintas Sumatera yang dilewati jalan yang diasumsikan sebagai Jalur Lintas Sumatra
3. Output yang dihasilkan dalam tampilan grafis dan disertai dengan keterangan
berupa teks.
4. Aplikasi untuk implementasi algoritma dibuat menggunakan bahasa pemograman Matlab 7 .
1.5 Metode Penelitian
Langkah-langkah yang akan diambil dalam pengerjaan tugas akhir ini adalah sebagai berikut:
2. Analisis. Pada tahap ini dilakukan analisis algoritma. Algoritma akan dianalisis untuk perancangan sistem pencarian rute terpendek pada Jalur Lintas Sumatera di Provinsi Sumatera Utara.
3. Implementasi Algoritma. Algoritma akan diimplementasikan dalam bentuk
aplikasi dengan menggunakan bahasa pemrograman Delphi.
4. Pengujian. Pada tahap ini dilakukan pengujian terhadap sistem informasi geografis yang telah dibangun serta menguji kebenaran dari algoritma Dijkstra untuk mencari lintasan terpendek.
5. Penyusunan Laporan dan Kesimpulan Akhir. Metode ini akan dilaksanakan dengan melakukan pendokumentasian hasil analisis dan implementasi secara tertulis dalam bentuk laporan skripsi.
1.6 Sistematika Penulisan
Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai berikut:
BAB 1: PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang pemilihan judul skripsi “Analisis Algoritma A* dan Implementasinya dalam pencarian jalur terpendek pada Jalur Lintas Sumatera di Provinsi Sumatera Utara”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.
BAB 2: TINJAUAN PUSTAKA
Bab ini akan membahas teori-teori yang berkaitan dengan sistem, graf, algoritma A*, dan Bahasa Pemrograman Delphi.
BAB 3: ANALISIS ALGORITMA
Bab ini berisikan langkah-langkah penelitian yang dilakukan, serta analisis terhadap fokus permasalahan penelitian.
BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM
BAB 5: KESIMPULAN DAN SARAN
BAB 2
TINJAUAN PUSTAKA
2.1 Graf
2.1.1 Definisi Graf
Graf adalah pasangan himpunan (V, E), dan ditulis dengan notasi G = (V, E), V adalah himpunan tidak kosong dari verteks-verteks {v
1, v2,…, vn} yang dalam hal ini verteks merupakan himpunan tidak kosong dari verteks-verteks (vertices atau node) dan E adalah himpunan edge {e
1, e2,…, en} atau sisi yang menghubungkan sepasang verteks. (Munir : 2009) Sebuah graf dimungkinkan tidak mempunyai edge satu buah pun, tetapi verteksnya harus ada minimal satu. Graf yang hanya memiliki satu buah verteks tanpa sebuah edge pun dinamakan graf trivia.
2.1.2 Jenis-jenis Graf
Graf dapat dikelompokkan berdasarkan ada tidaknya edge nya yang paralel atau loop, jumlah verteksnya, berdasarkan ada tidaknya arah pada edge nya, adatidaknya bobot pada edge nya, 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
Gambar 2.1 Contoh Graf sederhana
2. Graf Tak-Sederhana
Graf tak-sederhana adalah graf yang memiliki edges ganda dan atau loop. Graf tak sederhana dapat dibagi dua yaitu:
• Graf Ganda (multigraph), adalah graf yang mengandung edge ganda. Sisi ganda yang menghubungkan sepasang verteks bisa lebih dari dua buah.
• Graf semu (pseudograph), adalah graf yang mempunyi loop, termasuk juga graf yang mempunyai loop dan edge ganda karena itu graf semu lebih umum daripada graf ganda, karena graf semu edge-nya dapat terhubung dengan dirinya sendiri
Gambar 2.2 Contoh Graf Ganda
Selain berdasarkan ada tidaknya edge yang paralel atau loop, graf dapat juga dikelompokkan 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. Jadi (vj, vk) = (vk, vj) adalah edge yang sama.
Gambar 2.4 Graf tak berarah
2. Graf Berarah (directed graph atau digraph)
Graf berarah adalah graf yang setiap edge nya memiliki orientasi arah atau panah. Pada graf berarah (vj, vk) ≠ (vk, vj).
Gambar 2.5 Contoh Graf berarah
Berdasarkan jumlah verteks pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis:
1. Graf berhingga ( limited graph ).
Graf berhingga adalah graf yang jumlah verteksnya, n, berhingga. Contoh 2.4 adalah graf berhingga
2. Graf tak-berhingga ( unlimited graph ).
Gambar 2.6 Graf tag berhingga
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 . Dengan kata lain, vi bertetangga dengan vj jika (vi, vj) adalah sebuah edge pada graf G.
Gambar 2.7 Graf G1
Pada gambar 2.5. verteks v1 betetangga dengan verteks v2, v3 dan v4. Verteks v2 bertetangga dengan v1 dan v4, tetapi tidak bertetangga denga v3.
2. Bersisian (incident)
Untuk sembarang edge e = ( vj, vk), edge e dikatakan bersisian dengan verteks vj dan verteks vk.
3. 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.
4. Lintasan (path)
Lintasan yang panjangnya n dari edge awal v0 ke verteks tujuan vn di dalam graf G ialah barisan berselang-seling verteks-verteks dan edge -edge yang berbentuk v0 , e1 , v1 , e2 , v2 ,…, vn-1 , en , vn sedemikian sehingga
e1 = ( v0 , v1 ) , e2 = ( v1 , v2 ) , … , en = ( vn-1 , vn ) adalah edge -edge dari graf G.
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).
Pada gambar 2.5 lintasan v1, v2 , v4, v3 merupakan lintasan sederhana yang juga lintasan terbuka. Lintasan v1, v2, v4, v3, v1 merupakan lintasan sederhana yang juga lntasan tertutup. Sedangkan lintasan v2, v4, v3, v1, v4 bukan merupakan lintasan sederhana, tetapi lintasan terbuka.
5. Graf Berbobot (Weighted Graph)
Dalam tugas akhir ini, bobot pada pada setiap graf menyatakan jarak antara dua buah kota dalam kilometer (km).
Gambar 2.8 Contoh Graf Berbobot
6. Sirkuit (Circuit) atau Cycle
Dalam satu graf terdapat suatu sirkuit apabila terdapat lintasan (path) yang mempunyai verteks awal dan verteks akhir sama .
Gambar 2.9 Sirkuit v1-v2-v3-v1
Sebuah sirkuit dikatakan sirkuit sederhana (simple circuit) jika sirkuit tersebut tidak memuat/melewati edge yang sama dua kali (setiap edge yang dilalui hanya satu kali). Sebuah sirkuit dikatakan sirkuit dasar (elementary
circuit) jika sirkuit tersebut tidak memuat/melewati verteks yang sama dua kali
(setiap verteks yang dilalui hanya satu kali, verteks awal dan akhir boleh sama).
2.1.4 Beberapa Graf Khusus
Terdapat beberapa jenis graf sederhana khusus. Berikut ini adalah beberapa graf khusus yang sering ditemui:
1. Graf Lengkap ( Complete Graph )
Graf lengkap merupakan graf sederhana yang setiap verteksnya mempunyai
dilambangkan dengan K
n. Setiap verteks pada Kn berderajat n-1. Jumlah edge pada graf lengkap yang terdiri dari n buah verteks adalah
n (n - 1)/2.
Gambar 2.10 Contoh Graf Lengkap
2. Graf Lingkaran
Graf Lingkaran adalah graf sederhana yang setiap verteksnya berderajat dua. Graf lingkaran dengan n verteks dilambangkan dengan C
n.
Gambar 2.11 Contoh Graf Lingkaran
3. Graf Teratur ( Regular Graphs )
Graf teratur adalah graf yang setiap verteksnya mempunyai derajat yang sama. Apabila derajat setiap simpunya adalah r, maka graf tersebut disebut juga graf teratur derajat r. Graf lengkap Kn dan graf lingkaran juga merupakan graf teratur. Graf Kn berderajat (n-1) sedangkan graf lingkaran berderajat 2. Jumlah sisi pada graf teratur berderajat r dengan n buah verteks adalah nr/2.
(i)Graf berderajat 4 (ii) Graf berderajat 2
4. Graf Bipartit ( Bipartite Graph )
Suatu graf sederhana G dikatakan Bipartit jika himpunan verteks-verteksnya V dapat dipecah menjadi dua himpunan bagian yang saling asing, X1 dan X2 sedemikian hinga setiap edge dalam grap G terhubung dengan sebuah verteks dalam V1 dan sebuah verteks lainnya dalam V2. Dengan demikian tidak ada
edge dalam G yang terhubung dengan 2 verteks dalam V1 atau dua verteks
dalam V2.
Gambar 2.13 Contoh Graf Bipartit
5. Graf Isomorfik ( Isomorphic Graph ) Dua bua graf, G
1 dan G2 dikatakan isomorfik jika terdapat korespondensi satu-satu antara verteks-verteks keduanya dan antara sisi-sisi keduanya sedemikian sehingga jika sisi e bersisian dengan verteks u dan v di G
1 , maka sisi e’ yang berkorespon di G
2 juga harus bersisian dengan verteks u’ dan v’ di G2 .
(i) Graf G1 (ii) Graf G2
Gambar 2.14 Contoh Graf yang Isomorfik
Syarat-syarat dua buah graf dikatakan graf isomorfik : a. Mempunyai jumlah verteks yang sama.
b. Mempunyai jumlah edge yang sama
6. Graf Planar
Graf planar adalah suatu graf yang digambar dalam bidang datar denga edge
-edge nya tidak ada yang saling memotong.
(a) (b)
Gambar 2.15 Contoh Graf Planar K4
Pada contoh graf G (K4) diatas, K4 dapat digambar kembali tanpa ada edge
-edge nya yang berpotongan, maka graf K4 adalah suatu Graf Planar.
2.1.5 Representasi Graf
Pada penjelasan sebelumnya, graf ditampilkan dengan cara menggambarkannya. Namun apabila graf hendak diproses dengan program komputer, maka graf harus direpresentasikan di dalam memori. Ada beberapa metode yang dapat digunakan dalam merepresentasikan graf, berikut ini adalah metode yang dapat dgunakan dalam merepresentasikan graf :
1. Matriks Ketetanggaan (Adjacency Matrix)
Misalkan G = (V, E) merupakan suatu graf dengan n verteks, n > 1. Maka, matriks ketetanggaan A dari G adalah matriks n x n dimana A = [aij], untuk hal ini berlaku [aij] menjadi 1 bila verteks i dan j bertetangga dan [aij] menjadi 0 bila verteks i dan j tidak bertetangga.
Keuntungan representasi dengan matriks ketetanggaan adalah kita dapat mengakses elemen matriksnya langsung dari indeks. Selain itu, kita juga dapat menentukan dengan langsung apakah verteks i dan verteks j bertetangga.
Pada graf berbobot, aij menyatakan bobot tiap sisi yang
menghubungkan verteks i dengan verteks j. Bila tidak ada sisi dari verteks i ke verteks j atau dari verteks j ke verteks i, maka, aij diberi nilai tak berhingga (∞).
Gambar 2.16 Graf G
Bentuk matriks ketetanggaan dari graf pada gambar 2.13 adalah v1 v2 v3 v4 v5
2. Matriks Insiden (incidency matriks)
Matriks insiden menyatakan kebersisian verteks dengan edge . Misalkan G = (V, E) adalah graf dengan n verteks dan m edge , maka matriks
Gambar 2.17 Graf A
Berikut adalah matriks insiden untuk graf pada gambar 2.14. e1 e2 e3 e4 e5 e6 e7
Pada matriks diatas, sebuah kolom e7 dapat diwakilkan sebagai loop. Pada sebuah graf tanpa loop, masing-masing kolom mempunyai dua entri 1, dan jumlah dari sebuah baris menyatakan derajat dari verteks yang didefinisikan dengan baris tersebut.
2.2 Lintasan Terpendek (Shortest Path)
Dalam Jurnal Pawitri (2007) disebutkan bahwa 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 verteks ke verteks yang lain.
Ada beberapa macam persoalan lintasan terpendek, antara lain : 1. Lintasan terpendek antara dua buah verteks.
2. Lintasan terpendek antara semua pasangan verteks.
4. Lintasan terpendek antara dua buah verteks yang melalui beberapa verteks tertentu.
Pada tugas akhir ini persoalan lintasan terpendek yang menjadi masalah adalah lintasan terpendek antara dua buah verteks dimana bobot pada setiap edge graf
digunakan untuk menyatakan jarak antar kota dalam satuan Kilometer (Km).
2.3Metode Pencarian
Ada banyak metode yang dapat digunakan untuk pencarian jalur terpendek pada suatu graf. Metode pencarian tersebut dapat dikelompokkan ke dalam dua jenis, yaitu pencarian buta/tanpa informasi (blind atau un-informed search) dan pencarian heuristik/dengan informasi (heuristic atau informed search).
2.3.1 Pencarian Buta (Blind Search/Un-informed Search)
Dikatakan pencarian buta, karena pada pencarian ini tidak ada informasi awal. Disini hanya akan dibahas dua metode pencarian, yaitu Breadth First Search dan Depth First
Search.
2.3.1.1Breadth First Search (BFS)
Gambar 2.18 Tree untuk Breadth First Search
2.3.1.2 Depth First Search (DFS)
Pencarian dilakukan pada satu verteks dalam setiap level dari yang paling kiri. Jika pada level yang paling dalam, solusi belum ditemukan, maka pencarian dilanjutkan pada verteks sebelah kanan. Verteks yang kiri dapat dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya. Demikian seterusnya sampai ditemukan solusi. Jika solusi ditemukan maka tidak diperlukan proses backtracking (penelusuran balik untuk mendapatkan jalur yang dinginkan).
Gambar 2.19 Tree untuk Depth First Search
2.3.2 Pencarian Heuristik
Pada metode pencarian buta, tidak dimiliki pengetahuan khusus tentang permasalah yang dihadapi sehingga metode tersebut tidak efisien untuk banyak kasus karena bias saja metode tersebut tidak complete dan atau tidak optimal dalam mendapatkan solusi, optimal disini adalah tidak menjamin menemukan solusi yang terbaik jika terdapat beberapa solusi yang berbeda. Menggunakan informasi khusus yang spesifik untuk suatu masalah tertentu akan sangat memperbaiki kecepatan pencarian solusi, karena teknik ini membantu memutuskan kemungkinan solusi mana yang pertama kali perlu di evaluasi. Pencarian heuristik digunakan untuk mengeliminasi beberapa kemungkinan solusi, tanpa harus mengeksplorasinya secara penuh.
Berikut akan dijelaskan beberapa algoritma pencarian dengan informasi
(informed search algorithm) yang menggunakan fungsi heuristik dalam mencari
solusi, yaitu Generate and test, hill climbing, dan Best First Search (greedy best first
2.3.2.1Generate and Test (bangkitkan dan Uji)
Metode Generate-and-Test adalah metode yang paling sederhana dalam pencarian
heuristic. Jika pembangkitan possible solution dikerjakan secara sistematis, maka
algoritma ini akan mencari solusinya, jika ada. Tetapi jika ruang masalahnya sangat luas, mungkin memerlukan waktu yang sangat lama. Algoritma Generate-and-Test menggunakan prosedur DFS karena solusi harus dibangkitkan secara lengkap sebelum dilakukan test. Algoritma ini berbentuk sistematis, pencarian sederhana yang mendalam dari ruang permasalahan. Generate & test juga dapat dilakukan dengan pembangkitan solusi secara acak, tetapi tidak ada jaminan solusinya akan ditemukan.
2.3.2.2Hill Climbing (Pendakian Bukit)
Hill Climbing berbeda Generate-and-Test, yaitu pada feedback dari prosedur test
untuk membantu pembangkit menentukan yang langsung dipindahkan dalam ruang pencarian. Dalam prosedur Generate & test , respon fungsi pengujian hanya ya atau
tidak. Tapi jika pengujian ditambahkan dengan atauran fungsi-fungsi yang
menyediakan estimasi dari bagaimana mendekati state yang diberikan ke state tujuan, prosedur pembangkit dapat mengeksplorasi ini sebagaimana ditunjukkan di bawah.
Hill Climbing sering digunakan jika terdapat fungsi heuristik yang baik untuk
mengevaluasi state. Sebagai contoh, anda berada di sebuah kota yang tidak dikenal, tanpa peta dan anda ingin menuju ke pusat kota. Cara sederhana adalah gedung yang tinggi. Fungsi heuristik-nya adalah jarak antara lokasi sekarang dengan gedung yang tinggi dan state yang diperlukan adalah jarak yang terpendek.
2.3.2.3 Best First Search (BFS)
Best first search merupakan kombinasi dari beberapa kelebihan Depth first search dan breadth first search. Pada pencarian dengan hill climbing tidak diperbolehkan untuk
kembali ke verteks pada level yang lebih rendah meskipun verteks pada level yang lebih rendah tersebut memiliki nilai heuristik yang lebih baik, sedangkan pada best
first search, pencarian diperbolehkan untuk mengunjungi verteks yang berada pada
Best First Search membangkitkan verteks berikutnya dari sebuah verteks
(yang sejauh ini terbaik diantara semua leafnodes yang pernah dibangkitkan. Untuk menentuan verteks terbaik dapat dilakukan dengan menggunakan informasi berupa biaya perkiraan dari suatu verteks menuju ke goal atau gabungan antara biaya sebenarnya dan biaya perkiraan tersebut. Biaya perkiraan tersebut dapat diperoleh dengan menggunakan suatu fungsi yang disebut fungsi heuristik.
Terdapat dua jenis algoritma best first search, yaitu: 1) algoritma greedy best
first search,yang hanya memperhitungkan biaya perkiraan saja; dan 2) algoritma A*,
yang menghitung gabungan biaya antara biaya sebenarnya (actual cost) dan biaya perkiraan.
2.3.2.3.1 Greedy Best First Seach
Merupakan Best First Search dengan hanya mempertimbangkan harga perkiraan
(estimated cost) saja, yaitu f(n) = h(n). Sedangkan harga sesungguhnya tidak digunakan. Sehingga solusi yang dihasilkan tidak optimal, karena hanya memperhitungkan biaya perkiraan yang belum tentu kebenarannya.
2.3.2.3.2 Algoritma A*
Algoritma A* (A Star) adalah algoritma pencarian yang merupakan pengembangan dari algoritma Best First Search (BFS). Seperti halnya pada BFS, untuk menemukan solusi, A* juga ‘dituntun’ oleh fungsi heuristik, yang menentukan urutan titik mana yang akan dikunjungi terlebih dahulu. Heuristik merupakan penilai yang memberi harga pada tiap verteks yang memandu A* mendapatkan solusi yang diinginkan.
Dengan fungsi heuristik Algoritma ini membangkitkan verteks yang paling mendekati solusi. Verteks ini kemudian disimpan suksesornya ke dalam list sesuai dengan urutan yang paling mendekati solusi terbaik. Kemudian, verteks pertama pada
list diambil, dibangkitkan suksesornya dan kemudian suksesor ini disimpan ke dalam list sesuai dengan urutan yang terbaik untuk solusi. List verteks ini disebut dengan
verteks terbuka (open node).
Verteks pada list bisa berasal dari kedalaman berapapun dari graf. Algoritma ini akan mengunjungi secara mendalam (mirip Depth First Search (DFS)) selama verteks tersebut merupakan verteks yang terbaik. Jika verteks yang sedang dikunjungi ternyata tidak mengarah kepada solusi yang diinginkan, maka akan melakukan runut balik ke arah verteks awal untuk mencari verteks lainnya yang lebih menjanjikan dari pada verteks yang terakhir dikunjungi. Bila tidak ditemuka n juga, maka akan terus mengulang mencari ke arah verteks awal sampai ditemukan verteks yang lebih baik untuk dibangkitkan suksesornya. Strategi ini berkebalikan dengan algoritma DFS yang mencari sampai kedalaman yang terdalam sampai tidak ada lagi suksesor yang bisa dibangkitkan sebelum melakukan runut balik, dan BFS yang tidak akan melakukan pencarian secara mendalam sebelum pencarian secara melebar selesai. A* baru berhenti ketika mendapatkan solusi yang dianggap solusi terbaik.
2.4Fungsi Heuristik
Dalam metode pencarian heuristik, digunakan suatu fungsi heuristik yang digunakan untuk mengevaluasi keadaan-keadaan masalah individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan. Suatu fungsi dapat diterima sebagai fungsi heuristik jika biaya perkiraan yang dihasilkan tidak melebihi dari biaya sebenarnya. Suatu fungsi heuristik dapat dikatakan sebagai fungsi heuristik yang baik, apabila dapat memberikan biaya perkiraan yang mendekati biaya sebenarnya. Semakin mendekati biaya sebenarnya, fungsi heuristik tersebut semakin baik.
jarak berdasarkan panjang garis yang dapat ditarik dari dua buah titik, yang bisa dihitung menggunakan rumus :
Rumus diatas adalah rumus untuk mencari garis lurus antara dua verteks, yaitu verteks a dan verteks b.
2.5MATLAB (Matrix Laboratory)
MATLAB merupakan sebuah bahasa pemrograman tingkat tinggi yang ditujukan untuk komputasi teknis. MATLAB mengintegrasikan kemampuan komputasi, visualisasi dan pemrograman dalam sebuah lingkungan yang tunggal dan mudah digunakan. Matlab membertikan sistem interaktif yang menggunakan konsep array/matrik sebagai standar variabel elemennya tanpa membutuhkan pendeklarasian array seperti pada bahasa lainnya.
Dengan MATLAB kita dapat menemukan solusi dari berbagai masalah numerik secara cepat, misalnya sistem 2 persamaan dengan 2 variabel :
2x-3y=24 x+5y=15
Gambar 2.20 Tampilan awal Matlab
BAB 3
ANALISIS ALGORITMA
3.1 Analisis Algoritma A*
Algoritma A* digunakan dalam menemukan lintasan terpendek pada suatu graf dan merupakan pengembangan dari algoritma best first search. Sama seperti BFS, algoritma A* juga menggunakan fungsi heuristik. Biaya yang diperhitungkan didapat dari biaya sebenarnya ditambah dengan biaya perkiraan. Dalam notasi matematika dituliskan sebagai berikut :
f(n) = g(n) + h(n)
Keterangan :
• g(n) adalah total jarak yang didapat dari verteks awal ke verteks
sekarang(halangan)
• h(n) adalah perkiraan jarak dari verteks sekarang (yang sedang dikunjungi) ke
verteks tujuan. Sebuah fungsi heuristik digunakan untuk membuat perkiraan seberapa jauh lintasan yang akan diambil ke verteks tujuan.
• f(n) adalah jumlah dari g(n) dan h(n). ini adalah perkiraan jalur terpendek
sementara. f(n) adalah jalur terpendek yang sebenarnya yang tidak ditelusuri sampai Algoritma A* diselesaikan.
Untuk memperjelas pemahaman fungsi diatas, dapa kita lihat pada contoh berikut :
Dari ilustrasi diatas, jarak 100 km yang telah ditempuh oleh keluarga tersebut direpresentasikan dengan g(n), Perkiraan pengemudi, yaitu 130 km adalah h(n) Jadi
f(n) pasti 100 + 130 = 230 km.
Dengan perhitungan biaya seperti ini, algoritma A* adalah complete dan
optimal (Suyanto:2007). Hal ini berbeda dengan Greedy best-first search yang hanya
memperhitungkan biaya perkiraan saja, yaitu f(n) = h(n), biaya sebenarnya (actual
cost) tidah diperhitungkan. Dengan hanya menggunakan biaya perkiraan yang belum
tentu kebenaranya, maka algoritma ini tidak optimal.
Sama halnya seperti algoritma best first search, algoritma A* juga menggunakan dua antrian, yaitu OPEN dan CLOSED. Terdapat tiga kondisi bagi setiap suksesor yang dibangkitkan, yaitu : sudah berada di OPEN, sudah berada di CLOSED, dan tidak berada di OPEN maupun CLOSED. Pada ketiga kondisi tersebut diberikan penanganan yang berbeda-beda.
Verteks yang berada di OPEN merupakan verteks yang pernah dibangkitkan, dan nilai heuristiknya telah dihitung, tapi belum terpilih sebagai verteks terbaik (bestnode). Verteks yang berada di open memiliki peluang untuk terpilih sebagai verteks terbaik (peluang masih terbuka). Sebuah verteks akan disimpan di CLOSED jika verteks tersebut pernah terpilih sebagai bestnode. Dengan kata lain CLOSED berisi verteks yang tidak mungkin terpilih sebagai simpul terbaik (peluang untuk terpilih sudah tertutup).
Jika suksesor sudah pernah berada di CLOSED, maka dilakukan pengecekan apakah perlu pengubahan parent atau tidak. Jika ya, maka pebaruan nilai g dan f pada suksesor tersebut serta pada semua “anak cucunya” yang sudah pernah berada di OPEN. Dengan perbaruan ini, maka semua anak cucunya tersebut memiliki kesempatan lebih besar untuk terpilih sebagai verteks terbaik (bestnode).
Jika suksesor tidak berada di OPEN maupun CLOSED, maka suksesor tersebut dimasukkan ke dalam OPEN. Tambahkan suksesor tersebut sebagai suksesornya bestnode. Hitung biaya suksesor tersebut dengan rumus f(n)=g(n)+h(n).
Untuk memperjelas pemahaman tentang algoritma A* , maka akan diberikan contoh masalah pada gambar dibawah ini.
Gambar 3.1 Graf 1
Dengan menggunakan fungsi heuristik jarak Euclidian (jarak garis lurus dari verteks n menuju verteks G), maka didapat h(n) masing-m asing verteks sebagai berikut :
Tabel 3.1 Jarak Euclidian masing-masing verteks pada Graf 1
S A B C D E F G H I J K L M 120 100 95 100 100 110 87 0 50 50 80 30 30 45
Berikut adalah langkah-langkah unutk menyelesaikan permasalan lintasan terpendek dari verteks S ke verteks G dengan menggunakan Algoritma A*:
Gambar 3.2 Graf 1
Fungsi evaluasi:
f(A) = g(S) + g(S ke A) + h(A) = 0 + 22 + 105 = 127 f(B) = g(S) + g(S ke B) + h(B) = 0 + 38 + 95 = 133 f(C) = g(S) + g(S ke C) + h(C) = 0 + 35 + 100 = 135 f(D) = g(S) + g(S ke D) + h(D) = 0 + 40 + 100 =140 f(E) = g(S) + g(S ke E) + h(E) = 0 + 15 + 110 = 125
Gambar 3.3 Graf 1
Fungsi evaluasi
f(A) = 127 f(B) = 133 f(C) = 135
f(D) = g(E) + g(E ke D) + h(D) = 15 + 15 + 100 =130 f(E) = g(E) + g(E ke J) + h(J) = 15 + 40 + 80 = 135
Gambar 3.4 Graf 1
Fungsi evaluasi
f(G) = g(A) + g(A ke G) + h(G) = 22 + 130 + 0 = 152 f(B) = g(A) + g(A ke B) + h(B) = 22 + 10 + 95 = 127
f(C) = 135 f(D) = 130 f(E) = 125
Gambar 3.5 Graf 1
Fungsi Evaluasi :
f(G) = 152
f(F) = g(B) + g(B ke F) + h(F) = 32 + 10 + 87 = 129 f(K) = g(B) + g(B ke K) + h(K) = 32 + 80 + 30 = 142 f(C) = 135
f(D) = 130 f(E) = 135
Karena f(B) memiliki biaya terkecil, yaitu 127, maka B terpilih sebagai
bestnode, dan dipindahkan ke CLOSED. Lalu semua suksesor B dibangkitkan, yaitu F
dan K. Karena F dan K belum pernah berada di OPEN maupun di CLOSED, maka F dan K dimasukkan ke OPEN. Akhir dari langkah ini menghasilkan OPEN=[C,D,F,J,G,K] dan CLOSED=[S,E,A,B].
Fungsi Evaluasi :
Langkah selanjutnya, F dengan biaya terkecil, yaitu 129, terpilih sebagai
bestnode dan dipindahkan ke CLOSED. Selanjutnya, semua suksesor F dibangkitkan,
yaitu K. karena K sudah ada di OPEN, maka harus di cek apakah parent dari K perlu diganti atau tidak. Biaya dari S ke K melalui F ternyata lebih kecil daripada biaya dari S ke K dengan B sebagai parent-nya. Oleh karena itu, parent dari k harus diubah, yang semula B menjadi F. selanjutnya nilai g(K) yang semula 92 berubah menjadi 65, dan nilai f(K) yang semula 142 berubah menjadi 122. Akhirnya OPEN=[C,D, J,G,K] dan CLOSED=[S,E,A,B, F].
Berikutnya, K dengan biaya terkecil, yaitu 122 terpilih sebagai bestnode dan dipindahkan ke CLOSED. Selanjutnya, semua suksesor K dibangkitkan, yaitu verteks G. karena G sebelumnya telah berada di OPEN, maka terlebih dahulu harus diperiksa apakah parent dari G harus diganti atau tidak. Biaya dari S ke G melalui K ternyata lebih kecil daripadda biaya dari S ke G melalui parent lama (A). oleh karena itu,
parent dari G harus diubah yang semula A menjadi K. lalu nilai g(G) yang semula 152
diubah menjadi 122, dan nilai f(G) yang semula 152 menjadi 122. Dari langkah diatas didapat OPEN=[C,D,G,J] dan CLOSED=[S,E,B,A,F,K].
Fungsi Evaluasi :
f(G) = g(K) + g(K ke G) + h(G) = 102 + 30 + 0 = 122 f(C) = 135
f(D) = 130 f(E) = 135
G dengan biaya terkecil, yaitu 122 terpilih sebagai bestnode. Karena bestnode-nya sama dengan goal, berarti solusi telah ditemukan. Rute dan total biaya bias ditelusuri balik dari G menuju S, karena setiap verteks hanya memiliki satu parent dan setiap verteks memiliki informasi biaya yang sebenarnya (g). Penelusuran balik menghasilkan rute S-A-B-F-K-G dengan total jarak sama dengan 122, dan rute ini merupakan rute terpendek dari verteks S ke verteks G.
Pada kasus diatas A* membangkitkan dan menyimpan 10 (sepuluh) verteks dari 14 (empat belas) verteks yang ada pada graf.
3.2 Flowchart
Flowchart adalah penggambaran secara grafik dari langkah-langkah dan urut-urutan
prosedur dari suatu program. Flowchart menolong analis dan programmer untuk memecahkan masalah kedalam segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-alternatif lain dalam pengoperasian. Flowchart biasanya mempermudah penyelesaian suatu masalah khususnya masalah yang perlu dipelajari dan dievaluasi lebih lanjut.
Pada flowchart diatas, user meng-input kota awal dan kota tujuan, lalu system akan mencari lintasan terpendek dari kota awal dan kota akhir dengan Algoritma A*. Selanjutnya setelah didapat, akan ditampilkan jalur terpendek dari kota awal, yaitu berupa daftar kota yang dilewati oleh lintasan tersebut.
3.3 Perancangan Antarmuka
Berikut adalah rancangan antarmuka untuk sistem pencarian lintasan terpendek dengan menggunakan algoritma A*.
Gambar 3.9 Gambaran sistem antarmuka
Keterangan :
1. Axes, untuk menampilkan graf
2. Pop up menu, untuk user memilih kota awal 3. Pop up menu, untuk user memilih kota tujuan
4. Button cari lintasan, merupakan tombol unutk mencari lintasan setelah user memilih kota awal dan kota tujuan
Untuk mendapatkan lintasan terpendek antar dua kota, user harus menginput/memilih kota yang ada pada pop up menu (2) sebagai verteks awal, dan menginput/memilih kota pada pop up menu (3) sebagai kota tujuan, lalu mengklik
button cari lintasan (4), lalu akan tampil graf pada property (1) beserta total jarak
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi
Sistem pencarian lintasan terpendek dengan menggunakan Algoritma A* ini diimplementasikan dengan menggunakan bahasa pemrograman MATLAB. Sistem ini dibuat denga menggunakan GUI MATLAB. Dengan menggunakan GUI MATLAB maka interfacenya akan lebih user friendly.
Aplikasi ini bertujuan untuk mencari dan menampilkan jalur atau lintasan terpendek pada suatu jalur yaitu Jalur Lintas Sumatera di Provinsi Sumatera Utara yang di representasikan dalam bentuk graf. Pada sistem ini Aplikasi ini dibangun berbasiskan web dan dapat digunakan pada jaringan internet.
4.2 Spesifikasi Perangkat Lunak
Perangkat lunak yang digunakan dalam pembuatan aplikasi ini adalah MATLAB 7.5 yang memiliki aplikasi GUI yang sangat membantu dalam menampilkan tampilan yang lebih user friendly dari pada yang tidak GUI, serta kemudahan dalam proses input/output. Aplikasi ini dibangun pada sistem operasi Windows 7.
4.3 Spesifikasi Perangkat Keras
Spesifikasi perangkat keras yang dibutuhkan untuk menjalankan program aplikasi ini adalah sebagai berikut:
3. Hard Disk 80 GB.
4. Monitor 14.1” dengan resolusi layar 1024 x 768 pixel. 5. Mouse dan keyboard.
4.4 Tampilan Aplikasi Sistem
Aplikasi sistem ini hanya memiliki satu tampilan halaman, seluruh aktifitas user berada pada halaman ini. Berikut adalah tampilan awal saat aplikasi dijalankan.
Gambar 4.1 Tampilan Awal Aplikasi
Pada tampilan ini akan ditampilkan peta Jalur Lintas Sumatera yang telah direpresentasikan dan disesuaikan dengan graf. Jarak antar verteks pada graf (aplikasi) diukur dam kilometer (km). Pada peta (graf) ini verteks dilabelkan dengan angka dan nama kota yang sebenarnya.
tersebut akan menjadi merah, sehingga user dapat melihat dengan jelas posisi dari masing-masing verteks.
Gambar 4.2 Tampilan Pemilihan Verteks
Selanjutnya tampilan, apabila user mengklik tombol cari lintasan
Setelah user mengklik tombol cari lintasan, maka lintasan hasil pencarian akan ditampilkan pada graf dengan warna magenta. Sehingga user dapat melihat kota mana saja yang dilalui oleh lintasan terpendek tersebut secara visual.
Gambar 4.4 Tampilan Lintasan Terpendek
Tapi tidak hanya pada itu saja, karena pada panel sebelah kiri bawah, terdapat
box yang berisikan daftar kota yang dilalui pada lintasan terpendek tersebut. Dimulai
dari verteks awalnya dan terurut hingga verteks akhirnya. Pada panel tersebut juga menampilkan total jarak lintasan terpendek dari verteks awal sampai verteks akhir. Untuk mencari ulang lintasan terpendek, user dapat mengklik tombol reset.
Gambar 4.5 Pesan Peringatan
4.5 Pengujian Sistem
Pengujian sistem ini dilakukan untuk melihat apakah algoritma A* dapat menentukan atau mencari lintasan terpendek pada sistem. Pengujian meliputi dua bagian, yaitu :
1. Pengujian pencarian rute atau lintasan terpendek dari aplikasi yang telah dibuat 2. Pengujian kesesuaian pemilihan jalur lintasan terpendek dengan jumlah total
jarak jalur yang ditempuh
4.5.1 Pengujian pencarian rute atau lintasan terpendek dari aplikasi yang telah
dibuat
Dalam pengujian ini, kita akan melihat kemampuan sistem dalam menampilkan hasil pencarian lintasan terpendek, dengan input berupa verteks awal dan verteks akhir.
Setelah dilakukan pemilihan verteks awal dan verteks akhir, maka dilakukan pencarian lintasan terpendek dengan mengklik tombol cari lintasan untuk mendapatkan lintasan terpendek
Gambar 4.7 Hasil Proses Pencarian
Dari gambar dan penjelasan diatas, maka dapat dilihat bahwa system ini dapat menampilkan/mencari lintasan terpendek pada graf.
4.5.2 Pengujian Kesesuaian Pemilihan Jalur Lintasan Terpendek dengan Jumlah
Total Jarak Jalur yang Ditempuh
Pada pengujian ini, dipilih verteks awal dan verteks akhir, lalu dicari jalur terpendeknya dan akan didapatkan total panjang lintasan yang dilalui oleh lintasan terpendek. Total panjang lintasan yang didapat dari sistem tersebut akan dibandingkan dengan panjang lintasan yang akan dicari secara manual.
Gambar 4.8 Pemilihan Kota Medan dan Lima Puluh
Setelan dilakukan pencarian lintasan, maka didapatkan hasik seperti tampilan di bawah ini:
Pada gambar diatas, dapat dilihat bahwa hasil pencarian diatas, didapat total jarak yaitu 123.123 km. Jarak ini merupakan total jarak dari Kota Medan-Lubuk Pakam-Tebing Tinggi-Lima puluh.
Total Jarak lintasan terpendek jika dicari secara manual :
1. Jarak Dari Medan(koordinat 200,687) -Lubuk Pakam (200.657), maka jarak antara kedua kota tersebut adalah
=
=
=30
2. Jarak Dari Lubuk Pakam (200.657), -Tebing Tinggi (200.607), maka jarak antara kedua kota tersebut adalah
=
=
=80
3. Jarak Dari Tebing Tinggi (200.607), -Lima Puluh (239.8,590.4), maka jarak antara kedua kota tersebut adalah
=
=
= =
=43.123
Dari perhitungan diatas, maka didapat total jarak
=(Medan-Lubuk Pakam) + (Lubuk Pakam+Tebing Tinggi) + (Tebing Tinggi-Lima Puluh)
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan pembahasan dan evaluasi dari bab-bab terdahulu dan teori yang ada, maka dapat ditarik kesimpulan sebagai berikut:
1. Dalam mencari solusi yang optimal, Algoritma A* sangat bergantung kepada fungsi heuristik yang digunakan.
2. Algoritma A* merupakan algoritma yang dapat menjamin bahwa solusi yang ditemukan adalah optimal.
3. Aplikasi Sistem Pencarian Lintasan Terpendek dengan menggunakan Algoritma A* dapat menunjukkan jalur-jalur terpendek antara dua verteks yang diinginkan
5.2 Saran
Saran-saran yang dapat digunakan untuk pengembangan skripsi ini adalah:
1. Diharapkan aplikasi dapat dikembangkan, sehingga tidak hanya dapat mencari
shortest path pada jalur Lintas Sumatera saja.
2. Diharapkan gambar peta/graf dapat ditampilkan lebih menarik lagi, tidak hanya dalam bentuk koordinat cartesius saja.
DAFTAR PUSTAKA
Away, Gunaidi Abdia. 2010. The Shortcut of MATLAB Programming. Bandung : Informatika.
Chang, Liang Chang. 1990. Pengantar Teknik Kecerdasan Buatan (Artificial
Intelligence. Jakarta : Erlangga.
Etter, Dolores and David Kuncicky. 2002. Introduction to Matlab 6. Upper Saddle River : Prentice-Hall inc.
Desiani, Anita & Muhammad Arhami. 2006. Kecerdasan Buatan. Yogyakarta : Andi Offset.
Johnsonbaugh, Richard. 1997. Discrete Mathematics Fourth Edition. New Jersey : Prantice Hall.
Kristanto, Andri. 2004. Kecerdasan Buatan. Yogyakarta: Graha Ilmu.
Munir, Rinaldi. 2009. Matematika Diskrit Edisi Ketiga. Bandung : Informatika.
Pawitri, Kadek Ayu Yanti dan Joko Purwadi. 2007. Implementasi Algoritma
PHYSICAL-A* (PHA*) untuk menemukan Lintasan Terpendek,
17 Februari 2010
Patel, Amit. 2009. A*’s Use of the Heuristic Programming/ Heuristics.html#S4. Diakses tangggal 17 Juni 2010
Pearl, Judea. 1984. Heuristics, Intelligent Search Strategies for Computer Problem
Solving. Los Angeles : Addison Wesley.
Riftandi, Mohammad. 2007. VARIASI PENGGUNA FUNGSI HEURISTIK DALAM
PENGAPLIKASIAN ALGORITMA A*.
Diakses
Suyanto. 2007. Artificial Intelligence, Searching, Reasoning, Planning and Learning. Bandung: Informatika.
Winston, Patrick Henry. 1984. Artificial Intelligence Second Edition. Massachusetts : Addison Wesley.
Peta Jalur Lintas Sumatera. 2009.
. Diakses tanggal 21 Februari