Algoritma A* (A Star): Pengertian, Cara Kerja, dan Kegunaannya

 Algoritma pencarian merupakan algoritma yang dirancang untuk mencari atau mengambil elemen dari struktur data, tempat data tersebut disimpan.


Aspek vital dari algoritma pencarian adalah path finding, yang digunakan untuk menemukan jalur yang dapat diambil untuk melintasi dari satu titik ke titik lainnya, dengan mencari rute yang paling optimal.


Salah satu algoritma pencarian yang digunakan sebagai path finding adalah algoritma A* atau A Star.

lgoritma pencarian yang digunakan untuk menemukan jalur terpendek antara titik awal dan akhir.


Algoritma ini sering digunakan untuk penjelajahan peta guna menemukan jalur terpendek yang akan diambil.


A* awalnya dirancang sebagai masalah penjelajahan graph (graph traversal), untuk membantu robot agar dapat menemukan arahnya sendiri. A* saat ini masih tetap menjadi algoritma yang sangat populer untuk graph traversal.


Algoritma A* mencari jalur yang lebih pendek terlebih dahulu, sehingga menjadikannya algoritma yang optimal dan lengkap.



Algoritma yang optimal akan menemukan hasil yang paling murah dalam hal biaya untuk suatu masalah, sedangkan algoritma yang lengkap menemukan semua hasil yang mungkin dari suatu masalah.


Aspek lain yang membuat A* begitu powerful adalah penggunaan graph berbobot dalam penerapannya. Graph berbobot menggunakan angka untuk mewakili biaya pengambilan setiap jalur atau tindakan.


Ini berarti bahwa algoritma dapat mengambil jalur dengan biaya paling sedikit, dan menemukan rute terbaik dari segi jarak dan waktu.


Adapun kelemahan utama dari algoritma ini adalah kompleksitas ruang dan waktunya. Algoritma A* membutuhkan banyak ruang untuk menyimpan semua kemungkinan jalur dan banyak waktu untuk menemukannya.


Cara Kerja Algoritma A*

A* menggunakan Best First Search (BFS) dan menemukan jalur dengan biaya terkecil (least-cost path) dari node awal (initial node) yang diberikan ke node tujuan (goal node).



Algoritma ini menggunakan fungsi heuristik jarak ditambah biaya (biasa dinotasikan dengan f(x)) untuk menentukan urutan di mana search-nya melalui node-node yang ada pada tree.


Notasi yang dipakai oleh algoritma A* adalah sebagai berikut:


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


dimana


f(n) = biaya estimasi terendah

g(n) = biaya dari node awal ke node n

h(n) = perkiraan biaya dari node n ke node akhir


Ikuti langkah-langkah berikut sampai OPEN LIST tidak kosong:

Temukan simpul dengan f terkecil pada OPEN LIST dan beri nama "Q".

Hapus Q dari OPEN LIST.

Generate delapan turunan Q dan tetapkan Q sebagai induknya.

Untuk setiap keturunan:

Jika menemukan penerus adalah tujuannya, pencarian dihentikan

Jika tidak, hitung g dan h untuk penerusnya.

penerus.g = q.g + jarak yang dihitung antara penerus dan q.

suksesor.h = jarak terhitung antara suksesor dan tujuan.

penerus.f = penerus.g ditambah penerus.h

Lewati penerus ini jika node dalam daftar OPEN dengan lokasi yang sama tetapi nilai f lebih rendah dari penggantinya.

Lewati penerusnya jika ada simpul dalam CLOSE LIST dengan posisi yang sama dengan penerusnya tetapi nilai f lebih rendah; jika tidak, tambahkan simpul ke ujung OPEN LIST (untuk loop).

Push Q ke dalam CLOSE LIST dan akhiri loop sementara.

Kegunaan Algoritma A*


Algoritma A* menemukan jalur terpendek antara dua node dalam sebuah graph. Algoritma ini mirip dengan algoritma Dijkstra, tetapi lebih canggih karena mempertimbangkan biaya setiap sisi (edge) dalam graph. Biaya tepi (edge cost) biasanya ditentukan oleh panjangnya atau ukuran jarak lainnya, seperti waktu atau uang.


Berikut ini adalah beberapa aplikasi dan kegunaan dari algoritma A*:


Algoritma A* biasanya digunakan dalam peta dan game berbasis web untuk menemukan jalur terpendek dengan efisiensi setinggi mungkin.

A* digunakan di banyak aplikasi kecerdasan buatan, seperti mesin pencari.

Digunakan dalam algoritma lain seperti algoritma Bellman-Ford untuk menyelesaikan masalah jalur terpendek.

Algoritme A* digunakan dalam protokol routing jaringan, seperti RIP, OSPF, dan BGP, untuk menghitung rute terbaik antara dua node.

Penutup


Demikianlah penjelasan lengkap mengenai algoritma A*. Semoga informasi yang disajikan dapat bermanfaat dan menambah khazanah pengetahuan kita.


Apabila Anda suka dengan artikel seperti ini, Anda dapat mengunjungi rubrik Data Structure atau membaca artikel lainnya mengenai "Algoritma Hill Climbing".


Salam!


Komentar

Postingan populer dari blog ini

Menu-Menu pada Pemrograman Scratch dan Fungsinya

Mengenal Sistem Bilangan Komputer: Desimal, Biner, Oktal dan Heksa Desimal

Struktur Data Tree: Pengertian, Jenis, dan Kegunaannya