KEADAAN &
PENCARIAN
Mendefinisikan Masalah dalam Ruang Keadaan
Representasi Ruang Keadaan
Metode Pencarian & Pelacakan
Knowledge Base
Inference Engine
Input:
MASALAH
Output:
SOLUS I
ARTIFICIAL INTELLIGENCE
Intelligence
Catur
Keadaan awal :
secara legal
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)
Kemenangan ini ditandai dengan posisi Raja yang sudah tidak dapat bergerak lagi.
suatu ruang yang berisi semua keadaan yang mungkin
Mendefinisikan suatu ruang keadaan;
Menetapkan satu atau lebih keadaan awal;
Menetapkan satu atau lebih tujuan;
Menetapkan kumpulan aturan.
Graph Keadaan
Pohon Pelacakan
Pohon AND/OR
Kasus …
A
M T
4
3
3 5
2
6
4
8 6
7 4
H
I D
E
J
F
C
B G
2
1
◦ 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
M
A D
B
C
C
E
E F I H T
F I H T
I
J
J
G T
Level-0 Level-1 Level-2 Level-3
Level-4 Level-5
Tujuan
Tujuan Tujuan
Buntu Buntu
Buntu
M
arc yang terletak antara busur
berarti AND
(a) (b)
A B C
M
A B C
A B C E D C E
H T
T
Level-1
Level-2 H T
T
Ada 2 buah teko masing-masing berkapasitas 4 galon (teko A) dan 3 galon
Air
(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)
Air tak terbatas
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
(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)
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) (0,y)
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
pelacakan.
(0,0)
(4,0) (0,3)
(0,0) (1,3)
(4,3) (4,3) (0,0) (3,0)
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
Pencarian Buta (Blind Search)
◦ Breadth-First Search
◦ Depth-First Search
Pencarian Terbimbing (Heuristics Search)
◦ Generate & Test
◦ Hill Climbing
◦ Best-First Search
◦ Tabu 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.
A
I C
H J
F G
E K L M
B D
◦ 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)
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
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)
Solusi :
Iterasi ke – 1
masukkan node S ke QUEUE gambar antriannya :
representasi ruang keadaan :
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
S
keluarkan S dari QUEUE dan cek apakah S adalah goal?
ternyata S ≠ goal
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
S punya anak A dan B, masukkan ke dalam QUEUE
Representasi ruang keadaan
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
B A
Iterasi ke – 2
keluarkan A dari QUEUE dan cek apakah A adalah goal?
Ternyata A ≠ Goal
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
B
A punya anak C dan D, masukkan ke QUEUE
Representasi Ruang Keadaan
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
D C B
keluarkan B dari QUEUE dan cek apakah B adalah goal?
Ternyata B ≠ Goal
B punya anak E dan F, masukkan ke QUEUE
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
D C
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E D C
Representasi Ruang Keadaan
keluarkan C dari QUEUE dan cek apakah C adalah goal?
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
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E D
Representasi Ruang Keadaan
keluarkan D dari QUEUE dan cek apakah D adalah goal?
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
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F E
Representasi Ruang Keadaan
keluarkan E dari QUEUE dan cek apakah E adalah goal?
Ternyata E ≠ Goal
E punya anak H dan G, masukkan ke QUEUE
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
F
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G H F
Representasi Ruang Keadaan
keluarkan F dari QUEUE dan cek apakah F adalah goal?
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
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G H
Representasi Ruang Keadaan
keluarkan H dari QUEUE dan cek apakah H adalah goal?
Ternyata H ≠ Goal
H tidak punya anak, jadi tidak ada yang dimasukkan ke QUEUE
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
G
Representasi Ruang Keadaan
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
QUEUE
Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan
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
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)
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
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
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
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
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)
QUEUE = [(1,3), (4,3), (0,3)]
CLOSE = [(0,0), (4,0)]
Representasi ruang keadaan dalam bentuk pohon pelacakan adalah :
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
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)
QUEUE
QUEUE = [(3,0), (1,3), (4,3)]
CLOSE = [(0,0),(4,0),(0,3)]
Representasi ruang keadaan dalam bentuk pohon pelacakan adalah :
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
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 = [(3,0), (1,3)]
CLOSE = [(0,0), (4,0), (0,3), (4,3)]
Representasi keadaan dalam bentuk pohon pelacakan :
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
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
(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 :
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
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
pelacakan :
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)]
Representasi ruang keadaan dalam bentuk pohon pelacakan :
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
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).
A B
C
Langkah-langkah algoritma DFS
1. 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
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.
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)
Iterasi 1
Beri tanda batas pada stack dan masukkan node S ke stack
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
Karena S punya anak, masukkan S ke Solusi sementara :
Solusi Sementara = [S]
Representasi keadaan :
Iterasi 2
Stack pada iterasi ke 2 :
Solusi sementara = [S]
Keluarkan A dari stack dan cek
Ternyata A ≠ goal
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 :
Representasi keadaan :
Iterasi 3
Stack pada iterasi ke 3 :
Solusi sementara = [S A]
Keluarkan C dari stack dan cek
Karena C tidak punya anak maka C tidak dimasukkan ke solusi sementara
Solusi sementara = [S A]
Representasi keadaan :
Iterasi 4
Stack pada iterasi ke 4 :
Solusi sementara = [S A]
Keluarkan D dari stack dan cek
Ternyata D ≠ goal
Karena D tidak punya anak jadi tidak ada yang dimasukkan ke stack
Karena D tidak punya anak, maka D tidak dimasukkan ke solusi sementara.
Representasi keadaan :
Iterasi 5
Stack pada iterasi ke 5 :
Solusi sementara = [S A]
Keluarkan tanda batas dari stack dan
gunakan untuk menghapus solusi sementara satu huruf
Iterasi 6
Stack pada iterasi ke 6 :
Solusi sementara = [S]
Keluarkan B dari stack dan cek
Ternyata B ≠ goal
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 :
Representasi keadaan :
Iterasi 7
Stack pada iterasi ke 7 :
Solusi sementara = [S B]
Keluarkan E dari stack dan cek
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]
Representasi keadaan :
Iterasi 8
Stack pada iterasi ke 8 :
Solusi sementara = [S B E]
Keluarkan H dari stack dan cek
Ternyata H ≠ goal
Karena H tidak punya anak jadi tidak ada yang dimasukkan ke stack
Karena H tidak punya anak, maka H tidak dimasukkan ke solusi sementara.
Representasi keadaan :
Iterasi 9
Stack pada iterasi ke 9 :
Solusi sementara = [S B E]
Keluarkan G dari stack dan cek
G = goal, masukkan ke solusi sementara dan hentikan pencarian
Solusi = [S B E G]
Representasi keadaan
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
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)
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
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)
(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 :
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)
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 :
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
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
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 :
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
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
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 ;
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)]