MASALAH, RUANG KEADAAN & PENCARIAN
1
Pokok Bahasan Mendefinisikan Masalah dalam Ruang Keadaan Representasi Ruang Keadaan Metode Pencarian & Pelacakan
2
Artificial Intelligence ARTIFICIAL INTELLIGENCE Output: SOLUS I
Input: MASALAH
Knowledge Base
Inference Engine
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
3 B
4
2
C 8 5
1
G
E
6
M
F
4
H
7 T 6
3 I D
2
4
J
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 Pelacakan M
Level-0 Level-1
D
A
B
I
C
Level-2
C
J
E
Level-3
Buntu
E
F
I
H
T
Level-4
Tujuan
F G
I
H
T Tujuan
J
Buntu Buntu
T
G
J
T
Level-5
Buntu Buntu Tujuan
Level-6
Tujuan
13
Pohon AND/OR M
A
B
(a)
M
C
arc yang terletak A antara busur B berarti AND
C
(b)
14
M
A
B
H
D
E
C
T
Level-0
T
C
H
E
T
Level-1
T
Level-2
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?
Air tak terbatas 4 galon (teko A)
3 galon (teko B)
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
Keadaan Awal
Tujuan
(0,0)
(1,0)
(2,0)
(3,0)
(4,0)
(0,1)
(1,1)
(2,1)
(3,1)
(4,1)
(0,2)
(1,2)
(2,2)
(3,2)
(4,2)
(0,3)
(1,3)
(2,3)
(3,3)
(4,3)
18
Aturan ke-
Aturan-aturan
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)
(4,3)
(0,0)
(0,3)
(1,3)
(4,3)
(0,0)
(3,0)
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
Breadth-First Search
A
E
F
D
C
B
G
H
I
J
K
L
M
25
Keuntungan:
Breadth-First Search
◦ 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) 26
Breadth-First Search
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
27
Breadth-First Search
Kasus 1 Diketahui : pohon pelacakan yang ada pada gambar di samping ini : Pertanyaan : implementasika n algoritma BFS untuk mencari solusi dari node awal (start) S sampai node G (goal) 28
Breadth-First Search
Solusi :
Iterasi ke – 1 masukkan node S ke QUEUE gambar antriannya : QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
S representasi ruang keadaan :
29
Breadth-First Search
keluarkan S dari QUEUE dan cek apakah S adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
ternyata S ≠ goal 30
Breadth-First Search
S punya anak A dan B, masukkan ke dalam QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
BA Representasi ruang keadaan
31
Breadth-First Search
Iterasi ke – 2 keluarkan A dari QUEUE dan cek apakah A adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
B Ternyata A ≠ Goal
32
Breadth-First Search
A punya anak C dan D, masukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
D C B Representasi Ruang Keadaan
33
Breadth-First Search
Iterasi ke – 3 keluarkan B dari QUEUE dan cek apakah B adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
D C Ternyata B ≠ Goal B punya anak E dan F, masukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E D C
34
Breadth-First Search
Representasi Ruang Keadaan
35
Breadth-First Search
Iterasi ke – 4 keluarkan C dari QUEUE dan cek apakah C adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E D Ternyata C ≠ Goal C tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E D
36
Breadth-First Search
Representasi Ruang Keadaan
37
Breadth-First Search
Iterasi ke – 5 keluarkan D dari QUEUE dan cek apakah D adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E Ternyata D ≠ Goal D tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E
38
Breadth-First Search
Representasi Ruang Keadaan
39
Breadth-First Search
Iterasi ke – 6 keluarkan E dari QUEUE dan cek apakah E adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F Ternyata E ≠ Goal E punya anak H dan G, masukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G H F
40
Breadth-First Search
Representasi Ruang Keadaan
41
Breadth-First Search
Iterasi ke – 7 keluarkan F dari QUEUE dan cek apakah F adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G H Ternyata F ≠ Goal F tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G H
42
Breadth-First Search
Representasi Ruang Keadaan
43
Breadth-First Search
Iterasi ke – 8 keluarkan H dari QUEUE dan cek apakah H adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G Ternyata H ≠ Goal H tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G
44
Breadth-First Search
Representasi Ruang Keadaan
45
Breadth-First Search
Iterasi ke – 9 keluarkan G dari QUEUE dan cek apakah G adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
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 46
Kasus 2 Metode BFS
1.
2.
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 Isi penuh gelas berkapasitas 4 liter jika keadaan sekarang x < 4, maka keadaan selanjutnya (4,y) Isi penuh gelas berkapasitas 3 liter jika keadaan sekarang y < 3, maka keadaan selanjutnya (x,3) 47
Breadth-First Search
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 dan y>0, maka keadaan selanjutnya adalah (4, y+x-4)
48
Breadth-First Search
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)
49
Breadth-First Search
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 50
Breadth-First Search
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
51
Breadth-First Search
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 52
Breadth-First Search
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
53
Breadth-First Search
QUEUE = [(1,3), (4,3), (0,3)] CLOSE = [(0,0), (4,0)]
Representasi ruang keadaan dalam bentuk pohon pelacakan adalah :
54
Breadth-First Search
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 55
Breadth-First Search
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) 56
Breadth-First Search
(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 :
57
Breadth-First Search
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 58
Breadth-First Search
Keadaan sekarang = (4,3), kena aturan ke3 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
59
Breadth-First Search
(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 :
60
Breadth-First Search
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 61
Breadth-First Search
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
62
Breadth-First Search
(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 :
63
Breadth-First Search
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 64
Breadth-First Search
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)] 65
Breadth-First Search
Representasi ruang keadaan dalam bentuk pohon pelacakan :
66
Breadth-First Search
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. 67
Breadth-First Search
Representasi ruang keadaan dalam bentuk pohon pelacakan :
68
Breadth-First Search
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)
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
Depth-First Search
A B C
71
Depth-First Search
Langkah-langkah algoritma DFS 1. 2. 3. 4. 5. 6.
Masukkan node akar ke dalam stack Ambil node dari stack teratas, lalu cek apakah node merupakan solusi. Jika node merupakan solusi, pencarian selesai dan hasil dikembalikan. Jika node bukan solusi, masukkan seluruh node anak ke dalam stack Jika stack kosong dan setiap node sudah dicek, pencarian selesai Ulangi pencarian mulai dari poin 2 72
Depth-First Search
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.
73
Depth-First Search
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)
74
Depth-First Search
Iterasi 1 Beri tanda batas pada stack dan masukkan node S ke stack
representasi 75
Depth-First Search
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
76
Depth-First Search
Karena S punya anak, masukkan S ke Solusi sementara : Solusi Sementara = [S]
Representasi keadaan :
77
Depth-First Search
Iterasi 2 Stack pada iterasi ke 2 :
Solusi sementara = [S] Keluarkan A dari stack dan cek
Ternyata A ≠ goal
78
Depth-First Search
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]
79
Depth-First Search
Representasi keadaan :
80
Depth-First Search
Iterasi 3 Stack pada iterasi ke 3 :
Solusi sementara = [S A] Keluarkan C dari stack dan cek
Ternyata C ≠ goal
81
Depth-First Search
Karena C tidak punya anak maka C tidak dimasukkan ke solusi sementara
Solusi sementara = [S A]
82
Depth-First Search
Representasi keadaan :
83
Depth-First Search
Iterasi 4 Stack pada iterasi ke 4 :
Solusi sementara = [S A] Keluarkan D dari stack dan cek
Ternyata D ≠ goal
84
Depth-First Search
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]
85
Depth-First Search
Representasi keadaan :
86
Depth-First Search
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] 87
Depth-First Search
Iterasi 6 Stack pada iterasi ke 6 :
Solusi sementara = [S] Keluarkan B dari stack dan cek
Ternyata B ≠ goal
88
Depth-First Search
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]
89
Depth-First Search
Representasi keadaan :
90
Depth-First Search
Iterasi 7 Stack pada iterasi ke 7 :
Solusi sementara = [S B] Keluarkan E dari stack dan cek
Ternyata E ≠ goal
91
Depth-First Search
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]
92
Depth-First Search
Representasi keadaan :
93
Depth-First Search
Iterasi 8 Stack pada iterasi ke 8 :
Solusi sementara = [S B E] Keluarkan H dari stack dan cek
Ternyata H ≠ goal
94
Depth-First Search
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]
95
Depth-First Search
Representasi keadaan :
96
Depth-First Search
Iterasi 9 Stack pada iterasi ke 9 :
Solusi sementara = [S B E] Keluarkan G dari stack dan cek
Ternyata G ≠ goal
97
Depth-First Search
G = goal, masukkan ke solusi sementara dan hentikan pencarian Solusi = [S B E G] Representasi keadaan
98
Kasus 2 Metode DFS
1.
2.
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 Isi penuh gelas berkapasitas 4 liter jika keadaan sekarang x < 4, maka keadaan selanjutnya (4,y) Isi penuh gelas berkapasitas 3 liter jika keadaan sekarang y < 3, maka keadaan selanjutnya (x,3) 99
Depth-First Search
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) 100
Depth-First Search
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) 101
Depth-First Search
Iterasi ke-1 Beri tanda batas dan masukkan node (0,0) ke stack. STACK = [(0,0) ) SOLUSI =[ ] Ambil keadaan sekarang = (0,0), maka : SOLUSI =[ ] STACK = [ ] 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) 102
Depth-First Search
(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 :
103
Depth-First Search
Iterasi ke-2 STACK = [(4,0), (0,3) ] SOLUSI =[(0,0)] Ambil keadaan sekarang = (4,0), maka : ] SOLUSI =[(0,0)] STACK = [(0,3) 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) 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 Search 105
Depth-First Search
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 106
Depth-First Search
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
107
Depth-First Search
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 :
108
Depth-First Search
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 109
Depth-First Search
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
110
Depth-First Search
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 ;
111
Depth-First Search
Iterasi ke-5 Stack = [(1,0) (0,3) ] Solusi = [(0,0),(4,0),(1,3)] Ambil keadaan sekarang = (1,0), maka : (0,3) ] Stack = [ 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)] 112
NEXT
PENCARIAN HEURISTIC 113