MENGGUNAKAN ALGORITMA
BREADTH FIRST SEARCH (BFS)
DAN DEPTH FIRST SEARCH (DFS)
1. PENDAHULUAN
1.1.
Deskripsi Aplikasi
Aplikasi yang akan kami bangun adalah berupa game puzzle, dimana game ini
game menyusun potongan potongan puzzle yang harus disusun sedemikian rupa
sehingga tersusun rapi sesuai dengan yang seharusnya atau tujuan (goal) dari kita.
Dengan batasan masalah adalah sebagai berikut :
a. Game dibuat di atas platform console.
b. Potongan potongan puzzle didefinisikan sebagai angka.
c. Board adalah tempat potongan puzzle berada.
d. Bentuk board adalah matrik n x n
e. Potongan puzzle akan dimulai tersusun secara acak.
f. Tujuan (goal) dari game ini adalah tersusunnya potongan puzzle berupa angka
yang berurutan.
g. -1 adalah tanda bahwa itu adalah tempat kosong yang tidak terdapat potongan
puzzle.
h. Bahasa pemrograman yang akan digunakan adalah bahasa Java
1.2.
Tujuan Aplikasi
Tujuan dari game ini adalah mengimplementasikan penerapan algoritma Breadth
First Search dan Depth First Search sehingga dapat digunakan untuk
mengoptimalkan waktu dalam menyelesaikan permainan puzzle yang umumnya
Algoritma :
1.
Kunjungi simpul v,
2.
3.
Kunjungi simpul v,
2.
3.
2. PENGENALAN SISTEM
2.1.
NO.
1.
Nama
Variabel
width
Tipe Data
int
Deskripsi
2.
pilihan
int
2.3.
Susun sedemikian rupa oleh AI hingga tersusun seperti goal test, simpan angka -1 di paling
belakang
Inisialisasi
-1
Goal Test
1
-1
Transitions Model
Implementasi model pengerjaan tergantung dari algoritma yang dipilih. Untuk penjelasan
transitions model adalah sebagai berikut :
a. Transitions Model algoritma BFS
Salah satu cara implementasi BFS adalah dengan bantuan struktur data queue. Berikut ini
adalah urutan algoritmanya :
1. Masukkan initial state ke dalam antrian
2. Ambil state paling atas
3. periksa apakah sama dengan goal test?
4. Jika sama pencarian berhenti.
5. Jika tidak, buat child state lalu Periksa apakah child state pernah dikunjungi
(bandingkan dengan linked list)
6. Jika belum dikunjungi, masukan child state kedalam queue(antrian)
7. Simpan state yang telah dikunjungi dalam linked list
8. Hapus antrian terdepan
9. Kembali ke langkah no 2
-1
Belum dikunjungi
Linked list
Anak simpul
4
-1
Belum dikunjungi
-1
-1
-1
-1
-1
Jadi, untuk gambar pohon biner di atas urutan langkah dan kondisi stack-nya setiap iterasi
adalah :
1.
2.
-1
5. Jika tidak, buat child state lalu Periksa apakah child state pernah dikunjungi (bandingkan
dengan linked list)
Anak simpul
Belum dikunjungi
-1
Linked list
Belum dikunjungi
Anak simpul
4
-1
Linked list
.
6.
Hasil Stack :
-1
-1
-1
Linked list :
8.
-1
Ya, hapus stack teratas dengan prosedur pop, push anak simpul ke dalam stack
Hasil Stack :
9.
-1
-1
-1
Path Cost
Tiap langkah bernilai 1, jadi sejumlah langkah akan dihitung berapa jumlahnya dari initial
state sampai goal test. Jumlah langkah ditentukan oleh setiap pengambilan state pada queue
(antrian) atau stack
CONTOH IMPLEMENTASI
INISIALISASI BOARD (GOAL STATE)
ACTIONS
Proses Generate State / Child Node dan apabila state belum dikunjungi
Implementasi dalam algoritma DFS yang membedakan hanyalah struktur datanya saja,
algoritma DFS menggunakan queue (antrian) dan algoritma DFS menggunakan struktur data
stack (tumpukan), sehingga yang berbeda hanya script program yang berbeda hanya pada
inisialisasi awal (struktur datanya), untukl script programselanjutnya sama dengan algoritma
BFS.
2. Dengan menggunakan algoritma BFS atau DFS bisa menyelesaikan puzzle yang sangat
rumit, contohnya puzzle n x n (100 x 100, 20 x 20, dll).
3. Penyelesaian puzzle dengan algoritma BFS lebih cepat dibandingkan DFS karena, BFS
tidak mengunjungi simpul yang telah dikunjungi.
4.2.Saran
Setelah membangun aplikasi game ini, ada beberapa saran untuk yang akan mengembangkan
aplikasi kami selanjutnya :
1. Bagaimana Puzzle angka ini bisa dirubah jadi puzzle gambar
2. Metode permainan user, user mengacak puzzle kemudian diselesaikan oleh AI
5. REFERENSI
a. http://blog.uin-malang.ac.id/sharfina/category/kecerdasan-buatan/
6. LAMPIRAN
ScreenShoot Antar Muka
ScreenShoot Proses
Penentuan matriks dan pemilihan algoritma
ScreenShoot Hasil