Perbedaan Blind Search dengan Heuristich Search
Teknik Pencarian Parsial
(Blind Search)
A. Pencarian Melebar Pertama
(Breadth-First Search)
o Pada
metode breadth-first search, semua node pada level n akan dikunjungi
terlebih dahulu sebelum mengunjungi node-node pada level n+1.
o Pencarian
dimulai dari node akar terus ke level ke-1 dari kiri ke kanan, kemudian
berpindah ke level berikutnya, demikian pula dari kiri ke kanan hingga
ditemukannya solusi (lihat algoritma di bawah ini).
Prosedur breadth_first_search
Inisialisasi : open = [start]; closed [ ]
While open = [ ] do
Begin
Hapuskan keadaan paling kiri dari keadaan
open,
sebutlah keadaan itu dengan X;
Jika X merupakan tujuan then return (sukses);
Buatlah semua child dari X;
Ambillah X dan masukkan pada closed;
Eliminasilah setiap child X yang telah berada
pada
open atau closed, yang akan menyebabkan loop
dalam search;
Ambillah turunan di ujung kanan open sesuai
urutan
penemuan-nya;
End;
- Keuntungan :
Ø Tidak akan menemui jalan buntu
Ø Jika ada satu solusi, maka breadth-first
search akan menemukannya. Dan, jika ada lebih dari satu solusi, maka solusi
minimum akan ditemukan.
- Kelemahan :
Ø Membutuhkan memori yang cukup banyak,
karena menyimpan semua node dalam satu pohon
Ø Membutuhkan waktu yang cukup lama, karena
akan menguji n level untuk mendapatkan solusi pada level yang ke-(n+1).
B. PENCARIAN KEDALAM
PERTAMA
(Depth-First Search)
· Pada Depth-First Search, proses pencarian
akan dilakukanpada semua anaknya sebelum dilakukan pencarian ke node-node yang
selevel. Pencarian dimulai dari node akar ke level yang lebih tinggi. Proses
ini diulangi terus hingga ditemukannya solusi (lihat gambar di bawah).
sprosedur depth_first_search
inisialisasi: open = [Start]; closed = []
while open x [] do
begin
hapuskan keadaan berikutnya dari sebelah kiri
open, sebutlah keadaan itu dengan X;
jika X merupakan tujuan then return(sukses);
buatlah semua child yang dimungkinkan dari X;
ambilah X dan masukkan pada closed;
eliminasilah setiap child X yang telah berada
pada
open atau closed, yang akan menyebabkan loop
dalam search;
ambilah child X yang tersisa di ujung kanan
open
sesuai urutan penemuannya;
end.
· Keuntungan :
Ø Membutuhkan memori yang relative kecil,
karena hanya node-node pada lintasan yang aktif saja yang disimpan.
Ø Secara kebetulan, metode depth-first
search akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam
ruang keadaan.
· Kelemahan :
Ø Memungkinkan tidak ditemukannya tujuan yang
diharapakan
Ø Hanya akan menemukan 1 solusi pada setiap
pencarian
Heuristich Search
(Pencarian Heuristik)
1. Heuristik adalah sebuah teknik yang
mengembangkan efisiensi dalam proses pencarian, namum dengan kemungkinan
mengorbankan kelengkapan (completeness).
2. Fungsi heuristik digunakan untuk
mengevaluasi keadaan-keadaan problema individual dan menentukan seberapa jauh
hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan.
3. Jenis-jenis Heuristic Searching:
A. Generate and Test.
B. Hill Climbing.
C. Best First Search.
D. Alpha Beta
Prunning,Means-End-Anlysis,Constraint Satisfaction, Simulated Anealing, dll
A. PEMBANGKITAN dan
PENGUJIAN (Generate and Test)
· Metode ini merupakan penggabungan antara depth-first
search dengan pelacakan mundur (backtracking), yaitu bergerak ke
belakang menuju pada suatu keadaan awal.
· Algoritma :
1. Bangkitkan suatu kemungkinan solusi
(membangkitkan suatu tititk tertentu atau lintasan tertentu dari keadaan awal).
2. Uji untuk melihat apakah node tersebut
benar-benar merupakan solusinya dengan cara membandingkan node terebut atau
node akhir dari suatu lintasan yang dipilih dengan kumpulan tujuan yang
diharapkan.
3. Jika solusi ditemukan, keluar. Jika tidak,
ulangi kembali langkah pertama.
Contoh : “Travelling Salesman Problem
(TSP)”
Seorang salesman ingin mengunjungi n kota.
Jarak antara tiap-tiap kota sudah diketahui. Kita ingin mengetahui ruter
terpendek dimana setaip kota hanya boleh dikkunjungi tepat 1 kali. Misalkan ada
4 kota dengan jarak antara tiap-tiap kota seperti gambar di bawah ini :
....................
Penyelesaian dengan metode Generate and
Test
Alur pencarian dengan Generate and Test
Pencarian ke-
|
Lintasan
|
Panjang Lintasan
|
Lintasan Terpilih
|
Panjang Lintasan Terpilih
|
1
|
ABCD
|
19
|
ABCD
|
19
|
2
|
ABDC
|
18
|
ABDC
|
18
|
3
|
ACBD
|
12
|
ACBD
|
12
|
4
|
ACDB
|
13
|
ACBD
|
12
|
5
|
ADBC
|
16
|
ACBD
|
12
|
Dst…
|
B. PENDAKIAN BUKIT (Hill Climbing)
· Metode ini hampir sama dengan metode
pembangkitan dan pengujian, hanya saja proses pengujian dilakukan dengan
menggunakan fungsi heuristic. Pembangkitan keadaan berikutnya tergantung pada
feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristic ini akan
menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap
keadaan-keadaan lainnyayang mungkin.
· Algoritma Simple Hill Climbing
1. Cari operator yang belum pernah digunakan;
gunakan operator ini untuk mendapatkan keadaan yang baru.
a) Kerjakan langkah-langkah berikut sampai
solusinya ditemukan atau sampai tidak ada operator baru yang akan diaplikasikan
pada keadaan sekarang :
Cari operator yang belum digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru.
Cari operator yang belum digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru.
b) Evaluasi keadaan baru tersebut :
(i) Jika keadaan baru merupakan tujuan,
keluar
(ii) Jika bukan tujuan, namun nilainya lebih
baik daripada keadaan sekarang, maka jadikan keadaan baru tersebut menjadi
keadaan sekarang.
(iii) Jika keadaan baru tidak lebih baik
daripada keadaan sekarang, maka lanjutkan iterasi.
Pada simple hill climbing, ada 3
masalah yang mungkin:
- Algoritma akan berhenti kalau mencapai
nilai optimum local
- Urutan penggunaan operator akan sangat berpengaruh
pada penemuan solusi
- Tidak diijinkan untuk melihat satupun
langkah sebelumnya.
Contoh : TSP dengan Simple Hill Climbing
Disini ruang keadaan berisi semua kemungkinan
llintasan yang mungkin. Operator digunakan untuk menukar posisi kota-kota yang
bersebelahan. Apabila ada n kota, dan kita ingin mencari kombinasi lintasan
dengan menukar posisi urutan 2 kota, maka kita akan mendapatkan sebanyak :
atau sebanyak 6 kombinasi (lihat gambar di
bawah). Fungsi heuristic yang digunakan adalah panjang lintasan yang terjadi.
C. PENCARIAN TERBAIK PERTAMA (Best-First Search)
· Metode ini merupakan kombinasi dari metode depth-first
search dan breadth-first search. Pada metode best-first search,
pencarian diperbolehkan mengunjungi node yang ada di level yang lebih rendah,
jika ternyata node pada level yang lebih tinggi ternyata memiliki nilai
heuristic yang lebih buruk.
· Fungsi Heuristik yang digunakan
merupakan prakiraan (estimasi) cost dari initial state ke goal
state, yang dinyatakan dengan :
f’(n) = g(n) + h’(n)
dimana f’ = Fungsi evaluasi
g = cost dari initial state ke current
state
h’ = prakiraan cost dari current
state ke
goal state
Contoh :
Misalkan kita memiliki ruang pencarian
seperti pada gambar di bawah. Node M merupakan keadaan awal dan node T
merupakan tujuannya. Biaya edge yang menghubungkan node M dengannode A adalah
biaya yang dikeluarkan untuk bergerak dari kota M ke kota A. Nilai g diperoleh
berdasarkan biaya edge minimal. Sedangkan nilai h’ di node A merupakan hasil
perkiraan terhadap biaya yang diperlukan dari node A untuk sampai ke tujuan.
h’(n) bernilai ~ jika sudah jelas tidak ada hubungan antara node n dengan node
tujuan (jalan buntu). Kita bisa merunut nilai untuk setiap node.
....................
Tabel status tiap node
Node (n)
|
g(n)
|
h’(n)
|
f’(n)
|
M
|
0
|
6
|
6
|
A
|
5
|
3
|
8
|
B
|
3
|
4
|
7
|
C
|
4
|
2
|
6
|
D
|
7
|
~
|
~
|
E
|
8
|
2
|
10
|
F
|
8
|
1
|
9
|
G
|
5
|
2
|
7
|
H
|
5
|
2
|
7
|
I
|
13
|
~
|
~
|
J
|
12
|
~
|
~
|
K
|
8
|
~
|
~
|
L
|
15
|
~
|
~
|
T
|
7
|
0
|
7
|
No comments:
Post a Comment