Heuristic Search.pdf

Post on 26-Jan-2016

33 views 2 download

Transcript of Heuristic Search.pdf

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 ?????

Informed (Heuristic) Search

• Di sini hanya akan dibahas 5 metode yang tergolong informed search, yaitu:

• Generate and Test

• Simple Hill Climbing

• Steepest-Ascent Hill Climbing

• 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

1. 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.

2. Tes apakah solusi yang dibangkitkan tersebut adalah sebuah solusi yang bisa diterima sesuai dengan kriteria yang diberikan.

3. 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 1. 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.

2. Ulangi sampai solusi ditemukan atau sampai tidak ada operator baru yang dapat diaplikasikan terhadap current state:

a) Pilih sebuah operator yang belum diaplikasikan terhadap current state dan aplikasikan operator tersebut sehingga menghasilkan new state.

b) Evaluasi new state:

I. Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dan keluar dari program.

II. Jika state ini bukan goal state tetapi lebih baik daripada current state, maka jadikan state ini sebagai current state.

III. 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 akan memilih state A sebagai next state, tetapi karena nilai state A tidak lebih baik dari current state (S), maka akan dipilih state berikutnya

• 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

1. 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.

2. Ulangi sampai solusi ditemukan atau sampai tidak ada perubahan terhadap current state:

a) Misalkan SUK adalah suatu state yang menjadi suksesor dari current state.

b) Untuk setiap operator yang bisa dilakukan terhadap current state, kerjakan:

I. Aplikasikan operator tersebut dan bangkitkan new state.

II. Evaluasi new state. Jika merupakan goal state, kembalikan state ini sebagai solusi dan keluar dari program. Jika bukan goal state, bandingkan new state dengan SUK. Jika new state lebih baik daripada SUK, maka ganti SUK dengan new state. Jika tidak lebih baik, SUK tidak perlu diganti.

c) Jika SUK lebih baik dari current state, maka ganti current state dengan SUK

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.

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.

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) = fungsi heuristik - 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.

Sifat-sifat greedy best-first search

• Complete? Tidak – dapat terjebak pada suatu loop, misalnya:

– Iasi Neamt Iasi Neamt

• Optimal? Tidak

• Time? O(bm), tetapi heuristik yang baik akan mengakibatkan perbaikan yang dramatis.

• Space? O(bm) – menyimpan semua simpul di memori.

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.

Algoritma 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)

Contoh Pencarian Algoritma A*

Contoh Pencarian Algoritma A*

Contoh Pencarian Algoritma A*

Contoh Pencarian Algoritma A*

Contoh Pencarian Algoritma A*

Contoh Pencarian Algoritma A*

• Solusi yang ditemukan adalah solusi optimal, yaitu: Arad, Sibiu, Rimnicu Vilcea, Pitesti, Bucharest.

Contoh Pencarian Algoritma A*