Disusun oleh:
Ir. Rinaldi Munir, M.T.
0
Struktur pencarian solusi: pohon dinamis
1
Contoh 6.1. Pohon ruang status yang dibangkitkan untuk
menghasilkan semua permutasi A, B, C:
()
A B C
AB AC BA BC C A C B
ABC AC B BAC BC A C AB C BA
2
Contoh 6.2. Permainan 8-puzzle:
2 1 6 1 2 3
4 8 8 4
7 5 3 7 6 5
2 1 6
4 8
7 5 3
up r ig h t
dow n le ft
2 6 2 1 6 2 1 6 2 1 6
4 1 8 4 5 8 4 8 4 8
7 5 3 7 3 7 5 3 7 5 3
le ft r ig h t le ft r ig h t dow n up up dow n
2 6 2 6 2 1 6 2 1 6 2 1 6 1 6 2 1 2 1 6
4 1 8 4 16 8 4 5 8 4 5 8 7 4 8 2 4 8 4 8 6 4 8 3
7 5 3 7 5 3 7 3 7 5 5 3 7 5 3 7 5 3 7 5
down
4 2 6
16 8 ... d a n s e te ru s n y a
7 5 3
3
Metode Pencarian Melebar (BFS)
0 0 0 0
1 2 1 2 1 2
3 4 3 4 5 6
S0: ()
4
S 0: 2 1 6
4 8
7 5 3
up r ig h t
dow n le ft
le f t r ig h t le ft r ig h t dow n up up dow n
S 5: S 6: S7: S8: S 9: S10: S11: S 12:
2 6 2 6 2 1 6 2 1 6 2 1 6 1 6 2 1 2 1 6
4 1 8 4 16 8 4 5 8 4 5 8 7 4 8 2 4 8 4 8 6 4 8 3
7 5 3 7 5 3 7 3 7 5 5 3 7 5 3 7 5 3 7 5
down
S15:
4 2 6
16 8 ... d a n s e te ru s n y a
7 5 3
Algoritma BFS:
1. Masukkan simpul akar ke dalam antrian Q. Jika
simpul akar = simpul solusi (goal node), maka stop.
2. Jika Q kosong, tidak ada solusi. Stop.
3. Ambil simpul v dari kepala (head) antrian, bangkitkan
semua anak-anaknya. Jika v tidak mempunyai anak
lagi, kembali ke langkah 2. Tempatkan semua anak
dari v di belakang antrian.
4. Jika suatu simpul anak dari v adalah simpul solusi,
maka solusi telah ditemukan, kalau tidak kembali lagi
ke langkah 2.
5
Contoh 6.3. Sebuah mainan yang terdiri atas 3 buah blok
(dinomori 1, 2, dan 3).
1
1 2
2 3 3
6
S0: 1
2 3
S3:
3
S1: S2: 1 1
1 2 3 2 3 2
S8:
2
S4: S5: S6: S7:
2 2 3 3 1
1 3 1 3 1 2 1 2 3
S9: S10:
3 1
2 2
1 3
7
Kompleksitas waktu algoritma BFS:
Asumsi: setiap simpul dapat membangkitkan b buah
simpul baru.
1 + b + b2 + b3 + ... + bd =(bd+1 – 1)/(b – 1) = O(bd).
1 1 1 1 4 1 4 1 4
2 2 3 2 3 2 3 5 2 3 5 6
(i) (ii) (iii) (iv) (v) (vi) (vii)
8
S0: ()
9
Contoh 6.4. Sebuah bidak (pion) bergerak di dalam
sebuah matriks pada Gambar 6.11. Bidak dapat
memasuki elemen matriks mana saja pada baris paling
atas. Dari elemen matriks yang berisi 0, bidak dapat
bergerak ke bawah jika elemen matriks di bawahnya
berisi 0; atau berpindah horizontal (kiri atau kanan) jika
elemen di bawahnya berisi 1. Bila bidak berada pada
elemen yang berisi 1, ia tidak dapat bergerak
kemanapun. Tujuan permainan ini adalah mencapai
elemen matriks yang mengandung 0 pada baris paling
bawah.
1 2 3 4
1 1 0 0 0
2 0 0 1 0
3 0 1 0 0
4 1 0 0 0
10
S0 S0
S1 S2 S8 S18 S1 S2 S8 S13
(1 ,1 ) (1 ,2 ) (1 ,3 ) (1 ,4 ) (1 ,1 ) (1 ,2 ) (1 ,3 ) (1 ,4 )
S3 S9 S14 S3 S9
(2 ,2 ) (1 ,2 ) (1 ,4 ) (2 ,2 ) (1 ,4 )
(a) (b)
Gambar 6.12
(a) Pohon ruang status yang mengandung duplikasi
simpul,
(b) Pohon ruang status yang menghindari
pembangkitan simpul yang sama.
11
Untuk persoalan yang memiliki banyak solusi,
metode DFS lebih cepat daripada BFS, karena DFS
menemukan solusi setelah mengeksplorasi hanya
sebagian kecil dari seluruh ruang status. Sedangkan
BFS masih harus menelusuri semua lintasan pada
aras d – 1 sebelum memeriksa solusi pada aras d.
12