Anda di halaman 1dari 24

Pertemuan - 15

Penerapan Algoritma BFS dan


DFS pada Pencarian Solusi

Oleh Asep Budiman Kusdinar, M.T., M.T.A.


Pengorganisasian Solusi

 Kemungkinan2 solusi dari persoalan


membentuk ruang solusi (solution space)

 Ruang solusi diorganisasikan ke dalam


struktur pohon

 Pencarian solusi dilakukan dengan


mengunjungi (traversal) simpul-simpul di
dalam pohon
 Pohon yang ditelusuri: pohon dinamis

 Pohon dinamis: pohon yang dibangun selama


pencarian solusi berlangsung

 Pohon dinamis dibangun dengan 2 metode


traversal: BFS dan DFS

 Pohon dinamis menyatakan status-status


persoalan pada saat pencarian solusi
berlangsung.
Terminologi

 Status persoalan (problem state): simpul-simpul di


dalam pohon dinamis yang memenuhi kendala
(constraints).

 Status solusi (solution state): satu atau lebih status yang


menyatakan solusi persoalan.

 Status tujuan (goal state): status solusi yang merupakan


simpul daun

 Ruang solusi (solution space): himpunan semua status


solusi.

 Ruang status (state space): Seluruh simpul di dalam


pohon dinamis dan pohonnya dinamakan juga pohon
ruang status (state space tree).
Contoh Puzzle
Contoh 6.2. Permainan 8-puzzle:
2 1 6 1 2 3
4 8 8 4
7 5 3 7 6 5

(a) Susunan awal (b) Susunan akhir


(initial state) (goal state)
2 1 6
4 8
7 5 3

up right
down left

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

left right left right down up up down

2 6 2 6 2 1 6 2 1 6 2 1 6 1 6 2 1 2 1 6
4 1 8 4 6
1 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
6
1 8 ... dan seterusnya
7 5 3
Metode Pencarian Melebar (BFS)
0 0 0 0

1 2 1 2 1 2

3 4 3 4 5 6

(i) (ii) (iii) (iv)

Gambar 6.4. Tahapan pembentukan pohon BFS


S0: ()

S1: A S2: B S3: C

S4: S5: S6: S7: S8: S9:


AB AC BA BC CA CB

S10: S11: S12: S13: S14: S15:


ABC ACB BAC BCA CAB CBA

Gambar 6.5 Pembentukan pohon ruang status persoalan


pembangkitan permutasi A, B, C dengan metode BFS
S0: 2 1 6
4 8
7 5 3

up right
down left

S1: 2 6 S2: 2 1 6 S3: 2 1 6 S4: 2 1 6


4 1 8 4 5 8 4 8 4 8
7 5 3 7 3 7 5 3 7 5 3

left right left right down up up down


S5: S6: S7: S8: S9: S10: S11: S12:

2 6 2 6 2 1 6 2 1 6 2 1 6 1 6 2 1 2 1 6
4 1 8 4 6
1 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
6
1 8 ... dan seterusnya
7 5 3

Gambar 6.6 Pembentukan pohon ruang status persoalan


8-puzzle dengan metode BFS.
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.
Contoh 6.3. Sebuah mainan yang terdiri atas 3 buah blok
(dinomori 1, 2, dan 3).
1
1 2
2 3 3

(a) Susunan awal (b) Susunan akhir

 Operator perpindahan: “PINDAHKAN X ke Y”,


yang berarti memindahkan objek X ke atas objek
yang lain.

 Pada setiap saat, hanya satu buah blok yang boleh


dipindahkan.

 Operator tidak digunakan untuk membangkitkan


status yang sama lebih dari satu kali.
Pohon ruang status yang dibentuk selama
pencarian solusi dengan metode BFS:
S0: 1
2 3

S3:

3
S1: S2: 1 1
1 2 3 2 3 2

S8:

S6: 2
S4: S5: S7:
2 2 3 3 1
1 3 1 3 1 2 1 2 3

S9: S10:
3 1
2 2
1 3
 Dengan mengikuti lintasan dari simpul akar
(S0) ke simpul solusi(S10), kita memperoleh
konfigurasi urutan perpindahan blok dari
status awal sampai ke status akhir.

 Dengan metode BFS, jika terdapat sebuah


solusi, maka BFS menjamin dapat
menemukannya.

 Jika terdapat lebih dari satu buah solusi,


BFS selalu menemukan solusi pertama pada
aras pohon yang paling rendah.
Kompleksitas waktu algoritma BFS:
 Asumsi: setiap simpul dapat
membangkitkan b buah simpul baru.
 Misalkan solusi ditemukan pada aras ke-d
 Jumlah maksimum seluruh simpul:
1 + b + b2 + b3 + ... + bd = (bd+1 – 1)/(b – 1)
 T(n) = O(bd).
 Kompleksitas ruang algoritma BFS = sama
dengan kompleksitas waktunya, karena
semua simpul daun dari pohon harus
disimpan di dalam memori selama proses
pencarian.
Metode Pencarian Mendalam (DFS)
0 0 0 0 0 0 0

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)

Gambar 6.9. Tahapan pembentukan pohon DFS


Pembentukan pohon ruang status persoalan
pembangkitan permutasi A, B, C dengan metode
DFS

S0: ()

S1: A S6: B S11: C

S2: S4: S7: S9: S12: S14:


AB AC BA BC CA CB

S3: S5: S8: S10: S13: S15:


ABC ACB BAC BCA CAB CBA
Algoritma DFS:
1. Masukkan simpul akar ke dalam antrian
Q. Jika simpul akar = simpul solusi,
maka Stop.
2. Jika Q kosong, tidak ada solusi. Stop.
3. Ambil simpul v dari kepala (head)
antrian.
4. Jika kedalaman simpul v sama dengan
batas kedalaman maksimum, kembali
ke langkah 2.
5. Bangkitkan semua anak dari simpul v.
Jika v tidak mempunyai anak lagi,
kembali ke langkah 2. Tempatkan
semua anak dari v di awal antrian Q.
6. Jika anak dari simpul v adalah simpul
tujuan, berarti solusi telah ditemukan,
kalau tidak, kembali lagi ke langkah
2.
 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

Gambar 6.11 Matriks bidak


Operator yang digunakan:

DOWN pindahkan bidak satu posisi ke bawah


LEFT pindahkan bidak satu posisi ke kiri
RIGHT pindahkan bidak satu posisi ke kanan

Batas kedalaman maksimum pohon ruang status


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

S4 S7 S10 S15 S4 S7 S10


(2,1) (2,3) (2,2) (2,4) (2,1) (2,3) (2,4)

S5 S11 S13 S16 S5 S11


(3,1) (2,1) (2,3) (3,4) (3,1) (3,4)

S6 S12 S17 S6 S12


(3,2) (3,1) (4,4) (3,2) (4,4)

Gambar 6.12
(a) Pohon ruang status yang mengandung duplikasi simpul
(b) Pohon ruang status yang menghindari pembangkitan simpul
yang sama.
 Kompleksitas waktu algoritma DFS pada
kasus terburuk adalah O(bm).

 Kompleksitas ruang algoritma DFS adalah


O(bm), karena kita hanya hanya perlu
menyimpan satu buah lintasan tunggal dari
akar sampai daun, ditambah dengan
simpul-simpul saudara kandungnya yang
belum dikembangkan.
 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.
Varian DFS: Metode Pencarian Mendalam Berulang
(IDS = Iterative Deepening Search)

 Kesulitan utama pada metode DFS adalah


menentukan batas maksimum kedalaman
pohon ruang status.

 Strategi yang digunakan untuk memecahkan


masalah kedalaman terbaik ini adalah dengan
mencoba semua kedalaman yang mungkin,
mula-mula kedalaman 0, kedalaman 1,
kedalaman 2, dan seterusnya.
Ada Pertanyaan ?

Anda mungkin juga menyukai