masalah, ruang keadaan &...
Post on 09-Apr-2019
245 Views
Preview:
TRANSCRIPT
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
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
Penyelesaian masalah secara umum
Mendefinisikan suatu ruang keadaan;
Menetapkan satu atau lebih keadaan awal;
Menetapkan satu atau lebih tujuan;
Menetapkan kumpulan aturan.
9
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
top related