Pencarian Heuristik (Heuristic Search)
A heuristic is a rule of thumb that may help solve a given problem. Heuristics take problem knowledge into consideration to help guide the search within the domain.
1 2 3 7 8 4 6 5 1 2 3 8 4 7 6 5 8-puzzle Keadaan Awal Tujuan
8-puzzle Langkah Awal ??? 4 operator yang dapat digunakan : Ubin kosong digeser ke kiri Ubin kosong digeser ke kanan Ubin kosong digeser ke bawah Ubin kosong digeser ke atas 8-puzzle Langkah Awal ???
8-puzzle Informasi tambahan : Untuk jumlah ubin yang menempati posisi yang benar : jumlah yang lebih tinggi lebih baik posisi yang salah : jumlah yang lebih kecil lebih baik Menghitung total gerakan yang diperlukan untuk mencapai tujuan : jumlah yang 8-puzzle
Pencarian Heuristik : Generate and Test Hill Climbing Best First Search Simulated Annealing
8 A B TSP 3 4 7 5 D C 6
Generate & Test Kombinasi DFS dan Backtracking Algoritma : Bangkitkan suatu kemungkinan solusi 2. Uji untuk melihat apakah node tersebut benar-benar merupakan Jika solusi ditemukan, keluar. Jika tidak, ulangi langkah pertama Generate & Test
Hill Climbing Mirip dengan Generate & Test, hanya saja proses pengujian dilakukan dengan fungsi heuristik Simple Hill Climbing Steepest Ascent Hill Climbing Hill Climbing
Simple Hill Climbing Algoritma : Mulai dari keadaan awal, lakukan pengujian : jika merupakan tujuan, maka berhenti; jika tidak, lanjutkan dengan keadaan sekarang sebagai keadaan awal Simple Hill Climbing
Simple Hill Climbing Algoritma : Kerjakan langkah-langkah berikut sampai solusi ditemukan, atau sampai tidak ada operator baru yang akan diaplikasikan pada keadaan sekarang : Cari operator yang belum pernah digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru Simple Hill Climbing
Simple Hill Climbing Algoritma : Evaluasi keadaan baru tersebut : Jika keadaan baru merupakan tujuan, keluar Jika bukan tujuan, namun nilainya lebih baik dari keadaan sekarang, maka keadaan baru dijadikan keadaan sekarang Jika keadaan baru tidak lebih baik daripada keadaan sekarang, maka lanjutkan iterasi Simple Hill Climbing
Simple Hill Climbing TSP dengan Simple Hill Climbing Operator yang akan digunakan : menukar urutan posisi 2 kota dalam suatu lintasan Ada 4 kota, sehingga kombinasi lintasan yang diperoleh sebanyak : Simple Hill Climbing
Simple Hill Climbing TSP dengan Simple Hill Climbing Keenam kombinasi yang dijadikan operator : Tukar1,2 Tukar2,3 Tukar3,4 Tukar4,1 Tukar1,3 Tukar2,4 Simple Hill Climbing
Steepest Ascent Hill Climbing Gerakan pencarian selanjutnya ditentukan berdasarkan nilai heuristik terbaik Urutan penggunaan operator tidak Menentukan penemuan solusi Steepest Ascent Hill Climbing
Steepest Ascent Hill Climbing Algoritma : Mulai dari keadaan awal, lakukan pengujian : jika merupakan tujuan, maka berhenti; jika tidak, lanjutkan dengan keadaan sekarang sebagai keadaan awal Steepest Ascent Hill Climbing
Steepest Ascent Hill Climbing Algoritma : Kerjakan hingga tujuan tercapai atau hingga iterasi tidak memberikan perubahan pada keadaan sekarang Tentukan SUCC sebagai nilai heuristik terbaik dari successor- successor Kerjakan untuk tiap operator yang digunakan oleh keadaan sekarang : Gunakan operator tersebut dan bentuk keadaan baru Steepest Ascent Hill Climbing
Steepest Ascent Hill Climbing Algoritma : Evaluasi keadaan baru tersebut. Jika merupakan tujuan, keluar. Jika bukan, bandingkan nilai heuristiknya dengan SUCC. Namun jika tidak lebih baik, nilai SUCC tidak berubah Steepest Ascent Hill Climbing
Steepest Ascent Hill Climbing Algoritma : Jika SUCC lebih baik daripada nilai heuristik keadaan sekarang, ubah node SUCC menjadi keadaan sekarang Steepest Ascent Hill Climbing
Best First Search Kombinasi dari DFS dan BFS Pencarian diperbolehkan mengunjungi node pada level yang lebih rendah, jika node yang lebih tinggi memiliki nilai heuristik yang lebih buruk OR Graph Algoritma A* Best First Search
OR Graph Diperlukan 2 antrian yang berisi node-node, yaitu : OPEN, berisi node-node yang sudah dibangkitkan, sudah memiliki fungsi heuristik namun belum diuji CLOSED, berisi node-node yang sudah diuji OR Graph
OR Graph Diperlukan fungsi heuristik yang akan mengestimasi seberapa baik dibangkitkannya setiap node : g(n) : biaya yang dikeluarkan dari keadaan awal sampai ke node n h’(n) : estimasi tambahan biaya yang harus dikeluarkan dari node n sampai mendapatkan tujuan f‘(n) : kombinasi dari g(n) dan h’(n) OR Graph
OR Graph Algoritma : Tempatkan node awal A pada antrian OPEN Kerjakan langkah-langkah berikut hingga tujuan ditemukan atau antrian OPEN sudah kosong : Ambil node terbaik dari OPEN Bangkitkan semua successornya OR Graph
OR Graph Algoritma : Untuk tiap-tiap successor kerjakan : Jika node tersebut belum pernah dibangkitkan sebelumnya, evaluasi node tersebut dan masukkan ke OPEN Jika node tersebut sudah pernah dibangkitkan sebelumnya, ubah parent jika lintasan baru lebih menjanjikan. Hapus node tersebut dari antrian OPEN OR Graph
Algoritma A* Perbaikan dari metode best –first search dengan memodifikasi fungsi heuristiknya. A* akan meminimumkan total biaya lintasan Algoritma A*
Algoritma A* Algoritma A : Set: OPEN={S} dan CLOSED={} dengan S adalah node yang dipilih sebagai keadaan awal Kerjakan jika OPEN belum kosong : a. Cari node n dari OPEN dimana nilai f(n) minimal. Kemudian tempatkan n pada CLOSED b. Jika n adalah node tujuan, keluar. SUKSES c. Ekspan node n ke anak-anaknya Algoritma A*
Algoritma A* Algoritma A : d. Kerjakan untuk setiap anak n, yaitu n’ : Jika n’ belum ada di OPEN atau CLOSED, maka : Masukkan n’ ke OPEN. kemudian set backpointer dari n’ ke n Hitung : h(n’) g(n’) = g(n) + c(n,n’); c(n,n’) adalah biaya dari n ke n’ c. f(n’) = g(n’) + h(n’) Algoritma A*
Algoritma A* Algoritma A : Jika n’ telah ada di OPEN atau CLOSED dan jika g(n’) lebih kecil (untuk versi n’ yang baru), maka : Buang versi lama n’ Ambil n’ di OPEN, dan set backpointer dari n’ ke n Algoritma A*
Algoritma A* Algoritma A* merupakan pengembangan dari algoritma A, dengan batasan h(n) ≤ h*(n) h(n) = biaya sebenarnya dari biaya minimal lintasan dari n ke sembarang tujuan g(n) = biaya sebenarnya dari biaya minimal lintasan dari S ke n f(n) = h(n) + g(n); biaya sebenarnya dari biaya minimum solusi lintasan dari S ke sembarang tujuan yang melalui n Algoritma A*