HEURISTIC SEARCH Dian Eka R Pencarian Heuristik heuristic

  • Slides: 74
Download presentation
HEURISTIC SEARCH Dian Eka R

HEURISTIC SEARCH Dian Eka R

Pencarian Heuristik (heuristic searching)? § § merupakan suatu strategi untuk melakukan proses pencarian ruang

Pencarian Heuristik (heuristic searching)? § § merupakan suatu strategi untuk melakukan proses pencarian ruang keadaan (state space) suatu problema secara selektif, yang memandu proses pencarian yang kita lakukan di sepanjang jalur yang memiliki kemungkinan sukses paling besar, dan mengesampingkan usaha yang bodoh dan memboroskan waktu.

Pencarian Heuristik (heuristic searching)? Heuristik adalah sebuah teknik yang mengembangkan efisiensi dalam proses pencarian,

Pencarian Heuristik (heuristic searching)? Heuristik adalah sebuah teknik yang mengembangkan efisiensi dalam proses pencarian, namum dengan kemungkinan mengorbankan kelengkapan (completeness

Pencarian Heuristik (heuristic searching)? Untuk dapat menerapkan heuristik tersebut dengan baik dalam suatu domain

Pencarian Heuristik (heuristic searching)? Untuk dapat menerapkan heuristik tersebut dengan baik dalam suatu domain tertentu, diperlukan suatu Fungsi Heuristik. Fungsi heuristik ini digunakan untuk mengevaluasi keadaan-keadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan.

Jenis-jenis Heuristic Searching ¨ Generate and Test. ¨ Hill Climbing. ¨ Best First Search.

Jenis-jenis Heuristic Searching ¨ Generate and Test. ¨ Hill Climbing. ¨ Best First Search. ¨ Alpha Beta Prunning. ¨ Means-End-Anlysis. ¨ Constraint Satisfaction

Metode Pencarian Heuristik Bangkitkan - dan - Uji (Generate and Test) Pendakian Bukit (Hill

Metode Pencarian Heuristik Bangkitkan - dan - Uji (Generate and Test) Pendakian Bukit (Hill Climbing) 1. Simple Hill Climbing 2. Steepest=Ascent Hill Climbing Pencarian Terbaik Pertama (Best First Search) 1. Greedy Best First Search 2. Algoritma A*

Generate and Test Algoritma : 1. Bangkitkan suatu kemungkinan solusi (membangkitkan suatu titik tertentu

Generate and Test Algoritma : 1. Bangkitkan suatu kemungkinan solusi (membangkitkan suatu titik tertentu atau lintasan tertentu dari keadaan awal) 2. Uji apakah node tsb adlh solusi dg membandingkan node tsb atau node akhir dr lintasan yg dipilih dg kumpulan tujuan yg diharapkan 3. Jika solusi ditemukan langkah–langkah tersebut dihentikan, jika tdk kembali langkah pertama

Generate and Test Jika pembangkitan atau pembuatan solusi– solusi yang dimungkinkan dapat dilakukan secara

Generate and Test Jika pembangkitan atau pembuatan solusi– solusi yang dimungkinkan dapat dilakukan secara sistematis, maka prosedur ini akan dapat segera menemukan solusinya, (bila ada). Namun, jika ruang problema sangat besar, maka proses ini akan membutuhkan waktu yang lama. Metode generate and test ini kurang efisien untuk masalah yang besar atau kompleks.

Contoh : TSP (Travelling Salesman Problem) Seorang salesman ingin mengunjungi n kota. Jarak tiap

Contoh : TSP (Travelling Salesman Problem) Seorang salesman ingin mengunjungi n kota. Jarak tiap kota sdh diket. Kita ingin mengetahui rute terpendek dimana setiap kota hanya boleh dikunjungi 1 kali. Misal ada 4 kota dg jarak sbb: 8 A 3 4 7 D B 6 5 C

Penyelesaian : Membangkitkan solusi - solusi yg mungkin dg menyusun kota – kota dalam

Penyelesaian : Membangkitkan solusi - solusi yg mungkin dg menyusun kota – kota dalam urutan abjad, yaitu: A–B–C–D A–B–D–C A–C–B–D A–C–D–B DST U/ mengetahui jumlah seluruh kombinasi abjad yg mkn mjd solusi adalah n!.

Pilih keadaan awal, mis ABCD dg panjang lintasan 19. Lakukan backtracking u/ mdapatkan lintasan

Pilih keadaan awal, mis ABCD dg panjang lintasan 19. Lakukan backtracking u/ mdapatkan lintasan ABDC 18. Bandingkan lintasan ABDC dg sblmnya, lintasan terpendek akan dipilih u/ dilakukan backtracking lagi. Solusi terbaik adalah menemukan lintasan terpendek dari kota yg dilewati.

Dibuat Tabel :

Dibuat Tabel :

Lanjutan tabel :

Lanjutan tabel :

Kelemahan : Membangkitkan semua kemungkinan sebelum dilakukan pengujian Membutuhkan waktu yg cukup besar dalam

Kelemahan : Membangkitkan semua kemungkinan sebelum dilakukan pengujian Membutuhkan waktu yg cukup besar dalam pencariannya

Hill Climbing Hill climbing (mendaki bukit) merupakan salah satu variasi metode Bangkitkan - dan

Hill Climbing Hill climbing (mendaki bukit) merupakan salah satu variasi metode Bangkitkan - dan Uji (generate and test) dimana umpan balik yang berasal dari prosedur uji digunakan untuk memutuskan arah gerak dalam ruang pencarian (search). Dalam prosedur Bangkitkan - dan - Uji yang murni, respon fungsi uji hanyalah ya atau tidak

Hill Climbing Dalam prosedur Hill Climbing, fungsi uji dikombinasikan dengan fungsi heuristik yang menyediakan

Hill Climbing Dalam prosedur Hill Climbing, fungsi uji dikombinasikan dengan fungsi heuristik yang menyediakan pengukuran kedekatan suatu keadaan yang diberikan dengan tujuan (goal).

Simple Hill Climbing Algoritma : 1. Mulai dr keadaan awal, lakukan pengujian: if tujuan

Simple Hill Climbing Algoritma : 1. Mulai dr keadaan awal, lakukan pengujian: if tujuan mk stop, if tdk mk lanjutkan dg keadaan skrng sbg keadaan awal. 2. Ulangi langkah berikut hingga solusi ditemukan atau sampai tdk ada operator baru yg diaplikasikan pd keadaan skrng: a. Pilih operator yg blm pernah digunakan, gunakan operator u/ mdptkan keadaan yg baru

Lanjutan……… b. Evaluasi keadaan baru tsbt : (i) If keadaan baru adlh tujuan, keluar

Lanjutan……… b. Evaluasi keadaan baru tsbt : (i) If keadaan baru adlh tujuan, keluar (ii) If tdk, namun nilainya lbh baik dr keadaan skrng, mk jadikan keadaan baru tsbt mjd keadaan skrng (iii) If keadaan baru tdk lbh baik drpd keadaan skrng, mk lanjutkan iterasi

Penyelesaian : contoh kasus TSP Operator yg digunakan adlh operator yg bisa menghasilkan kombinasi

Penyelesaian : contoh kasus TSP Operator yg digunakan adlh operator yg bisa menghasilkan kombinasi lintasan kota yg berbeda, yaitu dg menukar urutan posisi 2 kota dlm suatu lintasan. Bila ada n kota maka kombinasi lintasan : Jika dr soal terdapat 4 kota mk kombinasi ada 6 yaitu :

Lanjutan ……. 1. (1, 2) tukar urutan posisi kota ke-1 dg kota ke-2 2.

Lanjutan ……. 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 Pada pencarian ini, penggunaan urutan dari kombinasi harus konsisten. Stlh kombinasi ditentukan, gunakan algoritma pengerjaan sesuai aturan metode simple hill climbing. Mis keadaan awal adlh ABCD

Metode Simple Hill Climbing dg 6 operator

Metode Simple Hill Climbing dg 6 operator

Lanjutan …… Pencarian dilihat dari anak kiri, bila nilai heuristik anak kiri lbh baik

Lanjutan …… Pencarian dilihat dari anak kiri, bila nilai heuristik anak kiri lbh baik mk dibuka utk pencarian slnjutnya, bila tdk baru melihat tetangga dari anak kiri tsbt. Solusi yg dihasilkan adlh node DBCA (=12) lintasan terpendek dibanding yg lain. Kelemahannya : 1. tdk semua solusi dpt ditemukan seperti pada metode generate and test (2 solusi). 2. pembatasan kombinasi operator penemuan solusi yg tdk maksimal

Steepest-Ascent Hill Climbing Algoritma : 1. Mulai dr keadaan awal, lakukan pengujian: if tujuan

Steepest-Ascent Hill Climbing Algoritma : 1. Mulai dr keadaan awal, lakukan pengujian: if tujuan mk stop, if tdk mk lanjutkan dg keadaan skrng sbg keadaan awal. 2. Kerjakan hingga tujuan tercapai atau hingga iterasi tdk memberikan perubahan pd keadaan skrng: a. Tentukan SUCC sbg nilai heuristik terbaik dari successor – successor.

Lanjutan …… b. Kerjakan utk tiap operator yg digunakan o/ keadaan skrng : (i)

Lanjutan …… b. Kerjakan utk tiap operator yg digunakan o/ keadaan skrng : (i) Gunakan operator tsbt & bentuk keadaan baru. (ii) Evaluasi keadaan baru tsbt, if mrpk tujuan keluar. If tdk, bandingkan nilai heuristiknya dg SUCC. If lbh baik, jadikan nilai heuristik keadaan baru tsbt sbg SUCC, but if not good, nilai SUCC tdk berubah. c. If SUCC lbh baik drpd nilai heuristik keadaan skrng, ubah node SUCC mjd keadaan skrng

Masalah yg mkn timbul pada prosedur Hill Climbing : Local optimum : adalah suatu

Masalah yg mkn timbul pada prosedur Hill Climbing : Local optimum : adalah suatu keadaan yang lebih baik daripada semua tetangganya namun masih belum lebih baik dari suatu keadaan lain yang jauh letaknya darinya Sering muncul ketika sdh mendekati solusi.

Masalah yg mkn timbul pada prosedur Hill Climbing : Plateau (Daratan): adalah suatu daerah

Masalah yg mkn timbul pada prosedur Hill Climbing : Plateau (Daratan): adalah suatu daerah datar dari ruang pencarian (search) dimana keadaan semua tetangga sama dgn keadaan dirinya Ridge (Punggung) : local optimum yg lbh disebabkan karena ketidak mampuan u/ menggunakan 2 operator sekaligus.

Solusinya: 1. 2. 3. Melakukan langkah balik (backtracking) ke simpul yang lebih awal dan

Solusinya: 1. 2. 3. Melakukan langkah balik (backtracking) 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 ke beberapa arah sekaligus.

Penyelesaian : contoh kasus TSP Operator tetap digunakan u/ mbangkit kemungkinan solusi. Pencarian didasarkan

Penyelesaian : contoh kasus TSP Operator tetap digunakan u/ mbangkit kemungkinan solusi. Pencarian didasarkan pd nilai heuristik terbaik pd setiap level, bkn nilai heuristik pada node plng kiri (metode simple hill climbing) Mis : dr contoh TSP kita ambil keadaan awal ABCD dg nilai heuristik (19). Nilai tsbt kita namai dg SUCC. Kmd lanjutkan pengerjaan sesuai dg algoritma dari steepest-ascent hill climbing.

Metode Steepest-Ascent Hill Climbing

Metode Steepest-Ascent Hill Climbing

Lanjutan …… Solusi yg diperoleh, lintasan ACBD dg nilai heuristik 12.

Lanjutan …… Solusi yg diperoleh, lintasan ACBD dg nilai heuristik 12.

BEST FIRST SEARCH Merupakan kombinasi kelebihan teknik depth first search dan breadth first search

BEST FIRST SEARCH Merupakan kombinasi kelebihan teknik depth first search dan breadth first search Pencarian diperkenankan mengunjungi node yang ada di level yg lebih rendah jika ternyata node pada level yg lebih tinggi ternyata memiliki nilai heuristik yg buruk

Best First Search (Lanjutan) Best First Search akan membangkitkan node berikutnya dari semua node

Best First Search (Lanjutan) Best First Search akan membangkitkan node berikutnya dari semua node yg 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 heuristic

FUNGSI HEURISTIC Suatu fungsi heuristic dikatakan baik jika bisa memberikan biaya perkiraan yang mendekati

FUNGSI HEURISTIC Suatu fungsi heuristic dikatakan baik jika bisa memberikan biaya perkiraan yang mendekati biaya sebenarnya. Semakin mendekati biaya sebenarnya, fungsi heuristic tersebut semakin baik.

Contoh 100 16 A B ( 20 , 10 ) ( 35 , 10

Contoh 100 16 A B ( 20 , 10 ) ( 35 , 10 ) C 10 ( 55 , 10 ) D ( 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 : dab = ( y b – y a )2 + ( x b – x a )2 d. AB = 15 d. BC = 20 d. CD = 10

Algoritma Best First Search Greedy Best First Search Algoritma A*

Algoritma Best First Search Greedy Best First Search Algoritma A*

Greedy Best First Search Algoritma ini merupakan jenis algoritma Best First Search yg paling

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 tidak optimal

Contoh A 1 0 25 S 1 0 30 1 5 20 E F

Contoh A 1 0 25 S 1 0 30 1 5 20 E F 5 40 K 50 B 30 40 C 35 1 0 90 G 25 D 40 25 H L 52 J 40 80 M 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

Langkah 1 1 0 S A 25 30 35 1 0 D E B

Langkah 1 1 0 S A 25 30 35 1 0 D E B C n S A B C D E h’(n) 80 80 60 70 85 74

Langkah 2 1 0 S A 25 30 35 1 0 D E 5

Langkah 2 1 0 S A 25 30 35 1 0 D E 5 B F K 50 C n A C D E F K h’(n) 80 70 85 74 70 30

Langkah 3 1 0 S A 25 30 35 1 0 D E 5

Langkah 3 1 0 S A 25 30 35 1 0 D E 5 F K 50 B 30 G C n A C D E F G h’(n) 80 70 85 74 70 0

SOLUSI 1 0 S A 25 30 35 1 0 5 B F 50

SOLUSI 1 0 S A 25 30 35 1 0 5 B F 50 K 30 G C D 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

PENJELASAN Dari contoh di atas, Greedy akan menemukan solusi S-B-K-G dengan total jarak 105 Padahal ada solusi lain yg lebih optimal, yakni S-A-B-F-K-G dengan total jarak hanya 95 Dari situ bisa disimpulkan bahwa Greedy Best First Search tidak bisa menemukan solusi yang optimal

Romania with step costs in km

Romania with step costs in km

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Properties of greedy best-first search Complete? No – can get stuck in loops, e.

Properties of greedy best-first search Complete? No – can get stuck in loops, e. g. , Iasi Neamt Time? O(bm), but a good heuristic can give dramatic improvement Space? O(bm) -- keeps all nodes in memory Optimal? No (expand the minimal path cost but cant be not optimal)

Algoritma A*(Admissible Heuristic ) Berbeda dg Greedy, algoritma ini akan menghitung fungsi heuristic dengan

Algoritma A*(Admissible Heuristic ) Berbeda dg Greedy, algoritma ini akan menghitung fungsi heuristic dengan cara menambahkan biaya sebenarnya dengan biaya perkiraan. Heuristik adalah kriteria, metoda, atau prinsip untuk menentukan pilihan sejumlah alternatif untuk mencapai sasaran dengan efektif. Nilai heuristik dipergunakan untuk mempersempit ruang pencarian

 Dengan heuristik yang benar, maka A* pasti akan mendapatkan solusi (jika memang ada

Dengan heuristik yang benar, maka A* pasti akan mendapatkan solusi (jika memang ada solusinya) yang dicari. Dengan kata lain, heuristik adalah fungsi optimasi yang menjadikan algoritma A* lebih baik dari pada algoritma lainnya. Namun heuristik masih merupakan estimasi / perkiraan biasa saja Sama sekali tidak ada rumus khususnya. Artinya, setiap kasus memiliki fungsi heuristik yang berbeda. Algoritma A* ini bisa dikatakan mirip dengan algoritma Dijkstra, namun pada algoritma Dijkstra, nilai fungsi heuristiknya selalu 0 (nol) sehingga tidak ada fungsi yang mempermudah pencarian solusinya.

Algoritma A* Metode ini berdasarkan formula: f(n) = g(n) + h(n) Keterangan : h(n)

Algoritma A* Metode ini berdasarkan formula: f(n) = g(n) + h(n) Keterangan : h(n) = biaya estimasi dari node n ke tujuan. g(n) = biaya path / perjalanan f(n) = solusi biaya estimasi termurah node n untuk mencapai tujuan. (Russell, Stuart J and Norvig, Peter, 2003).

Langkah Algoritma A* 1. 2. Masukan node awal ke openlist Loop Langkah – langkah

Langkah Algoritma A* 1. 2. Masukan node awal ke openlist Loop Langkah – langkah di bawah ini : a. Cari node (n) dengan nilai f(n) yang paling rendah dalam open list. Node ini sekarang menjadi current node. b. Keluarkan current node dari openlist dan masukan ke close list

Langkah Algoritma A* c. Untuk setiap tetangga dari current node lakukan berikut : •

Langkah Algoritma A* c. Untuk setiap tetangga dari current node lakukan berikut : • Jika tidak dapat dilalui atau sudah ada dalam close list, abaikan. • Jika belum ada di open list. Buat current node parent dari node tetangga ini. Simpan nilai f, g dan h dari node ini. • Jika sudah ada di open list, cek bila node tetangga ini lebih baik, menggunakan nilai g sebagai ukuran. Jika lebih baik ganti parent dari node ini di openlist menjadi current node, lalu kalkulasi ulang nilai g dan f dari node ini.

Langkah Algoritma A* d. Hentikan loop jika : • Node tujuan telah ditambahkan ke

Langkah Algoritma A* d. Hentikan loop jika : • Node tujuan telah ditambahkan ke openlist, yang berate rute telah ditemukan. • Belum menemukan node goal sementara open list kosong atau berarti tidak ada rute. 3. Simpan rute. Secara ‘backward’, urut mulai darinode goal ke parent-nya terus sampai mencapai node awal sambil menyimpan node ke dalam sebuah array.

Berikut adalah langkah dalam metode A* : Open vertex utama (Opened vertex : A

Berikut adalah langkah dalam metode A* : Open vertex utama (Opened vertex : A 5) Kunjungi vertex yang di open dengan nilai terkecil (A 5) Open vertex dibawahnya (B 4, C 4, D 6 => Opened vertex menjadi : B 4, C 4, D 6) Kemudian close vertex yang telah dikunjungi (Closed vertex: A 5, Opened vertex: B 4, C 4, D 6 ) Urutkan vertex sesuai value, jika value sama maka urutkan vertex berdasarkan labelnya (Opened vertex : B 4, C 4, D 6) Kunjungi vertex dengan value dan label yang terkecil (Vertex B 4) –> Seperti langkah 2 Open vertex di bawahnya (E 5, F 5 => Opened vertex menjadi : C 4 , D 6, E 5, F 5) –> seperti langkah 3 dst sampai hasilnya ketemu

Contoh A 1 0 25 S 1 0 30 1 5 20 E F

Contoh A 1 0 25 S 1 0 30 1 5 20 E F 5 40 K 50 B 30 40 C 35 1 0 90 G 25 D 40 25 H L 52 J 40 80 M 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

Langkah 1 1 0 S A 25 30 35 1 0 D E B

Langkah 1 1 0 S A 25 30 35 1 0 D E B C 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

Langkah 2 A 1 0 25 S B 30 C 35 1 0 E

Langkah 2 A 1 0 25 S B 30 C 35 1 0 E 1 5 20 D J n A B C D J h’(n) 80 60 70 85 100 g(n) 10 25 30 35 30 f(n) 90 85 100 120 130

Langkah 3 A 1 0 25 S 1 0 30 E 1 5 20

Langkah 3 A 1 0 25 S 1 0 30 E 1 5 20 B F K 50 C 35 1 0 5 D J n A C D J F K h’(n) 80 70 85 100 70 30 g(n) 10 30 35 30 30 75 f(n) 90 100 120 130 105

Langkah 4 A 1 0 25 S 1 0 30 E 1 5 20

Langkah 4 A 1 0 25 S 1 0 30 E 1 5 20 F K 50 B G C 35 1 0 5 90 D J n C D J F K G h’(n) 70 85 100 70 30 0 g(n) 30 25 75 100 f(n) 100 110 130 95 100

Langkah 5 A 1 0 25 S 1 0 30 E 1 5 20

Langkah 5 A 1 0 25 S 1 0 30 E 1 5 20 F 40 K 50 B G C 35 1 0 5 90 D J 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

Langkah 6 A 1 0 25 S 1 0 30 E 1 5 20

Langkah 6 A 1 0 25 S 1 0 30 E 1 5 20 F 40 K 50 B 30 G C 35 1 0 5 90 D J n C D J G h’(n) 70 85 100 0 g(n) 30 25 30 95 f(n) 100 110 130 95

Solusi A 1 0 25 S 1 0 30 E 1 5 20 5

Solusi A 1 0 25 S 1 0 30 E 1 5 20 5 B F 40 50 K 30 G C 35 1 0 90 D S - A - B - F - K - G J Dengan Total Jarak = 95

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

Properties of A* Complete? Yes (unless there are infinitely many nodes with f ≤

Properties of A* Complete? Yes (unless there are infinitely many nodes with f ≤ f(G) ) Time? Exponential Space? Keeps all nodes in memory Optimal? Yes

Kesimpulan Algoritma A* lebih baik dalam melakukan pencarian heuristic daripada Greedy Best First Search

Kesimpulan Algoritma A* lebih baik dalam melakukan pencarian heuristic daripada Greedy Best First Search karena dapat mengasilkan solusi yang optimal