Anda di halaman 1dari 29

PEMBANGUNAN GAME PUZZLE

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

tidak dapat dilakukan jika penyelesaian permainan dilakukan secara manual


(menggunakan orang sebagai pemain).
1.3.

Algoritma Breadth First Search dan Depth First Search


1.3.1. BFS (Breadth First Search)
Algoritma BFS melakukan pencarian secara melebar atau per level pohon,
pencarian dimulai dari simpul akar dan mengunjungi semua tetangga dari
simpul tersebut. Kemudian, pencarian akan dilanjutkan dari setiap simpul
yang terdekat tersebut ke tetangga simpul yang belum dikunjungi, dan
seterusnya, sampai mendapatkan solusi. Dengan kata lain :

Traversal dimulai dari simpul v.

Algoritma :

1.

Kunjungi simpul v,

2.

Kunjungi semua simpul yang bertetangga dengan simpul v terlebih


dahulu.

3.

Kunjungi simpul yang belum dikunjungi dan bertetangga dengan


simpul-simpul yang tadi dikunjungi, demikian seterusnya.

Gambar 1. Contoh urutan simpul yang dikunjungi pada algoritma


BFS

1.3.2. DFS (Depth First Search)


Algoritma DFS, pencarian dimulai dari simpul akar, dilanjutkan dengan
mengunjungi satu cabang sampai sedalam mungkin sebelum melakukan
runut balik dan melanjutkan pencarian dari cabang lain.
Traversal dimulai dari simpul v.
Algoritma:
1.

Kunjungi simpul v,

2.

Kunjungi simpul w yang bertetangga dengan simpul v.

3.

Ulangi DFS mulai dari simpul w.

Gambar 2. Contoh urutan simpul yang dikunjungi pada algoritma


DFS

2. PENGENALAN SISTEM
2.1.

Representasi Data Masukan


Data yang dibutuhkan oleh aplikasi :

NO.

1.

Nama
Variabel

width

Tipe Data

int

Deskripsi

Digunakan pada saat akan memasukkan


berapa lebar papan yang akan digunakan
Digunakan pada saat memilih algoritma mana

2.

pilihan

int

yang akan dipakai untuk menyelesaikan game


puzzle ini

Tabel 1. Tabel Data Inputan


2.2. Mekasnisme System
Mekanisme sistem pada aplikasi ini adalah sebagai berikut :
a. Aplikasi akan menerima masukkan data width dari user, yang akan
menentukkan berapa jumlah matrik board yang akan dimainkan pada game
puzzle ini.
b. Setelah itu, aplikasi akan meminta user untuk memilih algoritma mana yang
akan dipakai untuk menyelesaikan game puzzle ini, dengan mengetikkan
angka 1 atau 2 pada field pilihan apakah akan menggunakan Breadth First
Search (1) atau Depth First Serach (2).
c. Pemilihan selesai, aplikasi akan berjalan sendiri dan memperlihatkan langkah
demi langkahnya untuk menyelesaikan game puzzle tersebut.
d. Hasil akhirnya puzzle akan tersusun dengan rapi secara berurutan.

2.3.

Representasi Ouput System


Goal atau tujuan dari aplikasi ini berupa puzzle yang tersusun secara berurutan
dengan menggunakan algoritma dan jumlah board yang dipilih.

3. ANALISIS DAN IMPLEMENTASI SISTEM


Contoh Kasus
Terdapat sebuah puzzle yang tersusun secara acak berikut
-1

Susun sedemikian rupa oleh AI hingga tersusun seperti goal test, simpan angka -1 di paling
belakang
Inisialisasi
-1

Goal Test
1

-1

Actions : Bergeraknya puzzle ke kiri, ke kanan, ke atas, atau ke bawah

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. Masukan inisial state ke dalam antrian.


Queue:
-1

2. ambil state paling atas


-1

3. apakah state sama dengan goal test?


Tidak.
4. Jika sama pencarian berhenti.
5. Jika tidak, buat child state lalu Periksa apakah child state pernah dikunjungi (bandingkan
dengan linked list)
Anak simpul
Linked list
1

-1

Belum dikunjungi
Linked list
Anak simpul
4

-1

Belum dikunjungi

6. Jika belum dikunjungi, masukan child state kedalam queue(antrian)


Queue:
-1

-1

-1

7. Simpan state yang telah dikunjungi dalam linked list


Linked list :
-1

8. hapus antrian paling depan


Queue:
1

-1

-1

9. kembali ke langkah 2 (ambil state paling atas)

-1

b. Transitions Model algoritma DFS


Dalam implementasinya DFS dapat diselesaikan dengan cara rekursif atau dengan bantuan
struktur data stack. Kita akan membahas dengan cara yang menggunakan stack. Stack yang
digunakan adalah stack yang isi elemennya adalah simpul pohon / tree.
Bagaimana cara kerjanya ? Berikut ini adalah urutan algoritmanya :
1. Masukkan initial state ke dalam stack dengan push
2. Ambil isi elemen (berupa simpul pohon) dari tumpukan teratas
3. Bandingkan state, apakah sama dengan goal test
4. Jika sama berhenti
5. Jika tidak, buat child state lalu Periksa apakah child state pernah dikunjungi (bandingkan
dengan linked list)
6. Jika belum dikunjungi, push anak simpul ke dalam stack
7. Simpan state yang telah dikunjungi dalam linked list
8. Hapus stack teratas dengan prosedur pop.
9. Kembali ke no.2

Jadi, untuk gambar pohon biner di atas urutan langkah dan kondisi stack-nya setiap iterasi
adalah :
1.

Masukkan initial state ke dalam stack dengan push


Stack

2.

-1

Ambil isi elemen (berupa simpul pohon) dari tumpukan teratas


-1

3. Bandingkan state, apakah sama dengan goal test


4. Jika sama berhenti

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.

Jika belum dikunjungi, push anak simpul ke dalam stack

Hasil Stack :

-1

-1

-1

7. Simpan state yang telah dikunjungi dalam linked list

Linked list :

8.

-1

Ya, hapus stack teratas dengan prosedur pop, push anak simpul ke dalam stack

Hasil Stack :

9.

-1

-1

-1

Lanjutkan kembali ke no.2

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)

INISIALISASI STATE AWAL (RANDOM MATRIK)

ACTIONS

TRANSITION ALGORITMA BFS


Inisialisasi Queue Dan Linked List

Masukkan initial state ke dalam antrian

Proses Pengambilan dan perbandingan state

Proses Generate State / Child Node dan apabila state belum dikunjungi

Proses Apabila Node Telah Dikunjungi

TRANSITION ALGORITMA DFS


Inisialisasi Stack dan linked list

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.

4. KESIMPULAN DAN SARAN


Pada bagian terakhir ini akan dikemukakan kesimpulan dar tugas yang berjudul
PEMBANGUNAN GAME PUZZLE MENGGUNAKAN ALGORITMA BREADTH FIRST
SEARCH (BFS) DAN DEPTH FIRST SEARCH (DFS) dan saran yang bersifat
membangun
4.1.Kesimpulan
Berdasarkan hasil penelitian, analisis, dan tahap pembuatan program, maka dapat
disimpulkan ialah sebagai berikut :
1. Dengan dibuatnya game puzzle ini dapat membantu user dalam memainkan game puzzle
ini untuk menemukan solusi puzzle dengan cepat menggunakan algoritma Breadth First
Search (BFS) atau Depth First Search (DFS).

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

3. Tampilan interface agar lebih menarik

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

Proses penyelesaian puzzle dengan algoritma BFS

Proses penyelesaian puzzle dengan algoritma DFS

ScreenShoot Hasil

Anda mungkin juga menyukai