• Tidak ada hasil yang ditemukan

2.2.1 Pengertian Shortest Path

Lintasan Terpendek (Shortest Path) merupakan lintasan minimum yang diperlukan untuk mencapai suatu titik dari titik tertentu. Dalam pencarian lintasan terpendek masalah yang dihadapi adalah mancari lintasan mana yang akan dilalui sehingga didapat lintasan yang paling pendek dari satu vertex ke vertex yang lain.

Ada beberapa macam persoalan lintasan terpendek, antara lain :

Pada tugas akhir ini persoalan lintasan terpendek yang menjadi masalah adalah lintasan terpendek antara dua buah vertex dimana bobot pada setiap edge graf di gunakan untuk menyatakan jarak antara stasiun kereta api pada hotel terdekat dalam satuan kilometer (km). Algoritma yang digunakan adalah algoritma A* dalam menentukan lintasan terpendek.

2.3 Algoritma

2.3.1 Pengertian Algoritma

Algoritma berasal dari nama seorang Ilmuwan Arab yang bernama Abu Jafar Muhammad Ibnu Musa Al Khuwarizmi penulis buku berjudul Al Jabar Wal Muqabala. Kata Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian lambat laun menjadi Algorithm diserap dalam bahasa Indonesia menjadi Algoritma. Ketika membuat sebua program komputer, pada umumnya kita mengimplementasikan metode yang telah dirancang sebelumnya untuk menyelesaikan sebuah masalah. Metode ini sering digunakan para

programmer pada bahasa program untuk menyelesaikan masalah. Algoritma bisa kita jelaskan dengan mendeskripsikan prosedur-prosedur untuk menyelesaikan sebuah masalah

(Sedgewick, Robert. 2011)

2.3.2 Ciri-ciri algoritma

1. Finiteness (keterbatasan), algoritma harus berakhir setelah mengerjakan sejumlah langkah proses.

2. Definiteness (kepastian), setiap langkah harus didefinisikan secara tepat dan tidak berarti ganda.

3. Input (masukan), algoritma memiliki nol atau lebih data masukan (input).

4. Output (keluaran), algoritma mempunyai nol atau lebih hasil keluaran (output).

5. Effectiveness (efektivitas), algoritma harus sangkil (efektif), langkah-langkah algoritma dikerjakan dalam waktu yang wajar.

2.3.3 A* (A Star)

Algoritma A* pertama kali ditemukan oleh Peter Hart, Nils Nilsson, dan Bertram Raphael dari Stanford Reasearch Institute pada tahun 1963. Algoritma A* merupakan pengembangan dari Algoritma Djikstra yang ditemukan tahun 1959. Algoritma A* dianggap menghasilkan hasil yang lebih baik daripada Djikstra karena menggunakan fungsi heuristik. Fungsi heuristik akan membantu penentuan titik mana yang akan dikunjungi terlebih dahulu (Aini, D.Y. 2010).

Heuristik adalah fungsi yang memberi nilai pada setiap simpul yang memandu A*

mendapatkan solusi yang diinginkan. Dengan heuristik maka A* pasti akan mendapatkan solusi yang terbaik (jika memang ada solusinya). Dengan demikian fungsi optimasi yang menjadikan A* lebih baik dari algoritma lainnya (Putra, R.D. 2012).

Algoritma A* dimulai dari titik awal kemudian ke antrian prioritas dan melanjutkan proses sampai mencapai titik tujuan. (Sedgewick, R. 2011). Algoritma A* menggabungkan cost yang dibutuhkan untuk mencapai suatu node yaitu g(n) dan cost yang didapatkan dari node ke tujuan yaitu h(n) (Pearl, Judea. 1985). Algoritma A* dapat dirumuskan :

f(n) = g (n) + h (n) ...(1) Keterangan :

f(n): perkiraan total biaya (cost) sebuah sebuah jalur (path) dari node awal ke node tujuan melalui node n

g(n): biaya (cost) yang dibutuhkan oleh sebuah jalur (path) untuk mencapai node n dari node awal

h(n): perkiraan biaya (cost) sebuah jalur (path) Beberapa istilah yang terdapat pada algoritma A*:

1) Starting point merupakan terminologi untuk posisi awal .

2) Simpul (node) merupakan titik yang merepresentasikan suatu tujuan. Bentuknya dapat berupa persegi, segitiga, ataupun lingkaran

3) A merupakan simpul yang sedang berjalan dalam pencarian jalur terpendek 4) Open list merupakan simpul yang mungkin diakses dari starting point maupun

simbol yang sedang dijalankan.

5) Closed List merupakan simpul yang telah dipilih sebagai pemilihan dari jalur terpendek.

6) Harga (cost) merupakan nilai dari f(n)

7) Halangan (unwalked) merupakan sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat dilalui oleh A.

Pada umumnya, algoritma A* mempresentasikan simpul-simpul pada graf dengan menggunakan dua buah himpunan, yaitu Open List dan Close list. Setiap kali menelusuri sebuah simpul yang baru, maka simpul tersebut dibandingkan dengan simpul-simpul lain yang berada di dalam Open list dan Close List, untuk memeriksa apakah simpul baru tersebut sudah pernah ditelusuri atau belum. Untuk simpul awal sudah termasuk pada Open List (Alshawi, I.S et all, 2012). Sedangkan simpul lain akan dipindahkan ke Open List akan dibandingkan sesuai dengan fungsi heuristic pada algoritma A* (Dong, Z & Li, M. 2009). Open list berisi

1. Jarak Manhattan

Fungsi ini merupakan fungsi heuristik yang paling umum digunakan. Fungsi ini menjumlahkan selisih nilai x dan y dari dua buah titik. Fungsi ini dinamakan fungsi Manhattan karena fungsi ini mengadopsi keadaan di kota Manhattan. Di kota Manhattan, jarak dari dua lokasi dihitung dari blok-blok yang harus dilalui saja. Jarak tersebut tidak bisa dilewati secara diagonal. Perhitungannya yaitu :

h(n)= |(x1-x2)| + |(y1-y2)| ...(2) Dimana h(n) merupakan perkiraan cost dari noden ke node tujuan yang dihitung dengan fungsi heuristik. Variabel x1 merupakan koordinat x dari node asal, sedangkan variabel y1 merupakan koordinat y dari node asal. Variabel x2

merupakan koordinat x dari node tujuan dan y2 merupakan koordinat koordinat y dari node tujuan. Nilai dari h(n) akan selalu bernilai positif.

2. Jarak Euclid

Heuristik ini akan menghitung jarak berdasarkan panjang garis yang dapat ditarik dari dua buah titik. Perhitungannya dapat dituliskan sebagai berikut:

h(n) = √ ...(3) Dalam kasus ini, skala relatif nilai g mungkin akan tidak sesuai lagi dengan nilai fungsi heuristik h. Karena jarak jarak Euclid selalu lebih pendek dari jarak Manhattan, maka dapat dipastikan selalu akan didapat jalur terpendek, walaupun secara komputasi lebih berat. Untuk penelitian ini maka akan dipilih jarak Euclid untuk fungsi heuristiknya.

3. Jarak Euclidian Kuadrat

Dalam beberapa literatur disebutkan jika nilai g adalah 0, maka lebih baik jika komputasi untuk pengakaran heuristik nilai euclid dihilangkan saja. Sehingga didapatkan rumus :

h(n)² = ...(4) Algoritma A* memilih titik tujuan berdasarakan simpul yang paling dekat ke titik awal (sesuai dengan algoritma Djikstra) dan juga paling dekat ke titik akhir (sesuai dengan algoritma best first search). Jadi, dengan memperhitungkan jarak sebenarnya (biasa disebut g(n)) dan jarak perkiraan (biasa disebut h(n)), algoritma ini dianggap akan memberikan hasil yang optimal.

Pada algoritma A* ada tiga tipe keadaan pada proses pencarian jarak terpendek. Keadaan pertama yaitu berada pada posisi OPEN. Keadaan kedua berada pada posisi CLOSE. Keadaan ketiga menyatakan belum berada di posisi OPEN maupun CLOSE.

Titik yang berada pada posisi OPEN menunjukkan titik tersebut telah dibangkitkan untuk selanjutnya diseleksi apakah terpilih sebagai titik tujuan terbaik.

Titik yang berada pada posisi CLOSE menunjukkan titik tersebut telah terpilih sebagai tujuan terbaik karena memiliki cost terkecil. Titik yang belum berada pada posisi OPEN maupun CLOSE menunjukkan bahwa titik tersebut belum terpilih sebagai tujuan terbaik dan bahkan belum dibangkitkan untuk masuk ke daftar

pemilihan tujuan selanjutnya. Perhitungan biaya atau cost pada algoritma ini menggunakan rumus :

f(n) = g (n) + h (n) ...(5)

Gambar 2.6. Contoh Graf Untuk Pencarian Urutan Lintasan A*

Pada Gambar 2.6 terlihat graf berarah dimana jarak satu titik ke titik lainnya belum tentu sama dengan keadaan sebaliknya. Hal ini sebagai contoh yang menunjukkan adanya jalan satu arah yang menyebabkan perubahan jalur ketika mengunjungi tempat tertentu. Setiap node menunjukkan hotel terdekat. Busur menyatakan besarnya jarak sebenarnya antara satu titik dengan titik lain.

Berikut adalah jarak real antara titik awal atau Stasiun KAI ke hotel terdekat sesuai pada Gambar 2.6. Ukuran jaraknya dalam satuan kilometer (KM).

Stasiun KAI – Hotel Grand Aston Medan = 0,75 KM Stasiun KAI – D’primahotel Medan = 0,1 KM

Stasiun KAI – Hotel Seochi International Medan = 1 KM

Pada algoritma A*, perhitungan penentuan tujuan dari satu titik ke titik berikutnya

menggunakan fungsi heuristik h(n). Berikut nilai h(n) atau fungsi heuristik jarak euclid untuk setiap node.

Stasiun KAI – Hotel Grand Aston Medan = 0,0429 KM Stasiun KAI – D’primahotel Medan = 0,3522 KM

Stasiun KAI – Hotel Seochi International Medan = 0,9380 KM

Berikut langkah-langkah untuk menentukan tujuan dari titik KAI dengan menggunakan algoritma A* untuk mendapatkan shortest path.

Sebagai titik awal, karena telah ditentukan titik awal adalah KAI, maka KAI yang semula pada keadaan OPEN dipilih sebagai best node dan dipindah pada keadaan CLOSED

Fungsi Evaluasi :

Total jarak sebenarnya dengan jarak euclid didapatkan hasil sebagai berikut : f (GA) = g(KAI ke GA) + h (O ke A) = 0,75 + 0,3522 = 1,1 KM

f (DPH) = g(KAI ke DPH) + h (O ke B) = 0,5 + 0,0429 = 0,54 KM f (SCH) = g(KAI ke SCH) + h (O ke C) = 1 + 0,9380 = 1,9 KM

Dari evaluasi tersebut didapat hotel terdekat dari titik awal atau Stasiun KAI adalah titik DPH dan semua titik telah masuk ke best node. Maka, hotel yang paling dekat jaraknya dari titik KAI berdasarkan perhitungan A* adalah D’primahotel Medan (DPH) dengan jarak 0,54 kilometer (KM)

2.3.4 Breadth First Search (BFS)

Breadth First Search merupakan algoritma graf yang digunakan sebagai prototipe pada minimum spanning tree dan shortest path (Yun, L. 2002). Algoritma untuk pencarian graf dengan cara Breadth-First sudah dipelajari selama 50 tahun. Breadth First Search (BFS) ditemukan oleh Edward F. Moore pada tahun 1950 saat mencari rute terpendek untuk keluar dari sebuah labirin. Pada tahun 1961 penemuan lainnya dipublikasikan oleh C.Y. Lee saat perutean sebuah printed circuit boards (PCB) untuk pemilihan jalur yang harus dilalui.

Breadth First Search (BFS) adalah salah satu dari algoritma graf yang mengunjungi seluruh node dari node akar atau awal. Pada prosedur BFS (Breadth First Search) inisial dari simpul adalah kunci utama untuk menemukan rute. Dalam urutan pencarian rute yang akurat insial simpul adalah kumpulan jalan-jalan yang ada didekat simpul awal (Hsu, C.M. 2011).

Cara kerja algoritma Breadth First Search (BFS) dilakukan pada semua verteks dilevel n secara berurutan dari kiri kekanan. Jika pada satu level belum ditemukan solusi, maka pencarian dilanjutkan pada level berikutnya (n+1). Demikian seterusnya sampai ditemukan solusi. Dengan strategi ini, maka dapat dijamin bahwa solusi yang ditemukan adalah yang paling baik (Optimal). Tetapi BFS harus

menyimpan semua node yang pernah dibangkitkan, hal ini harus dilakukan untuk penelusuran balik jika solusi sudah ditemukan, sehingga membutuhkan memori yang cukup banyak. Pada Gambar 2.7 menunjukkan contoh Pencarian Lintasan Terpendek Pada Algoritma Breadth First Search.

Gambar 2.7. Contoh Graf Untuk Pencarian Urutan Lintasan BFS

Gambar 2.7 menunjukkan ada 13 node dan masing-masing memiliki bobot yang berbeda dengan titik tujuan yang sama yaitu titik KAI. Setiap node menunjukkan hotel terdekat dari titik tujuan Stasiun KAI Medan. Pada pengertian Breadth First Search (BFS) menjelaskan jika node pertama pada level 1 bukan tujuannya maka akan terus dilanjutkan pada node berikutnya, jika node pertama adalah tujuannya maka selesai.

KAI merupakan titik awal pencarian dan akan mengunjungi titik-titik lainnya yaitu GA (Grand Aston) – SCH (Hotel Seochi International) – DPH (D’primahotel Medan) – ADH (Aryaduta Hotel) – STH (Santika Hotel) – CHM (Cordela Hotel Medan) – GSM (Grand Swiss Medan) – JWM (JW Mariott Medan) – GAM (Grand Angkasa Medan) – HDT (Hotel Danau Toba Medan) – HPH (Hermes Palaces Hotel) – HM (Hotel Madani). Pada Algoritma Breadth First Search (BFS) sudah ditentukan tujuan dari pencarian adalah jarak tempuh minimum dari titik awal atau KAI. Berikut adalah perhitungan dari proses pencarian hotel yang dilakukan dari akar atau titik awal.

KAI – GA = 0,75 KAI – SCH = 0,9 KAI – DPH = 0,1 KAI – ADH = 2,25 KAI – STH = 3,05

KAI – HPH = 1,3 KAI – CHM = 5,05 KAI – GAM = 4, 65 KAI – HDT = 5,45

Dari pencarian menggunakan algoritma Breadth First Search sesuai pada Gambar 2.7 maka diperoleh KAI – DPH (D’primahotel Medan) adalah jarak tempuh terpendek. Dengan jarak 0,1 kilometer (KM).

Dokumen terkait