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