Informed (Heuristic) Search
Informed (Heuristic) Search Pencarian buta tidak selalu dapat diterapkan dengan baik, hal ini disebabkan waktu aksesnya yang cukup lama serta besarnya memori yang dibutuhkan. Kelemahan ini sebenarnya dapat diatasi jika ada informasi tambahan (fungsi heuristik) dari domain yang bersangkutan. Fungsi heuristik digunakan untuk menghitung biaya perkiraan dari suatu simpul tertentu menuju ke simpul tujuan.
Fungsi heuristik Misalkan pada kasus 8-puzzle Ada 4 operator yang dapat digunakan untuk menggerakkan dari satu keadaan (state) ke keadaan yang baru. Geser ubin kosong ke kiri Geser ubin kosong ke kanan Geser ubin kosong ke atas Geser ubin kosong ke bawah
Fungsi heuristik
Fungsi heuristik Informasi yang diberikan dapat berupa jumlah ubin yang menempati posisi yang benar. Jumlah yang lebih tinggi adalah yang diharapkan. Sehingga langkah selanjutnya yang harus dilakukan adalah menggeser ubin kosong ke kiri.
Fungsi heuristik Informasi yang diberikan berupa straight-line distance (jarak dalam garis lurus) antara tiap kota dengan Bucharest.
Informed (Heuristic) Search Di sini hanya akan dibahas 6 metode yang tergolong informed search, yaitu: Generate and Test Simple Hill Climbing Steepest-Ascent Hill Climbing Simulated Annealing Greedy Best-First Search A*
Generate-and-Test (GT) Metode Generate-and-Test (GT) adalah metode yang paling sederhana dalam teknik pencarian heuristik. Di dalam GT, terdapat dua prosedur penting: Pembangkit (generate), yang membangkitkan semua solusi yang mungkin. Test, yang menguji solusi yang dibangkitkan tersebut. Algoritma GT menggunakan prosedur Depth First Search karena suatu solusi harus dibangkitkan secara lengkap sebelum dilakukan Test.
Generate-and-Test (GT) Dengan penggunaan memori yang sedikit, DFS bisa digunakan sebagai prosedur pembangkit yang menghasilkan suatu solusi. Prosedur Test bisa menggunakan fungsi heuristik.
Algoritma Generate-and-Test Bangkitkan sebuah solusi yang mungkin. Solusi bisa berupa suatu keadaan (state) tertentu. Solusi juga bisa berupa sebuah jalur dari satu posisi asal ke posisi tujuan, seperti dalam kasus pencarian rute dari satu kota asal ke kota tujuan. Tes apakah solusi yang dibangkitkan tersebut adalah sebuah solusi yang bisa diterima sesuai dengan kriteria yang diberikan. Jika solusi telah ditemukan, keluar. Jika belum, kembali ke langkah 1.
Generate-and-Test (GT) Contoh: Traveling Salesman Problem (TSP) Seorang salesman ingin mengunjungi sejumlah n kota. Akan dicari rute terpendek di mana setiap kota hanya boleh dikunjungi tepat 1 kali. Jarak antara tiap-tiap kota sudah diketahui. Misalkan ada 4 kota dengan jarak antara tiap-tiap kota seperti terlihat pada gambar berikut.
Generate-and-Test (GT) Penyelesaian dengan menggunakan Generate-and-Test dilakukan dengan membangkitkan solusi-solusi yang mungkin dengan menyusun kota-kota dalam urutan abjad, yaitu: A-B-C-D A-B-D-C A-C-B-D A-C-D-B dan seterusnya
Generate-and-Test Misalkan kita mulai dari node A. Kita pilih sebagai keadaan awal adalah lintasan ABCD dengan panjang lintasan = 19. Kemudian kita lakukan backtracking untuk mendapatkan lintasan ABDC dengan panjang lintasan = 18.
Generate-and-Test Lintasan ini kita bandingkan dengan lintasan ABCD, ternyata ABDC < ABCD, sehingga lintasan terpilih adalah ABDC. Kita lakukan lagi backtracking untuk mendapatkan lintasan ACBD (=12), ternyata ACBD < ABDC, maka lintasan terpilih sekarang adalah ACBD. Demikian seterusnya hingga ditemukan solusi yang sebenarnya. Salah satu kelemahan dari metode ini adalah perlunya dibangkitkan semua kemungkinan solusi sehingga membutuhkan waktu yang cukup besar dalam pencariannya.
Hill Climbing (HC) Terdapat 2 jenis HC yang sedikit berbeda, yakni Simple Hill Climbing (HC sederhana) dan Steepest-Ascent Hill Climbing (HC dengan memilih kemiringan yang paling tajam/curam). Simple HC, langsung memilih new state yang memiliki jalur yang lebih baik (“curam”) daripada jalur-jalur sebelumnya tanpa memperhitungkan jalur-jalur lain yang lebih “curam”. Sedangkan Steepest-Ascent HC, akan mengevaluasi semua state yang berada di bawah current state dan memilih state dengan jalur yang paling “curam”.
Algoritma Simple HC Evaluasi initial state. Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika state ini bukan goal state, lanjutkan proses dengan initial state sebagai current state. Ulangi sampai solusi ditemukan atau sampai tidak ada operator baru yang dapat diaplikasikan terhadap current state: Pilih sebuah operator yang belum diaplikasikan terhadap current state dan aplikasikan operator tersebut sehingga menghasilkan new state. Evaluasi new state: Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika state ini bukan goal state tetapi lebih baik daripada current state, maka jadikan state ini sebagai current state. Jika state ini tidak lebih baik daripada current state, kembali ke langkah 2.a.
Pencarian solusi menggunakan Simple HC S menyatakan intial state, sedangkan G menyatakan goal state. Variable f di setiap state menyatakan biaya antara state tersebut dengan goal state. Nilai f pada goal state = 0.
Pencarian solusi menggunakan Simple HC Simple HC langsung memilih state B sebagai next state karena nilai f pada state B lebih kecil dibandingkan nilai f pada state S. Di sini tidak dipertimbangkan nilai f pada state C. Misalkan pada akhir iterasi, Simple HC mengembalikan solusi G yang berada di level 6, padahal ada solusi yang lebih baik pada level 2. Dengan demikian Simple HC tidak optimal.
Algoritma Steepest-Ascent HC Evaluasi initial state. Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika state ini bukan goal state, lanjutkan proses dengan initial state sebagai current state. Ulangi sampai solusi ditemukan atau sampai tidak ada perubahan terhadap current state: Misalkan X adalah suatu state yang menjadi suksesor dari current state. Untuk setiap operator yang bisa dilakukan terhadap current state, kerjakan: Aplikasikan operator tersebut dan bangkitkan new state. Evaluasi new state. Jika merupakan goal state, kembalikan state ini sebagai solusi dan keluar dari program. Jika bukan goal state, bandingkan new state dengan X. Jika new state lebih baik daripada X, maka ganti X dengan new state. Jika tidak lebih baik, X tidak perlu diganti. Jika X lebih baik dari current state, maka ganti current state dengan X
Pencarian solusi menggunakan Steepest-Ascent HC Dari state S, Steepest-Ascent HC akan mengevaluasi semua state yang menjadi next state atau suksesornya, yaitu A, B, dan C. Dari ketiga suksesor tersebut dipilih suksesor dengan nilai f yang terkecil. State C akan dipilih sebagai suksesor S. Misalkan, hasil penelusuran menemukan solusi G di level 4, padahal ada solusi optimal di level 2, dalam hal ini Steepest-Ascent HC dikatakan terjebak pada solusi lokal atau local minimum. Jadi Steepest-Ascent HC juga tidak optimal.
Simulated Anealing (SA) SA memanfaatkan analogi cara pendinginan dan pembekuan metal menjadi sebuah kristal dengan energi yang minimal. SA menggunakan sebuah rumus probabilitas yang memungkinkannya bisa keluar dari local minimum. Ketika new state tidak lebih baik dari current state, maka new state tersebut masih mungkin dipilih dengan probabilitas sebagai berikut: p(E) = e-E/T ……………(4.1)
Algoritma Simulated Annealing Evaluasi initial state. Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika state ini bukan goal state, lanjutkan proses dengan initial state sebagai current state. Inisialisasi BEST-SO-FAR dengan current state. Inisialisasi T sesuai dengan annealing schedule. Ulangi sampai solusi ditemukan atau sampai tidak ada lagi operator baru yang dapat diaplikasikan terhadap current state: Pilih sebuah operator yang belum diaplikasikan terhadap current state dan aplikasikan operator tersebut sehingga menghasilkan new state. Evaluasi new state. Hitung: E = f(current state) – f(new state) Jika new state adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program. Jika new state bukan goal tetapi lebih baik daripada current state (E > 0), maka set current state ke new state. Juga set BEST-SO-FAR ke new state.
Algoritma Simulated Annealing Jika new state tidak lebih baik daripada current state (E ≤ 0), maka set current state ke new state dengan probabilitas p seperti didefinisikan oleh persamaan 4.1 di atas. Langkah ini biasanya diimplementasikan dengan membangkitkan sebuah bilangan acak dalam interval [0,1]. Jika bilangan tersebut lebih besar dari p, maka jangan mengerjakan apa pun. Jika diperlukan, revisi nilai T berdasarkan annealing schedule. Kembalikan BEST-SO-FAR sebagai solusi.
Pencarian solusi menggunakan Simulated Annealing Misalkan S adalah current state dan A adalah new state. Ketika dievaluasi, ternyata new state tidak lebih baik daripada current state. Tetapi, ketika dibangkitkan bilangan acak dalam interval [0,1] menghasilkan angka kurang dari probabilitas p, maka A dipilih sebagai current state. Pada akhirnya, SA dapat menemukan solusi optimum di level 2. Karena bergantung pada suatu nilai probabilitas, maka SA tidak selalu optimal.
Best First Search Sesuai dengan namanya, Best First Search membangkitkan simpul berikutnya dari sebuah simpul (yang sejauh ini) terbaik di antara semua leaf node (simpul daun) yang pernah dibangkitkan. Penentuan simpul terbaik dapat dilakukan dengan menggunakan informasi berupa biaya perkiraan dari suatu simpul menuju ke goal atau gabungan antara biaya sebenarnya dan biaya perkiraan tersebut.
Best First Search Terdapat 2 jenis algoritma Best First Search: Greedy Best First Search, yang hanya memperhitungkan biaya perkiraan saja. Algoritma A* yang memperhitungkan gabungan dua biaya, biaya sebenarnya dan biaya perkiraan. Secara informal, pseudo code algoritma Best First Search diilustrasikan berikut ini.
Best First Search Pada algoritma tersebut, OPEN adalah list yang digunakan untuk menyimpan simpul-simpul yang pernah dibangkitkan dan nilai heuristiknya telah dihitung tetapi belum dipilih sebagai simpul terbaik. CLOSED digunakan untuk menyimpan simpul-simpul yang sudah pernah dibangkitkan dan sudah pernah terpilih sebagai simpul terbaik.
Algoritma Best First Search OPEN berisi initial state dan CLOSED masih kosong. Ulangi sampai goal ditemukan atau sampai tidak ada lagi node di dalam OPEN: Ambil simpul terbaik yang ada di OPEN. Jika simpul tersebut sama dengan goal, maka sukses. Jika tidak, masukkan simpul tersebut ke dalam CLOSED. Bangkitkan semua suksesor dari simpul tersebut. Untuk setiap suksesor kerjakan: Jika suksesor tersebut belum pernah dibangkitkan, evaluasi suksesor tersebut, tambahkan ke OPEN, dan catat parent atau orang tuanya. Jika suksesor tersebut sudah pernah dibangkitkan, ubah parent-nya jika jalur melalui parent ini lebih baik daripada jalur melalui parent yang sebelumnya. Selanjutnya perbarui biaya untuk suksesor tersebut dan nodes lain yang berada di level bawahnya.
Greedy Best First Search Greedy Best First Search hanya memperhitungkan biaya perkiraan (estimated cost) saja, yakni: f(n) = h(n) di mana h(n)= perkiraan biaya dari simpul n ke goal. Biaya yang sebenarnya (actual cost) tidak diperhitungkan. Dengan hanya memperhitungkan biaya perkiraan yang belum tentu kebenarannya maka algoritma ini menjadi tidak optimal.
Greedy Best First Search f(n) = h(n) h(n) = jarak garis lurus dari node n ke goal (Bucharest)
Greedy Best-First Search
Greedy Best-First Search
Greedy Best-First Search
Greedy Best-First Search Solusi yang ditemukan adalah: Arad, Sibiu, Fagaras, Bucharest. Ternyata solusi ini tidak optimal karena ada solusi lain yang lebih baik, yaitu: Arad, Sibiu, Rimnicu Vilcea, Pitesti, Bucharest yang lebih pendek 32 kilometer.
Algoritma A* Algoritma ini merupakan algoritma Best First Search yang menggabungkan Uniform Cost Search dan Greedy Best First Search. Algoritma ini memperhitungkan biaya dari biaya sebenarnya ditambah dengan biaya perkiraan. Dalam notasi matematika dituliskan sebagai: f(n) = g(n) + h(n) g(n) = biaya sebenarnya untuk mencapai simpul n h(n) = perkiraan biaya dari simpul n ke goal. f(n) = perkiraan total biaya jalur yang melalui simpul n ke goal. Dengan perhitungan biaya seperti ini, algoritma A* adalah complete dan optimal.
A* f(n) = g(n) + h(n) g(n) = biaya sebenarnya untuk mencapai sebuah node (kota) n h(n) = jarak garis lurus dari node n ke goal (Bucharest)
A* search example
A* search example
A* search example
A* search example
A* search example
A* search example
A* search example Solusi yang ditemukan adalah solusi optimal, yaitu: Arad, Sibiu, Rimnicu Vilcea, Pitesti, Bucharest.