INTISARI
Permainan sudoku merupakan permainan teka-teki logika. Permasalahan pada permainan sudoku
terdapat beberapa angka yang diberikan sebagai landasan awal pencarian solusi. Angka yang diberikan
setidaknya memiliki minimal 17 angka. Algoritma depth first search (DFS) merupakan algoritma
pencarian solusi dengan cara mengunjungi simpul secara mendalam dan dimulai dari yang paling kiri
dan dilanjutkan pada simpul sebelah kanan. Tujuan dari penelitian ini adalah untuk mengkaji
penyelesaian sudoku dengan algoritma DFS. Langkah-langkahnya dimulai dengan mencari kotak kosong
dan menentukan kandidat angka yang layak dengan memperhatikan tiap baris, kolom, dan blok sehingga
tidak memiliki angka yang sama. Selanjutnya, submasalah dapat dibentuk menjadi pohon berdasarkan
algoritma DFS. Berdasarkan hasil penelitian, penyelesaian permainan sudoku dengan bantuan Software
Scilab 6.0.2, dari sepuluh percobaan pada tiap banyak angka yang diberikan menghasilkan banyak
langkah yang berbeda untuk masing-masing tingkat kesulitan. Tingkat kesulitan sangat mudah dengan
banyak angka yang diberikan lebih dari 46 memiliki rata-rata banyak langkah sebanyak 51 dan rata-rata
waktu 0,0363702 s. Tingkat kesulitan mudah dengan banyak angka yang diberikan 36-46 memiliki rata-
rata banyak langkah 63 dan rata-rata waktu 0,041898188 s. Tingkat kesulitan sedang dengan banyak
angka yang diberikan 32-35 memiliki rata-rata banyak langkah 120 dan rata-rata waktu 0,066955348 s.
Tingkat kesulitan rumit dengan banyak angka yang diberikan 28-31 memiliki rata-rata banyak langkah
422 dan rata-rata waktu 0,202328263 s. Tingkat kesulitan sangat sulit dengan banyak angka yang
diberikan 17-27 memiliki rata-rata banyak langkah 40598 dan rata-rata waktu 17,77871696 s.
PENDAHULUAN
Permainan merupakan suatu aktivitas hiburan untuk mengisi waktu luang, kesenangan, ataupun
berolahraga ringan. Permainan bisa dimainkan oleh semua orang dimulai dari anak kecil sampai
dewasa. Terdapat banyak jenis permainan yang dapat dimainkan seperti kartu, kata, olahraga, musik,
strategi, dan lainnya. Salah satu jenis permainan yang dibahas pada penelitian ini adalah teka-teki.
Permainan sudoku merupakan permainan teka-teki logika. Permainan ini dapat dimainkan dari
kalangan usia maupun jenis kelamin. Hal ini dikarenakan permainan sudoku merupakan permainan
sederhana dan semakin tinggi tingkat kesulitannya maka semakin menantang para pemain untuk
menyelesaikannya. Setiap permasalahan permainan sudoku akan ada beberapa angka yang telah
diberikan dan merupakan landasan awal pencarian solusi permasalahan. Banyaknya angka yang
diberikan dan posisi angka akan menjadi penentu tingkat kesulitan dalam permainan ini. Aturan
permainan ini yaitu dengan mengisi semua kotak dengan angka. Setiap baris, kolom, dan blok harus
diisi dengan angka 1 sampai 9 yang berjumlah masing-masing satu atau tidak memiliki angka yang
sama [1]. Sudoku yang dibahas pada penelitian ini yaitu berukuran yang mana terdapat 81
kotak. Menyelesaikan permainan sudoku memerlukan strategi dan logika ataupun memerlukan sebuah
program. Salah satu proses pencarian solusi dapat menggunakan algoritma depth first search (DFS).
Pada penelitian Handayani, dkk [2] diketahui bahwa penerapan algoritma DFS berhasil untuk
menciptakan aplikasi permainan othello pada mobile phone berbasis android. Penelitian ini dikaji
terkait penerapan algoritma DFS pada permainan sudoku. Penyelesaian dimulai dengan melihat kotak
kosong, kemudian menentukan kandidat angka yang layak dengan syarat tiap baris, kotak, dan kolom
tidak memiliki angka yang sama. Selanjutnya dapat diterapkan pada pohon berdasarkan algoritma
687
688 E. D. ANDINA, E. NOVIANI, YUDHI
DFS untuk masing-masing baris. Pembuatan pohon dimulai dengan simpul akar yang berada pada
level 0. Level berikutnya diinterpretasikan dengan kandidat angka yang layak pada kotak kosong.
POHON
Secara sistematis, definisi graf dapat disajikan pada Definisi 1.
Definisi 1 [3] Graf didefinisikan sebagai pasangan himpunan , dimana adalah himpunan
tidak-kosong dari simpul-simpul (vertices) dan adalah himpunan sisi (edges) yang menghubungkan
pasangan simpul. Sehingga Graf dapat dinotasikan dengan .
Menurut Munir [3], simpul pada graf dapat ditulis dengan simbol atau bilangan asli 1, 2,
3, …, atau gabungan keduanya. Sedangkan sisi yang menghubungkan simpul dan dinyatakan
dengan pasangan atau dengan lambang . Dengan kata lain, merupakan sisi yang
menghubungkan simpul dan , maka dapat ditulis sebagai
Pohon merupakan suatu graf khusus yang memiliki dua sifat penting yaitu terhubung dan tidak
mengandung sirkuit atau siklus [3]. Dua buah simpul dan simpul dapat dikatakan terhubung
apabila terdapat lintasan dari ke . Secara formal, definisi graf terhubung adalah sebagai berikut:
Definisi 2 [3] Graf tak-berarah dikatakan terhubung jika untuk setiap pasangan simpul dan
pada himpunan terdapat lintasan dari ke . Jika tidak, maka dikatakan graf tidak terhubung.
Suatu pohon dapat diilustrasikan seperti Gambar 1.
Level 0
Level 1
Level 2
Level 3
Gambar 1. Ilustrasi Pohon
Pohon untuk penelusuran dibagi menjadi berbagai tingkat (level) yang berfungsi sebagai hierarki.
Level-level ini menggambarkan kedalaman pohon. Simpul akar biasanya disebut level 0, dan level
kedalaman berikutnya diberi nomor 1 sampai level tertinggi yang diperlukan untuk representasi
penelusuran [4].
PERMAINAN SUDOKU
Sudoku merupakan permainan matematika karena untuk menyelesaikannya harus berpikir seperti
ahli matematika dengan mencari pola dan logika yang cermat [5]. Permainan ini tidak dapat dimainkan
secara sembarang, karena apabila dimainkan secara sembarang maka permainan tidak dapat
diselesaikan.
Permainan sudoku merupakan permainan teka-teki logika berbentuk , yang terdiri dari
baris, kolom, dan blok. Permainan sudoku yang digunakan pada penelitian ini yaitu sudoku berukuran
. Sudoku tersebut memiliki 9 baris, 9 kolom, dan 9 blok/subgrid yang berukuran . Aturan
permainan ini yaitu dengan mengisi angka pada semua kotak. Setiap baris, kolom, dan blok harus diisi
dengan angka 1 sampai 9 yang berjumlah masing-masing satu atau tidak memiliki angka yang sama
[1]. Jumlah solusi yang mungkin dalam sudoku adalah 6670903752021072936960 atau sekitar
Penyelesaian Permainan Sudoku dengan Algoritma Depth First Search 689
[6]. Permainan sudoku memiliki beberapa angka pada kotak sebagai landasan awal
untuk menyelesaikannya. Jumlah angka yang diberikan dan posisi angka menjadi penentu tingkat
kesulitan pada permainan ini. Angka yang diberikan setidaknya memiliki minimal 17 angka [7].
Tingkat kesulitan dilihat dari banyaknya angka yang diberikan dan dilihat pada Tabel 1 [8].
Tabel 1. Kategori Menentukan Tingkat Kesulitan
Tingkat Kesulitan Jumlah Angka yang diberikan
Sangat Mudah >46
Mudah 36 – 46
Sedang 32 – 35
Rumit 28 – 31
Sangat Rumit 17 – 27
1 9
2 10
7
6 11
3 12
5
4 13
(1,3)
(1,7)
(1,8)
(1,9)
Gambar 5. Pohon DFS Baris Pertama
Gambar 5 menunjukkan bahwa solusi untuk kotak (1,3), (1,7), (1,8) dan (1,9) secara berurutan
adalah angka 2, 3, 4, dan 5 dan terdapat sebanyak 4 langkah. Isi solusi tersebut pada kotak kosong
baris pertama sudoku Gambar 6.
1 2 3 4 5 6 7 8 9
1 8 7 1 2 9 6 3 4 5
2 8 1 7 6
3 2 7 8 9
4 1 2 6 4 9
5 1 9 3
6 9 3 4 2
7 4 1 3
8 9 1 6 7
9 8 7 5
(2,1)
(2,2)
(2,3)
(2,4)
(2,8)
Gambar 7. Pohon DFS Baris kedua
692 E. D. ANDINA, E. NOVIANI, YUDHI
Gambar 7 menunjukkan bahwa pada kotak (2,3) mengalami backtracking karena angka 5 bukan
merupakan solusi. Solusi untuk kotak (2,1), (2,2), (2,3), (2,4), (2,8) secara berurutan adalah angka
3, 4, 9, 5, 2 dan terdapat sebanyak 7 langkah. Isi solusi tersebut pada kotak kosong baris kedua
soduku Gambar 8.
1 2 3 4 5 6 7 8 9
1 8 7 1 2 9 6 3 4 5
2 3 4 9 5 8 1 7 2 6
3 2 7 8 9
4 1 2 6 4 9
5 1 9 3
6 9 3 4 2
7 4 1 3
8 9 1 6 7
9 8 7 5
(3,2)
(3,3)
(3,5)
(3,6)
(3,9)
Gambar 9. Pohon DFS Baris ketiga
Gambar 9 menunjukkan bahwa kotak (3,5) mengalami backtracking karena 3 bukan merupakan
solusi. Solusi untuk kotak (3,2), (3,3), (3,5), (3,6), (3,9) secara berurutan adalah 5, 6, 4, 3, 1 dan
terdapat sebanyak 7 langkah. Isi solusi tersebut pada kotak kosong baris ketiga sudoku Gambar
10.
Penyelesaian Permainan Sudoku dengan Algoritma Depth First Search 693
1 2 3 4 5 6 7 8 9
1 8 7 1 2 9 6 3 4 5
3 4 9 5 8 1 7 2 6
2
2 5 6 7 4 3 8 9 1
3
4
1 2 6 4 9
1 9 3
5
9 3 4 2
6
4 1 3
7
9 1 6 7
8
8 7 5
9
Gambar 10. Pengisian Solusi pada Baris ketiga
Proses ini akan terus berlanjut sampai Baris kesembilan sehingga diperoleh solusi untuk
menyelesaikan permainan sudoku untuk Gambar 4. Solusi untuk contoh permainan sudoku dengan
tingkat kesulitan sedang dapat dilihat pada Gambar 11. Berdasarkan pencarian tersebut diperoleh
bahwa terdapat sebanyak 82 langkah.
8 7 1 2 9 6 3 4 5
3 4 9 5 8 1 7 2 6
2 5 6 7 4 3 8 9 1
1 3 2 8 6 5 4 7 9
7 6 4 1 2 9 5 3 8
5 9 8 3 7 4 1 6 2
4 2 7 6 5 8 9 1 3
9 1 5 4 3 2 6 8 7
6 8 3 9 1 7 2 5 4
HASIL PERCOBAAN
Hasil percobaan permainan sudoku dilakukan dengan Software Scilab 6.0.2. Percobaan ini
dilakukan sebanyak sepuluh kali pada tiap banyak angka yang diberikan. Selanjutnya hasil percobaan
tersebut dirata-ratakan untuk masing-masing tingkat kesulitan. Hasil percobaan permainan sudoku
dapat dilihat pada Tabel 2.
Tabel 2. Hasil Percobaan Sudoku
Tingkat Banyak Angka Rata-rata Banyak
Rata-rata Waktu
Kesulitan yang diberikan Langkah
Sangat Mudah >46 51 0,0363702
Mudah 36-46 63 0,041898188
Sedang 32-35 120 0,066955348
Rumit 28-31 422 0,202328263
Sangat Rumit 17-27 40598 17,77871696
Tabel 2 menunjukkan hasil dari percobaan permainan sudoku dengan tingkat kesulitan berbeda.
Banyak angka yang diberikan pada setiap percobaan dilakukan mulai dari 17-47 angka. Percobaan ini
terdapat dua parameter yang diuji, yaitu rata-rata banyak langkah dan rata-rata waktu penyelesaian
694 E. D. ANDINA, E. NOVIANI, YUDHI
sudoku dalam satuan second (s). Pada Tabel 2 terlihat bahwa untuk tingkat kesulitan dari sangat
mudah sampai sangat rumit memiliki rata-rata banyak langkah dan waktu secara meningkat. Hal ini
terjadi disebabkan oleh banyaknya angka yang diberikan, semakin sedikit banyak angka yang
diberikan maka banyak langkahnya dan waktunya semakin banyak.
400
300
200
100
0
>46 36-46 32-35 28-31
Banyak angka yang diberikan
0.2
0.15
0.1
0.05
0
>46 36-46 32-35 28-31
Banyak angka yang diberikan
masing-masing banyak angka yang diberikan dengan bantuan Software Scilab 6.0.2. Kemudian
banyak waktu percobaan pada tingkat kesulitan sangat mudah dirata-ratakan sehingga diperoleh
sebanyak 0,0363702 s. Banyak waktu percobaan pada tingkat kesulitan mudah dirata-ratakan sehingga
diperoleh sebanyak 0,041898188 s. Banyak waktu percobaan pada tingkat kesulitan sedang dirata-
ratakan sehingga diperoleh sebanyak 0,066955348 s. Banyak waktu percobaan pada tingkat kesulitan
rumit dirata-ratakan sehingga diperoleh sebanyak 0,202328263 s. Banyak waktu percobaan pada
tingkat kesulitan sangat rumit dirata-ratakan sehingga diperoleh sebanyak 17,77871695 s.
KESIMPULAN
Algoritma depth first search (DFS) adalah algoritma pencarian solusi secara mendalam dimulai
dari sebelah kiri secara berurutan. Permainan sudoku dapat diselesaikan menggunakan algoritma depth
first search ini. Sudoku pada penelitian ini berukuran yaitu memiliki 9 baris dan 9 kolom.
Penerapan algoritma DFS ini pada permainan sudoku dilakukan pencarian satu-persatu untuk setiap
baris. Sehingga diperoleh langkah-langkah untuk menyelesaikan permainan sudoku dengan algoritma
DFS, yaitu:
1. Mencari kotak kosong dan menentukan kandidat angka yang layak dengan memperhatikan tiap
baris, kolom, dan blok sehingga tidak memiliki angka yang sama.
2. Terapkan pada pohon DFS untuk menggambarkan proses pencarian solusi.
3. Masukkan kandidat angka yang layak secara berurutan (melebar) dimulai angka terkecil.
4. Pencarian terhadap pohon DFS secara mendalam dengan kotak kosong secara berurutan.
5. Pencarian akan terus berlanjut sampai ditemukannya solusi, apabila tidak ditemukannya solusi
akan terjadi backtracking atau kembali ke kotak sebelumnya sampai ditemukannya solusi.
Berdasarkan hasil percobaan, penyelesaian permainan sudoku dengan algoritma DFS dan bantuan
Software Scilab 6.0.2 menghasilkan banyak langkah yang berbeda untuk masing-masing tingkat
kesulitan. Tingkat kesulitan sangat mudah dengan banyak angka yang diberikan lebih dari 46 memiliki
rata-rata banyak langkah sebanyak 51 dan rata-rata waktu 0,0363702 s. Tingkat kesulitan mudah
dengan banyak angka yang diberikan 36-46 memiliki rata-rata banyak langkah 63 dan rata-rata waktu
0,041898188 s. Tingkat kesulitan sedang dengan banyak angka yang diberikan 32-35 memiliki rata-
rata banyak langkah 120 dan rata-rata waktu 0,066955348 s. Tingkat kesulitan rumit dengan banyak
angka yang diberikan 28-31 memiliki rata-rata banyak langkah 422 dan rata-rata waktu 0,202328263
s. Tingkat kesulitan sangat sulit dengan banyak angka yang diberikan 17-27 memiliki rata-rata banyak
langkah 40598 dan rata-rata waktu 17,77871696 s.
DAFTAR PUSTAKA
[1] Sari RD. Analisis Penyelesaian Puzzle Sudoku dengan Menerapkan Algoritma Backtracking.
Jurnal Ilmiah Teknologi dan Informasi Asia. 2008; 2 (2): 1-18.
[2] Handayani MS, Arisandi D, Sitompul OS. Rancangan Permainan Othello Berbasis Android
Menggunakan Algoritma Depth First Search, Jurnal Dunia Teknologi Informasi. 2012; 1 (1): 28-
34.
[3] Munir R. Matematika Diskrit. Bandung: Informatika Bandung; 2010.
[4] Suparman. Mengenal Artificial Intellegence. Yogyakarta: Andi Offset; 1991.
[5] Benjamin AT. The Mathematics of Games and Puzzles: From Cards to Sudoku. Amerika: Harvey
Mudd College; 2013.
[6] Felgenhauer B and Jarvis F. Mathematics of Sudoku I. Mathematical Spectrum. 2006; 39 (1): 15-
22.
[7] Matos AB. The Most Difficult Sudoku Puzzles are Quickly Solved by a Straightforward Depth
First Search Algorithm. Artificial Intelligence and Computer Science Laboratory. 2016.
696 E. D. ANDINA, E. NOVIANI, YUDHI
[8] Maji AK, Jana S, Roy S, and Pal RK. An Exhaustive Study on Different Sudoku Solving
Techniques. International Journal of Computer Sciences Issues. 2014; 11 (1): 247-253.
[9] Prasetiyo B dan Hidayah MR. Penggunaan Metode Depth First Search (DFS) dan Breadth First
Search (BFS) pada Strategi Game Kamer Rider Decade Versi 0.3, Scientific Journal Informatics.
2014; 1 (2): 161-7.