• Tidak ada hasil yang ditemukan

LANDASAN TEOR

2.9 Lintasan Terpendek (Shortest Path)

Lintasan terpendek merupakan persoalan optimasi. Graf yang digunakan dalam pencarian lintasan terpendek adalah graf berbobot (weighted graph), yaitu graf yang setiap sisinya diberikan suatu nilai atau bobot. Bobot pada sisi graf dapat menyatakan jarak antar kota, waktu pengiriman pesan, ongkos pembangunan, dan sebagainya. Asumsi yang digunakan adalah bahwa semua bobot bernilai positif (Munir. 2012).

Ada beberapa macam persoalan lintasan terpendek, antara lain: 1. Lintasan terpendek antara dua buah simpul tertentu.

2. Lintasan terpendek antara semua pasangan simpul.

3. Lintasan terpendek dari simpul tertentu ke semua simpul yang lain.

4. Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu. Permasalahan yang akan diselesaikan pada penelitian ini adalah bagaimana menentukan lintasan terpendek antara dua buah simpul (verteks) dimana bobot pada

26

setiap edge graf digunakan untuk menyatakan jarak objek wisata di kota Binjai dengan persimpangan jalan dalam satuan meter (m). Sehinngga penggunaan teknik algoritma A* dalam pencarian rute terpendek dapat ditentukan (Joshi, 2014).

2.10 Algoritma A*

Algoritma A* merupakan salah satu jenis algoritma yang digunakan untuk

menyelesaikan kasus yang berhubungan dengan path finding (pencarian jalan). Dalam

hasil pencariannya A* dikatakan complete dan optimal. Algoritma A* menggunakan

cara pencarian secara Breatdth First Search, dimana pencarian dilakukan dengan cara melebar ke setiap node pada level yang sama, dan nantinya akan menemukan rute terbaik dari titik awal sampai tujuan. Algoritma A* juga dilengkapi dengan suatu fungsi heuristik. Fungsi heuristik yang terdapat pada algoritma A* digunakan sebagai optimasi dalam menentukan node tujuan yang akan dipilih. (Russell, 2003).

Algortima A* merupakan algoritma breatdth-first search yang menggunakan fungsi heuristik yang kompleks untuk memilih path. Algoritma breatdth-first search selalu memperluas jalan untuk menuju node yang akan dilewati, tetapi tidak memperhitungkan cost ke simpul tersebut (Coppin, 2004).

Algoritma ini memeriksa node dengan menggabungkan g(n), yaitu cost yang dibutuhkan untuk mencapai sebuah node dan h(n) yaitu cost yang didapat dari node ke tujuan (Russell, 2003). Sehingga dapat dirumuskan sebagai:

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

f(n) adalah estimasi total biaya (cost) sebuah jalur (path) dari node awal ke node tujuan (goal) melalui node n.

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

h(n) adalah estimasi biaya (cost) sebuah jalur (path).

Menurut Rudy (2007) Beberapa terminologi yang terdapat pada algoritma A* adalah Starting point merupakan terminologi untuk posis awal sebuah benda.

1. Starting point merupakan terminologi untuk posis awal sebuah benda.

2. Simpul (node) merupakan petak-petak kecil sebagai representasi dari

pathfinding. Bentuknya dapat berupa persegi, lingkaran maupun segitiga.

3. A* merupakan simpul yang sedang dijalankan dalam algoritma pencarian

jalur terpendek.

4. Open list merupakan tempat menyimpan data simpul yang mungkin diakses dari

starting point maupun simbol yang sedang dijalankan.

5. Closed list merupakan tempat menyimpan data simpul sebelum A* yang juga

merupakan bagian dari jalur terpendek yang telah dihasilkan didapatkan. 6. Harga (cost) merupakan nilai dari f(n).

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

2.10.1 Fungsi Heuristic

Algoritma A* adalah algoritma pencarian yang menggunakan fungsi heuristik untuk

menuntun pencarian rute, khususnya dalam hal pengembangan dan pemeriksaan node-

node pada peta (Kalsum. 2012).

Ada beberapa penghitungan jarak yang sering digunakan dalam algoritma A, yaitu:

1. Jarak Manhattan

Fungsi ini merupakan fungsi heuristik yang paling umum digunakan. Fungsi ini hanya akan menjumlahkan selisih nilai x dan y dari dua buah titik. Fungsi ini dinamakan Manhattan karena di kota Manhattan, Amerika, jarak dari dua lokasi umumnya dihitung dari blok-blok yang harus dilalui saja dan tentunya tidak bisa dilalui secara diagonal. Perhitungannya dapat ditulis sebagai berikut:

28

Dimana h(n) merupakan perkiraan cost dari node n ke node tujuan yang dihitung dengan fungsi heuristik. Variable merupakan koordinat x dari node asal, sedangkan variabel merupakan koordinat y dari node asal. Variabel merupakan koordinat x dari node tujuan dan merupakan 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 :

Dalam kasus ini, skala relatif nilai g mungkin akan tidak sesuai lagi dengan nilai fungsi heuristik h. Karena jarak euclidian selalu lebih pendek dari jarak manhattan, maka dapat dipastikan selalu akan didapatkan jalur terpendek, walaupun secara komputansi lebih berat.

3. Jarak Euclidian Kuadrat

Dalam beberapa literatur juga disebutkan jika nilai g adalah 0, maka lebih baik jika ongkos komputansi operasi pengakaran pada heuristik jarak Euclidian dihilangkan saja, menghasilkan rumus sebagai berikut :

Fungsi heuristik sangat berpengaruh terhadap kelakuan algoritma A* , yaitu: 1. Apabila h(n) selalu bernilai 0, maka hanya g(n) yang akan berperan, dan A*

berubah menjadi Algoritma Dijkstra, yang menjamin selalu akan menemukan jalur terpendek.

2. Apabila h(n) selalu lebih rendah atau sama dengan ongkos perpindahan dari titik n ke tujuan, maka A* dijamin akan selalu menemukan jalur terpendek. Semakin rendah nilai h(n), semakin banyak titik-titik yang diperiksa A*, membuatnya semakin lambat.

3. Apabila h(n) tepat sama dengan ongkos perpindahan dari n ke tujuan, maka A* hanya akan mengikuti jalur terbaik dan tidak pernah memeriksa satupun titik lainnya, membuatnya sangat cepat. Walaupun hal ini belum tentu bisa diaplikasikan ke semua kasus, ada beberapa kasus khusus yang dapat menggunakannya.

4. Apabila h(n) kadangkala lebih besar dari ongkos perpindahan dari n ke tujuan, maka A* tidak menjamin ditemukannya jalur terpendek, tapi prosesnya cepat. 5. Apabila h(n) secara relatif jauh lebih besar dari g(n), maka hanya h(n) yang

memainkan peran, dan A* berubah menjadi Best First Search (BFS).

Dalam mengaplikasikan Algoritma A* pada aplikasi ini, fungsi heuristik yang digunakan adalah jarak Euclid.

2.10.2 Cara Kerja Algoritma A*

Prinsip algoritma ini adalah mencari jalur terpendek dari sebuah simpul awal (starting

point) menuju simpul tujuan dengan memperhatikan harga (f) terkecil. Algoritma ini

mempertimbangkan jarak yang telah ditempuh selama ini dari initial state ke current state. Jadi bila jalan yang telah ditempuh sudah terlalu panjang dan ada jalan lain yang lebih kecil jaraknya namun memberikan posisi yang sama dilihat dari goal, jalan baru yang lebih pendek itulah yang akan dipilih (Kalsum. 2012).

Dengan fungsi heuristik algoritma ini membangkitkan node yang paling

mendekati solusi. Node ini kemudian disimpan suksesornya ke dalam list sesuai dengan urutan yang paling mendekati solusi terbaik. Kemudian, node pertama pada

list diambil, dibangkitkan suksesornya dan kemudian suksesor ini disimpan ke dalam

list sesuai dengan urutan yang terbaik untuk solusi. List node ini disebut dengan node terbuka (open node).

Node pada list bisa berasal dari kedalaman berapapun dari graph. Algoritma ini akan mengunjungi secara mendalam (mirip Depth First Search (DFS)) selama

30

ternyata tidak mengarah kepada solusi yang diinginkan, maka akan melakukan runut balik ke arah node awal untuk mencari node lainnya yang lebih menjanjikan dari pada

node yang terakhir dikunjungi. Bila tidak ditemukan juga, maka akan terus mengulang

mencari ke arah node awal sampai ditemukan node 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. Algoritma A* baru berhenti ketika mendapatkan solusi yang dianggap solusi terbaik. Pada gambar 2.11 merupakan flowchat dari algoritma A*.

32

Dokumen terkait