Top Banner

of 23

makalah KCB

Jul 18, 2015

Download

Documents

Valen Luphly
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

IMPLEMENTASI METODE PENCARIAN DALAM GAME SUDOKUDosen : Dedi Triyanto, S.T, M.T

Disusun Oleh : Alvin Antonius ( K11110012 ) Fadil Husein ( K11110003 ) Heldi Ardian ( K11110025 ) Hirzen Hasfani ( K11110028 ) Rocky Triady ( K11110027 )

Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Tanjungpura Pontianak 2012

0

Daftar IsiBAB 1 1.1 1.2 1.3 BAB 2 2.1 BAB 3 3.1 3.2 3.3 3.4 BAB 4 4.1 4.2 4.3 BAB 5 5.1 5.2 PENDAHULUAN ..................................................................................................................... 2 Latar Belakang ......................................................................................................................... 2 Rumusan Masalah ................................................................................................................... 3 Batasan Masalah ..................................................................................................................... 3 DASAR TEORI ......................................................................................................................... 4 Best First Search ...................................................................................................................... 4 PERANCANGAN ..................................................................................................................... 5 Struktur Program ..................................................................................................................... 5 Tampilan Program ................................................................................................................... 5 Fungsi - fungsi pada program ................................................................................................. 5 Alur Proses Program .............................................................................................................. 10 PEMBAHASAN ..................................................................................................................... 11 Proses Input Soal ................................................................................................................... 11 Pemeriksaan nilai heuristik pada tiap kotak ......................................................................... 12 Pengisian Angka pada Program ............................................................................................. 12 PENUTUP ............................................................................................................................. 14 Kesimpulan ............................................................................................................................ 14 Saran...................................................................................................................................... 14

Daftar Pustaka ....................................................................................................................................... 15 LAMPIRAN 16 Source Code Keseluruhan Program (TAMPILAN) .............................................................................. 16 Source Code Keseluruhan Program (PROSES) ................................................................................... 18 Daftar Pustaka ....................................................................................................................................... 22

1

BAB 1 PENDAHULUAN1.1 Latar BelakangKecerdasan buatan (Artificial Intelligence) merupakan sistem yang berpikir dan bertindak seperti manusia atau secara rasional (Russel,1995). Kecerdasan buatan dapat digunakan untuk menyelesaikan persoaalan-persoalan yang dapat diselesaikan oleh manusia. Persoalan-persoalan tersebut dapat berbentuk permainan kecerdasan seperti catur, rubix cube, puzzle, sudoku dan permainan-permainan lain. Sudoku merupakansalah satu jenis kecerdasan, dimana pemain harus menempatkan angka-angka (dari 1 sampai nangka) pada kotak-kotak yang disediakan dengan aturan angka tersebut tidak boleh ada yang sama dalam 1 baris, kolom dan blok diposisinya berada. Sudoku adalah suatu permainan teka-teki yang berasal dari Jepang. Permainan ini mengharuskan pemain mengisi sejumlah kotak-kotak kecil sebanyak n2 x n2 dengan angka dari 1 sampai n2 dengan memenuhi syarat permainan. Syarat pengisian kotak-kotak tersebut adalah : 1. Tidak boleh ada angka yang berulang dalam suatu baris, dan dalam satu baris harus ada angka 1 sampai n2. 2. Tidak boleh ada angka yang berulang dalam suatu kolom, dan dalam satu kolom harus ada angka 1 sampai n2. 3. Tidak boleh ada angka yang berulang dalam kotak besar, dan dalam satu kotak besar harus ada angka dari 1 sampai n2. 4. Sebuah kotak besar adalah kumpulan n2 kotak kecil yang membentuk kotak yang lebih besar. Dalam permainan terdapat n2 kotak besar. Sudoku bukan merupakan permainan matematis, melainkan permainan logika, walaupun didalam permainan, pemain mengisikan angka-angka kedalam papan permainan. Penulis merancang aplikasi yang dapat menyelesaikan permainan dengan menggunakan metode algoritma Best First Search (BFS). Algoritma Best First Search merupakan sebuah algoritma yang dapat digunakan untuk mencari sebuah penyelesaian dari permasalahan. Permasalahan yang diselesaikan dengan metode Best First Search memiliki keadaan sementara yang dihasilkan oleh kejadian, yang menghasilkan beberapa keadaan lain yang memiliki bobot. Bobot ini akan digunakan sebagai penentu pilihan yang dilakukan oleh algoritma Best First Search. Persoalan sudoku memiliki keadaan sementara yaitu pengisian sebuah angka disetiap kotak kosong dengan bobot yaitu

2

banyaknya kemungkinan angka yang daat diisikan kedalam kotak kosong lain, setelah jawaban sementara tersebut diterima.

1.2

Rumusan MasalahPembahasan penulis mengenai penerapan Best First Search dalam penyelesaian permainan Sudoku dirumuskan dalam rumusan masalah, Bagaimana menerapkan algoritma Best First Search dalam penentuan angka pada grid untuk menyelesaikan permainan Sudoku?.

1.3

Batasan MasalahAdapun batasan masalah pada program aplikasi yang kami buat adalah sebagai berikut: a. Papan sudoku yang digunakan berukuran 6x6 b. Pengguna berperan sebagai pemberi masalah dan program akan berperan sebagai penyelesai masalah.

3

BAB 2 DASAR TEORI2.1 Best First Search Metode pencarian best first search merupakan kombinasi dari metode depth first search dan breadth first search dengan mengambil kelebihan kelebihan dari kedua metode tersebut. Pada metode best first search ini, pencarian node tujuan atau goal, mengizinkan untuk mengunjungi sebuah node yang ada pada level yang lebih rendah jika ternyata node yang berada pada level yang lebih tinggi memiliki nilai heuristik yang lebih buruk (rendah).Hal ini sangat berbeda apabila pencarian dilakukan dengan metode hill climbing, dimana pada metode hilll climbing tidak

diperbolehkannya untuk mengunjungi sebuah node pada level yang rendah yang meskipun node tersebut mempunyai nilai heuristik yang lebih baik (tinggi) Pada setiap langkah proses pencarian terbaik pertama, kita memilih node-node dengan menerapkan fungsi heuristik yang memadai pada setiap node/simpul yang kita pilih dengan menggunakan aturan-aturan tertentu untuk menghasilkan penggantinya. Fungsi Heuristik yang digunakan merupakan prakiraan (estimasi) cost dari initial state ke goal state, yang dinyatakan dengan : f = g + h dimana f g h = prakiraan cost dari initial ke goal = cost dari initial state ke current state = prakiraan cost dari current state ke goal state

Berikut adalah contoh proses pencarian dengan metode Best First Search

4

BAB 3 PERANCANGAN3.1 Struktur ProgramProgram di buat berbasis web dan menggunakan bahasa pemrograman PHP dan HTML dimana HTML digunakan sebagai pembentuk tampilan (interface) sekaligus media input output pada program, sedangkan hasil input dari user akan diproses menggunakan suatu program yang dibuat menggunakan bahasa pemrograman PHP. Oleh karena itulah program ini terbagi menjadi dua file dimana file pertama berisi source code dari tampian program, dan file yang kedua merupakan file yang memproses input dari user.

3.2

Tampilan ProgramTampilan pada program dibuat mengunakan tabel yang dibentuk menggunakan bahasa pemrograman HTML dan CSS. Berikut adalah tampilan dari program tersebut.

3.3

Fungsi - fungsi pada programProses pemecahan masalah pada program dikerjakan dalam program yang ditulis dengan menggunakan bahasa pemrograman PHP. Dalam program tersebut terdapat fungsi-fungsi yang dibuat secara manual. Yaitu:

a. Fungsi __constructFungsi ini adalah fungsi yang berjalan otomatis ketika suatu class atau object dibuat. Fungsi ini biasanya merupakan proses de klarasi variabel. 5

Berikut adalah source code dari fungsi tersebut.public function __construct() { $this->cell = array(); $this->kemungkinan = array(); $this->angka = array(); for($x=1;$xcell[$x][$y] = 0; } } } }

b. Fungsi cek_barisFunsi ini berguna untuk memeriksa baris tempat suatu cell yang diperiksa. Pemeriksaan dilakukan dengan cara memeriksa satu-persatu kolom pada baris, kemudian jika cell pada baris sudah memiliki angka maka banyaknya pilihan angka akan dikurangi sehingga tidak akan terdapat angka yang sama dalam tiap baris. Berikut adalah source code dari fungsi tersebut.public function cek_baris($y) { for($x=1;$xcell[$x][$y])) { unset($this->angka[$this->cell[$x][$y]]); } } }

c. Fungsi cek_kolomSama seperti fungsi cek_baris hanya saja fungsi ini memeriksa kolom yang ditempati oleh cell yang sedang diperiksa. Berikut adalah source code dari fungsi tersebut.public function cek_kolom($x)

6

{ for($y=1;$ycell[$x][$y])) { unset($this->angka[$this->cell[$x][$y]]); } } }

d. Fungsi cek_daerahFungsi ini berguna untuk memeriksa ketersediaan angka jumlah kemungkinan angka yang dapat di isi pada suatu daerah yang ditempati oleh cell yang sedang diperiksa kemungkinannya. Berikut adalah source code dari fungsi tersebut.public function cek_daerah($x,$y) { $x_daerah = (($x-1)/3)+1; $y_daerah = (($y-1)/2)+1;

$x_awal = ($x_daerah*3)-2; $x_akhir = $x_daerah*3;

$y_awal = ($y_daerah*2)-1; $y_akhir = $y_daerah*2;

for($x_awal;$x_awalangka[$this->cell[$x_awal][$y_awal]]); } } } }

e. Fungsi cek_kemungkinan7

Fungsi ini berfungsi untuk memeriksa setiap cell yang kosong dan mencari cell yang memiliki kemungkinan yang terkecil (memiliki pilihan angka yang paling sedikit) dengan menggabungkan fungsi-fungsi cek_kolom, cek_baris, dan cek_daerah. kemudian

mengembalikan nilai lokasi dari kolom yang memiliki kemungkinan terkecil dalam bentuk koordinat kartesius. Berikut adalah source code dari fungsi tersebut.public function cek_kemungkinan() { $this->reset_angka(); $min = 7; for($x=1;$xcek_kolom($x); $this->cek_baris($y); $this->cek_daerah($x,$y); $this->kemungkinan[$x][$y] = count($this->angka); if($min > $this->kemungkinan[$x][$y]) { $min = $this->kemungkinan[$x][$y]; $this->x_target = $x; $this->y_target = $y; } } $this->reset_angka(); } } }

f. Fungsi isi_cellFungsi ini berguna untuk memberikan angka pada cell dan menghindari untuk mengisi cell dengan angka-angka yang sudah dilarang. Berikut adalah source code dari fungsi tersebut.public function isi_cell() { $this->reset_angka(); $this->cek_baris($this->y_target); $this->cek_kolom($this->x_target); $this->cek_daerah($this->x_target,$this->y_target); for($loop=1;$loopangka[$loop])) { if($this->angka[$loop] == 1) { $this->cell[$this->x_target][$this->y_target] = $loop; } }

8

} }

g. Fungsi cek_cellFungsi ini berguna untuk memeriksa apakah terdapat cell yang masih kosong. Berikut adalah source code dari fungsi tersebut.public function cek_cell() { $this->cell_kosong = 0; for($x=1;$xcell_kosong++; } } } }

h. Fungsi reset_angkaFungsi ini berguna untuk mereset kemungkinan angka pada saat program sedang memeriksa cell yang berikutnya. Berikut adalah source code dari fungsi tersebut.public function reset_angka() { for($loop=1;$loopangka[$loop] = 1; } }

i.

Fungsi reset_kemungkinanFungsi ini berguna untuk mereset kemungkinan dari tiap cell ketika terdapat nilai dari cell yang diubah atau didisikan nilainya. Berikut adalah source code dari fungsi tersebut.public function reset_kemungkinan() { for($x=1;$xcek_cell(); while($this->cell_kosong > 0) { $this->cek_kemungkinan(); $this->isi_cell(); $this->cek_cell(); $this->reset_kemungkinan(); } }

3.4

Alur Proses ProgramDari fungsi-fungsi diatas, disusunlah menjadi satu alur proses atau algoritma yang mengerjakan keseluruhan proses dari metode pencarian solusi hingga penyelesaian masalah. Berikut adalah gambaran dari alur program tersebut.

10

BAB 4 PEMBAHASAN4.1 Proses Input SoalPada proses input masalah/soal sudoku, program mengambil hasil input dari user dengan menggunakan bahasa pemrograman HTML dan kemudian data tersebut disusun ke dalam sebuah array 2 dimensi dimana urutan atau dimensi dari array tersebut merupakan koordinat dari lokasi cell pada tampilan data. Contohnya adalah seperti gambar dibawah ini

Berdasarkan gambar diatas, dapat dibuat susunan array seperti berikut: cell [1][1] = 0 cell [1][2] = 0 cell [1][3] = 4 cell [1][4] = 0 cell [1][5] = 5 cell [1][6] = 3 cell [2][1] = 0 ... dan seterusnya

11

4.2

Pemeriksaan nilai heuristik pada tiap kotakPada program ini, nilai heuristik yang digunakan adalah jumlah kemungkinan angka yang diperbolehkan dalam satu kotak. Contohnya adalah sebagai berikut.

Berdasarkan gambar diatas, dapat diketahui bahwa angka-angka yang diperbolehkan untuk mengisi cell [1][1] adalah 2 dan 6. Sehingga didapat jumlah kemungkinan angka pada cell [1][1] adalah 2. Berdasarkan contoh tersebut, dapat disimpulkan bahwa semakin kecil jumlah angka yang diperbolehkan dalam pengisian, maka peluang terjadinya kesalahan dalam pengisian akan semakin kecil pula. Proses pemeriksaan nilai heuristik pada program akan berjalan terus-menerus memeriksa kemungkinan angka-angka pada setiap kotak-kotak yang kosong. Setelah itu, program akan membandingkan tiap-tiap kemungkinan pada masing-masing kotak kosong untuk memilih kotak mana yang memiliki nilai heuristik yang paling baik sehingga diketahui kotak mana yang harus di isi terlebih dahulu dengan cara menyimpan lokasi koordinat dari kotak yang akan di isi nilainya.

4.3

Pengisian Angka pada ProgramSetelah program memeriksa dan menemukan kotak yang memiliki niai heuristik yang terbaik, maka langkah selanjutnya adalah memberikan nilai/angka pada kotak yang ditentukan. Proses pemberian angka pada kotak adalah dengan cara membandingkan angka-

12

angka pada baris, kolom dan daerah dimana kotak itu berada. Sehingga tidak akan terdapat dua kotak yang memiliki angka yang sama dalam satu baris, kolom dan daerah. Setelah kotak yang ditentukan diberi nilai, maka program akan memeriksa apakah masih terdapat kotak yang kosong. Jika masih terdapat kotak yang kosong, maka program akan kembali memeriksa nilai heuristik dari tiap kotak yang masih kosong. Sedangkan jika sudah tidak terdapat kotak yang kosong, maka masalah/soal sudoku telah selesai /mendapatkan solusi.

13

BAB 5 PENUTUP5.1 KesimpulanPencarian solusi suatu permasalah dengan menggunakan Best First Search dapat meningkatkan kecepatan pemecahan masalah dibandingkan dengan menggunakan metode pencarian yang lain. Tetapi, jika terdapat dua atau lebih pilihan yang memiliki nilai heuristik terbaik, maka program harus berkerja lebih keras dengan cara memeriksa seluruh pilihan tersebut secara mendalam hingga ditemukan pilihan yang tepat dalam menyelesaikan suatu permasalahan.

5.2

SaranKeseluruhan isi dari makalah ini harus dibaca dan dimengerti agar pembaca baik itu mahasiswa, maupun pengajar (dosen) dapat mamahami konsep dan penerapan dari metode pencarian Best First Search.

14

Daftar Pustakahttp://digilib.mdp.ac.id/files/disk1/1/---guest-34-1-flowchar-1.pdf http://lecturer.eepisits.edu/~entin/Kecerdasan%20Buatan/Buku/Bab%204%20Algoritma%20Pencarian.pdf http://www.cs.ui.ac.id/WebKuliah/IKI30320/materi/iki30320_20070912_handout.pdf

15

LAMPIRANSource Code Keseluruhan Program (TAMPILAN) SUDOKU