MASALAH, RUANG KEADAAN &...

113
MASALAH, RUANG KEADAAN & PENCARIAN 1

Transcript of MASALAH, RUANG KEADAAN &...

MASALAH, RUANG KEADAAN & PENCARIAN

1

Pokok Bahasan

Mendefinisikan Masalah dalam Ruang Keadaan

Representasi Ruang Keadaan

Metode Pencarian & Pelacakan

2

Knowledge Base

InferenceEngine

Input:MASALAH

Output:SOLUSI

ARTIFICIAL INTELLIGENCE

Artificial Intelligence

3

Permainan Catur

Keadaan awal :

4

Aturan-aturan untuk melakukan gerakan secara legal

5

IF Bidak putih pada Kotak(e,2), And Kotak(E,3) Kosong, And Kotak(E,4) Kosong

Then Gerakkan bidak dari (E,2) ke

(E,4)

6

Tujuan yang ingin dicapai adalah posisi pada papan catur yang menunjukkan kemenangan seseorang terhadap lawannya.

Kemenangan ini ditandai dengan posisi Raja yang sudah tidak dapat bergerak lagi.

7

Ruang Keadaan

suatu ruang yang berisi semua keadaan yang mungkin

8

Penyelesaian masalah secara umum

Mendefinisikan suatu ruang keadaan;

Menetapkan satu atau lebih keadaan awal;

Menetapkan satu atau lebih tujuan;

Menetapkan kumpulan aturan.

9

Representasi Ruang Keadaan

Graph Keadaan

Pohon Pelacakan

Pohon AND/OR

Kasus …

10

Graph Keadaan

A

M T

4

3

35

2

6

4

8 6

7

4

H

I

D

E

J

F

C

BG

2

1

11

Lintasan dari M ke T:◦ M-A-B-C-E-T

◦ M-A-B-C-E-H-T

◦ M-D-C-E-T

◦ M-D-C-E-H-T

Lintasan yang menemui jalan buntu (tidak sampai ke T):◦ M-A-B-C-E-F-G

◦ M-A-B-C-E-I-J

◦ M-D-C-E-F-G

◦ M-D-C-E-I-J

◦ M-D-I-J

12

Pohon PelacakanM

A D

B

C

C

E

E F THI

F THI

I

J

J

J

G

GT

T

Level-0

Level-1

Level-2

Level-3

Level-4

Level-5

Level-6

Tujuan

TujuanTujuan

Tujuan

BuntuBuntu

Buntu

BuntuBuntu

13

Pohon AND/OR

M

arc yang terletak antara busur berarti AND

(a) (b)

A B C

M

A B C

14

M

A DB C C EE

TH T

Level-0

Level-1

Level-2TH T

15

Contoh: Masalah Teko Air

Ada 2 buah teko masing-masing berkapasitas 4 galon (teko A) dan 3 galon (teko B).

Tidak ada tanda yang menunjukkan batas ukuran pada kedua teko tersebut.

Ada sebuah pompa air yang akan digunakan untuk mengisikan air pada kedua teko tersebut.

Permasalahannya: Bagaimanakah kita dapat mengisikan tepat 2 galon air ke dalam teko yang berkapasitas 4 galon?

3 galon(teko B)

4 galon(teko A)

Airtak terbatas

16

Penyelesaian … Identifikasi ruang keadaan:

◦ Permasalahan ini dapat direpresentasikan dengan 2 bilangan integer, yaitu x dan y:

x = air yang diisikan pada teko 4 galon (teko A);

y = air yang diisikan pada teko 3 galon (teko B);

◦ Ruang keadaan: (x,y) sedemikian hingga x{0,1,2,3,4} dan y{0,1,2,3}.

Keadaan awal & tujuan:

◦ Keadaan awal, kedua teko dalam keadaan kosong: (0,0);

◦ Tujuan, keadaan dimana pada teko 4 galon berisi tepat 2 galon air: (2,n) untuk sembarang n.

17

(0,0)

(0,1)

(0,2)

(0,3)

(1,0)

(1,1)

(1,2)

(1,3)

(2,0)

(2,1)

(2,2)

(2,3)

(3,0)

(3,1)

(3,2)

(3,3)

(4,0)

(4,1)

(4,2)

(4,3)

Keadaan Awal Tujuan

18

Aturan-aturan

Aturan ke-

Jika Maka

1. (x,y)x < 4

(4,y)Isi teko A.

2. (x,y)y < 3

(x,3)Isi teko B.

3. (x,y)x > 0

(x-d,y)Tuangkan sebagian air keluar dari teko A.

4. (x,y)y > 0

(x,y-d)Tuangkan sebagian air keluar dari teko B.

5. (x,y)x > 0

(0,y)Kosongkan teko A dengan membuang airnya ke tanah.

6. (x,y)y > 0

(x,0)Kosongkan teko B dengan membuang airnya ke tanah.

19

7. (x,y)x+y 4 dan y > 0

(4,y-(4-x))Tuangkan air dari teko B ke teko A sampai teko A penuh.

8. (x,y)x+y 3 dan x > 0

(x-(3-y),3)Tuangkan air dari teko A ke teko B sampai teko B penuh.

9. (x,y)x+y 4 dan y > 0

(x+y,0)Tuangkan seluruh air dari teko B ke teko A.

10. (x,y)x+y 3 dan x > 0

(0,x+y)Tuangkan seluruh air dari teko A ke teko B.

11. (0,2) (2,0)Tuangkan 2 galon air dari teko B ke teko A.

12. (2,y) (0,y)Kosongkan 2 galon air di teko A dengan membuang airnya ke tanah.

20

Representasi ruang keadaan dengan pohon pelacakan.

(0,0)

(4,0) (0,3)

(0,0) (1,3)(4,3) (0,0) (3,0)(4,3)

21

Salah satu solusi:

Isi Teko A (gallon)

Isi Teko B (gallon)

Aturan yang dipakai

0 0 2

0 3 9

3 0 2

3 3 7

4 2 5

0 2 9

2 0 solusi

22

Metode Pencarian & pelacakan

Pencarian Buta (Blind Search)◦ Breadth-First Search

◦ Depth-First Search

Pencarian Terbimbing (Heuristics Search)◦ Generate & Test

◦ Hill Climbing

◦ Best-First Search

◦ Tabu Search

◦ Simulated Annealing

23

Breadth-First Search

Pada metode Breadth-First Search, semua node pada level n akan dikunjungi terlebih dahulu sebelum mengunjungi node-node pada level n+1.

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

Dalam metode BFS, node anak yang telah dikunjungi disimpan dalam suatu QUEUE (antrian).

QUEUE ini digunakan untuk mengacu simpul-simpul yang bertetangga dengan yang akan dikunjungi sesuai antrean.

24

A

I

C

JHF GE L MK

DB

Breadth-First Search

25

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)

Breadth-First Search

26

Berikut adalah langkah-langkah algoritma BFS

1. Masukkan node akar ke dalam QUEUE

2. Ambil node dari awal QUEUE, lalu cek apakah node merupakan solusi

3. Jika node merupakan solusi, pencarian selesai dan hasil dikembalikan

4. Jika node bukan solusi, masukkan seluruh node anak ke dalam QUEUE

5. Jika QUEUE kosong dan setiap node sudah dicek, pencarian selesai.

6. Jika QUEUE tidak kosong, ulangi pencarian mulai dari poin 2

Breadth-First Search

27

Kasus 1

Diketahui : pohon pelacakan yang ada pada gambar di samping ini :

Pertanyaan : implementasikan algoritma BFS untuk mencari solusi dari node awal (start) S sampai node G (goal)

Breadth-First Search

28

Solusi :

Iterasi ke – 1

masukkan node S ke QUEUE

gambar antriannya :

representasi ruang keadaan :

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

S

Breadth-First Search

29

keluarkan S dari QUEUE dan cek apakah S adalah goal?

ternyata S ≠ goal

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

Breadth-First Search

30

S punya anak A dan B, masukkan ke dalam QUEUE

Representasi ruang keadaan

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

B A

Breadth-First Search

31

Iterasi ke – 2

keluarkan A dari QUEUE dan cek apakah A adalah goal?

Ternyata A ≠ Goal

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

B

Breadth-First Search

32

A punya anak C dan D, masukkan ke QUEUE

Representasi Ruang Keadaan

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

D C B

Breadth-First Search

33

Iterasi ke – 3

keluarkan B dari QUEUE dan cek apakah B adalah goal?

Ternyata B ≠ Goal

B punya anak E dan F, masukkan ke QUEUE

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

D C

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

F E D C

Breadth-First Search

34

Representasi Ruang Keadaan

Breadth-First Search

35

Iterasi ke – 4

keluarkan C dari QUEUE dan cek apakah C adalah goal?

Ternyata C ≠ Goal

C tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

F E D

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

F E D

Breadth-First Search

36

Representasi Ruang Keadaan

Breadth-First Search

37

Iterasi ke – 5

keluarkan D dari QUEUE dan cek apakah D adalah goal?

Ternyata D ≠ Goal

D tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

F E

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

F E

Breadth-First Search

38

Representasi Ruang Keadaan

Breadth-First Search

39

Iterasi ke – 6

keluarkan E dari QUEUE dan cek apakah E adalah goal?

Ternyata E ≠ Goal

E punya anak H dan G, masukkan ke QUEUE

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

F

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

G H F

Breadth-First Search

40

Representasi Ruang Keadaan

Breadth-First Search

41

Iterasi ke – 7

keluarkan F dari QUEUE dan cek apakah F adalah goal?

Ternyata F ≠ Goal

F tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

G H

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

G H

Breadth-First Search

42

Representasi Ruang Keadaan

Breadth-First Search

43

Iterasi ke – 8

keluarkan H dari QUEUE dan cek apakah H adalah goal?

Ternyata H ≠ Goal

H tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

G

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

G

Breadth-First Search

44

Representasi Ruang Keadaan

Breadth-First Search

45

Iterasi ke – 9

keluarkan G dari QUEUE dan cek apakah G adalah goal?

Ternyata G = Goal

Pencarian Dihentikan.

Mencari Solusi :

G anaknya E, dan E anaknya B, dan B anaknya S

Karena S adalah node akar maka pencarian solusi dihentikan dan diperoleh solusi

S – B – E – G

QUEUEMasuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

Breadth-First Search

46

Kasus 2 Metode BFS Implementasi BFS pada masalah gelas air

Misalkan diketahui :

Keadaaan awal : (0,0) [keadaan sekarang = (0,0)]

Tujuan (Goal) : (1,0) [keadaan akhir = (1,0)]

Iterasi : terapkan kumpulan aturan berikut hingga keadaan sekarang = goal

1. Isi penuh gelas berkapasitas 4 liter

jika keadaan sekarang x < 4, maka keadaan selanjutnya (4,y)

2. Isi penuh gelas berkapasitas 3 liter

jika keadaan sekarang y < 3, maka keadaan selanjutnya (x,3)

47

3. kosongkan gelas berkapasitas 4 literjika keadaan sekarang x >0, maka keadaan selanjutnya (0,y)

4. kosongkan gelas berkapasitas 3 literjika keadaan sekarang y>0, maka keadaan selanjutnya (x,0)

5. tuangkan sebagian isi gelas berkapasitas 3 liter ke gelas berkapasitas 4 liter hingga gelas berkapasitas 4 liter penuh jika keadaan sekarang x+y>4 dan y>0, maka keadaan selanjutnya adalah (4, y+x-4)

Breadth-First Search

48

6. Tuangkan sebagian isi gelas berkapasitas 4 liter ke gelas berkapasitas 3 liter hingga gelas berkapasitas 3 liter penuhjika keadaan sekarang x+y > 3 dan x > 0, maka keadaan selanjutnya adalah (y+x-3, 3)

7. tuangkan seluruh isi gelas berkapasitas 4 liter ke gelas berkapasitas 3 literjika keadaan sekarang x+y ≤ 3 dan x>0 maka keadaan selanjutnya adalah 0, y+x)

8. tuangkan seluruh isi gelas berkapasitas 3 liter ke gelas berkapasitas 4 liter.jika keadaan sekarang (x+y ≤ 4 dan y > 0, maka keadaan selanjutnya adalah (y+x, 0)

Breadth-First Search

49

Solusi :

Keadaan awal QUEUE : [(0,0)]

close = []

Iterasi ke -1

ambil keadaan sekarang (0,0) ≠ goal, masukkan ke close, maka

QUEUE = [] close = [(0,0)]

terapkan aturan ke-1 s/d 8. yang memenuhi syarat dari aturan itu hanya aturan ke-1 dan ke-2

Breadth-First Search

50

Keadaan sekarang = (0,0) kena aturan 1 menjadi (4,0)

Keadaan sekarang = (0,0) kena aturan 2 menjadi (0,3)

(0,0) mempunyai anak (4,0) dan (0,3), lalu masukkan ke QUEUE

QUEUE = [(0,3), (4,0)]

close = [(0,0)]

Representasi ruang keadaan

Breadth-First Search

51

Iterasi ke – 2

QUEUE = [(0,3), (4,0)] CLOSE = [(0,0)]

Ambil keadaan sekarang (4,0) ≠ goal, masukkan ke CLOSE, sehingga

QUEUE = [(0,3)] CLOSE = [(0,0), (4,0)]

Catatan : keadaan sekarang diambil dari QUEUE yang paling kanan

Terapkan aturan ke-1 s/d ke-8, yang memenuhi syarat hanya aturan ke-2, 3 dan 6

Breadth-First Search

52

Keadaan sekarang = (4,0) kena aturan 2 menjadi (4,3)

Keadaan sekarang = (4,0) kena aturan 3 menjadi (0,0)

Karena (0,0) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam QUEUE.

Keadaan sekarang = (4,0) kena aturan 6 menjadi (1,3)

(4,0) punya anak (4,3) dan (1,3), masukkan ke QUEUE

Breadth-First Search

53

QUEUE = [(1,3), (4,3), (0,3)]

CLOSE = [(0,0), (4,0)]

Representasi ruang keadaan dalam bentuk pohon pelacakan adalah :

Breadth-First Search

54

Iterasi ke – 3

QUEUE = [(1,3), (4,3), (0,3)]

CLOSE = [(0,0), (4,0)]

Ambil keadaan sekarang (0,3) ≠ goal, masukkan ke CLOSE, sehingga

QUEUE = [(1,3), (4,3)]

CLOSE = [(0,0), (4,0), (0,3)]

Catatan : keadaan sekarang diambil dari QUEUE yang paling kanan

Terapkan aturan ke-1 s/d ke-8, yang memenuhi syarat hanya aturan ke-1, 4 dan 8

Breadth-First Search

55

Keadaan sekarang = (0,3) kena aturan 1 menjadi (4,3)

Karena (4,3) sama dengan node sebelumnya, maka tidak dimasukkan dalam QUEUE

Keadaan sekarang = (0,3) kena aturan 4 menjadi (0,0)

Karena (0,0) sama dengan node sebelumnya, maka tidak dimasukkan dalam QUEUE

Keadaan sekarang = (0,3) kena aturan ke-8 menjadi = (3,0)

Breadth-First Search

56

(0,3) punya anak (3,0), masukkan ke QUEUE

QUEUE = [(3,0), (1,3), (4,3)]

CLOSE = [(0,0),(4,0),(0,3)]

Representasi ruang keadaan dalam bentuk pohon pelacakan adalah :

Breadth-First Search

57

Iterasi ke - 4

QUEUE = [(3,0), (1,3), (4,3)]

CLOSE = [(0,0), (4,0), (0,3)]

Ambil keadaan sekarang (4,3) ≠ goal, masukkan ke CLOSE, sehingga

QUEUE = [(3,0), (1,3)]

CLOSE = [(0,0), (4,0), (0,3), (4,3)]

Terapkan aturan ke-1 s/d 8, yang memenuhi syarat hanya aturan ke-3 dan 4

Breadth-First Search

58

Keadaan sekarang = (4,3), kena aturan ke-3 menjadi (0,3)

Karena (0,3) sama dengan node sebelumnya, maka tidak dimasukkan dalam QUEUE

Keadaan sekarang = (4,3) kena turan ke-4 menjadi (4,0)

Karena (4,0) sama dengan node sebelumnya, maka tidak dimasukkan dalam QUEUE

Breadth-First Search

59

(4,3) tidak puya anak, maka

QUEUE = [(3,0), (1,3)]

CLOSE = [(0,0), (4,0), (0,3), (4,3)]

Representasi keadaan dalam bentuk pohon pelacakan :

Breadth-First Search

60

Iterasi ke- 5

QUEUE = [(3,0), (1,3)]

CLOSE = [(0,0), (4,0), (0,3), (4,3)]

Ambil keadaan sekarang (1,3) ≠ goal, masukkan ke CLOSE, sehingga

QUEUE = [(3,0)]

CLOSE = [(0,0), (4,0), (0,3), (4,3), (1,3)]

Terapkan aturan ke-1 s/d 8, yang memenuhi syarat hanya aturan ke-1,3,4 dan 8

Breadth-First Search

61

Keadaan sekarang = (1,3) kena aturan ke-1 menjadi = (4,3)Karena (4,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam QUEUE

Keadaan sekarang = (1,3) kena aturan ke-3 menjadi (0,3)Karena (0,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam QUEUE

Keadaan sekarang = (1,3) kena aturan ke-4 menjadi keadaan selanjutnya = (1,0)

Keadaan sekarang = (1,3) kena aturan ke-8 menjadi = (4,0)Karena (4,0) sama dengan node sebelumny, maka tidak dimasukkan dalam QUEUE

Breadth-First Search

62

(1,3) punya anak (1,0), masukkan ke QUEUE

QUEUE = [(1,0), (3,0)]

CLOSE = [(0,0), (4,0), (0,3), (4,3), (1,3)]

Representasi ruang keadaan dalam bentuk pohon pelacakan :

Breadth-First Search

63

Iterasi ke- 6

QUEUE = [(1,0), (3,0)]

CLOSE = [(0,0), (4,0), (0,3), (4,3), (1,3)]

Ambil keadaan sekarang (3,0) ≠ goal, masukkan ke CLOSE, sehingga

QUEUE = [(1,0)]

CLOSE = [(0,0), (4,0), (0,3), (4,3), (1,3), (3,0)]

Terapkan aturan ke-1 s/d 8, dimana yang memenuhi syarat hanya aturan ke 1,2,3,dan 7

Keadaan sekarang (3,0), dikenai aturan ke-1 menjadi (4,0)

karena (4,0) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam QUEUE

Breadth-First Search

64

Keadaan sekarang (3,0), dikenai aturan ke-2 menjadi keadaan selanjutnya (3,3)

Keadaan sekarang (3,0) dikenai aturan ke-3 menjadi keadaan selanjutnya (0,0)karena (0,0) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam QUEUE

Keadaan sekarang (3,0) dikenai aturan ke-7 menjadi keadaan selanjutnya (0,3)karena (0,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam QUEUE

(3,0) mempunyai anak (3,3), untuk kemudian dimasukkan ke QUEUE

QUEUE = [(3,3), (1,0)] CLOSE = [(0,0), (4,0), (0,3), (4,3), (1,3), (3,0)]

Breadth-First Search

65

Representasi ruang keadaan dalam bentuk pohon pelacakan :

Breadth-First Search

66

Iterasi ke- 7

QUEUE = [(3,3), (1,0)]

CLOSE = [(0,0), (4,0), (0,3), (4,3), (1,3), (3,0)]

Ambil keadaan sekarang = (1,0) = goal, masukkan ke CLOSE, sehingga

QUEUE = [(3,3)]

CLOSE = [(0,0), (4,0), (0,3), (4,3), (1,3), (3,0), (1,0)]

Karena keadaan sekarang (1,0) = goal maka iterasi dihentikan.

Breadth-First Search

67

Representasi ruang keadaan dalam bentuk pohon pelacakan :

Breadth-First Search

68

Untuk mencari solusinya, telusuri ruang keadaan dari mulai GOAL sampai dengan AKAR

Pelacakan solusi yang ditemukan antara lain :

(1,0) adalah anak dari node (1,3)

(1,3) adalah anak dari node (4,0)

(4,0) adalah anak dari node (0,0)

Karena (0,0) adalah akar, maka pelacakan solusi dihentikan.

Solusi : (0,0), (4,0), (1,3), (1,0)

Breadth-First Search

69

Depth-First Search

Pada Depth-First Search, proses pencarian akan dilakukan pada 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

Dalam algoritma DFS, node yang telah dikunjungi disimpan dalam suatu stack (tumpukan).

Stack ini digunakan untuk mengacu node-node yang akan dikunjungi sesuai urutan tumpukan (masuk terakhir, keluar pertama) dan mempermudah proses runut balik, jika node sudah tidak mempunyai anak (node sudah berada di kedalaman maksimal).

70

A

B

C

Depth-First Search

71

Langkah-langkah algoritma DFS1. Masukkan node akar ke dalam stack

2. Ambil node dari stack teratas, lalu cek apakah node merupakan solusi.

3. Jika node merupakan solusi, pencarian selesai dan hasil dikembalikan.

4. Jika node bukan solusi, masukkan seluruh node anak ke dalam stack

5. Jika stack kosong dan setiap node sudah dicek, pencarian selesai

6. Ulangi pencarian mulai dari poin 2

Depth-First Search

72

Keuntungan◦ Membutuhkan memori yang relatif kecil,

karena hanya node-node pada lintasan yang aktif saja yang disimpan.

◦ Secara kebetulan, metode depth-first search akan menemukan solusi tanpa harus menguji labih banyak lagi dalam ruang keadaan.

Kelemahan◦ Memungkinkan tidak ditemukannya tujuan

yang diharapkan.◦ Hanya akan mendapatkan 1 solusi pada

setiap pencarian.

Depth-First Search

73

Contoh : Kasus 1 Misalkan diketahui pohon pelacakan seperti gambar di

bawah ini. Implementasikan algoritma DFS untuk mencari solusi dari S node awal (start) sampai G (goal)

Depth-First Search

74

Iterasi 1

Beri tanda batas pada stack dan masukkan node S ke stack

representasi

Depth-First Search

75

Keluarkan S dari stack dan cek

Ternyata S ≠ goal

S punya anak A dan B, beri tanda batas pada stack, dan masukkan node A dan B ke stack

Depth-First Search

76

Karena S punya anak, masukkan S ke Solusi sementara :

Solusi Sementara = [S]

Representasi keadaan :

Depth-First Search

77

Iterasi 2

Stack pada iterasi ke 2 :

Solusi sementara = [S]

Keluarkan A dari stack dan cek

Ternyata A ≠ goal

Depth-First Search

78

Karena A punya anak C dan D, beri tanda batas dan masukkan node C dan D ke stack

Karena A punya anak, masukkan A ke solusi sementara :

Solusi sementara = [S A]

Depth-First Search

79

Representasi keadaan :

Depth-First Search

80

Iterasi 3

Stack pada iterasi ke 3 :

Solusi sementara = [S A]

Keluarkan C dari stack dan cek

Ternyata C ≠ goal

Depth-First Search

81

Karena C tidak punya anak maka C tidak dimasukkan ke solusi sementara

Solusi sementara = [S A]

Depth-First Search

82

Representasi keadaan :

Depth-First Search

83

Iterasi 4

Stack pada iterasi ke 4 :

Solusi sementara = [S A]

Keluarkan D dari stack dan cek

Ternyata D ≠ goal

Depth-First Search

84

Karena D tidak punya anak jadi tidak ada yang dimasukkan ke stack

Karena D tidak punya anak, maka D tidak dimasukkan ke solusi sementara.

Solusi sementara = [S A]

Depth-First Search

85

Representasi keadaan :

Depth-First Search

86

Iterasi 5 Stack pada iterasi ke 5 :

Solusi sementara = [S A] Keluarkan tanda batas dari stack dan

gunakan untuk menghapus solusi sementara satu huruf

Solusi sementara = [S A] = [S]

Depth-First Search

87

Iterasi 6

Stack pada iterasi ke 6 :

Solusi sementara = [S]

Keluarkan B dari stack dan cek

Ternyata B ≠ goal

Depth-First Search

88

Karena B punya anak E dan F, beri tanda batas dan masukkan node E dan F ke stack

Karena B punya anak, masukkan B ke solusi sementara :

Solusi sementara = [S B]

Depth-First Search

89

Representasi keadaan :

Depth-First Search

90

Iterasi 7

Stack pada iterasi ke 7 :

Solusi sementara = [S B]

Keluarkan E dari stack dan cek

Ternyata E ≠ goal

Depth-First Search

91

Karena E punya anak H dan G, beri tanda batas dan masukkan node H dan G ke stack

Karena E punya anak, masukkan E ke solusi sementara :

Solusi sementara = [S B E]

Depth-First Search

92

Representasi keadaan :

Depth-First Search

93

Iterasi 8

Stack pada iterasi ke 8 :

Solusi sementara = [S B E]

Keluarkan H dari stack dan cek

Ternyata H ≠ goal

Depth-First Search

94

Karena H tidak punya anak jadi tidak ada yang dimasukkan ke stack

Karena H tidak punya anak, maka H tidak dimasukkan ke solusi sementara.

Solusi sementara = [S B E]

Depth-First Search

95

Representasi keadaan :

Depth-First Search

96

Iterasi 9

Stack pada iterasi ke 9 :

Solusi sementara = [S B E]

Keluarkan G dari stack dan cek

Ternyata G ≠ goal

Depth-First Search

97

G = goal, masukkan ke solusi sementara dan hentikan pencarian

Solusi = [S B E G]

Representasi keadaan

Depth-First Search

98

Kasus 2 Metode DFS Implementasi DFS pada masalah gelas air

Misalkan diketahui :

Keadaaan awal : (0,0) [keadaan sekarang = (0,0)]

Tujuan (Goal) : (1,0) [keadaan akhir = (1,0)]

Iterasi : terapkan kumpulan aturan berikut hingga keadaan sekarang = goal

1. Isi penuh gelas berkapasitas 4 liter

jika keadaan sekarang x < 4, maka keadaan selanjutnya (4,y)

2. Isi penuh gelas berkapasitas 3 liter

jika keadaan sekarang y < 3, maka keadaan selanjutnya (x,3)

99

3. kosongkan gelas berkapasitas 4 liter

jika keadaan sekarang x >0, maka keadaan selanjutnya (0,y)

4. kosongkan gelas berkapasitas 3 liter

jika keadaan sekarang y>0, maka keadaan selanjutnya (x,0)

5. tuangkan sebagian isi gelas berkapasitas 3 liter ke gelas berkapasitas 4 liter hingga gelas berkapasitas 4 liter penuh

jika keadaan sekarang x+y>4, maka keadaan selanjutnya adalah (4, y+x-4)

Depth-First Search

100

6. Tuangkan sebagian isi gelas berkapasitas 4 liter ke gelas berkapasitas 3 liter hingga gelas berkapasitas 3 liter penuh

jika keadaan sekarang x+y > 3 dan x > 0, maka keadaan selanjutnya adalah (y+x-3, 3)

7. tuangkan seluruh isi gelas berkapasitas 4 liter ke gelas berkapasitas 3 liter

jika keadaan sekarang x+y ≤ 3 dan x>0 maka keadaan selanjutnya adalah 0, y+x)

8. tuangkan seluruh isi gelas berkapasitas 3 liter ke gelas berkapasitas 4 liter.

jika keadaan sekarang (x+y ≤ 4 dan y > 0, maka keadaan selanjutnya adalah (y+x, 0)

Depth-First Search

101

Iterasi ke-1 Beri tanda batas dan masukkan node (0,0) ke stack. STACK = [(0,0) ) SOLUSI =[ ] Ambil keadaan sekarang = (0,0), maka : STACK = [ ] SOLUSI =[ ] Cek, ternyata (0,0) ≠ goal Terapkan aturan ke-1 s/d 8, yang memenuhi syarat

hanya aturan ke-1 dan 2 Keadaan sekarang = (0,0) kena aturan ke-1 menjadi

(4,0) Keadaan sekarang = (0,0) kena aturan ke-2 menjadi

(0,3)

Depth-First Search

102

(0,0) punya anak (4,0) dan (0,3), beri tanda batas, dan masukkan node (4,0) dan (0,3) ke Stack. Karena (0,0) punya anak, masukkan ke solusi.

STACK = [(4,0),(0,3) ]

SOLUSI = [(0,0)]

Representasi ruang keadaan dalam bentuk pohon pelacakan :

Depth-First Search

103

Iterasi ke-2 STACK = [(4,0), (0,3) ] SOLUSI =[(0,0)] Ambil keadaan sekarang = (4,0), maka : STACK = [(0,3) ] SOLUSI =[(0,0)] Cek, ternyata (4,0) ≠ goal Terapkan aturan ke-1 s/d 8, yang memenuhi syarat hanya

aturan ke-2, 3 dan 6 Keadaan sekarang = (4,0) kena aturan ke-2 menjadi (4,3) Keadaan sekarang = (4,0) kena aturan ke-3 menjadi (0,0) Karena (0,0) sama dengan node sebelumnya, maka tidak

dimasukkan dalam STACK Keadaan sekarang = (4,0) kena aturan ke- 6 menjadi

(1,3)

Depth-First Search

104

(4,0) punya anak (4,3) dan (1,3), beri tanda batas, dan masukkan node (4,3) dan (1,3) ke Stack. Karena (4,0) punya anak, masukkan ke solusi.

STACK = [(4,3),(1,3) (0,3) ]SOLUSI = [(0,0),(4,0)]

Representasi ruang keadaan dalam bentuk pohon pelacakan :

Depth-First Search105

Iterasi ke-3

STACK = [(4,3), (1,3) (0,3) ]

Solusi =[(0,0),(4,0)]

Ambil keadaan sekarang = (4,3), maka :

STACK = [(1,3) (0,3) ]

Solusi =[(0,0), (4,0)]

Check ternyata (4,3) ≠ goal

Terapkan aturan ke-1 s/d ke-8, yang memenuhi syarat hanya aturan ke-3, 4, 5 dan 6

Depth-First Search

106

Keadaan sekarang = (4,3) kena aturan ke-3 menjadi (0,3)karena (0,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam STACK

Keadaan sekarang = (4,3) kena aturan ke-4 menjadi (4,0)karena (4,0) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam STACK

Keadaan sekarang = (4,3) kena aturan ke-5 menjadi (4,3)karena (4,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam STACK

Keadaan sekarang = (4,3) kena aturan ke-6 menjadi (4,3)karena (4,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam STACK

Depth-First Search

107

Karena (4,3) tidak punya node anak, maka tidak dimasukkan ke dalam Solusi

STACK = [(1,3) (0,3) ] Solusi = [(0,0), (4,0)] Representasi ruang keadaan dalam bentuk pohon

pelacakan :

Depth-First Search

108

Iterasi ke-4

STACK = [(1,3) (0,3) ]

Solusi =[(0,0),(4,0)]

Ambil keadaan sekarang = (1,3), maka :

STACK = [ (0,3) ]

Solusi =[(0,0), (4,0)]

Check ternyata (1,3) ≠ goal

Terapkan aturan ke-1 s/d ke-8, yang memenuhi syarat hanya aturan ke- 1, 3, 4 dan 8

Depth-First Search

109

Keadaan sekarang = (1,3) kena aturan ke-1 menjadi (4,3)karena (4,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam STACK

Keadaan sekarang = (1,3) kena aturan ke-3 menjadi (0,3)karena (0,3) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam STACK

Keadaan sekarang = (1,3) kena aturan ke-4 menjadi (1,0)

Keadaan sekarang = (1,3) kena aturan ke-8 menjadi (4,0)karena (4,0) sama dengan node sebelumnya, maka tidak dimasukkan ke dalam STACK

Depth-First Search

110

Node (1,3) punya anak (1,0). Beri tanda batas dan masukkan node (1,0) ke stack. Karena node (1,3) punya anak, masukkan solusi.

STACK = [(1,0) (0,3) ]

Solusi = [(0,0), (4,0), (1,3)]

Representasi ruang keadaan dalam bentuk pohon pelacakan ;

Depth-First Search

111

Iterasi ke-5 Stack = [(1,0) (0,3) ] Solusi = [(0,0),(4,0),(1,3)] Ambil keadaan sekarang = (1,0), maka : Stack = [ (0,3) ] Solusi = [ (0,0), (4,0), (1,3)] Cek ternyata (1,0) = goal Karena keadaan sekarang = goal, masukkan (1,0) ke

solusi : [(0,0),(4,0),(1,3),(1,0)] dan pencarian selesai Untuk mencari solusinya, lihat daftar pada array

solusi Solusi = [(0,0),(4,0),(1,3),(1,0)]

Depth-First Search

112

NEXT PENCARIAN HEURISTIC

113