Algoritma A* merupakan algoritma pencarian rute terpendek yang merupakan hasil pengembangan dari algoritma BFS dengan memodifikasi fungsi heuristik guna meningkatkan hasil yang optimal. Algoritma ini pertama kali ditemukan oleh Peter Hart, Nils Nilsson, dan Bertram Raphael pada tahun 1968.
Algoritma A* menjadi salah satu contoh algoritma yang paling dikenal di dunia. Algoritma ini dapat melakukan pemeriksaan pada node dengan menggabungkan g(n), yang merupakan cost yang diperlukan untuk mencapai sebuah node dan h(n), yang merupakan cost yang didapat dari node ke tujuan.
Section Artikel
Algoritma A* (A-Star) adalah algoritma pencarian yang digunakan dalam pemrograman komputer dan kecerdasan buatan untuk mencari jalur terpendek atau solusi optimal antara dua titik dalam graf atau ruang pencarian.
Algoritma ini memadukan teknik pencarian breadth-first (pencarian melebar) dan heuristic (pemilihan berdasarkan perkiraan) untuk mencapai keseimbangan antara kecepatan dan optimalitas.
Algoritma A* bekerja dengan mengeksplorasi simpul-simpul (node) dalam graf secara berurutan, dimulai dari simpul awal dan bergerak ke simpul-simpul tetangga. Pada setiap langkah, algoritma memilih simpul berikutnya yang diharapkan memberikan jalur terpendek menuju tujuan berdasarkan estimasi heuristik.
Algoritma A* memiliki kelebihan dalam efisiensi dan kemampuan untuk menemukan jalur terpendek secara optimal jika heuristik yang digunakan adil dan konsisten. Oleh karena itu, algoritma ini sering digunakan dalam berbagai aplikasi, seperti perencanaan lintasan, permainan video, sistem navigasi, dan bidang lain yang membutuhkan pencarian jalur efisien.
Fungsi utama dari algoritma A* adalah mencari jalur terpendek atau solusi optimal antara dua titik dalam graf atau ruang pencarian. Algoritma ini menggunakan kombinasi antara teknik pencarian breadth-first (pencarian melebar) dan heuristic (pemilihan berdasarkan perkiraan) untuk mencapai keseimbangan antara kecepatan dan optimalitas.
Adapun langkah-langkah umum dalam fungsi algoritma A*:
1. Inisialisasi
2. Hitung biaya awal
Tentukan biaya awal untuk mencapai simpul awal (biasanya 0).
3. Evaluasi simpul awal
4. Loop hingga menemukan solusi
5. Apabila himpunan simpul terbuka kosong
Tidak ada solusi yang ditemukan. Jalur antara dua titik tidak dapat ditemukan.
6. Jika ditemukan solusi
Lakukan pencarian mundur dari simpul tujuan hingga simpul awal untuk mendapatkan jalur terpendek.
Fungsi utama dari algoritma A* adalah mengevaluasi dan memilih simpul-simpul dengan biaya terendah secara efisien berdasarkan perkiraan biaya sisa menggunakan fungsi heuristik.
Hal tersebut memungkinkan algoritma A* untuk mencari jalur terpendek atau solusi optimal dengan waktu eksekusi yang lebih cepat dibandingkan dengan metode pencarian yang hanya mengandalkan pencarian melebar seperti algoritma Dijkstra.
Berikut adalah cara menghitung algoritma A* secara sederhana:
1. Tentukan simpul awal (Start) dan simpul tujuan (Goal).
2. Inisialisasi himpunan simpul terbuka (Open Set) dan himpunan simpul tertutup (Closed Set).
3. Set biaya awal (G) simpul awal menjadi 0.
4. Hitung perkiraan biaya sisa (H) dari simpul awal ke simpul tujuan menggunakan fungsi heuristik.
5. Hitung perkiraan biaya total (F) dari simpul awal dengan menambahkan biaya sejauh ini (G) dan perkiraan biaya sisa (H).
6. Tambahkan simpul awal ke himpunan simpul terbuka.
7. Loop hingga himpunan simpul terbuka kosong
8. Apabila himpunan simpul terbuka kosong
Tidak ada solusi yang ditemukan. Jalur antara dua titik tidak dapat ditemukan.
9. Jika ditemukan solusi
Lakukan pencarian mundur dari simpul tujuan hingga simpul awal untuk mendapatkan jalur terpendek.
Dalam penghitungan algoritma A*, penting untuk memperhatikan fungsi heuristik yang digunakan untuk perkiraan biaya sisa (H). Fungsi heuristik harus adil (admissible) dan konsisten (consistent) agar algoritma A* dapat memberikan solusi optimal.
Untuk mendalami pemahaman mengenai algoritma A*, berikut contoh soal algoritma A*.
1 Indeks berjarak 150 Meter
Nilai Heuristik
Nilai f(n)
Jalur yang dilalui adalah A-B-C-E-G-F-H
Total f(n) = 12,08+9,12+31,03+11,10+11,10+27,31 = 101,74