penerapan bfs dan dfs pada pencarian solusi

Post on 05-Feb-2016

125 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Penerapan BFS dan DFS pada Pencarian Solusi. 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. - PowerPoint PPT Presentation

TRANSCRIPT

Penerapan BFS dan DFS pada Pencarian Solusi

Pengorganisasian SolusiPengorganisasian 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.

TerminologiTerminologi– 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 6.1. Pohon ruang status yang dibangkitkan untuk menghasilkan semua permutasi A, B, C:

()

B CA

AB AC BA BC C A C B

ABC AC B BAC BC A C AB C BA

Ket: () = status kosong

Setiap simpul di dalam pohon menyatakan status persoalan.

Status awal adalah akar yang berupa sebuah

“kosong”.

Setiap daun pada pohon tersebut (ABC, ACB, BAC, BCA, CAB. Dan CBA) menyatakan status solusi, dan semua daun adalah ruang solusi.

Contoh 6.2. Permainan 8-puzzle:

2 1 6

4 8

7 5 3

1 2 3

8 4

7 6 5

(a) Susunan awal (b) Susunan akhir (initial state) (goal state)

2 1 6

4 5 8

7 3

2 1 6

4 8

7 5 3

2 6

4 1 8

7 5 3

2 6

4 1 8

7 5 3

2 1 6

4 8

7 5 3

2 1 6

4 5 8

7 3

2 6

64 1 8

7 5 3

2 1 6

4 5 8

7 5

2 1 6

7 4 8

5 3

1 6

2 4 8

7 5 3

2 1

4 8 6

7 5 3

2 1 6

4 8 3

7 5

2 1 6

4 8

7 5 3

updow n left

right

le ft right le ft right dow n up up dow n

4 2

6

6

1 8

7 5 3

dow n

... dan seterusnya

Metode Pencarian Melebar (BFS)

0 0

1 2 1 2

0

3 4

1 2

0

3 4 5 6

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

Gambar 6.4. Tahapan pembentukan pohon BFS

()

B CA

AB AC BA BC C A C B

ABC AC B BAC BC A C AB C BA

S0:

S1: S2: S3:

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

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

Gambar 6.5 Pembentukan pohon ruang status persoalan pembangkitan permutasi A, B, C dengan metode BFS

2 1 6

4 5 8

7 3

2 1 6

4 8

7 5 3

2 6

4 1 8

7 5 3

2 6

4 1 8

7 5 3

2 1 6

4 8

7 5 3

2 1 6

4 5 8

7 3

2 6

64 1 8

7 5 3

2 1 6

4 5 8

7 5

2 1 6

7 4 8

5 3

1 6

2 4 8

7 5 3

2 1

4 8 6

7 5 3

2 1 6

4 8 3

7 5

2 1 6

4 8

7 5 3

updow n left

right

le ft right le ft right dow n up up dow n

4 2

6

6

1 8

7 5 3

dow n

... dan seterusnya

S0:

S1: S2: S3: S4:

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

S15:

Gambar 6.6 Pembentukan pohon ruang status persoalan 8-puzzle dengan metode BFS.

Algoritma BFS:Algoritma BFS:1.1. Masukkan simpul akar ke dalam Masukkan simpul akar ke dalam

antrian antrian QQ. Jika simpul akar = simpul . Jika simpul akar = simpul solusi (solusi (goal nodegoal node), maka stop.), maka stop.

2.2. Jika Jika QQ kosong, tidak ada solusi. Stop. kosong, tidak ada solusi. Stop.

3.3. Ambil simpul Ambil simpul vv dari kepala ( dari kepala (headhead) ) antrian, bangkitkan semua anak-antrian, bangkitkan semua anak-anaknya. Jika anaknya. Jika vv tidak mempunyai anak tidak mempunyai anak lagi, kembali ke langkah 2. Tempatkan lagi, kembali ke langkah 2. Tempatkan semua anak dari semua anak dari vv di belakang antrian. di belakang antrian.

4.4. Jika suatu simpul anak dari Jika suatu simpul anak dari vv adalah adalah simpul solusi, maka solusi telah simpul solusi, maka solusi telah ditemukan, kalau tidak kembali lagi ke ditemukan, kalau tidak kembali lagi ke langkah 2.langkah 2.

Contoh 6.3. Sebuah mainan yang terdiri atas 3 buah blok (dinomori 1, 2, dan 3).

1

2 3 3

2

1

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

2 3

321 3

1

2 2

1

3

1 3

2

1 2

3

3

2

1 2

3

1 3

1

2

1

2

3

3

2

1

S0:

S1: S2:

S3:

S4: S5: S6: S7:

S8:

S9: S10:

Dengan mengikuti lintasan dari simput 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

1 4

0

2 3 5 6

1 4

0

2 3 5

1 4

0

2 32

1

0

3

0

1

2

1

0

(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

()

B CA

AB AC BA BC C A C B

ABC AC B BAC BC A C AB C BA

S0:

S1: S6: S11:

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

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

Algoritma DFS:Algoritma DFS:1.1. Masukkan simpul akar ke dalam antrian Masukkan simpul akar ke dalam antrian QQ. .

Jika simpul akar = simpul solusi, maka Jika simpul akar = simpul solusi, maka Stop.Stop.

2.2. Jika Jika QQ kosong, tidak ada solusi. Stop. kosong, tidak ada solusi. Stop.

3.3. Ambil simpul Ambil simpul vv dari kepala ( dari kepala (headhead) antrian.) antrian.

4.4. Jika kedalaman simpul Jika kedalaman simpul vv sama dengan sama dengan batas kedalaman maksimum, kembali ke batas kedalaman maksimum, kembali ke langkah 2.langkah 2.

5.5. Bangkitkan semua anak dari simpul Bangkitkan semua anak dari simpul vv. Jika . Jika vv tidak mempunyai anak lagi, kembali ke tidak mempunyai anak lagi, kembali ke langkah 2. Tempatkan semua anak dari langkah 2. Tempatkan semua anak dari vv di awal antrian di awal antrian QQ..

6.6. Jika anak dari simpul Jika anak dari simpul vv adalah simpul adalah simpul tujuan, berarti solusi telah ditemukan, tujuan, berarti solusi telah ditemukan, kalau tidak, kembali lagi ke langkah 2.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.

Gambar 6.12 (a) Pohon ruang status yang mengandung duplikasi simpul (b) Pohon ruang status yang menghindari pembangkitan simpul yang sama.

S6(3,2)

S5(3,1)

S4(2,1)

S7(2,3)

S10(2,2)

S11(2,1)

S12(3,1)

S13(2,3)

S15(2,4)

S16(3,4)

S17(4,4)

S3(2,2)

S9(1,2)

S14(1,4)

S2(1,2)

S8(1,3)

S18(1,4)

S1(1,1)

S0

S6(3,2)

S5(3,1)

S4(2,1)

S7(2,3)

S10(2,4)

S11(3,4)

S12(4,4)

S3(2,2)

S9(1,4)

S2(1,2)

S8(1,3)

S13(1,4)

S1(1,1)

S0

• Kompleksitas waktu algoritma DFS Kompleksitas waktu algoritma DFS pada kasus terburuk adalah pada kasus terburuk adalah OO((bmbm). ).

• Kompleksitas ruang algoritma DFS Kompleksitas ruang algoritma DFS adalah adalah OO((bmbm), karena kita hanya ), karena kita hanya hanya perlu menyimpan satu buah hanya perlu menyimpan satu buah lintasan tunggal dari akar sampai lintasan tunggal dari akar sampai daun, ditambah dengan simpul-daun, ditambah dengan simpul-simpul saudara kandungnya yang simpul saudara kandungnya yang belum dikembangkan.belum dikembangkan.

• Untuk persoalan yang memiliki Untuk persoalan yang memiliki banyak solusi, metode DFS lebih banyak solusi, metode DFS lebih cepat daripada BFS, karena DFS cepat daripada BFS, karena DFS menemukan solusi setelah menemukan solusi setelah mengeksplorasi hanya sebagian kecil mengeksplorasi hanya sebagian kecil dari seluruh ruang status. Sedangkan dari seluruh ruang status. Sedangkan BFS masih harus menelusuri semua BFS masih harus menelusuri semua lintasan pada aras lintasan pada aras d d – 1 sebelum – 1 sebelum memeriksa solusi pada aras memeriksa solusi pada aras dd..

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.

top related