paper sudoku solver backtracking.docx

Upload: rosalina-fazriah

Post on 19-Oct-2015

64 views

Category:

Documents


1 download

TRANSCRIPT

PENYELESAIAN PERMAINAN SUDOKU DENGAN MENERAPKAN ALGORITMA BACKTRACKING

1Dinar Priskawati (10111036), 2Mohammad Abdul Iman Syah (10111143),3Rosalina Fazriah (10111313)1,2,3 Program Studi Teknik InformatikaFakultas Teknik dan Ilmu KomputerUniversitas Komputer IndonesiaEmail : [email protected]

ABSTRAKPerkembangan teknologi informasi telah merambah dalam berbagai bidang, salah satunya yaitu dalam bidang permainan seperti puzzle atau teka-teki. Sudoku adalah sebuah permainan teka-teki angka yang berbasis logika. Pada umumnya sebuah permainan sudoku terdiri dari 81 kotak yang disusun menjadi 9 baris, 9 kolom dan 9 subbagian atau disebut juga sebagai blok. Tujuan utama dari permainan ini adalah mengisi seluruh kotak tersebut dengan angka 1 sampai 9. Dalam bidang informatika, permainan sudoku termasuk salah satu permasalahan yang paling sulit untuk dipecahkan karena termasuk permasalahan NP-Complete, sehingga tidak bisa diselesaikan dalam waktu yang sama. Hingga saat ini banyak programmer yang mencari algoritma yang tepat untuk menyelesaikan permainan ini. Salah satunya yaitu menggunakan algoritma brute-force. Namun algoritma ini ternyata membutuhkan waktu yang cukup lama dalam melakukan komputasi penyelesaian permainan sudoku. Dalam penelitian ini, dibangun sebuah aplikasi untuk mengoptimalkan algoritma brute-force dalam menyelesaikan permainan sudoku dengan menggunakan algoritma backtracking. Hasil dari uji coba penelitian menunjukkan bahwa algoritma backtracking mampu mengoptimalkan waktu dan kinerja komputasi pada penyelesaian permainan sudoku.

Kata Kunci : puzzle, sudoku, NP-Complete, algoritma, brute-force, backtracking.

3

PENDAHULUANPada umumnya sebuah permainan sudoku terdiri dari 81 kotak yang disusun menjadi 9 baris, 9 kolom dan 9 subbagian. Tujuan utama dari permainan ini sebenarnya sangat sederhana, yaitu mengisi suatu matriks yang berukuran 9x9 sehingga pada setiap baris, kolom dan kotak yang berukuran 3x3 atau yang disebut sebagai blok/subbagian mengandung digit angka dari 1 sampai 9 dimana pada setiap baris, kolom dan kotak yang berukuran 3x3 (blok) tersebut tidak terdapat dua atau lebih kemunculan angka yang sama. Aturan dari permainan sudoku sendiri sebenarnya sangat sederhana, namun penggunaan logika yang dibutuhkan untuk menyelesaikan permainan ini dapat saja berubah menjadi kompleks.Dalam bidang informatika, permainan sudoku merupakan salah satu permasalahan yang paling sulit dipecahkan karena permainan ini termasuk dalam permasalahan NP-Complete sehingga tidak dapat diselesaikan dalam waktu yang sama. Hingga saat ini banyak programmer yang mencari algoritma yang tepat untuk menyelesaikan permainan ini. Salah satunya yaitu dengan menggunakan algoritma brute-force. Penerapan algoritma brute-force dalam permainan sudoku ialah dengan mencoba seluruh kemungkinan isi kotak elemen dari matriks. Misalkan solusi dari suatu permainan sudoku dinyatakan sebagai:X = (x1, x2, x3, , x981);Dari vektor solusi diatas dapat di simpulkan bahwa dengan menggunakan algoritma bruteforce maka harus membangkitkan seluruh kemungkinan vektor solusi yang berjumlah 981 = 1,99x1077 kemungkinan. Maka dalam hal ini, algoritma brute-force akan membutuhkan waktu yang cukup lama dalam melakukan proses komputasi penyelesaian permainan sudoku.Kompleksitas asimptotik dari algoritma brute-force bila dilihat dari banyaknya operasi perbandingan yang dilakukan dalam proses komputasi penyelesaian permainan sudoku maka dapat disimpulkan bernilai O(nn) yang termasuk kategori non polynomial complexity, sehingga penggunaan algoritma ini sangatlah tidak menguntungkan jika dilihat dari waktu dan banyaknya komputasi yang dilakukan oleh komputer.Dari hasil yang telah diuraikan tersebut, maka dibutuhkan algoritma lain yang lebih mangkus daripada algoritma brute-force untuk menyelesaikan masalah permainan sudoku.Oleh karena itu, dalam penelitian ini metode yang digunakan untuk proses komputasi penyelesaian permainan sudoku yaitu dengan menggunakan algoritma backtracking. Algoritma ini merupakan perbaikan dari algoritma brute-force, dimana solusi dapat ditemukan dengan penelusuran yang lebih sedikit dan dapat mencari solusi dari permainan sudoku secara lebih mangkus karena tidak perlu memeriksa semua kemungkinan solusi yang ada. Hanya pencarian yang mengarah ke solusi saja yang perlu dipertimbangkan. Prinsip dari algoritma backtracking adalah jika terjadi kesalahan dalam pencarian solusi pada sebuah node, maka akan dilakukan backtrack ke node sebelumnya.TINJAUAN PUSTAKABacktrackingAlgoritma backtrack pertama kali diperkenalkan oleh D.H. Lehner pada tahun 1950. Dalam perkembangan algoritma ini, beberapa ahli seperti Rwalker, Golomb dan Baumert menyajikan uraian umum tentang backtrack dan penerapannya dalam berbagai persoalan dan aplikasi. Algoritma backtracking adalah sebuah algoritma yang berbasis DFS (Depth First Search) dalam pencarian solusi pada ruang status yang dibangun secara dinamis. Agoritma ini membangun solusi parsial (partial solution) dari sebuah kandidat solusi dan mengevaluasi solusi parsial tersebut pada suatu waktu. Jika solusi parsial yang dibangun tidak memenuhi syarat, maka kandidat solusi tersebut tidak akan dibangun lebih lanjut dan dilakukan backtrack ke kandidat solusi lain yang memenuhi syarat. Algoritma backtracking dilakukan secara berulang-ulang sampai menemukan sebuah solusi yang bersesuaian dengan syarat. [1]

Gambar 1. Pohon Ruang Status Algoritma BacktrackingLangkah-langkah pencarian solusi pada algoritma backtracking adalah sebagai berikut:1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Simpul yang telah dilahirkan dinamakan simpul hidup dan simpul hidup yang diperluas dinamakan simpul-E (Expand node).2. Jika lintasan yang diperoleh dari perluasan simpul-E tidak mengarah ke solusi, maka simpul itu akan menjadi simpul mati yang tidak dapat diperluas lagi.3. Jika posisi terakhir ada disimpul mati, maka pencarian dilakukan dengan membangkitkan simpul anak yang lainnya dan jika tidak ada simpul anak maka dilakukan backtracking ke simpul induk.4. Pencarian dihentikan jika telah menemukan solusi atau tidak ada simpul hidup yang dapat ditemukan/diperluas.

Gambar 2. Pseudo Code Algoritma BacktrackingSudokuSebuah permainan teka-teki sudoku terdiri dari sembilan buah kotak berukuran 3x3 yang disebut blok. Aturan permainan sudoku ini sangat sederhana, untuk menyelesaikan permainan ini tidak diperlukan pengetahuan umum, kepandaian atas bahasa tertentu, juga kemampuan matematika. Tetapi hanya memerlukan kecermatan, kesabaran dan logika. Beberapa kotak sudah diisi dengan angka-angka tertentu dari 1 sampai 9 sebagai petunjuk awal permainan. Tujuan dari permainan sudoku adalah mengisi angka dari 1 sampai 9 pada kotak yang kosong sehingga keseluruhan kotak permainan terisi secara lengkap dengan aturan masing-masing baris, kolom dan blok hanya boleh menampilkan angka tersebut sekali.

Gambar 3. Soal Sudoku 9x9 kotak

Gambar 4. Sudoku Valid 9x9 kotakSecara umum, permainan sudoku dapat diselesaikan secara manual dengan kombinasi beberapa teknik dasar, antara lain sebagai berikut:1. Pemindaian (scanning)Penindaian berupa proses memindai baris atau kolom untuk mengidentifikasi baris mana yang terdapat angka-angka tertentu. Proses ini kemudian diulang pada setiap baris atau kolom secara sistematis. Kemudian menentukan nilai dari suatu kotak dengan membuang nilai-nilai yang tidak mungkin.2. Penandaan (marking)Penandaan berupa analisis logika dengan menandai kandidat angka yang dapat dimasukkan ke dalam sebuah kotak.3. Analisis (analyzing)Analisis berupa eliminasi kandidat, dimana kemajuan dicapai dengan mengeliminasi kandidat angka secara berturut-turut hingga sebuah kotak hanya mempunyai sebuah kandidat.PEMBAHASAN

KESIMPULAN

DAFTAR PUSTAKA[1] Y. Sukianto, "Solusi Algoritma Backtracking Dalam Permainan "Ksatria Menyebrang Kastil"," Ilmu Komputer dan Teknologi Informasi, vol. III, pp. 1 - 2 , 2003.