Pencarian Heuristik D

Post on 15-Feb-2015

131 views 6 download

Transcript of Pencarian Heuristik D

HEURISTIC SEARCH

Dian Eka R

Pencarian Heuristik (heuristic searching)? merupakan suatu strategi untuk

melakukan proses pencarian ruang keadaan (state space) suatu problema secara selektif,

yang memandu proses pencarian yang kita lakukan di sepanjang jalur yang memiliki kemungkinan sukses paling besar, dan mengesampingkan usaha yang bodoh dan memboroskan waktu.

Pencarian Heuristik (heuristic searching)? Heuristik adalah sebuah teknik

yang mengembangkan efisiensi dalam proses pencarian, namum dengan kemungkinan mengorbankan kelengkapan (completeness

Pencarian Heuristik (heuristic searching)? Untuk dapat menerapkan heuristik

tersebut dengan baik dalam suatu domain tertentu, diperlukan suatu Fungsi Heuristik.

Fungsi heuristik ini digunakan untuk mengevaluasi keadaan-keadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan.

Jenis-jenis Heuristic Searching ¨ Generate and Test. ¨ Hill Climbing. ¨ Best First Search. ¨ Alpha Beta Prunning. ¨ Means-End-Anlysis. ¨ Constraint Satisfaction

Metode Pencarian Heuristik

Bangkitkan - dan - Uji (Generate and Test) Pendakian Bukit (Hill Climbing)

1. Simple Hill Climbing2. Steepest=Ascent Hill Climbing

Pencarian Terbaik Pertama (Best First Search)1. Greedy Best First Search2. Algoritma A*

Generate and Test

Algoritma :1. Bangkitkan suatu kemungkinan solusi

(membangkitkan suatu titik tertentu atau lintasan tertentu dari keadaan awal)

2. Uji apakah node tsb adlh solusi dg membandingkan node tsb atau node akhir dr lintasan yg dipilih dg kumpulan tujuan yg diharapkan

3. Jika solusi ditemukan langkah–langkah tersebut dihentikan, jika tdk kembali langkah pertama

Generate and Test Jika pembangkitan atau pembuatan

solusi–solusi yang dimungkinkan dapat dilakukan secara sistematis, maka prosedur ini akan dapat segera menemukan solusinya, (bila ada).

Namun, jika ruang problema sangat besar, maka proses ini akan membutuhkan waktu yang lama.

Metode generate and test ini kurang efisien untuk masalah yang besar atau kompleks.

Contoh : TSP (Travelling Salesman Problem)

Seorang salesman ingin mengunjungi n kota. Jarak tiap kota sdh diket.Kita ingin mengetahui rute terpendek dimana setiap kota hanya boleh dikunjungi 1 kali. Misal ada 4 kota dg jarak sbb:

A

D

B

C

8

6

43

7 5

Penyelesaian :

Membangkitkan solusi - solusi yg mungkin dg menyusun kota – kota dalam urutan abjad, yaitu: A – B – C – D A – B – D – C A – C – B – D A – C – D – B DST

U/ mengetahui jumlah seluruh kombinasi abjad yg mkn mjd solusi adalah n!.

Pilih keadaan awal, mis ABCD dg panjang lintasan 19.

Lakukan backtracking u/ mdapatkan lintasan ABDC 18.

Bandingkan lintasan ABDC dg sblmnya, lintasan terpendek akan dipilih u/ dilakukan backtracking lagi.

Solusi terbaik adalah menemukan lintasan terpendek dari kota yg dilewati.

Dibuat Tabel :

Lanjutan tabel :

Kelemahan :

Membangkitkan semua kemungkinan sebelum dilakukan pengujian

Membutuhkan waktu yg cukup besar dalam pencariannya

Hill Climbing Hill climbing (mendaki bukit)

merupakan salah satu variasi metode Bangkitkan - dan - Uji (generate and test) dimana umpan balik yang berasal dari prosedur uji digunakan untuk memutuskan arah gerak dalam ruang pencarian (search).

Dalam prosedur Bangkitkan - dan - Uji yang murni, respon fungsi uji hanyalah ya atau tidak

Hill Climbing Dalam prosedur Hill Climbing,

fungsi uji dikombinasikan dengan fungsi heuristik yang menyediakan pengukuran kedekatan suatu keadaan yang diberikan dengan tujuan (goal).

Simple Hill Climbing

Algoritma :1. Mulai dr keadaan awal, lakukan pengujian: if tujuan mk stop,if tdk mk lanjutkan dg keadaan skrng sbg keadaan awal.2. Ulangi langkah berikut hingga solusi ditemukan atau sampai tdk ada operator baru yg diaplikasikan pd keadaan skrng: a. Pilih operator yg blm pernah digunakan, gunakan operator u/ mdptkan keadaan yg baru

Lanjutan……… b. Evaluasi keadaan baru tsbt :

(i) If keadaan baru adlh tujuan, keluar (ii) If tdk, namun nilainya lbh baik dr keadaan skrng, mk jadikan keadaan baru tsbt mjd keadaan skrng (iii) If keadaan baru tdk lbh baik drpd keadaan skrng, mk lanjutkan iterasi

Penyelesaian : contoh kasus TSP

Operator yg digunakan adlh operator yg bisa menghasilkan kombinasi lintasan kota yg berbeda, yaitu dg menukar urutan posisi 2 kota dlm suatu lintasan.

Bila ada n kota maka kombinasi lintasan :

Jika dr soal terdapat 4 kota mk kombinasi ada 6 yaitu :

!2!2

!

nn

Lanjutan …….1. (1,2) tukar urutan posisi kota ke-1 dg kota ke-22. (2,3) tukar urutan posisi kota ke-2 dg kota ke-33. (3,4) tukar urutan posisi kota ke-3 dg kota ke-44. (4,1) tukar urutan posisi kota ke-4 dg kota ke-15. (2,4) tukar urutan posisi kota ke-2 dg kota ke-46. (1,3) tukar urutan posisi kota ke-1 dg kota ke-3

Pada pencarian ini, penggunaan urutan dari kombinasi harus konsisten.Stlh kombinasi ditentukan, gunakan algoritma pengerjaan sesuai aturan metode simple hill climbing. Mis keadaan awal adlh ABCD

Metode Simple Hill Climbing dg 6 operator

Lanjutan ……

Pencarian dilihat dari anak kiri, bila nilai heuristik anak kiri lbh baik mk dibuka utk pencarian slnjutnya, bila tdk baru melihat tetangga dari anak kiri tsbt.

Solusi yg dihasilkan adlh node DBCA (=12) lintasan terpendek dibanding yg lain.

Kelemahannya : 1. tdk semua solusi dpt ditemukan seperti pada metode generate and test (2 solusi).2. pembatasan kombinasi operator penemuan solusi yg tdk maksimal

Steepest-Ascent Hill Climbing Algoritma :

1. Mulai dr keadaan awal, lakukan pengujian: if tujuan mk stop,if tdk mk lanjutkan dg keadaan skrng sbg keadaan awal.2. Kerjakan hingga tujuan tercapai atau hingga iterasi tdk memberikan perubahan pd keadaan skrng: a. Tentukan SUCC sbg nilai heuristik terbaik dari successor – successor.

Lanjutan …… b. Kerjakan utk tiap operator yg digunakan o/ keadaan skrng :

(i) Gunakan operator tsbt & bentuk keadaan baru. (ii) Evaluasi keadaan baru tsbt, if mrpk tujuan keluar. If tdk, bandingkan nilai heuristiknya dg SUCC. If lbh baik, jadikan nilai heuristik

keadaan baru tsbt sbg SUCC, but if not good, nilai SUCC tdk berubah.

c. If SUCC lbh baik drpd nilai heuristik keadaan skrng, ubah node SUCC mjd keadaan skrng

Masalah yg mkn timbul padaprosedur Hill Climbing :

Local optimum : adalah suatu keadaan yang lebih baik daripada semua tetangganya namun masih belum lebih baik dari suatu keadaan lain yang jauh letaknya darinya

Sering muncul ketika sdh mendekati solusi.

Masalah yg mkn timbul padaprosedur Hill Climbing :

Plateau (Daratan): adalah suatu daerah datar dari ruang pencarian (search) dimana keadaan semua tetangga sama dgn keadaan dirinya

Ridge (Punggung) : local optimum yg lbh disebabkan karena ketidak mampuan u/ menggunakan 2 operator sekaligus.

Solusinya:1. Melakukan langkah balik (backtracking) ke

simpul yang lebih awal dan mencoba bergerak ke arah yang lain.

2. Melakukan lompatan besar ke suatu arah untuk mencoba bagian ruang pencarian yang baru.

3. Menerapkan dua atau lebih aturan sebelum melakukan uji coba. Ini bersesuaian dengan bergerak ke beberapa arah sekaligus.

Penyelesaian : contoh kasus TSP

Operator tetap digunakan u/ mbangkit kemungkinan solusi.

Pencarian didasarkan pd nilai heuristik terbaik pd setiap level, bkn nilai heuristik pada node plng kiri (metode simple hill climbing)

Mis : dr contoh TSP kita ambil keadaan awal ABCD dg nilai heuristik (19). Nilai tsbt kita namai dg SUCC. Kmd lanjutkan pengerjaan sesuai dg algoritma dari steepest-ascent hill climbing.

Metode Steepest-Ascent Hill Climbing

Lanjutan …… Solusi yg diperoleh, lintasan ACBD dg

nilai heuristik 12.

BEST FIRST SEARCH Merupakan kombinasi kelebihan teknik

depth first search dan breadth first search

Pencarian diperkenankan mengunjungi node yang ada di level yg lebih rendah jika ternyata node pada level yg lebih tinggi ternyata memiliki nilai heuristik yg buruk

Best First Search (Lanjutan) Best First Search akan membangkitkan node

berikutnya dari semua node yg pernah dibangkitkan

Pertanyaannya :Bagaimana menentukan sebuah node terbaik saat ini?Dilakukan dengan menggunakan biaya perkiraanBagaimana caranya menentukan biaya perkiraan?

Biaya perkiraan dapat ditentukan dengan fungsi heuristic

FUNGSI HEURISTIC Suatu fungsi heuristic dikatakan baik

jika bisa memberikan biaya perkiraan yang mendekati biaya sebenarnya.

Semakin mendekati biaya sebenarnya, fungsi heuristic tersebut semakin baik.

Contoh

A B C D

16

100

10

( 20 , 10 ) ( 35 , 10 ) ( 55 , 10 ) ( 65 , 10 )

Dalam kasus pencarian rute terpendek, biaya sebenarnya adalah panjang jalan

Raya yang sebenarnya. Sedangkan fungsi heuristiknya adalah garis lurus dari

1 kota ke kota lainnya. Untuk itu,bisa digunakan rumus berikut :

dab = ( yb – ya )2 + ( xb – xa )2

dAB = 15

dBC = 20

dCD = 10

Algoritma Best First Search Greedy Best First Search Algoritma A*

Greedy Best First Search Algoritma ini merupakan jenis algoritma

Best First Search yg paling sederhana Algoritma ini hanya memperhitungkan

biaya perkiraan saja f(n) = h’(n)

Karena hanya memperhitungkan biaya perkiraan yang belum tentu kebenarannya, maka algoritma ini menjadi tidak optimal

Contoh

S

A

B

C

D

E

G

F

K

H

L

MJ

10

10

102

5

3035

1520 4

0

52

25

40

50

5 40

90

30

40

80

25

n S A B C D E F G H J K L M

h’(n) 80 80 60 70 85 74 70 0 40 100 30 20 70

Langkah 1

S

A

B

C

D

E

10

10

25

3035

n S A B C D E

h’(n) 80 80 60 70 85 74

Langkah 2

S

A

B

C

D

E

10

10

25

3035

n A C D E F K

h’(n) 80 70 85 74 70 30

F

K50

5

Langkah 3

S

A

B

C

D

E

10

10

25

3035

n A C D E F G

h’(n) 80 70 85 74 70 0

F

K50

5

G30

SOLUSI

S

A

B

C

D

E

10

10

25

3035

F

K50

5

G30

S - B - K - G

Dengan Total Jarak = 105

PENJELASAN Dari contoh di atas, Greedy akan

menemukan solusi S-B-K-G dengan total jarak 105

Padahal ada solusi lain yg lebih optimal, yakni S-A-B-F-K-G dengan total jarak hanya 95

Dari situ bisa disimpulkan bahwa Greedy Best First Search tidak bisa menemukan solusi yang optimal

Romania with step costs in km

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Greedy best-first search example

Properties of greedy best-first search Complete? No – can get stuck in loops,

e.g., Iasi Neamt Iasi Neamt Time? O(bm), but a good heuristic can

give dramatic improvement Space? O(bm) -- keeps all nodes in

memory Optimal? No

(expand the minimal path cost but cant be not optimal)

Algoritma A*(Admissible Heuristic ) Berbeda dg Greedy, algoritma ini akan

menghitung fungsi heuristic dengan cara menambahkan biaya sebenarnya dengan biaya perkiraan.

Heuristik adalah kriteria, metoda, atau prinsip-prinsip untuk menentukan pilihan sejumlah alternatif untuk mencapai sasaran dengan efektif.

Nilai heuristik dipergunakan untuk mempersempit ruang pencarian

Dengan heuristik yang benar, maka A* pasti akan mendapatkan solusi (jika memang ada solusinya) yang dicari.

Dengan kata lain, heuristik adalah fungsi optimasi yang menjadikan algoritma A* lebih baik dari pada algoritma lainnya.

Namun heuristik masih merupakan estimasi / perkiraan biasa saja Sama sekali tidak ada rumus khususnya. Artinya, setiap kasus memiliki fungsi heuristik yang berbedabeda.

Algoritma A* ini bisa dikatakan mirip dengan algoritma Dijkstra, namun pada algoritma Dijkstra, nilai fungsi heuristiknya selalu 0 (nol) sehingga tidak ada fungsi yang mempermudah pencarian solusinya.

Algoritma A* Metode ini berdasarkan formula: f(n) = g(n) + h(n)Keterangan :h(n) = biaya estimasi dari node n ke tujuan.g(n) = biaya path / perjalananf(n) = solusi biaya estimasi termurah node

n untuk mencapai tujuan.(Russell, Stuart J and Norvig, Peter, 2003).

Langkah Algoritma A*1. Masukan node awal ke openlist2. Loop Langkah – langkah di bawah ini :

 a. Cari node (n) dengan nilai f(n) yang paling rendah dalam open list. Node ini sekarang menjadi current  node. b. Keluarkan current node dari openlist dan masukan ke close list    

Langkah Algoritma A*     c. Untuk setiap tetangga dari current node lakukan

berikut :        •  Jika tidak dapat dilalui atau sudah ada dalam close list, abaikan.        •  Jika belum ada di open list . Buat current node parent dari node tetangga ini. Simpan nilai f,g dan h dari node ini.        •  Jika sudah ada di open list, cek bila node tetangga ini lebih baik, menggunakan nilai g sebagai ukuran. Jika lebih baik ganti parent dari node ini di openlist menjadi current node, lalu kalkulasi ulang nilai g dan f dari node ini.   

Langkah Algoritma A*   d. Hentikan loop jika :

        • Node tujuan telah ditambahkan ke openlist, yang berate rute telah ditemukan.        • Belum menemukan node goal sementara open list kosong atau berarti tidak ada rute.3. Simpan rute. Secara ‘backward’, urut mulai darinode goal ke parent-nya terus sampai mencapai node awal sambil menyimpan node ke dalam sebuah array.

Berikut adalah langkah langkah dalam metode A* :

Open vertex utama (Opened vertex : A5) Kunjungi vertex yang di open dengan nilai terkecil (A5) Open vertex dibawahnya (B4, C4, D6 => Opened vertex

menjadi : B4, C4, D6) Kemudian close vertex yang telah dikunjungi (Closed vertex:

A5, Opened vertex: B4, C4, D6 ) Urutkan vertex sesuai value, jika value sama maka urutkan

vertex berdasarkan labelnya (Opened vertex :  B4, C4, D6) Kunjungi vertex dengan value dan label yang terkecil (Vertex

B4) –> Seperti langkah 2 Open vertex di bawahnya (E5, F5 => Opened vertex

menjadi :C4 , D6, E5, F5) –> seperti langkah 3 dst sampai hasilnya ketemu

Contoh

S

A

B

C

D

E

G

F

K

H

L

MJ

10

10

102

5

3035

1520 4

0

52

25

40

50

5 40

90

30

40

80

25

n S A B C D E F G H J K L M

h’(n) 80 80 60 70 85 74 70 0 40 100 30 20 70

Langkah 1

S

A

B

C

D

E

10

10

25

3035

n S A B C D E

h’(n) 80 80 60 70 85 74

g(n) 0 10 25 30 35 10

f(n) 80 90 85 100 120 84

Langkah 2

n A B C D J

h’(n) 80 60 70 85 100

g(n) 10 25 30 35 30

f(n) 90 85 100 120 130

S

A

B

C

D

E

J

10

10

25

3035

1520

Langkah 3

n A C D J F K

h’(n) 80 70 85 100 70 30

g(n) 10 30 35 30 30 75

f(n) 90 100 120 130 100 105

S

A

B

C

D

E

F

K

J

10

10

25

3035

1520

50

510

Langkah 4

n C D J F K G

h’(n) 70 85 100 70 30 0

g(n) 30 25 30 25 75 100

f(n) 100 110 130 95 105 100

S

A

B

C

D

E

F

K

J

10

10

25

3035

1520

50

510

90

G

Langkah 5

n C D J K G

h’(n) 70 85 100 30 0

g(n) 30 25 30 65 100

f(n) 100 110 130 95 100

S

A

B

C

D

E

F

K

J

10

10

25

3035

1520

50

510

90

G

40

Langkah 6

n C D J G

h’(n) 70 85 100 0

g(n) 30 25 30 95

f(n) 100 110 130 95

S

A

B

C

D

E

F

K

J

10

10

25

3035

1520

50

510

90

G

40

30

Solusi

S

A

B

C

D

E

F

K

J

10

10

25

3035

1520

50

510

90

G

40

30

S - A - B - F - K - G

Dengan Total Jarak = 95

A* search example

A* search example

A* search example

A* search example

A* search example

A* search example

Properties of A* Complete? Yes (unless there are

infinitely many nodes with f ≤ f(G) ) Time? Exponential Space? Keeps all nodes in memory Optimal? Yes

Kesimpulan Algoritma A* lebih baik dalam

melakukan pencarian heuristic daripada Greedy Best First Search karena dapat mengasilkan solusi yang optimal