Social Icons

Wednesday, July 2, 2014

Algoritma A* (A Star / A Bintang) Algoritma


Algoritma A* (A Star / A Bintang) Algoritma -  A* (dibaca "A bintang"/"A star") adalah algoritma  pencarian graf/pohon yang mencari jalur dari satu titik awal ke sebuah titik akhir yang telah ditentukan. Algoritma A* menggunakan pendekatan heuristik h(x)  yang memberikan peringkat ke tiap-tiap titik x dengan  cara memperkirakan rute terbaik yang dapat dilalui dari titik tersebut. Setelah itu tiap-tiap titk x tersebut dicek  satu-persatu berdasarkan urutan yang dibuat dengan  pendekatan heuristik tersebut. Maka dari itulah algoritma A* adalah contoh dari best-first search. Algoritma ini pertama kali ditemukan pada tahun 1968 oleh Peter Hart, Nils Nilsson dan Bertram Raphael. Dalam tulisan mereka, algoritma ini dinamakan algoritma A. Penggunaan algoritma ini dengan fungsi heuristik yang tepat dapat memberikan hasil yang optimal, maka algoritma inipun disebut A*. Beberapa terminologi dasar yang terdapat pada algoritma ini adalah starting point, simpul (nodes), A, open list, closed list, harga (cost), halangan (unwalkable).


  • Starting point adalah sebuah terminologi posisi awal sebuah benda.
  • A adalah simpul yang sedang dijalankan algortima pencarian jalan terpendek.
  •  Simpul adalah petak-petak kecil sebagai representasi  dari areapathfinding. Bentuknya dapat berupa persegi, lingkaran, maupun segitiga.
  • open list adalah tempat menyimpan data simpul yang mungkin diakses dari starting point maupun simpul yang sedang dijalankan.
  • Closed list adalah tempat menyimpan data simpul sebelum A yang juga merupakan bagian dari jalur terpendek yang telah berhasil didapatkan.
  • Harga (F) adalah nilai yang diperoleh dari penjumlahan nilai G, jumlah nilai tiap simpul dalam jalur terpendek dari starting point ke A, dan H, jumlah nilai perkiraan dari sebuah simpul ke simpul tujuan.
  • Simpul tujuan yaitu simpul yang dituju.
  • Rintangan adalah sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat dilalui oleh A.


Prinsip algoritma ini adalah mencari jalur terpendek dari sebuah simpul awal (starting point) menuju simpul tujuan dengan memperhatikan harga (F) terkecil.
A* memperhitungkan cost dari current state ke tujuan denga fungsi heuristic, Algoritma ini juga mempertimbangkan cost yang telah ditempuh selama ini dari initial state ke current state. Jadi jika ada jalan yang telah ditempuh sudah terlalu panjang dan ada jalan lain yang cost-nya lebih kecil tetapi memberikan posisi yang sama dilihat dari goal, jalan yang lebih pendek yang akan dipilih.[8]


Ok, tanpa berbelit-belit langsung saja kita berkenalan dengan metode yang satu ini.


Langkah 1 : Arena
Berikut adalah contoh simple arena yang akan kita gunakan. Warna hijau adalah starting point, warna merah adalah goal/end point, dan biru adalah penghalang. Goal dari aplikasi ini adalah mencari rute dari titik hijau ke merah tanpa melewati penghalang biru


Langkah 2 : Movement Cost / Biaya Pergerakan
Kita asumsikan setiap langkah dari hijau adalah legal baik vertikal, horizontal, maupun diagonal dengan catatan tidak membentur tembok. Setiap langkah yang diizinkan kita berikan nilai G dimana G adalah cost atau biaya dalam setiap langkah. Dalam kasus ini kita akan berikan nilai 10 untuk setiap langkah vertikal maupun horizontal, dan 14 untuk diagonal. Nilai 14 kita dapatkan dari perhitungan pitagoras dimana 14,1421 = sqrt(sqr(10)+sqr(10)). Hasil data nilai G ini selanjutnya kita gambarkan sbb :


Selain dari perhitungan tersebut, kita dapat mengalikan dengan konstanta tertentu untuk memanipulasi biaya, misal : ketika melewati sungai maka G = G * 2. 

Langkah 3 : Estimated Movement / Estimasi gerakan
Langkah selanjutnya kita hitung biaya estimasi pergerakan dan kita simbolkan dengan H. Nilai H ini secara singkat adalah nilai jarak / estimasi biaya dari pergerakan dari suatu titik terhadap titik finish dengan mengabaikan penghalang yang ada. Untuk lebih jelasnya silahkan lihat gambar di bawah :


Langkah 4 : Scoring / Penilaian
Setelah nilai G dan H kita dapatkan, maka kita berikan skor dari masing-masing titik yang akan dilalui. Skor kita lambangkan misalnya dengan F dimana nilai F = G + H. Nilai F selanjutnya kita masukkan dalam setiap titik dari setiap langkah yang akan dilalui. Untuk lebih jelasnya lihat gambar di bawah :


Dari setiap nilai tersebut kita ambil keputusan dengan mengambil langkah dengan nilai F terkecil.


Langkah 5 : Looping / Perulangan
Setelah pergerakan pertama selesai selanjutnya lakukan perulangan dari dari langkah 1 sampai 4. Untuk lebih jelasnya setiap pergerakan akan digambarkan di bawah :









Selamat… Akhirnya Anda telah berhasil mempelajari algritma A* untuk proses pencarian rute terdekat. Untuk pertanyaan silahkan ditanyakan di bagian komentar. Adapun jika terdapat kesalahan dalam penjelasan saya mohon maaf yang sebesar-besarnya dan silahkan diberi komentar di bawah. Akhir kata, terima kasih telah membaca dan terus berkarya… 

9 comments:

  1. maaf mas
    menentukan g=52 itu dari mana nya mas

    ReplyDelete
    Replies
    1. bantu jawab yah, G itu jarak dari point awal(berwarna hijau), H jarak ke point tujuan(titik merah) dan F jumlah dari H+G.

      Delete
  2. Kenapa harus bergerak horizontal ke kanan dulu? kenapa awalnya ga lansung diagonal aja?

    ReplyDelete
  3. makasih gan atas artikel nya...
    salam anak IT

    ReplyDelete
    Replies
    1. Terimakasih kembali gan jangan lupa like dan share nya terimakasih

      Delete