IMPLEMENTASI ALGORITMA BACKTRACKING PADA PERMAINAN SUDOKU TIGA DIMENSI TIPE TIGA WAJAH
SKRIPSI
Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer (S.Kom.)
Joshua Axel Wijaya 00000013351
PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK DAN INFORMATIKA UNIVERSITAS MULTIMEDIA NUSANTARA
TANGERANG 2020
ii
LEMBAR PENGESAHAN
IMPLEMENTASI ALGORITMA BACKTRACKING PADA PERMAINAN SUDOKU TIGA DIMENSI TIPE TIGA WAJAH
Oleh
Nama : Joshua Axel Wijaya
NIM : 00000013351
Program Studi : Informatika
Fakultas : Teknik dan Informatika
Tangerang, 18 Mei 2020 Ketua Sidang
(Ito Wasito, M.Sc., Ph.D.)
Dosen Penguji
(Adhi Kusnadi, S.T, MSi.) Dosen Pembimbing I
(Julio Christian Young, M. Kom.)
Dosen Pembimbing II
(Alethea Suryadibrata, S.Kom., M.Eng.) Mengetahui,
Ketua Program Studi Informatika
(Nunik Afriliana, S.Kom., MMSI)
iii
PERNYATAAN TIDAK MELAKUKAN PLAGIAT
Dengan ini saya:
Nama : Joshua Axel Wijaya
NIM : 00000013351
Program Studi : Informatika
Fakultas : Teknik dan Informatika
menyatakan bahwa Skripsi yang berjudul “Implementasi Algoritma Backtracking Pada Permainan Sudoku Tiga Dimensi Tipe Tiga Wajah” ini adalah karya ilmiah saya sendiri, bukan plagiat dari karya ilmiah yang ditulis oleh orang lain atau lembaga lain, dan semua karya ilmiah orang lain atau lembaga lain yang dirujuk dalam Skripsi ini telah disebutkan sumber kutipannya serta dicantumkan di Daftar Pustaka.
Jika di kemudian hari terbukti ditemukan kecurangan/ penyimpangan, baik dalam pelaksanaan Skripsi maupun dalam penulisan laporan Skripsi, saya bersedia menerima konsekuensi dinyatakan TIDAK LULUS untuk mata kuliah Skripsi yang telah saya tempuh.
Tangerang, 18 Mei 2020
(Joshua Axel Wijaya)
iv
PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Sebagai sivitas akademik Universitas Multimedia Nusantara, saya ya ng bertanda tangan di bawah ini:
Nama : Joshua Axel Wijaya
NIM : 00000013351
Program Studi : Informatika
Fakultas : Teknik dan Informatika
Demi pengembangan ilmu pengetahuan, menyetujui dan memberikan izin kepada Universitas Multimedia Nusantara hak Bebas Royalti Non-eksklusif (Non- exclusive Royalty-Free Right) atas karya ilmiah saya yang berjudul:
Implementasi Algoritma Backtracking Pada Permainan Sudoku Tiga Dimensi Tipe Tiga Wajah
beserta perangkat yang diperlukan.
Dengan Hak Bebas Royalti Non-eksklusif ini, pihak Universitas Multimedia Nusantara berhak menyimpan, mengalihmedia atau format-kan, mengelola dalam bentuk pangkalan data (database), merawat, dan mendistribusi dan menampilkan atau mempublikasikan karya ilmiah saya di internet atau media lain untuk kepentingan akademis, tanpa perlu meminta izin dari saya maupun memberikan royalti kepada saya, selama tetap mencantumkan nama saya sebagai penulis karya ilmiah tersebut.
Demikian pernyataan ini saya buat dengan sebenarnya untuk dipergunakan sebagaimana mestinya.
Tangerang, 18 Mei 2020
(Joshua Axel Wijaya)
v
KATA PENGANTAR
Puji syukur kepada Tuhan Yang Maha Esa karena atas berkat dan rahmatnya skripsi yang berjudul “Implementasi Algoritma Backtracking Pada Permainan Sudoku Tiga Dimensi Tipe Tiga Wajah” dapat diselesaikan dengan tepat waktu.
Penulis juga mengucapkan terima kasih kepada:
1. Dr. Ninok Leksono, Rektor Universitas Multimedia Nusantara, yang memberi inspirasi bagi penulis untuk berprestasi,
2. Dr. Eng. Niki Prastomo, S.T., M.Sc., Dekan Fakultas Teknik dan Informatika Universitas Multimedia Nusantara,
3. Nunik Afriliana, S.Kom., MMSI, Ketua Program Studi Informatika Universitas Multimedia Nusantara, yang menerima penulis dengan baik untuk berkonsultasi,
4. Julio Christian Young, M. Kom., selaku dosen pembimbing I yang telah memberikan saran dan membimbing dalam penelitian,
5. Alethea Suryadibrata, S.Kom., M.Eng., selaku dosen pembimbing II yang telah membimbing dalam pembuatan skripsi.
Semoga laporan Kerja Magang ini dapat bermanfaat, baik sebagai sumber informasi maupun sumber inspirasi, bagi para pembaca.
Tangerang, 18 Mei 2020
(Joshua Axel Wijaya)
vi
IMPLEMENTASI ALGORITMA BACKTRACKING PADA PERMAINAN SUDOKU TIGA DIMENSI TIPE TIGA WAJAH
ABSTRAK
Seiring dengan meningkatnya popularitas sudoku, muncul berbagai varian dari sudoku, salah satunya adalah sudoku tiga dimeni (3D) tipe tiga wajah. Sudoku 3D itu sendiri memiliki aturan permaian yang serupa dengan sudoku konvensional, di mana tujuan permainan adalah memasukan angka ke dalam kotak sel tanpa ada yang berulang di satu baris, kolom atau region. Namun, dalam sudoku 3D tipe tiga wajah, pengisian angka pada baris dan kolom harus diperhatikan secara tiga dimensi, sehingga tentunya lebih rumit dibandingkan teka-teki sudoku konvensional. Dikarenakan tingkat kerumitan yang lebih tinggi, maka dilakukanlah penelitian dan pembangunan Solver yang mampu membantu pemain memecahkan teka-teki sudoku 3D tipe tiga wajah dengan tepat dan cepat, serta Generator untuk menghasilkan contoh soal teka-teki sudoku 3D tipe tiga wajah yang dapat dimainkan. Algoritma yang digunakan untuk menyelesaikan permasalahan tersebut adalah algoritma backtracking. Implementasi algoritma backtracking dilakukan dengan pendekatan deterministik dan non-deterministik untuk mendapatkan kecepatan pemecahan teka-teki sudoku 3D tipe tiga wajah yang lebih optimal.
Pembangunan aplikasi dilakukan menggunakan Unity dengan bahasa pemrograman c#. Berdasarkan hasil penelitian, aplikasi mampu menghasilkan dan menyelesaikan soal teka-teki sudoku tiga dimensi tipe tiga wajah menggunakan algoritma backtracking. Untuk pengembangan Solver, digunakan pendekatan deterministik karena algoritma backtracking dapat bekerja dengan cepat dan efisien. Namun pada pengembangan Generator, digunakan pendekatan non- determinisitik karena jumlah variasi solusi yang dihasilkan lebih banyak dibanding dengan pendekatan deterministik. Pada pendekatan non-determinisitik, digunakan pengaturan waktu dan pemakaian thread untuk menambah kecepatan algoritma backtracking.
Kata Kunci: Algoritma Backtracking, Generator, Solver, Sudoku 3D, Tiga Wajah
vii
IMPLEMENTATION OF BACKTRACKING ALGORITHM IN THREE FACES TYPE THREE-DIMENSIONAL SUDOKU
GAME
ABSTRACT
Along with the increasing popularity of sudoku, various variants of sudoku have emerged, one of them is the three-faces type three dimensional (3D) sudoku.
3D Sudoku itself has rules similar to conventional sudoku, where the aim of the game is to enter numbers into cell boxes without repetition in a row, column or region. However, in three-faces type 3D sudoku, inserting numbers in rows and columns must be considered in three dimensions, so it is certainly more complicated than conventional sudoku puzzles. Due to the higher complexity, research and development of the Solver is carried out to help players solve 3D sudoku type puzzles correctly and quickly, and the Generator to produce examples of 3D sudoku puzzles that can be played. The algorithm used to solve these problems is the backtracking algorithm. The backtracking algorithm is implemented using a deterministic and non-deterministic approach to get a more optimal solution for solving the three-faces type 3D sudoku puzzle. The Application is developed using Unity with the c # programming language. Based on the results of the study, the application is able to generate and solve three-faces type 3D sudoku puzzle using the backtracking algorithm. For the Solver, a deterministic approach is used because the backtracking algorithm can work quickly and efficiently. However, for the Generator, a non-deterministic approach is used because it produces a greater number of solution variations than the deterministic approach. In the non- deterministic approach, timer and thread usage is used to increase the speed of the backtracking algorithm.
Keyword: Backtracking Algorithm, Generator, Solver, Sudoku 3D, Three Faces
viii DAFTAR ISI
Halaman
HALAMAN JUDUL ... i
HALAMAN PERSETUJUAN/PENGESAHAN ... ii
HALAMAN PERNYATAAN TIDAK MELAKUKAN PLAGIAT... iii
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH ... iv
KATA PENGANTAR ... v
ABSTRAK ... vi
ABSTRACT ... vii
DAFTAR ISI ... viii
DAFTAR GAMBAR ... ix
DAFTAR TABEL ... xi
DAFTAR LAMPIRAN ... xii
BAB I PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Rumusan Masalah... 4
1.3. Batasan Masalah ... 4
1.4. Tujuan Penelitian ... 5
1.5. Manfaat Penelitian ... 5
1.6. Sistematika Penulisan ... 5
BAB II Landasan Teori ... 7
2.1. Sudoku ... 7
2.2. Sudoku Tiga Dimensi ... 9
2.3. Algoritma Backtracking ... 14
BAB III METODOLOGI PENELITIAN DAN PERANCANGAN APLIKASI ... 18
3.1. Metodologi Penelitian ... 18
3.2. Perancangan Aplikasi ... 19
3.2.1. Flowchart ... 19
3.2.2. Rancangan Antarmuka ... 30
BAB IV IMPLEMENTASI DAN ANALISIS ... 35
4.1. Spesifikasi Perangkat ... 35
4.2. Implementasi Aplikasi ... 36
4.2.1. Antarmuka Aplikasi ... 36
4.2.2. Kode Aplikasi ... 45
4.3. Uji Coba Aplikasi ... 64
4.3.1. Pendekatan Deterministik ... 66
4.3.2. Pendekatan Non-Deterministik ... 69
4.4. Analisis Hasil ... 78
BAB V SIMPULAN DAN SARAN ... 81
5.1. Simpulan ... 81
5.2. Saran ... 82
DAFTAR PUSTAKA ... 83
ix
DAFTAR GAMBAR
Halaman
Gambar 1.1 Contoh Sudoku Tiga Dimensi Tipe Tiga Wajah ... 2
Gambar 2.1 Contoh Sudoku ... 8
Gambar 2.2 Sudoku Dion Curch ... 9
Gambar 2.3 Sudoku Tiga Dimensi Model Six-Face ... 11
Gambar 2.4 Hyper Sudoku ... 12
Gambar 2.5 Snowflake Sudoku ... 12
Gambar 2.6 Sudoku Tiga dimensi raksasa ... 13
Gambar 2.7 Aturan Sudoku Tiga dimensi... 14
Gambar 2.8 DFS Tree ... 15
Gambar 3.1 Flowchart Main Utama ... 20
Gambar 3.2 Flowchart Permainan ... 21
Gambar 3.3 Flowchart Init Backtrack ... 23
Gambar 3.4 Flowchart Backtrack ... 26
Gambar 3.5 Flowchart Solver... 27
Gambar 3.6 Flowchart Generator ... 28
Gambar 3.7 Contoh Tampilan Main Menu ... 30
Gambar 3.8 Contoh Tampilan Menu Ukuran Sudoku Tiga Dimensi ... 31
Gambar 3.9 Contoh Tampilan Menu How to Play ... 31
Gambar 3.10 Contoh Tampilan Menu Credit ... 32
Gambar 3.11 Contoh Tampilan Menu Quit ... 32
Gambar 3.12 Contoh Tampilan Permainan ... 33
Gambar 3.13 Contoh Tampilan Input ... 34
Gambar 4.1 Main Menu ... 36
Gambar 4.2 Menu Mode Sudoku ... 37
Gambar 4.3 Menu Ukuran Sudoku ... 37
Gambar 4.4 How to Play ... 38
Gambar 4.5 Credit... 38
Gambar 4.6 Menu Keluar ... 39
Gambar 4.7 Mode Generator ... 40
Gambar 4.8 Mode Solver ... 40
Gambar 4.9 Papan Sudoku Tiga Dimensi yang telah diberikan Input oleh Pemain ... 41
Gambar 4.10 Permainan Loading ... 42
Gambar 4.11 Hasil Generator ... 42
Gambar 4.12 Permainan Selesai ... 43
Gambar 4.13 Notifikasi Solver Sukses ... 44
Gambar 4.14 Notifikasi Sudoku Tidak Valid ... 44
Gambar 4.15 Notifikasi Jumlah Sel Awal Cukup ... 44
Gambar 4.16 Kelas Menu... 45
Gambar 4.17 Properti dan Kode Fungsi Start dalam Kelas Board ... 46
Gambar 4.18 Kode Fungsi generateBoard dalam Kelas Board ... 47
Gambar 4.19 Kode Fungsi clear, scanBoard, dan printBoard dalam Kelas Board 48 Gambar 4.20 Kode Fungsi generateInput dalam Kelas Board ... 49
Gambar 4.21 Kode Fungsi Update, slotClick, inputClick, dan undo dalam Kelas Board ... 50
x
Gambar 4.22 Kode Fungsi runSolver dalam Kelas Board ... 51
Gambar 4.23 Kode Fungsi runGenerator dalam Kelas Board... 52
Gambar 4.24 Kode Fungsi getRomeState dan getShuffleState dalam Kelas Board ... 53
Gambar 4.25 Kode Fungsi waitSecond dan disposeTask dalam Kelas Board ... 54
Gambar 4.26 Kode Fungsi initBacktrack dalam Kelas Board ... 54
Gambar 4.27 Kode Fungsi saveState dalam Kelas Board... 54
Gambar 4.28 Kode Fungsi checkState dan isSafe dalam Kelas Board... 55
Gambar 4.29 Properti dan Konstruktor dalam Kelas Backtrack ... 56
Gambar 4.30 Kode Fungsi setState dan getState dalam Kelas Backtrack ... 57
Gambar 4.31 Properti dan Konstruktor Kelas Cell ... 57
Gambar 4.32 Kode Fungsi run dan backtrack dalam Kelas Backtrack ... 58
Gambar 4.33 Kode Fungsi isSafe dalam Kelas Backtrack ... 59
Gambar 4.34 Kode Fungsi generateStack dalam Kelas Backtrack ... 60
Gambar 4.35 Kelas CellSlot ... 61
Gambar 4.36 Kelas Inputx ... 62
Gambar 4.37 Kelas CubeTexture ... 63
Gambar 4.38 Kelas Timer ... 64
xi
DAFTAR TABEL
Halaman
Tabel 4.1 Waktu Backtrack Deterministik Ukuran 4x4x4 ... 67
Tabel 4.2 Waktu Backtrack Deterministik Ukuran 6x6x6 ... 67
Tabel 4. 3 Waktu Backtrack Deterministik Ukuran 8x8x8 ... 67
Tabel 4.4 Node Backtrack Deterministik ... 68
Tabel 4.5 Waktu Backtrack Non-Deterministik Ukuran 4x4x4 ... 69
Tabel 4.6 Waktu Backtrack Non-Deterministik Ukuran 6x6x6 ... 70
Tabel 4.7 Waktu Backtrack Non-Deterministik Ukuran 8x8x8 ... 70
Tabel 4. 8 Node Backtrack Non-Deterministik ... 70
Tabel 4. 9 Node Backtrack Non-Deterministik (Lanjutan) ... 71
Tabel 4.10 Waktu Backtrack Non-Deterministik ukuran 4x4x4 dengan Timer ... 72
Tabel 4.11 Waktu Backtrack Non-Deterministik ukuran 6x6x6 dengan Timer ... 72
Tabel 4.12 Waktu Backtrack Non-Deterministik ukuran 8x8x8 dengan Timer ... 73
Tabel 4.13 Node Backtrack Non-Deterministik dengan Timer ... 73
Tabel 4.14 Waktu Backtrack Non-Deterministik ukuran 4x4x4 dengan 2 Thread dan Timer ... 75
Tabel 4.15 Waktu Backtrack Non-Deterministik ukuran 6x6x6 dengan 2 Thread dan Timer ... 75
Tabel 4.16 Waktu Backtrack Non-Deterministik ukuran 8x8x8 dengan 2 Thread dan Timer ... 75
Tabel 4.17 Node Backtrack Non-Deterministik dengan 2 Thread dan Timer ... 76
Tabel 4.18 Waktu Backtrack Non-Deterministik ukuran 4x4x4 dengan 3 Thread dan Timer ... 77
Tabel 4.19 Waktu Backtrack Non-Deterministik ukuran 6x6x6 dengan 3 Thread dan Timer ... 77
Tabel 4.20 Waktu Backtrack Non-Deterministik ukuran 8x8x8 dengan 3 Thread dan Timer ... 77
Tabel 4.21 Node Backtrack Non-Deterministik dengan 3 Thread dan Timer ... 78
xii
DAFTAR LAMPIRAN
Halaman Riwayat Hidup ... 85 Formulir Konsultasi Skripsi Dosen Pembimbing I ... 86 Formulir Konsultasi Skripsi Dosen Pembimbing II ... 87