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
Geser
Geser
Geser

ubin
ubin
ubin
ubin

kosong
kosong
kosong
kosong

ke
ke
ke
ke

kiri
kanan
atas
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-andTest
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.

3.

Tes apakah solusi yang


dibangkitkan tersebut adalah
sebuah solusi yang bisa diterima
sesuai dengan kriteria yang
diberikan.
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 Generateand-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.

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

2.
3.
4.

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.
Inisialisasi BEST-SO-FAR dengan current state.
Inisialisasi T sesuai dengan annealing schedule.
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.
2.

OPEN berisi initial state dan CLOSED masih kosong.


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