HEURISTIC SEARCH
Pendahuluan Pencarian buta biasanya tidak efisien karena waktu akses memori yang dibutuhkan cukup besar. Untuk mengatasi hal ini maka perlu ditambahkan suatu informasi pada domain yang bersangkutan sehingga proses pencarian yang baru akan dihasilkan. Pencarian seperti ini disebut sebagai informed search atau pencarian heuristic atau pencarian terbimbing, yaitu pencarian berdasarkan panduan. (Dalam sutojo dkk) teknik pencarian heuristic merupakan suatu strategi untuk melakukan proses pencarian secara selektif dan dapat memandu proses pencarian yang memiliki kemungkinan sukses paling besar, namun dengan kemungkinan mengorbankan kelengkapan (completeness)
Ada 2 macam yaitu : 1. Simple hill climbing 2. Stepest ascent hill climbing Pendakian Bukit (Hill Climbing)
Langkah pencarian (Rich, Elaine and knight, kevin, 1991, Artificial Intelligent, Mc Graw Hill, Inc, second edition) : 1. Mulai dari keadaan awal, lakukan pengujian : jika merupakan tujuan, maka berhenti dan jika tidak, lanjutkan dengan keadaan sekarang sebagai keadaan awal 2. Kerjakan langkah-langkah berikut sampai solusinya ditemukan atau sampai tidak ada operator baru yang akan diaplikasikan pada keadaan sekarang 3. Cari operator yang belum pernah digunakan ; gunakan operator ini untuk mendapatkan keadaan yang baru 4. Evaluasi keadaan baru tersebut a. Jika keadaan baru merupakan tujuan, keluar b. Jika bukan tujuan, namun nilainya lebih baik daripada keadaan sekarang, maka jadikan keadaan baru tersebut menjadi keadaan sekarang c. Jika keadaan baru tidak lebih baik daripada keadaan sekarang, maka lanjutkan iterasi
Kasus 1. Implementasikan algoritma Simple Hill Climbing pada puzzle berikut ini : Keadaan awal Ruang keadaan Goal
Ruang keadaan : Misalkan : x = baris = [1,2,3] y = kolom = [1,2,3] Jadi dalam hal ini ruang keadaan = semua kemungkinan posisi kotak pada puzzle 8 Contoh : posisi kotak 7 pada keadaan awal adalah (3,1)
Aturan/operator : Posisi kotak kosong (x,y) x = baris kotak kososng y = kolom kotak kosong Aturan : 1. Gerakkan kotak kosong ke atas : if x > 1 then (x-1,y) 2. Gerakkan kotak kosong ke bawah : if x < 3 then (x+1,y) 3. Gerakkan kotak kosong ke kanan : if y < 3 then (x,y+1) 4. Gerakkan kotak kososng ke kiri : if y > 1 then (x, y-1)
Fungsi heuristik Fungsi heuristik yang digunakan adalah jumlah kotak yang menempati posisi benar. Kriteria yang dipakai adalah jumlah benar yang paling besar yang dipilih
Iterasi ke-1 Cek keadaan awal goal maka keadaan sekarang = keadaan awal kena operator 1 menjadi Karena posisi benar keadaan sekarang > posisi benar keadaan selanjutnya, maka : keadaan sekarang = tetap
Cek keadaan sekarang goal Lanjut ke operator berikutnya : kena operator ke-2 menjadi karena posisi benar keadaan sekarang > posisi benar keadaan selanjutnya, maka : keadaan sekarang = tetap cek keadaan sekarang goal
Lanjut ke operator berikutnya : kena operator ke-3 menjadi karena posisi benar keadaan sekarang < posisi benar keadaan selanjutnya, maka : keadaan sekarang = keadaan selanjutnya. cek keadaan sekarang goal
Lanjut ke operator selanjutnya. kena operator ke-4 menjadi karena posisi benar keadaan sekarang > posisi benar keadaan selanjutnya, maka keadaan sekarang = tetap
Iterasi ke-2 cek keadaan awal goal dimana keadaan sekarang = keadaan awal kena operator ke-1 menjadi karena posisi benar keadaan sekarang > posisi benar keadaan selanjutnya, maka : keadaan sekarang = tetap
Cek keadaan sekarang goal lanjutkan ke operator berikutnya kena operator ke 2 menjadi karena posisi benar keadaan sekarang > posisi benar keadaan selanjutnya, maka keadaan sekarang = tetap
Cek keadaan sekarang goal lanjutkan ke operator selanjutnya kena operator ke-3 menjadi karena posisi benar keadaan sekarang < posisi benar keadaan selanjutnya maka : keadaan sekarang = keadaan selanjutnya
Cek keadaan sekarang goal lanjutkan ke operator berikutnya kena operator ke 4 karena posisi benar keadaan sekarang > posisi benar keadaan selanjutnya, maka : keadaan sekarang = tetap
Iterasi ke-3 Cek keadaan awal goal keadaan sekarang = keadaan awal kena operator ke-1 menjadi karena posisi benar keadaan sekarang > posisi benar keadaan selanjutnya, maka : keadaan sekarang = tetap
Cek keadaan sekarang goal lanjutkan ke operator berikutnya kena operator ke -2 menjadi karena posisi benar keadaan sekarang < posisi benar keadaan selanjutnya, maka : keadaan sekarang = keadaan selanjutnya
Cek keadaan sekarang = goal, hentikan pencarian solusi
Kasus 2. Implementasikan algoritma Stepest ascent hill climbing pada puzzle berikut ini : Algoritmanya : 1. Mulai dari keadaan awal, lakukan pengujian : jika merupakan tujuan, maka berhenti; dan jika tidak, lanjutkan keadaan sekarang sebagai keadaan awal. 2. Kerjakan hingga tujuan tercapai atau hingga iterasi tidak memberikan perubahan pada keadaan sekarang. a. Tentukan SUCC sebagai nilai heuristik terbaik dari successorsuccessor b. Kerjakan untuk tiap operator yang digunakan oleh keadaan sekarang: Gunakan operator tersebut dan bentuk keadaan baru Evaluasi keadaan baru tersebut. Jika merupakan tujuan, keluar. Jika bukan bandingkan nilai heuristiknya dengan SUCC. Jika lebih baik, jadikan nilai heuristic keadaan baru tersebut sebagai SUCC. Namun jika tidak lebih baik, nilai SUCC tidak berubah. c. Jika SUCC lebih baik daripada nilai heuristik keadaan sekarang, ubah node SUCC menjadi keadaan sekarang
Pada stepest Hill Climbing, ada 3 maslaah yang mungkin yaitu : 1. Local optimum : keadaan semua tetangga lebih buruk atau sama dengan keadaan dirinya. 2. Plateau : keadaan semua tetangga sama dengan keadaan dirinya 3. Ridge : local optimum yang lebih disebabkan karena ketidakmampuan untuk menggunakan 2 operator sekaligus.
Implementasikan puzzle di bawah ini menggunakan algoritma stepest ascent hill climbing Keadaan awal Goal
Ruang keadaan : Misalkan : x = baris = [1,2,3] y = kolom = [1,2,3] Jadi dalam hal ini ruang keadaan = semua kemungkinan posisi kotak pada puzzle 8 Contoh : posisi kotak 7 pada keadaan awal adalah (3,1)
Aturan/operator : Posisi kotak kosong (x,y) x = baris kotak kososng y = kolom kotak kosong Aturan : 1. Gerakkan kotak kosong ke atas : if x > 1 then (x-1,y) 2. Gerakkan kotak kosong ke bawah : if x < 3 then (x+1,y) 3. Gerakkan kotak kosong ke kanan : if y < 3 then (x,y+1) 4. Gerakkan kotak kososng ke kiri : if y > 1 then (x, y-1)
Fungsi heuristik Fungsi heuristik yang digunakan adalah jumlah kotak yang menempati posisi benar. Kriteria yang dipakai adalah jumlah benar yang paling besar yang dipilih
Iterasi ke 1 Cek keadaan awal, ternyata keadaan awal goal Keadaan sekarang = keadaan awal Keadaan sekarang dikenakan 4 operator sekaligus menjadi :
Pilih posisi yang terbesar yaitu : 6, sehingga keadaan sekarang menjadi :
Iterasi ke-2 Cek keadaan awal goal Keadaan sekarang = keadaan awal Keadaan sekarang dikenakan 4 operator sekaligus, menjadi :
Pilih posisi yang terbesar, yaitu 8, sehingga keadaan sekarang menjadi :
Iterasi ke-3 Cek keadaan awal, ternyata keadaan awal goal. Keadaan sekarang = keadaan awal Keadaan sekarang dikenakan 4 operator sekaligus menjadi:
Pilih posisi yang terbesar yaitu 8, sehingga keadaan sekarang menjadi :
Iterasi ke-4 Cek apakah keadaan awal = goal, ternyata iya, maka hentikan proses pencarian. Solusi :
Kasus ke. 3 Menggunakan Metode Best first search Metode best first search merupakan kombinasi dari metode depth first search dan metode breadth first search yang mana pencarian diperbolehkan mengunjungi node yang ada di level yang lebih rendah asalkan node ini memiliki nilai heuristik yang lebih baik.
Algoritma dari best first search : 1. Buat sebush stack, inisialisasi node akar sebagai node pertama. 2. Bila node pertama goal, node dihapus dan diganti dengan anak-anaknya. 3. Selanjutnya, keseluruhan node yang ada di stack di sort ascending berdasarkan fungsi heuristik yang digunakan 4. Bila node pertama goal, ualangi poin (2) 5. Bila node pertama = goal, cari solusi dengan cara menelusuri jalur dari goal ke node akar. 6. selesai
Contoh gambar di bawah ini, menjelaskan tentang pencarian rute terpendek menggunakan algoritma best first search. A adalah keadaan awalnya dan Z adalah tujuannya. Fungsi heuristik yang digunakan adalah nodenode yang mempunyai jarak terpendek.
Iterasi ke - 1 Masukkan node A ke dalam stack Keluarkan A dari stack dan lakukan pengecekan Ternyata A goal A punya anak C(5) dan B(4), masukkan ke stack dan stack di SORT ASCENDING
Stack setelah dilakukan sort ascending Representasi keadaan
Iterasi ke-2 Keluarkan B dari stack dan cek Ternyata B goal B punya anak D(3), masukkan ke stack dan stack di sort ascending.
Representasi keadaan :
Iterasi ke-3 Keluarkan D dari stack dan cek Ternyata D goal D punya anak E(4), lalu masukkan ke stack dan lakukan sort ascending
Representasi keadaan :
Iterasi ke-4 Keluarkan E dari stack dan cek Ternyata E Goal E punya anak G(6), masukkan ke stack dan laukan sort ascending
Representasi keadaan :
Iterasi ke-5 Keluarkan C dari stack dan cek Ternyata C Goal C punya anak E(3) dan F(2), masukkan F(2) ke stack dan lakukan sort ascending
Representasi keadaan
Iterasi ke-6 Keluarkan F dari stack dan cek Ternyata F Goal F punya anak I(4), lalu masukkan ke stack dan lakukan sort ascending
Representasi keadaan
Iterasi ke-7 Keluarkan E dari stack dan cek, apakah E goal atau bukan Ternyata E Goal E punya anak G(6), dan sudah ada di stack, jadi tidak dimasukkan ke dalam stack
Representasi ruang keadaan
Iterasi ke-8 Keluarkan I dari stack dan lakukan pengecekan Ternyata I Goal Karena I tidak punya anak, maka gunakan node I untuk menghapus orang tuanya direpresentasi keadaan.
Representasi keadaan
Iterasi ke-9 Keluarkan G dari stack dan lakukan pengecekan Ternyata G Goal G punya anak H(2), J(4), Z(7), F(8). Masukkan semua anak ke dalam stack dan lakukan sort ascending.
Representasi keadaan
Iterasi ke 10 Keluarkan H dari stack dan lakukan pengecekan Ternyata H Goal H punya anak Z(6), masukkan ke dalam stack dan lakukan sort ascending
Representasi keadaan
Iterasi ke 11 Keluarkan J dari stack dan lakukan pengecekan Ternyata J Goal J punya anak K(1), masukkan ke stack dan lakukan sort ascending
Representasi ruang keadaan
Iterasi ke 12 Keluarkan K dari stack dan lakukan pengecekan Ternyata K Goal Karena K tidak punya anak, gunakan untuk menghapus orang tuanya di representasi keadaan
Representasi keadaan
Iterasi ke 13 Keluarkan Z dari stack dan lakukan pengecekan Ternyata Z = Goal, maka hentikan pencarian