Anda di halaman 1dari 43

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
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 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 X 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 X.
Jika new state lebih baik daripada X, maka ganti X dengan new state. Jika tidak
lebih baik, X tidak perlu diganti.
c) 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
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. Inisialisasi BEST-SO-FAR dengan current state.
3. Inisialisasi T sesuai dengan annealing schedule.
4. Ulangi sampai solusi ditemukan atau sampai tidak ada lagi 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. Hitung:
E = f(current state) – f(new state)
I. Jika new state adalah goal state, maka kembalikan state ini
sebagai solusi dan keluar dari program.
II. 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
III. 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.
c) Jika diperlukan, revisi nilai T berdasarkan annealing schedule.
5. 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
1. OPEN berisi initial state dan CLOSED masih kosong.
2. Ulangi sampai goal ditemukan atau sampai tidak ada lagi node di dalam
OPEN:
a) Ambil simpul terbaik yang ada di OPEN.
b) Jika simpul tersebut sama dengan goal, maka sukses.
c) Jika tidak, masukkan simpul tersebut ke dalam CLOSED.
d) Bangkitkan semua suksesor dari simpul tersebut.
e) Untuk setiap suksesor kerjakan:
I. Jika suksesor tersebut belum pernah dibangkitkan, evaluasi
suksesor tersebut, tambahkan ke OPEN, dan catat parent atau
orang tuanya.
II. 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.

Anda mungkin juga menyukai