MASALAH, RUANG KEADAAN & PENCARIAN 1
Pokok Bahasan Mendefinisikan Masalah dalam Ruang Keadaan Representasi Ruang Keadaan Metode Pencarian & Pelacakan 2
Artificial Intelligence ARTIFICIAL INTELLIGENCE Input: MASALAH Output: SOLUS I Knowledge Base Inference Engine 3
Keadaan awal : Permainan Catur 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 M 4 5 A 3 3 B C 4 F 6 E 2 7 8 H 6 1 T G D 2 I 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 A D Level-1 B I C Level-2 C J Buntu E Level-3 E F I H T Level-4 F G Buntu I J Buntu H T Tujuan T Tujuan G Buntu J Buntu T Tujuan Tujuan Level-5 Level-6 13
Pohon AND/OR M M A B C arc yang terletak antara busur berarti AND A B C (a) (b) 14
M Level-0 A B C E D C E Level-1 H T T H T 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? 4 galon (teko A) 3 galon (teko B) Air tak 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
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-aturan Aturan ke- Jika Maka 1. (x,y) x < 4 2. (x,y) y < 3 3. (x,y) x > 0 4. (x,y) y > 0 5. (x,y) x > 0 6. (x,y) y > 0 (4,y) Isi teko A. (x,3) Isi teko B. (x-d,y) Tuangkan sebagian air keluar dari teko A. (x,y-d) Tuangkan sebagian air keluar dari teko B. (0,y) Kosongkan teko A dengan membuang airnya ke tanah. (x,0) Kosongkan teko B dengan membuang airnya ke tanah. 19
7. (x,y) x+y 4 dan y > 0 8. (x,y) x+y 3 dan x > 0 9. (x,y) x+y 4 dan y > 0 10. (x,y) x+y 3 dan x > 0 (4,y-(4-x)) Tuangkan air dari teko B ke teko A sampai teko A penuh. (x-(3-y),3) Tuangkan air dari teko A ke teko B sampai teko B penuh. (x+y,0) Tuangkan seluruh air dari teko B ke teko A. (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) (4,3) (0,0) (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 B C D E F G H I J K L M 25
Breadth-First Search 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) 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
Solusi : Breadth-First Search 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 Representasi ruang keadaan B A 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
A punya anak C dan D, masukkan ke QUEUE QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan D C B Breadth-First Search Representasi Ruang Keadaan 33
Iterasi ke 3 keluarkan B dari QUEUE dan cek apakah B adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan D C Breadth-First Search 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
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 Breadth-First Search 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
Iterasi ke 5 keluarkan D dari QUEUE dan cek apakah D adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan F E Breadth-First Search 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
Iterasi ke 6 keluarkan E dari QUEUE dan cek apakah E adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan F Breadth-First Search 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
Iterasi ke 7 keluarkan F dari QUEUE dan cek apakah F adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan G H Breadth-First Search 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
Iterasi ke 8 keluarkan H dari QUEUE dan cek apakah H adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan G Breadth-First Search 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
Iterasi ke 9 keluarkan G dari QUEUE dan cek apakah G adalah goal? QUEUE Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan Breadth-First Search 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 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
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
Iterasi ke 2 Breadth-First Search 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
QUEUE = [(1,3), (4,3), (0,3)] CLOSE = [(0,0), (4,0)] Breadth-First Search Representasi ruang keadaan dalam bentuk pohon pelacakan adalah : 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 Breadth-First Search 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
(0,3) punya anak (3,0), masukkan ke QUEUE QUEUE = [(3,0), (1,3), (4,3)] CLOSE = [(0,0),(4,0),(0,3)] Breadth-First Search 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 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 59
(4,3) tidak puya anak, maka QUEUE = [(3,0), (1,3)] CLOSE = [(0,0), (4,0), (0,3), (4,3)] Breadth-First Search 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. 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 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 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
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 : 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) 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 : 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) 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 : 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)] 112
NEXT PENCARIAN HEURISTIC 113