HEURISTIC SEARCH Irvanizam Zamanhuri, M.Sc Dr. Taufiq A. Gani, M.EngSc Jurusan Informatika Universitas Syiah Kuala http://informatika.unsyiah.ac.id/irvanizam
Travelling Salesmen Problem Seorang salesman ingin mengunjungi sejumlah n kota. Akan dicari rute terpendek di mana se7ap kota hanya boleh dikunjungi tepat 1 kali.
Heuristic Search Pencarian buta 7dak selalu dapat diterapkan dengan baik, hal ini disebabkan waktu aksesnya yang cukup lama serta besarnya memori yang dibutuhkan Kelemahan ini dapat diatasi jika ada informasi tambahan (fungsi heuris7k) dari domain yang bersangkutan Heuris7c adalah Suatu proses yang mungkin dapat menyelesaikan suatu masalah tetapi 7dak ada jaminan bahwa solusi yang dicari selalu dapat ditemukan Fungsi Heuris7k adalah fungsi yang melakukan pemetaan (mapping) dari diskripsi keadaan masalah (problema) ke pengukur kebutuhan, umumnya direpresentasikan berupa angka.
Heuristic Search AI menggunakan heuris7k dalam 2 situasi dasar : Persoalan/problema yang mungkin memiliki solusi eksak, namun biaya perhitungan untuk menemukan solusi tersebut sangat 7nggi dalam kebanyakan persoalan (seper7 catur), ruang keadaan bertambah secara luar biasa seiring dengan jumlah Persoalan yang mungkin 7dak memiliki solusi eksak karena ambiquitas (ke7dakpas7an) mendasar dalam pernyataan persoalan atau data yang tersedia, diagnosa medis merupakan salah satu contohnya. Heuris7k hanyalah sebuah cara menerka langkah berikutnya yang harus diambil dalam memecahkan suatu persoalan berdasarkan informasi yang ada/tersedia.
Metode Pencarian Heuristic Bangkitkan dan Uji (Generate and Test) HILL CLIMBING Simple Hill Climbing Steepest = Ascent Hill Climbing BEST FIRST SEARCH Greedy Best First Search Algoritma A*
Generate dan Test (1/2) Metode Generate- and- Test (GT) adalah metode yang paling sederhana dalam teknik pencarian heuris7k. Di dalam GT, terdapat dua prosedur pen7ng: 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 dan Test (2/2) Dengan penggunaan memori yang sedikit, DFS bisa digunakan sebagai prosedur pembangkit yang menghasilkan suatu solusi. Prosedur Test bisa menggunakan fungsi heuris7k.
Algoritma Generate dan Test 1. Bangkitkan suatu kemungkinan solusi. Solusi bisa berupa suatu keadaan (state) tertentu. Solusi juga bisa berupa sebuah jalur dari satu posisi asal ke posisi tujuan, seper7 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.
CONTOH KASUS TSP (Travelling Salesmen Problem) Seorang salesman ingin mengunjungi sejumlah n kota. Akan dicari rute terpendek di mana se7ap kota hanya boleh dikunjungi tepat 1 kali. Jarak antara 7ap- 7ap kota sudah diketahui. Misalkan ada 4 kota dengan jarak antara 7ap- 7ap kota seper7 terlihat pada gambar berikut.
CONTOH KASUS TSP(Travelling Salesmen Problem) 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 Dst Untuk mengetahui jumlah seluruh kombinasi abjad yang mungkin menjadi sebuah solusi à n!
CONTOH KASUS TSP(Travelling Salesmen Problem) Pilih keadaaan awal, misal ABCD dengan panjang lintasan 19 Lakukan backtracking untuk mendapatkan lintasan ABDC, misal panjang lintasan 18 Bandingkan lintasan ABDC dengan sebelumnya, lintasan terpendek akan dipilih untuk dilakukan backtracking lagi. Solusi terbaik adalah menemukan lintasan terpendek dari kota yang dilewa7.
CONTOH KASUS TSP(Travelling Salesmen Problem) ì Dibuat Tabel
CONTOH KASUS TSP(Travelling Salesmen Problem)
Generate dan Test Kelemahan : Membangkitkan semua kemungkinan sebelum dilakukan pengujian Membutuhkan waktu yang cukup besar dalam pencariannya
Hill Climbing Terdapat 2 jenis HC yang sedikit berbeda, yaitu 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.
Simple Hill Climbing Algoritma Mulai dari keadaan awal, (ini*al state) lakukan pengujian, jika state (keadaan) merupakan goal state (tujuan) à berhen7 jika state (keadaan) bukan merupakan goal state (tujuan) à lanjutkan dengan keadaan sekarang sebagai keadaan awal. Ulangi langkah berikut hingga solusi ditemukan atau sampai 7dak ada operator baru yang diaplikasikan pada keadaan sekarang Pilih operator yang belum pernah digunakan Gunakan operator untuk mendapatkan keadaan yang baru Evaluasi keadaan baru tersebut : Jika keadaan baru adalah tujuan à keluar Jika 7dak tetapi nilainya lebih baik dari keadaan sekarang, à jadikan keadaan baru tersebut menjadi keadaan sekarang Jika keadaan baru 7dak lebih baik dari keadaan sekarang à lanjutkan iterasi
Simple Hill Climbing Contoh Kasus : TSP Operator yg digunakan adalah operator yang bisa menghasilkan kombinasi lintasan kota yang berbeda, yaitu dengan menukar urutan posisi 2 kota dalam suatu lintasan. Bila ada n kota maka kombinasi lintasan : n! 2! n! 2 ( )! Jika dari soal terdapat 4 kota maka kombinasi ada 6 yaitu : 1. (1,2) tukar urutan posisi kota ke- 1 dg kota ke- 2 2. (2,3) tukar urutan posisi kota ke- 2 dg kota ke- 3 3. (3,4) tukar urutan posisi kota ke- 3 dg kota ke- 4 4. (4,1) tukar urutan posisi kota ke- 4 dg kota ke- 1 5. (2,4) tukar urutan posisi kota ke- 2 dg kota ke- 4 6. (1,3) tukar urutan posisi kota ke- 1 dg kota ke- 3
Simple Hill Climbing Contoh Kasus : TSP Pada pencarian ini, penggunaan urutan dari kombinasi harus konsisten. Setelah kombinasi ditentukan, gunakan algoritma pengerjaan sesuai aturan metode simple hill climbing. Misalnya keadaan awal adalah ABCD
Simple Hill Climbing Contoh Kasus : TSP dengan 6 operator A 8 B 7 3 4 5 D 6 C
Penjelasan (1/2) Keadaan awal, lintasan ABCD (=19). Level pertama, hill climbing mengunjungi BACD (=17), BACD (=17) < ABCD (=19), sehingga BACD menjadi pilihan selanjutnya dengan operator Tukar 1,2 Level kedua, mengunjungi ABCD, karena operator Tukar 1,2 sudah dipakai BACD, maka pilih node lain yaitu BCAD (=15), BCAD (=15) < BACD (=17) Level ke7ga, mengunjungi CBAD (=20), CBAD (=20) > BCAD (=15), maka pilih node lain yaitu BCDA (=18), pilih node lain yaitu DCAB (=17), pilih node lain yaitu BDAC (=14), BDAC (=14) < BCAD (=15)
Penjelasan (2/2) Level keempat, mengunjungi DBAC (=15), DBAC(=15) > BDAC (=14), maka pilih node lain yaitu BADC (=21), pilih node lain yaitu BDCA (=13), BDCA (=13) < BDAC (=14) Level kelima, mengunjungi DBCA (=12), DBCA (=12) < BDCA (=13) Level keenam, mengunjungi BDCA, karena operator Tukar 1,2 sudah dipakai DBCA, maka pilih node lain yaitu DCBA, pilih DBAC, pilih ABCD, pilih DACB, pilih CBDA Karena sudah 7dak ada node yang memiliki nilai heuris7k yang lebih kecil dibanding nilai heuris7k DBCA, maka node DBCA (=12) adalah lintasan terpendek (SOLUSI)
Simple Hill Climbing Contoh Kasus : TSP dengan 6 operator Pencarian dilihat dari anak kiri, bila nilai heuris7k anak kiri lebih baik, maka dibuka untuk pencarian selanjutnya, bila 7dak baru melihat tetangga dari anak kiri tersebut. Solusi yang dihasilkan adalah node DBCA (=12) à lintasan terpendek dibanding yang lain. Kelemahannya : 1. 7dak semua solusi dapat ditemukan seper7 pada metode generate and test (2 solusi). 2. pembatasan kombinasi operator à penemuan solusi yang 7dak maksimal
Simple Hill Climbing Masalah- masalah yang mungkin 7mbul pada prosedur Hill Climbing : Maksimum Lokal Suatu keadaaan yang lebih baik daripada semua tetangganya namum masih belum lebih baik dari suatu keadaan lain yang jauh letaknya darinya. Daratan (Plateau) Suatu daerah datar dari ruang pencarian (search) dimana semua himpunan keadaan tetangganya memiliki nilai yang sama. Punggung (Ridge) Suatu daerah ruang pencarian (search) yang lebih 7nggi daripada daerah sekitarnya, namun 7dak dapat dibalikkan oleh langkah- langkah tunggal ke arah manapun.
Simple Hill Climbing Solusinya : Melakukan langkah balik (tracking) ke simpul yang lebih awal dan mencoba bergerak ke arah yang lain. Melakukan lompatan besar ke suatu arah untuk mencoba bagian ruang pencarian yang baru. Menerapkan dua atau lebih aturan sebelum melakukan uji coba. Ini bersesuaian dengan bergerak kebeberapa arah sekaligus.
STEEPEST ASCENT HILL CLIMBING Hampir sama dengan simple hill climbing, hanya saja gerakan pencarian 7dak dimulai dari kiri, tetapi berdasarkan nilai heuris7k terbaik.
Keadaan awal, lintasan ABCD (=19). Level pertama, hill climbing memilih nilai heuristik terbaik yaitu ACBD (=12) sehingga ACBD menjadi pilihan selanjutnya. Level kedua, hill climbing memilih nilai heuristik terbaik, karena nilai heuristik lebih besar dibanding ACBD, maka hasil yang diperoleh lintasannya tetap ACBD (=12)
BEST FIRST SEARCH Merupakan kombinasi kelebihan teknik depth first search dan breadth first search dengan mengambil kelebihan dari kedua metode tersebut. Pencarian diperkenankan mengunjungi node yang ada di level yg lebih rendah jika ternyata node pada level yg lebih 7nggi ternyata memiliki nilai heuris7k yg buruk. Untuk mengimplementasikan metode ini, dibutuhkan 2 antrian yang berisi node- node, yaitu : OPEN à berisi simpul- simpul yang masih memiliki peluang (peluangnya masih terbuka) untuk terpilih sebagai simpul terbaik. CLOSED à berisi simpul- simpul yang 7dak mungkin terpilih sebagai simpul terbaik (peluang untuk terpilih sudah tertutup).
BEST FIRST SEARCH Best First Search akan membangkitkan node berikutnya dari semua node yang pernah dibangkitkan. Pertanyaannya : Bagaimana menentukan sebuah node terbaik saat ini? Dilakukan dengan menggunakan biaya perkiraan Bagaimana caranya menentukan biaya perkiraan? Biaya perkiraan dapat ditentukan dengan fungsi heuris*c
Best First Search Fungsi Heuristic Suatu fungsi heuris7c dikatakan baik jika bisa memberikan biaya perkiraan yang mendeka7 biaya sebenarnya. Semakin mendeka7 biaya sebenarnya, fungsi heuris7c tersebut semakin baik.
Contoh 100 16 A B C 10 D ( 20, 10 ) ( 35, 10 ) ( 55, 10 ) ( 65, 10 ) Dalam kasus pencarian rute terpendek, biaya sebenarnya adalah panjang jalan raya yang sebenarnya. Sedangkan fungsi heuristiknya adalah garis lurus dari 1 kota ke kota lainnya. Untuk itu, bisa digunakan rumus berikut : d ab = ( y b y a ) 2 + ( x b x a ) 2 d BC = 20 d AB = 15 d CD = 10
Algoritma Best First Search Greedy Best First Search Algoritma A*
Greedy Best First Search Algoritma ini merupakan jenis algoritma Best First Search yg paling sederhana Algoritma ini hanya memperhitungkan biaya perkiraan saja f(n) = h (n) Karena hanya memperhitungkan biaya perkiraan yang belum tentu kebenarannya, maka algoritma ini menjadi Bdak opbmal
90 10 S 0 35 15 E 20 A 25 30 D 10 J B C F 5 40 50 40 25 H 52 40 M 25 L K 30 40 80 G n S A B C D E F G H J K L M h (n) 80 80 60 70 85 74 70 0 40 100 30 20 70
10 10 S 35 A 25 30 B C D E LANGKAH 1 n S A B C D E h (n) 80 80 60 70 85 74
10 10 S 35 A 25 30 B C 5 F 50 K E D LANGKAH 2 n A C D E F K h (n) 80 70 85 74 70 30
10 S A 25 30 B 5 F 50 K 30 10 35 D C LANGKAH 3 G E n A C D E F G h (n) 80 70 85 74 70 0
10 A 25 B 5 F 50 K S 30 30 10 35 D C SOLUSI G E S - B - K - G Dengan Total Jarak = 105
PENJELASAN Dari contoh di atas, Greedy akan menemukan solusi S- B- K- G dengan total jarak 105 Padahal ada solusi lain yg lebih op7mal, yakni S- A- B- F- K- G dengan total jarak hanya 95 Dari situ bisa disimpulkan bahwa Greedy Best First Search 7dak bisa menemukan solusi yang op7mal
ALGORITMA A* Berbeda dengan Greedy, algoritma ini akan menghitung fungsi heuris7c dengan cara menambahkan biaya sebenarnya dengan biaya perkiraan. Sehingga didapatkan rumus : f(n) = g(n) + h (n) g(n) = Biaya sebenarnya dari Node Awal ke Node n h (n) = Biaya perkiraan dari Node n ke Node Tujuan Dengan perhitungan biaya seper7 ini, algoritma A* adalah complete dan opbmal
ALGORITMA A* Algoritma A* juga menggunakan dua senarai, yaitu : OPEN CLOSED Terdapat 7ga kondisi bagi se7ap suksessor yang dibangkitkan, yaitu : Sudah berada di OPEN Sudah berada di CLOSE Tidak berada di OPEN maupun CLOSE
ALGORITMA A* Jika Suksessor sudah pernah berada di OPEN, maka : Dilakukan pengecekan apakah perlu pengubahan parent atau 7dak tergantung pada nilai g nya melalui parent lama atau parent baru Jika melalui parent baru memberikan nilai g yang lebih kecil, maka dilakukan pengubahan parent. Jika pengubahan parent dilakukan, maka dilakukan perbaruan (update) nilai g dan f pada suksessor tersebut. Dengan perbaruan ini, suksessor tersebut memiliki kesempatan yang lebih besar untuk terpilih sebagai simpul terbaik
ALGORITMA A* Jika Suksessor sudah pernah berada di CLOSED, maka: Dilakukan pengecekan apakah perlu pengubahan parent atau 7dak. Jika ya, maka dilakukan perbaruan(update) nilai g dan nilai f pada suksessor tersebut pada semua anak cucunya yang sudah pernah berada di OPEN. Dengan perbaruan ini, maka semua anak cucunya memiliki kesempatan lebih besar untuk terpilih sebagai simpul terbaik.
ALGORITMA A* Jika suksessor 7dak berada di OPEN maupun di CLOSED, maka : Suksessor tersebut dimasukkan ke dalam OPEN Tambahkan suksessor tersebut sebagai suksessornya best node. Hitung biaya suksessor tersebut dengan rumus f=g+h
90 10 E 10 S 35 15 20 A 25 30 D 10 J B C F 5 40 50 40 25 H 52 40 M 25 L K 30 40 80 G n S A B C D E F G H J K L M h (n) 80 80 60 70 85 74 70 0 40 100 30 20 70
10 10 S 35 A 25 30 B C D E LANGKAH 1 n S A B C D E h (n) 80 80 60 70 85 74 g(n) 0 10 25 30 35 10 f(n) 80 90 85 100 120 84
10 10 S 35 A 25 30 B C E 15 D 20 J LANGKAH 2 n A B C D J h (n) 80 60 70 85 100 g(n) 10 25 30 25 30 f(n) 90 85 100 110 130
10 S 25 A 30 10 B 5 F 50 K 10 35 C E 15 D 20 LANGKAH 3 J n A C D J F K h (n) 80 70 85 100 70 30 g(n) 10 30 25 30 30 75 f(n) 90 100 110 130 100 105
90 10 S 10 35 A 25 30 10 B C 5 F 50 K G D 15 E 20 J LANGKAH 4 n C D J F K G h (n) 70 85 100 70 30 0 g(n) 30 25 30 25 70 100 f(n) 100 110 130 95 100 100
90 10 10 S 35 A 25 30 10 B C 5 F 50 40 K G E 15 D 20 J LANGKAH 5 n C D J K G h (n) 70 85 100 30 0 g(n) 30 25 30 65 100 f(n) 100 110 130 95 100
90 10 10 S 35 A 25 30 10 B C 5 F 50 40 K 30 G E 15 D 20 LANGKAH 6 J n C D J G h (n) 70 85 100 0 g(n) 30 25 30 95 f(n) 100 110 130 95
90 10 10 S 35 A 25 30 10 B C 5 F 50 40 K 30 G E 15 D 20 J SOLUSI : S - A - B - F - K - G Dengan Total Jarak = 95
KESIMPULAN Algoritma A* lebih baik dalam melakukan pencarian heuris7c daripada Greedy Best First Search karena dapat mengasilkan solusi yang op7mal.