• Tidak ada hasil yang ditemukan

MASALAH, RUANG KEADAAN & PENCARIAN

N/A
N/A
Protected

Academic year: 2022

Membagikan "MASALAH, RUANG KEADAAN & PENCARIAN"

Copied!
113
0
0

Teks penuh

(1)

KEADAAN &

PENCARIAN

(2)

Mendefinisikan Masalah dalam Ruang Keadaan

Representasi Ruang Keadaan

Metode Pencarian & Pelacakan

(3)

Knowledge Base

Inference Engine

Input:

MASALAH

Output:

SOLUS I

ARTIFICIAL INTELLIGENCE

Intelligence

(4)

Catur

Keadaan awal :

(5)

secara legal

(6)

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)

(7)

Kemenangan ini ditandai dengan posisi Raja yang sudah tidak dapat bergerak lagi.

(8)

suatu ruang yang berisi semua keadaan yang mungkin

(9)

Mendefinisikan suatu ruang keadaan;

Menetapkan satu atau lebih keadaan awal;

Menetapkan satu atau lebih tujuan;

Menetapkan kumpulan aturan.

(10)

Graph Keadaan

Pohon Pelacakan

Pohon AND/OR

Kasus …

(11)

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

(12)

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

(13)

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

(14)

M

arc yang terletak antara busur

berarti AND

(a) (b)

A B C

M

A B C

(15)

A B C E D C E

H T

T

Level-1

Level-2 H T

T

(16)

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

(17)

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

(18)

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

(19)

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)

(20)

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

(21)

pelacakan.

(0,0)

(4,0) (0,3)

(0,0) (1,3)

(4,3) (4,3) (0,0) (3,0)

(22)

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

(23)

Pencarian Buta (Blind Search)

Breadth-First Search

Depth-First Search

Pencarian Terbimbing (Heuristics Search)

Generate & Test

Hill Climbing

Best-First Search

Tabu Search

(24)

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.

(25)

A

I C

H J

F G

E K L M

B D

(26)

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)

(27)

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

(28)

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)

(29)

Solusi :

Iterasi ke – 1

masukkan node S ke QUEUE gambar antriannya :

representasi ruang keadaan :

QUEUE

Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

S

(30)

keluarkan S dari QUEUE dan cek apakah S adalah goal?

ternyata S ≠ goal

QUEUE

Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

(31)

S punya anak A dan B, masukkan ke dalam QUEUE

Representasi ruang keadaan

QUEUE

Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

B A

(32)

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

(33)

A punya anak C dan D, masukkan ke QUEUE

Representasi Ruang Keadaan

QUEUE

Masuk Lewat Pintu Kiri, Keluar Lewat Pintu kanan

D C B

(34)

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

(35)

Representasi Ruang Keadaan

(36)

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

(37)

Representasi Ruang Keadaan

(38)

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

(39)

Representasi Ruang Keadaan

(40)

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

(41)

Representasi Ruang Keadaan

(42)

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

(43)

Representasi Ruang Keadaan

(44)

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

(45)

Representasi Ruang Keadaan

(46)

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

(47)

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

(48)

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)

(49)

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

(50)

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

(51)

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

(52)

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

(53)

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)

(54)

QUEUE = [(1,3), (4,3), (0,3)]

CLOSE = [(0,0), (4,0)]

Representasi ruang keadaan dalam bentuk pohon pelacakan adalah :

(55)

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

(56)

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)

(57)

QUEUE

QUEUE = [(3,0), (1,3), (4,3)]

CLOSE = [(0,0),(4,0),(0,3)]

Representasi ruang keadaan dalam bentuk pohon pelacakan adalah :

(58)

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

(59)

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

(60)

QUEUE = [(3,0), (1,3)]

CLOSE = [(0,0), (4,0), (0,3), (4,3)]

Representasi keadaan dalam bentuk pohon pelacakan :

(61)

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

(62)

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

(63)

(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 :

(64)

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

(65)

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

(66)

pelacakan :

(67)

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

(68)

Representasi ruang keadaan dalam bentuk pohon pelacakan :

(69)

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

(70)

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

(71)

A B

C

(72)

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

(73)

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.

(74)

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)

(75)

Iterasi 1

Beri tanda batas pada stack dan masukkan node S ke stack

(76)

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

(77)

Karena S punya anak, masukkan S ke Solusi sementara :

Solusi Sementara = [S]

Representasi keadaan :

(78)

Iterasi 2

Stack pada iterasi ke 2 :

Solusi sementara = [S]

Keluarkan A dari stack dan cek

Ternyata A ≠ goal

(79)

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 :

(80)

Representasi keadaan :

(81)

Iterasi 3

Stack pada iterasi ke 3 :

Solusi sementara = [S A]

Keluarkan C dari stack dan cek

(82)

Karena C tidak punya anak maka C tidak dimasukkan ke solusi sementara

Solusi sementara = [S A]

(83)

Representasi keadaan :

(84)

Iterasi 4

Stack pada iterasi ke 4 :

Solusi sementara = [S A]

Keluarkan D dari stack dan cek

Ternyata D ≠ goal

(85)

Karena D tidak punya anak jadi tidak ada yang dimasukkan ke stack

Karena D tidak punya anak, maka D tidak dimasukkan ke solusi sementara.

(86)

Representasi keadaan :

(87)

Iterasi 5

Stack pada iterasi ke 5 :

Solusi sementara = [S A]

Keluarkan tanda batas dari stack dan

gunakan untuk menghapus solusi sementara satu huruf

(88)

Iterasi 6

Stack pada iterasi ke 6 :

Solusi sementara = [S]

Keluarkan B dari stack dan cek

Ternyata B ≠ goal

(89)

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 :

(90)

Representasi keadaan :

(91)

Iterasi 7

Stack pada iterasi ke 7 :

Solusi sementara = [S B]

Keluarkan E dari stack dan cek

(92)

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]

(93)

Representasi keadaan :

(94)

Iterasi 8

Stack pada iterasi ke 8 :

Solusi sementara = [S B E]

Keluarkan H dari stack dan cek

Ternyata H ≠ goal

(95)

Karena H tidak punya anak jadi tidak ada yang dimasukkan ke stack

Karena H tidak punya anak, maka H tidak dimasukkan ke solusi sementara.

(96)

Representasi keadaan :

(97)

Iterasi 9

Stack pada iterasi ke 9 :

Solusi sementara = [S B E]

Keluarkan G dari stack dan cek

(98)

G = goal, masukkan ke solusi sementara dan hentikan pencarian

Solusi = [S B E G]

Representasi keadaan

(99)

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

(100)

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)

(101)

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

(102)

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)

(103)

(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 :

(104)

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)

(105)

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 :

(106)

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

(107)

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

(108)

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 :

(109)

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

(110)

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

(111)

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 ;

(112)

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

(113)

Referensi

Garis besar

Dokumen terkait

Disajikan masalah kontekstual terkait bunga tunggal, peserta didik dapat memecahkan masalah tersebut dengan konsep barisan aritmetika. Tes

Adapun judul skripsi ini adalah Pembuatan Dan Analisa Sifat Mekanik Komposit Dengan Penguat Abu Terbang (fly ash) Cangkang Sawit Untuk Bahan Kampas Rem Sepeda

Penyusunan Rencana Strategis ( Renstra) tahun 2016 -2021 adalah sebagai upaya untuk membina, meningkatkan, mengembangkan, menumbuhkan Sektor koperasi serta usaha mikro kecil menengah,

menyerupai piking disebabkan kolom yang dipakai telah tercemar karena sering digunakan dalam menguji residu lainnya sehingga meskipun telah dicuci dengan

Apabila kebutuhan air tanah dari setiap pelaku tersebut seluruhnya disuplai dari air tanah dalam, maka kota Semarang sudah mengalami kekeringan sejak tahun 2008, karena

Jika Penawar yang Berjaya ingkar dalam mematuhi mana-mana syarat di atas atau membayar apa-apa wang yang harus dibayar, maka Pihak Pemegang Serahhak/Pemberi Pinjaman boleh (tanpa

Sementara itu, perkiraan panen raya di bulan Maret 2015 dan kebijakan pemerintah untuk melanjutkan program raskin pada tahun 2015 diperkirakan juga berkontribusi

penggantian apabila barang dan jasa yang diterima tidak sesuai dengan perjanjian atau tidak