Anda di halaman 1dari 37

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

2.

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

Contoh Pencarian Algoritma A*

Solusi yang ditemukan adalah solusi optimal, yaitu: Arad, Sibiu,


Rimnicu Vilcea, Pitesti, Bucharest.