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)]