Penyelesaian Puzzle Sudoku Menggunakan Pemrograman Linear Integer

PENYELESAIAN PUZZLE SUDOKU MENGGUNAKAN
PEMROGRAMAN LINEAR INTEGER

MUHAMAD FARDAN WARDHANA

DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2014

ABSTRAK
MUHAMAD FARDAN WARDHANA. Penyelesaian Puzzle Sudoku
Menggunakan Pemrograman Linear Integer. Dibimbing oleh AMRIL AMAN dan
NGAKAN KOMANG KUTHA ARDANA.
Sudoku dapat dipandang sebagai puzzle (teka-teki) dalam matematika.
Pemain harus mengisi sebuah matriks n2 × n2 yang berisi beberapa unsur awal
yang diberikan, sehingga setiap baris, kolom, dan mini grid n × n berisi masingmasing bilangan bulat 1 sampai n2. Tujuan penelitian ini adalah mengkaji Sudoku
tradisional, Sudoku X (Sudoku diagonal) dan menggunakan metode branch and
bound, untuk mencari hubungan antara kemungkinan solusi yang muncul dengan
ukuran Sudoku, dan banyaknya given yang diberikan. Solusi Sudoku ditentukan

dengan menggunakan metode branch and bound yang diimplementasikan pada
script m-file. Kami dapat menemukan hubungan antara kemungkinan solusi yang
muncul dengan ukuran Sudoku, dan banyaknya given yang diberikan. Di sisi lain,
kami tidak dapat menemukan hubungan semacam itu untuk ukuran Sudoku yang
umum dan konfigurasi yang umum.
Kata kunci: Sudoku, linear integer, branch and bound

ABSTRACT
MUHAMAD FARDAN WARDHANA. Solving Sudoku Puzzle by Using Linear
Integer Programming. Supervised by AMRIL AMAN and NGAKAN KOMANG
KUTHA ARDANA.
Sudoku can be viewed as a puzzle in mathematics. Players must fill in a n2 × n2
matrix which is containing some given enteries, so that each row, column, and n ×
n mini grid contains each integer 1 through n2. The objectives of this research are
to study the traditional Sudoku puzzle, Sudoku X puzzle (diagonal Sudoku) and
use branch and bound method, to find the relation between the number of possible
solution with the size of sudoku, and the number quantity givens. The solutions
are determined using branch and bound method that was implemented on m-file
script. We can find the relation between the number of possible solution with the
size of sudoku, and the number quantity givens. On the other hand, we can not

find such relation for general size of sudoku and general configuration.
Keywords: Sudoku, linear integer, branch and bound

PENYELESAIAN PUZZLE SUDOKU MENGGUNAKAN
PEMROGRAMAN LINEAR INTEGER

MUHAMAD FARDAN WARDHANA

Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Sains
pada
Departemen Matematika

DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2014


Judul Skripsi : Penyelesaian Puzzle Sudoku Menggunakan Pemrograman Linear
Integer
Nama
: Muhamad Fardan Wardhana
NIM
: G54061543

Disetujui oleh

Dr Ir Amril Aman, MSc
Pembimbing I

Ir Ngakan Komang Kutha Ardana, MSc
Pembimbing II

Diketahui oleh

Dr Toni Bakhtiar, MSc
Ketua Departemen


Tanggal Lulus:

PRAKATA

Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas
segala karunia-Nya sehingga penelitian dengan judul Penyelesaian Puzzle Sudoku
Menggunakan Pemrograman Linear Integer dapat diselesaikan.
Terima kasih penulis ucapkan kepada Bapak Dr Ir Amril Aman, MSc dan
Bapak Ir Ngakan Komang Kutha Ardana, MSc selaku pembimbing, serta Bapak
Dr Ir I Gusti Putu Purnaba, DEA yang telah banyak memberi saran. Ungkapan
terima kasih juga disampaikan kepada (alm) ayah, (almh) ibu, istri serta seluruh
keluarga, atas segala doa dan kasih sayangnya.
Semoga karya ilmiah ini bermanfaat.

Bogor, Maret 2014
Muhamad Fardan Wardhana

DAFTAR ISI
PENDAHULUAN


1

Latar Belakang

1

Perumusan Masalah

1

Tujuan Penelitian

2

Ruang Lingkup Penelitian

2

TINJAUAN PUSTAKA


2

Definisi 1 Puzzle (teka-teki) Sudoku

2

Definisi 2 Persamaan Linear

2

Pemrograman Linear

3

Definisi 3 Bentuk Standar Suatu PL

3

Solusi Suatu Pemrograman Linear


3

Definisi 4 Daerah Fisibel

4

Definisi 5 Solusi Basis

4

Definisi 6 Solusi Fisibel Basis

4

Definisi 7 Solusi Optimum

4

Pemrograman Linear Integer


4

Metode Branch and Bound

5

DESKRIPSI DAN PEMODELAN MASALAH

9

Deskripsi Masalah

9

Pemodelan Masalah

9

PEMBAHASAN


13

Contoh Kasus

13

Mencari Solusi Puzzle Sudoku Tradisional pada Matriks 9 × 9

22

Mencari Solusi Puzzle Sudoku X (Sudoku Diagonal) pada Matriks 9 × 9

25

Hubungan Antar Ukuran Sudoku, Banyaknya Unsur Awal, dan Konfigurasi
Sudoku Tradisional.
28
SIMPULAN DAN SARAN

29


Simpulan

29

Saran

29

DAFTAR PUSTAKA

30

DAFTAR GAMBAR
1.
2.
3.
4.

Soal Sudoku dengan input data secara acak

Daerah fisibel PLI (2.5)
Daerah fisibel untuk Subproblem 2 (x1 ≥ 4) dan Subproblem 3 (x1 ≤ 3)
Seluruh pencabangan pada metode branch and bound untuk
menentukan solusi PLI (2.5)
5. Bentuk umum Sudoku ukuran 4 × 4
6. Contoh soal Sudoku 4 × 4
7. Solusi Sudoku 4 × 4
8. Bentuk umum Sudoku ukuran 9 × 9
9. Contoh soal Sudoku tradisional 9 × 9
10. Solusi Sudoku tradisional ukuran 9 × 9
11. Contoh soal puzzle Sudoku yang memiliki banyak solusi (terhingga)
12. Contoh soal Sudoku X ukuran 9 ×9
13. Solusi Sudoku X ukuran 9 × 9

1
7
7
9
13
16
22
23
24
25
25
26
27

DAFTAR LAMPIRAN
1. Script M-File sudoku.m untuk mencari solusi Sudoku tradisional.
2. Script M-File sudokuX.m untuk mencari solusi Sudoku X (Sudoku
diagonal)
3. Contoh mencari solusi untuk soal Sudoku ukuran 9 × 9 dengan script
M-File
4. Contoh mencari solusi untuk soal Sudoku ukuran 9 × 9 yang memiliki
banyak solusi (terhingga) dengan menggunakan script M-File
5. Contoh mencari solusi untuk soal Sudoku X ukuran 9 × 9 dengan
menggunakan script M-File
6. Contoh mencari solusi untuk soal Sudoku X ukuran 9 × 9 yang
memiliki banyak solusi (terhingga) dengan menggunakan script M-File
7. Hubungan antar ukuran Sudoku, banyaknya unsur awal, dan
konfigurasi Sudoku tradisional

31
33
36
37
42
43
44

DAFTAR TABEL
1. Hubungan antar ukuran, unsur, dan konfigurasi Sudoku tradisional

28

PENDAHULUAN
Latar Belakang
Sudoku adalah sebuah puzzle berdasarkan logika yang pertama kali hadir di
Amerika Serikat dengan judul “Number Place” di majalah “Dell Pencil Puzzle &
Word Games” di tahun 1979. Pada tahun 1980-an, permainan ini berkembang
menjadi popular di Jepang dan telah diganti nama oleh penerbit menjadi “suji wa
dokushin ni kagiru”, yang diterjemahkan menjadi “the digits must remain single
(angka-angkanya harus tetap tunggal)”. Pada akhirnya diperpendek menjadi
”Sudoku” atau “single number (nomor tunggal) ” (Bartlett, 2008).
Sudoku pada umumnya hadir dalam bentuk matriks 9 x 9. Aturannya
mudah: isi dalam matriks sehingga setiap baris, kolom, dan submatriks 3 x 3 yang
diisi angka 1 sampai 9 hanya satu kali. Sesuai namanya, maka tidak boleh ada
angka/digit yang sama. Hal inilah yang dinamakan dengan “Prinsip keunikan”
(Principle of Uniqueness). Setiap puzzle muncul dengan sejumlah nomor yang
diberikan. Nomor dan posisinya menentukan tingkat kesulitan permainan ini.
Gambar 1 adalah salah satu contoh puzzle Sudoku 9 x 9.

Gambar 1 Soal Sudoku dengan input data secara acak
Kesulitan tingkat permainan Sudoku, selain diukur dari besar ukuran
matriksnya (n2 × n2), biasanya diukur dari problem perumusan angka-angka awal
yang telah diatur posisi dan nilainya. Semakin sedikit angka-angka awal yang
diberikan, tentunya akan semakin sulit.
Perumusan Masalah
Sudoku menghasilkan dua pertanyaan menarik secara matematika sebagai
berikut: Bagaimana puzzle-puzzle ini bisa diselesaikan secara matematika? dan
teknik matematika apa yang bisa digunakan untuk menciptakan dan
menyelesaikan puzzle-puzzle Sudoku ini?

2
Tujuan Penelitian
Di dalam tulisan ilmiah ini akan dipelajari mengenai puzzle (teka-teki)
Sudoku, yang selanjutnya disebut dengan Sudoku sebagai sebuah permasalahan
pemrograman bilangan bulat (Integer Programming Model). Tujuan dari karya
ilmiah ini:
1. Mengkaji Sudoku tradisional menggunakan metode Branch and Bound.
2. Mengkaji Sudoku yang baru (Sudoku diagonal) menggunakan metode
Branch and Bound.
3. Mencari hubungan antar ukuran Sudoku, banyaknya unsur awal, dan
konfigurasi pada Sudoku tradisional.
Ruang Lingkup Penelitian
Sudoku memiliki berbagai ukuran. Dalam tulisan ilmiah ini, penulis
membatasi pembahasan dan pencarian pola untuk Sudoku berukuran 9 × 9.

TINJAUAN PUSTAKA
Definisi 1 Puzzle (teka-teki) Sudoku
Sudoku adalah sebuah permainan teka-teki angka berbasis logika yang pada
umumnya berbentuk matriks 9 × 9 (n2 × n2 dengan n = 3) dan memiliki aturan
yang sederhana dengan menyusun bilangan-bilangan 1,2,3, … , n2 pada kotak
berjumlah n2 × n2 sehingga setiap kolom, baris, maupun mini grid berukuran 3 × 3
(n × n) hanya boleh terisi dengan bilangan 1 sampai 9 yang berjumlah masingmasing satu.
Definisi 2 Persamaan Linear
Suatu sistem persamaan linear dalam n peubah (variabel) adalah persamaan
dengan bentuk
a1 x1  a2 x2  ...  an xn  b
di mana a1 , a2 ,..., an dan b adalah bilangan-bilangan real dan x1 , x2 ,..., xn adalah
peubah. Dengan demikian maka suatu sistem linear dari m persamaan dalam n
peubah adalah satu sistem berbentuk:
a11 x1  a12 x2  ...  a1n xn  b1

a21 x1  a22 x2  ...  a2 n xn  b2
.
.
.
am1 x1  am 2 x2  ...  amn xn  bm
di mana amn dan bm semuanya adalah bilangan-bilangan real. Sistem-sistem
bentuk di atas sebagai sistem linear m × n. (Leon 2001)

3
Pemrograman Linear
Pemrograman Linear (PL) adalah suatu masalah optimasi yang memenuhi
ketentuan-ketentuan berikut:
a)
Tujuan masalah tersebut adalah memaksimumkan atau meminimumkan
suatu fungsi linear dari sejumlah variabel keputusan. Fungsi yang akan
dimaksimumkan atau diminimumkan ini disebut fungsi objektif.
b)
Nilai variabel-variabel keputusannya harus memenuhi suatu himpunan
kendala. Setiap kendala harus berupa persamaan linear atau pertidaksamaan
linear.
c)
Ada pembatasan tanda untuk setiap variabel dalam masalah ini. Untuk
sembarang variabel xi, pembatasan tanda menentukan xi harus tak-negatif (xi
≥ 0) atau tidak dibatasi tandanya (unrestricted in sign).
(Winston 2004)
Suatu PL mempunyai bentuk standar seperti yang didefinisikan sebagai
berikut.
Definisi 3 Bentuk Standar Suatu PL
Suatu pemrograman linear dalam bentuk standar didefinisikan sebagai:
Max z
(atau min)
s.t.

(2.1)
Dengan mendefinisikan:
A=[

]

[

]

[

]

Maka kendala pada (2.1) dapat ditulis dengan sistem persamaan Ax = b

(2.2)

(Winston 2004)
Solusi Suatu Pemrograman Linear
Suatu masalah PL dapat diselesaikan dalam berbagai teknik, salah satunya
adalah metode simpleks. Metode ini dapat menghasilkan suatu solusi optimum
bagi masalah PL dan telah dikembangkan oleh Dantzig sejak tahun 1947 (Winston
2004), dan dalam perkembangannya merupakan metode yang paling umum
digunakan untuk menyelesaikan PL. Metode ini berupa metode iteratif untuk
menyelesaikan PL berbentuk standar.
Pada masalah PL (2.2), vektor x yang memenuhi kendala Ax = b disebut
sebagai solusi dari PL (2.2). Misalkan matriks A dapat dinyatakan sebagai A = (B
N), dengan B adalah matriks taksingular berukuran m × m yang elemennya berupa
koefisien variabel basis dan N merupakan matriks berukuran m × (n – m) yang

4
elemennya berupa koefisien variabel nonbasis pada matriks kendala. Dalam hal
ini matriks B disebut matriks basis untuk PL (2.2).
Misalkan x dinyatakan sebagai vektor x =

dengan xB adalah vektor

variabel basis dan xN adalah vektor variabel nonbasis, maka Ax = b dapat
dinyatakan sebagai:
Ax

=

= BxB + NxN = b
(2.3)
Karena matriks B adalah matriks tak singular, maka B memiliki invers, sehingga
dari (2.3) xB dapat dinyatakan sebagai:
xB = B-1b - B-1NxN
(2.4)
Kemudian, fungsi objektifnya berubah menjadi:
min z =
(Winston 2004)
Definisi 4 Daerah Fisibel
Daerah fisibel suatu PL adalah himpunan semua titik yang memenuhi semua
kendala dan pembatasan tanda pada PL tersebut.
(Winston 2004)
Definisi 5 Solusi Basis
Solusi basis adalah solusi pada PL yang didapatkan dengan mengatur
variabel n – m sama dengan nol dan nilai untuk penyelesaiannya adalah dari sisa
variabel m. Hal ini mengasumsikan bahwa mengatur variabel n – m sama dengan
nol sehingga membuat nilai yang unik untuk sisa variabel m atau sejenisnya, dan
kolom-kolom untuk sisa dari variabel m adalah bebas linear.
(Winston 2004)
Definisi 6 Solusi Fisibel Basis
Solusi fisibel basis adalah solusi basis pada PL yang semua variabelvariabelnya tak-negatif.
(Winston 2004)
Definisi 7 Solusi Optimum
Untuk masalah maksimalisasi, solusi optimum suatu PL adalah suatu titik
dalam daerah fisibel dengan nilai fungsi objektif terbesar. Untuk masalah
minimisasi, solusi optimum suatu PL adalah suatu titik dalam daerah fisibel
dengan nilai fungsi objektif terkecil.
(Winston 2004)
Pemrograman Linear Integer
Pemrograman linear integer (PLI) adalah suatu model pemrograman linear
dengan variabel yang digunakan berupa bilangan bulat (integer). Jika semua

5
variabel harus berupa integer, maka masalah tersebut dinamakan pure integer
programming. Jika hanya sebagian yang harus berupa integer, maka disebut
mixed integer programming (MIP). PLI dengan semua variabelnya harus bernilai
0 atau 1 disebut 0-1 PLI.
(Garfinkel & Nemhauser 1972)
Metode Branch and Bound
Prinsip dasar metode branch-and-bound adalah memecah daerah fisibel dari
masalah relaksasi-PL dengan membuat subproblem-subproblem. Terdapat dua
konsep dasar dalam algoritma branch-and-bound.
1.
Branch (Cabang)
Branching (pencabangan) adalah proses membagi permasalahan menjadi
subproblem-subproblem yang mungkin mengarah ke solusi.
2.
Bound (Batas)
Bounding (pembatasan) adalah suatu proses untuk mencari atau menghitung
batas atas (dalam masalah minimisasi) dan batas bawah (dalam masalah
maksimisasi) untuk solusi optimum pada subproblem yang mengarah ke
solusi.
Metode branch-and-bound diawali dari menyelesaikan relaksasi-PL dari
suatu pemrograman linear integer. Jika semua nilai variabel keputusan solusi
optimum sudah berupa integer, maka solusi tersebut merupakan solusi optimum
PLI. Jika tidak, dilakukan pencabangan dan penambahan batasan pada relaksasiPLnya kemudian diselesaikan.
Winston (2004) menyebutkan bahwa untuk masalah maksimisasi nilai
fungsi objektif optimum untuk PLI lebih kecil atau sama dengan nilai fungsi
objektif optimum untuk relaksasi-PL, sehingga nilai fungsi objektif optimum
relaksasi-PL merupakan batas atas bagi nilai fungsi objektif optimum untuk
masalah PLI. Diungkapkan pula oleh Winston (2004) untuk masalah maksimisasi
bahwa nilai fungsi objektif optimum untuk suatu kandidat solusi merupakan batas
bawah nilai fungsi objektif optimum untuk masalah PLI asalnya. Suatu kandidat
solusi diperoleh jika solusi dari suatu subproblem sudah memenuhi kendala
integer pada masalah PLI, artinya fungsi objektif dan semua variabelnya sudah
bernilai integer.
Sebelumnya akan dibahas terlebih dahulu pengertian subproblem yang
terukur. Menurut Winston (2004), suatu subproblem dikatakan terukur (fathomed)
jika salah satu kondisi berikut terpenuhi:
a.
Subproblem tersebut takfisibel, sehingga tidak dapat menghasilkan solusi
optimum bagi PLI.
b.
Subproblem tersebut menghasilkan suatu solusi optimum dengan semua
variabelnya bernilai integer. Jika solusi optimum ini mempunyai nilai fungsi
objektif yang lebih baik daripada solusi fisibel yang diperoleh sebelumnya,
maka solusi ini menjadi kandidat solusi optimum dan nilai fungsi
objektifnya menjadi batas bawah (dalam masalah maksimisasi) dan batas
atas (dalam masalah minimisasi) nilai fungsi objektif optimum bagi masalah
PLI pada saat itu. Bisa jadi subproblem ini menghasilkan solusi optimum
untuk masalah PLI.

6
c.

Nilai fungsi objektif optimum untuk subproblem tersebut tidak melebihi
batas bawah saat itu (untuk masalah maksimisasi). Suatu subproblem dapat
dieliminasi apabila subproblem tersebut takfisibel dan batas bawah kandidat
solusi lebih kecil (untuk masalah maksimisasi) dari nilai fungsi objektif
optimum untuk subproblem tersebut.

Berikut ini adalah langkah-langkah penyelesaian suatu masalah maksimisasi
dengan metode branch-and-bound :

Langkah 0
Didefinisikan z sebagai batas bawah dari solusi PLI yang optimum. Pada awalnya
tetapkan z = − dan i = 0.

Langkah 1
Subproblem PL(i) dipilih sebagai bagian masalah berikutnya untuk diteliti.
Subproblem PL(i) diselesaikan dan diukur dengan kondisi yang sesuai.
a)
Jika PL(i) terukur, maka batas bawah z dapat diperbarui. Batas bawah z dapat
diperbaharui jika solusi PLI yang lebih baik telah ditemukan. Jika tidak,
maka bagian masalah (subproblem) baru i dipilih dan langkah 1 diulangi.
Jika semua subproblem telah diteliti, maka proses dihentikan.
b)
Jika PL(i) tidak terukur, lanjutkan ke langkah 2 untuk melakukan
pencabangan PL(i).

Langkah 2
Pilih satu variabel xj yang nilai optimumnya, yaitu xj*, tidak memenuhi batasan
integer dalam solusi PL(i). Singkirkan bidang [xj*] xj [xj*]+1 dengan membuat
dua bagian masalah PL yang berkaitan menjadi dua batasan yang tidak dapat
dipenuhi secara bersamaan yaitu:
xj ≤ [xj*] dan xj ≥ [xj*]+1,
dengan [xj*] didefinisikan sebagai integer terbesar yang kurang dari atau sama
dengan xj*. Jika PL(i) masih tidak terukur, maka kembali ke Langkah 1.
(Taha 1996)
Untuk memudahkan pemahaman mengenai metode branch-and-bound
diberikan contoh sebagai berikut:
Contoh 1
Misalkan diberikan PLI sebagai berikut:
Maksimumkan
z = 5 x1 + 4 x2
terhadap
x1 + x2 5
10 x1 + 6 x2
x1, x2 0 dan integer
(2.5)
Solusi optimal relaksasi-PL dari masalah PLI (2.5) adalah x1=3.75, x2=1.25,
dan z =23.75. Jadi batas atas nilai optimal fungsi objektif masalah PLI (2.5)
adalah z= 23.75. Daerah fisibel relaksasi-PL masalah (2.5) ditunjukkan pada
Gambar 2 (daerah yang diarsir) sedangkan titik-titik merupakan solusi fisibel
masalah PLI (2.5).

7
x2

Daerah
fisibel
x1 = 3.75
x2 = 1.25

Gambar 2 Daerah fisibel PLI (2.5)

x1

Langkah berikutnya adalah memartisi daerah fisibel relaksasi-PL menjadi
dua bagian berdasarkan variabel yang bernilai pecahan (non-integer). Karena x1=
3.75 dan x2=1.25 variabel bernilai pecahan maka dipilih salah satu variabel,
misalkan x1, sebagai dasar pencabangan. Jika masalah relaksasi-PL dari PLI (2.5)
diberi nama Subproblem 1 dan Subproblem 1 dicabangkan atas x1, maka
pencabangan tersebut menghasilkan 2 subproblem, yaitu:

Subproblem 2: Subproblem 1 ditambah kendala x1 ≥ 4

Subproblem 3: Subproblem 1 ditambah kendala x1 ≤ 3.
Daerah fisibel untuk kedua subproblem di atas diilustrasikan secara grafis pada
Gambar 3.

x2

Subproblem 3

Subproblem 2

x1
Gambar 3 Daerah fisibel untuk Subproblem 2 (x1 ≥ 4)
dan Subproblem 3 (x1 ≤ 3)
Setiap titik (solusi) fisibel dari PLI (2.5) termuat dalam daerah fisibel
Subproblem 2 atau Subproblem 3. Setiap subproblem ini saling lepas. Sekarang
dipilih subproblem yang belum diselesaikan, misalkan dipilih Subproblem 2.
Solusi optimal untuk Subproblem 2 ini adalah x1 = 4, x2 = 0.8333 dan z = 23.333.
Karena solusi optimal yang dihasilkan Subproblem 2 bukan solusi integer, maka
Subproblem 2 dicabangkan atas x2 sehingga diperoleh dua subproblem lagi, yakni:

Subproblem 4: Subproblem 3 ditambah kendala x2 ≥ 1;

8


Subproblem 5: Subproblem 3 ditambah kendala x2 ≤ 0.

Saat ini subproblem yang belum diselesaikan adalah Subproblem 3, 4 dan 5.
Salah satu subproblem dipilih, misalnya dengan aturan LIFO (last in first out).
Dengan aturan ini berarti dipilih Subproblem 4 atau Subproblem 5. Subproblem 4
takfisibel maka subproblem ini tidak dapat menghasilkan solusi optimal, yang
tersisa adalah Subproblem 3 dan Subproblem 5.
Karena aturan LIFO, dipilih Subproblem 5, yang kemudian menghasilkan
solusi optimal x1=4.5, x2=0 dan z=22.5. Karena x1=4.5 bukan integer, maka
dilakukan kembali pencabangan atas x1, sehingga diperoleh:
 Subproblem 6: Subproblem 5 ditambah kendala x1≥5 ;
 Subproblem 7: Subproblem 5 ditambah kendala x1≤4.
Misalkan dipilih Subproblem 6. Ternyata Subproblem 6 ini juga takfisibel,
sehingga tidak dapat menghasilkan solusi optimal. Dengan demikian subproblemsubproblem yang belum diselesaikan adalah Subproblem 3 dan Subproblem 7.
Karena aturan LIFO, dipilih Subproblem 7. Subproblem ini kemudian
menghasilkan solusi opimal x1=4, x2= 0, dan z= 20. Dapat dilihat bahwa solusi
optimal subproblem ini semuanya berupa integer, sehingga merupakan kandidat
solusi untuk PLI (2.5). Nilai z pada kandidat solusi ini merupakan batas bawah
bagi nilai optimal PLI. Penyelesaian Subproblem 3 menghasilkan solusi optimal
x1= 3, x2= 2 dan z= 23. Batas bawah yang ditetapkan dari solusi optimal
Subproblem 7 tidak lebih baik dari nilai solusi optimal yang dihasilkan
Subproblem 3. Dengan demikian, nilai solusi optimal Subproblem 3, yakni z = 23
menjadi batas bawah yang baru. Semua solusi optimal telah berupa integer dan
tidak perlu dilakukan pencabangan kembali, sehingga solusi optimal dari
Subproblem 3 merupakan solusi optimal PLI (2.5), yakni x1= 3, x2= 2 dan z= 23.
Pohon pencabangan yang menunjukkan proses penyelesaian masalah PLI (2.5)
secara keseluruhan ditunjukkan pada Gambar 4.
(Setianto, 2011)

9

x1=3, x2=2, dan z=23
Kandidat Solusi (Solusi
Optimal)

Gambar 4 Seluruh pencabangan pada metode branch and bound
untuk menentukan solusi PLI (2.5)

DESKRIPSI DAN PEMODELAN MASALAH
Deskripsi Masalah
Untuk mendeskripsikan masalah Sudoku, hal utama yang harus diketahui
adalah pada kotak berjumlah n2 × n2 dan akan digunakan kasus Sudoku umum
dengan n = 3 sehingga setiap kolom, baris, maupun submatriks berukuran 3 × 3
hanya boleh terisi dengan bilangan 1 sampai 9 yang banyaknya masing-masing
satu. Soal Sudoku memiliki variasi yang beragam dan memiliki tingkat kesulitan
yang berbeda-beda.
Pemodelan Masalah
Secara matematis, memodelkan Sudoku menggunakan sebuah program
linear. Lebih khusus lagi akan dirumuskan oleh formula Binary Integer Linear
Programming (BLIP) untuk ukuran puzzle n2 × n2.
Variabel-variabel yang digunakan dalam model untuk penyelesaian puzzle
Sudoku:
i = indeks baris pada puzzle Sudoku,
j = indeks kolom pada puzzle Sudoku,
k {1, 2,3, 4,5,6,7,8,9),

10
G = nilai Given.
Untuk memulai, kita definisikan dengan variabel keputusan:
1 , jika elemen (i, j ) pada matriks Sudoku berukuran n  n mengandung integer k
xijk 
0 ,
Selainnya

{

Fungsi objektif dan kendala pada Sudoku 9 × 9 (n2 × n2, n = 3) yang
memiliki mini grid 3 × 3 (n × n, n = 3).
Min
0T x
Kendala:
Kendala pertama
Pada kolom Sudoku hanya boleh terisi dengan bilangan 1 sampai 9 tanpa ada
pengulangan.
9

x
i 1

ijk

 1, j  1: 9, k  1: 9...(3.1)

Kendala kedua
Pada baris Sudoku hanya boleh terisi dengan bilangan 1 sampai 9 tanpa ada
pengulangan.
n

x
j 1

ijk

 1, i  1: 9, k  1: 9...(3.2)

Kendala ketiga
Pada mini grid Sudoku hanya boleh terisi dengan bilangan 1 sampai 9 tanpa ada
pengulangan.
3q

3p

 

j 3q 31 i 3 p 31

xijk  1, k  1: 9, p  1: 3, q  1: 3...(3.3)

Kendala keempat
Setiap elemen pada Sudoku harus terisi
9

x
k 1

ijk

 1, i  1: 9, j  1: 9 (setiap matriks terisi)

Kendala kelima
Menentukan nilai Given pada Sudoku
xijk  1 (i, j, k )  G
(Bartlett, 2008)

11

Dari persamaan (3.1) dapat dijabarkan sebagai berikut:
x111  x211  x311  x411  x511  x611  x711  x811  x911  1,
x121  x221  x321  x421  x421  x621  x721  x821  x921  1,
x131  x231  x331  x431  x431  x631  x731  x831  x931  1,
.
.
.
x199  x299  x399  x499  x599  x699  x799  x899  x999  1.

Bentuk umum untuk persamaan (3.1) yaitu:
n

x
i 1

ijk

 1, j  1: n, k  1: n (hanya satu k di setiap kolom)

Dari persamaan (3.2) sebagai berikut:
x111  x121  x131  x141  x151  x161  x171  x181  x191  1,
x211  x221  x231  x241  x251  x261  x271  x281  x291  1,
x311  x321  x331  x341  x351  x361  x371  x381  x391  1,
.
.
.
x919  x929  x939  x949  x959  x969  x979  x989  x999  1.

Bentuk umum dari persamaan (3.2) yaitu:
n

x
j 1

ijk

 1, i  1: n, k  1: n (hanya satu k di setiap baris)

Dari persamaan (3.3) dapat dijabarkan sebagai berikut:

12

x111  x211  x311  x121  x221  x321  x131  x231  x331  1,
x411  x511  x611  x421  x521  x621  x431  x531  x631  1,
x711  x811  x911  x721  x821  x921  x731  x831  x931  1,
x141  x241  x341  x151  x251  x351  x161  x261  x361  1,
x441  x541  x641  x451  x551  x651  x461  x561  x661  1,
x741  x841  x941  x751  x851  x951  x761  x861  x961  1,
x171  x271  x371  x181  x281  x381  x191  x291  x391  1,
x471  x571  x671  x481  x581  x681  x491  x591  x691  1,
x  x  x  x  x  x  x  x  x  1.
. 771 871 971 781 881 981 791 891 991
.
.
x119  x219  x319  x129  x229  x329  x139  x239  x339  1,
x419  x519  x619  x429  x529  x629  x439  x539  x639  1,
x719  x819  x919  x729  x829  x929  x739  x839  x939  1,
x149  x249  x349  x159  x259  x359  x169  x269  x369  1,
x449  x549  x649  x459  x559  x659  x469  x569  x669  1,
x749  x849  x949  x759  x859  x959  x769  x869  x969  1,
x179  x279  x379  x189  x289  x389  x199  x299  x399  1,

x479  x579  x679  x489  x589  x689  x499  x599  x699  1,
x779  x879  x979  x789  x889  x989  x799  x899  x999  1.
Persamaan di atas di sederhanakan menjadi:
3

x
i 1

i1k

6

x
i4

i1k

9

x
i 7

i1k

3

x
i 1

i 4k

6

x
i4

i 4k

9

x
i 7

i 4k

3

x
i 1

i7k

 xi 2 k  xi 3k  1; k  1: 9,
 xi 2 k  xi 3k  1; k  1: 9,
 xi 2 k  xi 3k  1; k  1: 9,
 xi 5 k  xi 6 k  1; k  1: 9,
 xi 5 k  xi 6 k  1; k  1: 9,
 xi 5 k  xi 6 k  1; k  1: 9,
 xi 8 k  xi 9 k  1; k  1: 9,

13
6

x
i4

i7k

9

x
i 7

i7k

 xi 8 k  xi 9 k  1; k  1: 9,
 xi 8 k  xi 9 k  1; k  1: 9.

Persamaan (3.3) memiliki bentuk umum yaitu:
mq

mp





j  mq  m 1 i  mp  m 1

xijk  1, k  1: n, p  1: m, q  1: m (hanya satu k di setiap sub matriks)

PEMBAHASAN
Contoh Kasus
Pada bagian ini akan diberikan contoh kasus dalam penyelesaian Sudoku
dengan ukuran 4 × 4 (n2 × n2, n = 2) dan memiliki mini grid 2 × 2 (n × n, n = 2).
Misalkan elemen dari baris ke-i dan kolom ke-j adalah xi , j maka Sudoku secara
umum adalah

Gambar 5 Bentuk umum Sudoku ukuran 4 × 4
Penyelesaian Sudoku tersebut menggunakan metode branch and bound
memerlukan kendala-kendala sebagai berikut:
4

x
i 1

ijk

4

x
j 1

ijk

 1, j  1: 4, k  1: 4 ...(4.1)

 1, i  1: 4, k  1: 4...(4.2)

mq

mp





j  mq  m 1 i  mp  m 1

xijk  1, k  1: 4, p  1: 2, q  1: 2

Sehingga :
2

2

 x
j 1 i 1
2

ijk

4

 x
j 1 i 3
4

ijk

2

 x
j 3 i 1

ijk

 1, k  1: 4...(4.3)
 1, k  1: 4...(4.4)
 1, k  1: 4...(4.5)

14
4

4

 x
j 3 i 3

4

x
k 1

ijk

ijk

 1, k  1: 4...(4.6)

 1, i  1: 4, j  1: 4...(4.7)

xijk  1 (i, j, k )  G

Dari persamaan (4.1) diperoleh:
x111  x211  x311  x411  1,

x121  x221  x321  x421  1,
x131  x231  x331  x431  1,
x141  x241  x341  x441  1,
x112  x212  x312  x412  1,
x122  x222  x322  x422  1,
x132  x232  x332  x432  1,
x142  x242  x342  x442  1,
x113  x213  x313  x413  1,
x123  x223  x323  x423  1,
x133  x233  x333  x433  1,
x143  x243  x343  x443  1,
x114  x214  x314  x414  1,
x124  x224  x324  x424  1,
x134  x234  x334  x434  1,
x144  x244  x344  x444  1.
Dari persamaan (4.2) diperoleh :
x111  x121  x131  x141  1,

x211  x221  x231  x241  1,
x311  x321  x331  x341  1,
x411  x421  x431  x441  1,
x112  x122  x132  x142  1,
x212  x222  x232  x242  1,
x312  x322  x332  x342  1,
x412  x422  x432  x442  1,
x113  x123  x133  x143  1,
x213  x223  x233  x243  1,
x313  x323  x333  x343  1,
x413  x423  x433  x443  1,

15

x114  x124  x134  x144  1,
x214  x224  x234  x244  1,
x314  x324  x334  x344  1,
x414  x424  x434  x444  1.
Dari persamaan (4.3) diperoleh:
x111  x211  x121  x221  1,

x112  x212  x122  x222  1,
x113  x213  x123  x223  1,
x114  x214  x124  x224  1.
Dari persamaan (4.4) diperoleh:
x311  x411  x321  x421  1,

x312  x412  x322  x422  1,
x313  x413  x323  x423  1,
x314  x414  x324  x424  1.
Dari persamaan (4.5) diperoleh:
x131  x231  x141  x241  1,

x132  x232  x142  x242  1,
x133  x233  x143  x243  1,
x134  x234  x144  x244  1.
Dari persamaan (4.6) diperoleh:
x331  x431  x341  x441  1,

x332  x432  x342  x442  1,
x333  x433  x343  x443  1,
x334  x434  x344  x444  1.
Dari persamaan (4.7) diperoleh:
x111  x112  x113  x114  1,

x211  x212  x213  x214  1,
x311  x312  x313  x314  1,
x411  x412  x413  x414  1,
x121  x122  x123  x124  1,
x221  x222  x223  x224  1,
x321  x322  x323  x324  1,
x421  x422  x423  x424  1,

16

x131  x132  x133  x134  1,
x231  x232  x233  x234  1,
x331  x332  x333  x334  1,
x431  x432  x433  x434  1,
x141  x142  x143  x144  1,
x241  x242  x243  x244  1,
x341  x342  x343  x344  1,
x441  x442  x443  x444  1.
Misalkan diberikan soal Sudoku 4×4:

2
3
4

1
4

3

3

Gambar 6 Contoh soal Sudoku 4 × 4
Dari konfigurasi soal puzzle diatas jika dimasukan ke dalam kendala adalah
sebagai berikut:
Dari persamaan (4.1)
x111  x211  x311  x411  0  0  0  0  0

x121  x221  x321  x421  0  0  0  0  0
x131  x231  x331  x431  0  1  0  0  1
x141  x241  x341  x441  0  0  0  0  0
x112  x212  x312  x412  0  0  0  0  0
x122  x222  x322  x422  1  0  0  0  1
x132  x232  x332  x432  0  0  0  0  0
x142  x242  x342  x442  0  0  0  0  0
x113  x213  x313  x413  0  1  0  0  1
x123  x223  x323  x423  0  0  0  1  1
x133  x233  x333  x433  0  0  0  0  0
x143  x243  x343  x443  0  0  1  0  1
x114  x214  x314  x414  0  0  0  1  1
x124  x224  x324  x424  0  0  0  0  0
x134  x234  x334  x434  0  0  1  0  1
x144  x244  x344  x444  0  0  0  0  0

17
Dari persamaan (4.2)
x111  x121  x131  x141  0  0  0  0  0

x211  x221  x231  x241  0  0  1  0  1
x311  x321  x331  x341  0  0  0  0  0
x411  x421  x431  x441  0  0  0  0  0
x112  x122  x132  x142  0  1  0  0  1
x212  x222  x232  x242  0  0  0  0  0
x312  x322  x332  x342  0  0  0  0  0
x412  x422  x432  x442  0  0  0  0  0
x113  x123  x133  x143  0  0  0  0  0
x213  x223  x233  x243  1  0  0  0  1
x313  x323  x333  x343  0  0  0  1  1
x413  x423  x433  x443  0  1  0  0  1
x114  x124  x134  x144  0  0  0  0  0
x214  x224  x234  x244  0  0  0  0  0
x314  x324  x334  x344  0  0  1  0  1
x414  x424  x434  x444  1  0  0  0  1
Dari persamaan (4.3)
x111  x211  x121  x221  0  0  0  0  0

x112  x212  x122  x222  0  0  1  0  1
x113  x213  x123  x223  0  1  0  0  1
x114  x214  x124  x224  0  0  0  0  0
Dari persamaan (4.4)
x311  x411  x321  x421  0  0  0  0  0

x312  x412  x322  x422  0  0  0  0  0
x313  x413  x323  x423  0  0  0  1  1
x314  x414  x324  x424  0  1  0  0  1
Dari persamaan (4.5)
x131  x231  x141  x241  0  1  0  0  1

x132  x232  x142  x242  0  0  0  0  0
x133  x233  x143  x243  0  0  0  0  0
x134  x234  x144  x244  0  0  0  0  0

18
Dari persamaan (4.6)
x331  x431  x341  x441  0  0  0  0  0

x332  x432  x342  x442  0  0  0  0  0
x333  x433  x343  x443  0  0  1  0  1
x334  x434  x344  x444  1  0  0  0  1
Dari persamaan (4.7) diperoleh:
x111  x112  x113  x114  0  0  0  0  0

x211  x212  x213  x214  0  0  1  0  1
x311  x312  x313  x314  0  0  0  0  0
x411  x412  x413  x414  0  0  0  1  1
x121  x122  x123  x124  0  1  0  0  1
x221  x222  x223  x224  0  0  0  0  0
x321  x322  x323  x324  0  0  0  0  0
x421  x422  x423  x424  0  0  1  0  1
x131  x132  x133  x134  0  0  0  0  0
x231  x232  x233  x234  1  0  0  0  1
x331  x332  x333  x334  0  0  0  1  1
x431  x432  x433  x434  0  0  0  0  0
x141  x142  x143  x144  0  0  0  0  0
x241  x242  x243  x244  0  0  0  0  0
x341  x342  x343  x344  0  0  1  0  1
x441  x442  x443  x444  0  0  0  0  0
Dari konfigurasi puzzle yang diberikan sudah dapat diketahui given yang
diberikan yaitu:
x213  1; x414  1; x122  1; x423  1; x231  1; x334  1; x343  1
Kendala di atas memiliki 64 persamaan dan 64 variabel, dan persamaan
yang sudah memenuhi kondisi yaitu sebanyak 28 persamaan. Jadi membutuhkan
banyak iterasi pada persamaan di atas untuk memperoleh solusi dari puzzle yang
diberikan. Oleh karena itu, berdasarkan konsep yang sama, digunakan langkahlangkah yang dapat merealisasikan formulasi tersebut.
Langkah pertama
Menentukan kemungkinan nilai k pada setiap elemen, dengan
menambahkan nilai k pada elemen yang kosong, dan menambahkan angka 0
untuk selain nilai k. Nilai k pada soal merupakan bilangan given (G)

19
Untuk k bernilai 1
2
3
1
4
4 3

3

1
0
1
0

0
1
1
0

1
1
0
1

1
1
0
1

2
0
2
0

2
2
2
0

2
0
0
2

2
2
0
2

3
3
3
0

0
3
3
3

3
0
0
3

3
3
3
3

4
0
4
4

0
4
4
0

4
0
4
4

4
4
0
4

given : x231  1
Untuk k bernilai 2
2
3
1
4
4 3

3

given : x122  1
Untuk k bernilai 3
2
3
1
4
4 3

3

given : x213  1; x423  1; x343  1
Untuk k bernilai 4
2
3
1
4
4 3

3

given : x414  1; x334  1
Langkah kedua
Menentukan kemungkinan pada nilai k berdasarkan konsep hanya boleh ada
1 bilangan angka pada baris, kolom, dan mini grid dengan langkah: jadikan
bilangan given sebagai poros; cek baris, kolom, dan mini grid, jika ada yang
bernilai k maka ganti dengan angka 0
Kemungkinan k bernilai 1, dengan given x23 sebagai poros
1
0
1
0

0
1
1
0

1
1
0
1

1
1
0
1

1
0
1
0

0
0
1
0

0
1
0
0

0
0
0
1

20
Kemungkinan k bernilai 2, dengan given x12 sebagai poros
2
0
2
0

2
2
2
0

2
0
0
2

2
2
0
2

0
0
2
0

2
0
0
0

0
0
0
2

0
2
0
2

Kemungkinan k bernilai 3, dengan given: x21; x42 ; x34 sebagai poros
3
3
3
0

0
3
3
3

3
0
0
3

3
3
3
3

0
3
0
0

0
0
0
3

3
0
0
0

0
0
3
0

Kemungkinan k bernilai 4, dengan given: x41; x33 sebagai poros
4
0
4
4

0
4
4
0

4
0
4
4

4
4
0
4

0
0
0
4

0
4
0
0

0
0
4
0

4
4
0
0

Langkah ketiga
Setelah mencari kemungkinan nilai k, barulah memasukan kendala pada
semua kemungkinan nilai k.
Kendala:
4

x
i 1

ijk

4

x
j 1
2

ijk

 1, j  1: 4, k  1: 4,

 1, i  1: 4, k  1: 4,

2

 x
j 1 i 1
2

ijk

4

 x
j 1 i 3
4

ijk

2

 x
j 3 i 1
4

ijk

4

 x
j 3 i 3

ijk

 1, k  1: 4,
 1, k  1: 4,
 1, k  1: 4,
 1, k  1: 4.

Kemungkinan k bernilai 1
4

x
i 1

ij1

 1, j  1: 4, k  1

21

x111  x211  x311  x411  1  0  1  0  2
x121  x221  x321  x421  0  0  1  0  1
x131  x231  x331  x431  0  1  0  0  1
x141  x241  x341  x441  0  0  0  1  1
4

x
j 1

ij1

 1, i  1: 4, k  1

x111  x121  x131  x141  1  0  0  0  1
x211  x221  x231  x241  0  0  1  0  1
x311  x321  x331  x341  1  1  0  0  2
x411  x421  x431  x441  0  0  0  1  1
2

2

 x
j 1 i 1

ij1

 1, k  1

x111  x211  x121  x221  1  0  0  0  1
2

4

 x
j 1 i 3

ij1

 1, k  1

x311  x411  x321  x421  1  0  1  0  0
4

2

 x
j 3 i 1

ij1

 1, k  1

x131  x231  x141  x241  0  1  0  0  1
4

4

 x
j 3 i 3

ij1

 1, k  1

x331  x431  x341  x441  0  0  0  1  0
Pada iterasi di atas dengan k = 1 diperoleh nilai xijk yang memenuhi kondisi yaitu:

x111  1; x231  1( given); x441  1; x321  1
dan selanjutnya iterasi dilanjutkan hingga k = 4, sehingga diperoleh nilai xijk ,
yaitu:
x312  1; x122  1( given); x432  1; x242  1
x213  1( given); x423  1( given); x133  1; x343  1( given)
x414  1( given); x214  1; x334  1( given); x144  1

22
Semua solusi dari iterasi persamaan di atas dimasukan ke dalam Sudoku,
ditampilkan pada gambar di bawah ini.
1
3

2
4

3
1

4
2

2 1 4 3
4 3 2 1
Gambar 7 Solusi Sudoku 4 × 4
Mencari Solusi Puzzle Sudoku Tradisional pada Matriks 9 × 9
Untuk menyelesaikan Sudoku yang berukuran 9 × 9 dengan aturan
tradisional, kita bisa menggunakan dengan kendala yang serupa, dengan nilai n=9,
dan m=3, sehingga memiliki kendala:
n

x
i 1

ijk

 1, j  1: n, k  1: n (hanya satu k di setiap kolom, dengan nilai n = 9)
9

x
i 1

ijk

9

x
i 2

ijk

9

x
i 9

n

x
j 1

ijk

ijk

9

j 1

ijk

9

x
j 2

ijk

9

x
j 9



 1, j  1: 9, k  1: 9,

 1, j  1: 9, k  1: 9.

 1, i  1: n, k  1: n (hanya satu k di setiap baris dengan nilai n=9)

x

mq

 1, j  1: 9, k  1: 9,

ijk

mp



j  mq  m 1 i  mp  m1

 1, i  1: 9, k  1: 9,
 1, i  1: 9, k  1: 9,

 1, i  1: 9, k  1: 9.

xijk  1, k  1: 9, p  1: 3, q  1: 3

23
3

3

 x
j 1 i 1
6

ijk

3

 x
j  4 i 1
9

ijk

3

 x
j  7 i 1
3

ijk

6

 x
j 1 i  4

6

ijk

6

 x
j 4 i 4
9

ijk

6

 x
j 7 i  4
3

ijk

9

 x
j 1 i  7
6

ijk

9

 x
j 4 i 7
9

ijk

9

 x
j 7 i 7

9

x
k 1

ijk

ijk

 1, k  1: 9,
 1, k  1: 9,
 1, k  1: 9,
 1, k  1: 9,

 1, k  1: 9,
 1, k  1: 9,
 1, k  1: 9,
 1, k  1: 9,
 1, k  1: 9.

 1, i  1: 9, j  1: 9

xijk  1 (i, j, k )  G

Bentuk matriks Sudoku ukuran 9 × 9 secara umum adalah:

Gambar 8 Bentuk umum Sudoku ukuran 9 × 9

24
Untuk memperoleh solusi dari Sudoku berukuran 9 × 9 menggunakan
software MATLAB 7.10.0, dengan membuat algoritma berbentuk script m-file
dengan nama sudoku.m (lampiran 1). Contoh soal Sudoku 9 × 9:
8
1
4

9
7
3

1
9
2
5

6

5
4
6
6
3

5
4
8
1

7
6
2
3
4

Gambar 9 Contoh soal Sudoku tradisional 9 × 9
Dan diubah ke dalam bentuk matriks, dengan nama matriks M:

0

0
0

0
M  0

0
0

0
6


0 8 0 9 0 5 0 0

0 1 0 7 0 4 0 0
0 4 0 3 0 6 0 0

1 0 0 0 6 0 0 7
9 0 0 0 3 0 0 0

2 0 0 5 0 0 6 0
5 0 0 4 0 0 2 0

0 0 8 0 0 0 3 0
0 0 1 0 0 0 4 0 

Dan file dari sudoku.m dieksekusi akan memberikan solusi seperti di bawah ini

2

5
9

4
sol _ M   8

3
1

7
6


6 8 4 9 1 5 7 3

3 1 6 7 2 4 8 9
7 4 5 3 8 6 1 2

1 5 2 8 6 3 9 7
9 6 7 1 3 2 5 4

2 7 9 5 4 1 6 8
5 9 3 4 7 8 2 6

4 2 8 6 5 9 3 1
8 3 1 2 9 7 4 5 

25
Maka diperoleh Sudoku setiap elemen pada kolom, baris dan sub-matriks
terisi oleh angka 1 sampai 9 tanpa ada pengulangan. Gambar di bawah ini
merupakan solusi dalam bentuk tabel.
2
5
9
4
8
3
1
7
6

6
3
7
1
9
2
5
4
8

8
1
4
5
6
7
9
2
3

4
6
5
2
7
9
3
8
1

9
7
3
8
1
5
4
6
2

1
2
8
6
3
4
7
5
9

5
4
6
3
2
1
8
9
7

7
8
1
9
5
6
2
3
4

3
9
2
7
4
8
6
1
5

Gambar 10 Solusi Sudoku tradisional ukuran 9 × 9
Pada script m-file sudoku.m dapat mengeksekusi soal Sudoku tradisional
yang memiliki banyak solusi (terhingga). Output yang diberikan dari m-file ini
adalah seluruh solusi. Di bawah ini akan diberikan contoh soal Sudoku yang
memiliki banyak solusi yang terhingga.

2

9

4

3
4

2

9

8
6

1

8
5
6

5

2
7

7
6
3
1

9

8
1

5

Gambar 11 Contoh soal puzzle Sudoku yang memiliki banyak solusi (terhingga)
Soal Sudoku di atas setelah dieksekusi memberikan output (solusi) sebanyak 16
matriks solusi (lampiran 4)
Mencari Solusi Puzzle Sudoku X (Sudoku Diagonal) pada Matriks 9 × 9
Pada bagian pembahasan ini, diperlukan kendala tambahan untuk mencari
solusi sudoku X, kendalanya yaitu:
9

x
r 1

rrk

 1, k  1: 9 (diagonal pertama tiap elemennya harus terisi angka 1-9)

x111  x221  x331  x441  x551  x661  x771  x881  x991  1

26

x112  x222  x332  x442  x552  x662  x772  x882  x992  1
x113  x223  x333  x443  x553  x663  x773  x883  x993  1
.
.
.
x119  x229  x339  x449  x559  x669  x779  x889  x999  1
9

x
r 1

r (10  r ) k

 1, k  1: 9 (diagonal kedua tiap elemennya harus terisi angka 1-9)

x191  x281  x371  x461  x551  x641  x731  x821  x911  1
x192  x282  x372  x462  x552  x642  x732  x822  x912  1
x193  x283  x373  x463  x553  x643  x733  x823  x913  1
.
.
.
x199  x289  x379  x469  x559  x649  x739  x829  x919  1

Dengan menambahkan kendala, jadi diperlukan perubahan pada script
Sudoku untuk mencari solusi sudoku X. Script m-file Sudoku yang baru diberi
nama sudokuX.m (Lampiran 2) untuk mencari solusi Sudoku diagonal. Contoh
8
9

2

6
8
4
9

4
1
6

9
3
2
1
8

6
8
5
9
1
2

2

7
3

9
1

6

7
6

2
6

4

1

1

5

9
6
2

Gambar 12 Contoh soal Sudoku X ukuran 9 × 9
permasalahan untuk Sudoku diagonal:

27
Bentuk matriks dengan nama matriks M:
0 8 0 0 6 0 2 1 0


0 9 0 2 8 0 0 0 7
0 0 0 0 5 3 9 0 0


6 0 0 0 9 0 0 0 1
M  0 4 9 0 1 6 7 0 0


8 1 3 0 2 0 6 5 9
4 6 2 0 0 0 0 0 0


9 0 1 0 0 2 0 0 6
0 0 8 6 4 0 1 0 2



Jika sudokuX.m dieksekusi akan memberikan solusi (lampiran 4), diperoleh solusi
Sudoku X dalam bentuk matriks:

5

6
9

3
sol _ M   2

8
1

7
4


3 7 4 1 2 8 9 6

1 4 9 3 8 2 7 5
2 8 5 7 6 1 3 4

4 1 7 6 5 9 2 8
6 5 8 9 1 7 4 3

7 9 2 4 3 6 5 1
5 3 6 2 9 4 8 7

8 2 1 5 4 3 6 9
9 6 3 8 7 5 1 2 

Maka solusi dalam bentuk tabel adalah:
5
6
9
3
2
8
1
7
4

3
1
2
4
6
7
5
8
9

7
4
8
1
5
9
3
2
6

4
9
5
7
8
2
6
1
3

1
3
7
6
9
4
2
5
8

2
8
6
5
1
3
9
4
7

8
2
1
9
7
6
4
3
5

9
7
3
2
4
5
8
6
1

6
5
4
8
3
1
7
9
2

Gambar 13 Solusi Sudoku X ukuran 9 × 9

28

Hubungan Antar Ukuran Sudoku, Banyaknya Unsur Awal, dan
Konfigurasi Sudoku Tradisional.
Tabel di bawah ini diberikan gambaran hubungan antar ukuran Sudoku,
unsur awal, dan konfigurasi pada Sudoku tradisional. Ukuran Sudoku yang
digunakan yaitu: 4 × 4 (n2 × n2, n = 2) dan 9 × 9 (n2 × n2, n = 3), dengan unsur
awal yang diberikan beragam :

*)

#Solusi yg diberikan

Ukuran
Sudoku

Unsur Awal

4×4

1

-

72

4×4

2

I

24

4×4

2

II

24

4×4

2

III

24

4×4

2

IV

18

4×4

2

V

36

4×4

2

VI

18

4×4

2

VII

18

4×4

3

I

12

4×4

3

II

6

4×4

3

III

6

4×4

3

IV

6

12

9×9

45

I

3448

2861

9×9

45

II

1356

1608

9×9

54

I

288

216

9×9

54

II

216

276

Konfigurasi*)

1

2

3

12

3

144

Lihat lampiran 12

Tabel 1 Hubungan antar ukuran, unsur, dan konfigurasi Sudoku tradisional
Pada ukuran Sudoku 4 × 4 dengan pemberian 1 given, 2 given dan 3 given
diketahui memiliki beragam solusi, kecuali pemberian 1 given memilik jumlah
solusi yang sama (berlaku pada semua konfigurasi Sudoku ukuran 4 × 4). Dengan
pemberian 2 given, pada tabel di atas diketahui ada yang memiliki solusi 24, 18,

29
36, 12 dengan konfigurasi yang berbeda-beda. Konfigurasi I, II, dan III memiliki
variasi solusi yang seragam yaitu sebanyak 24 solusi. Konfigurasi I menempatkan
given pada x1,1 dan x2,2 dengan x1,1  x2,2 ,konfigurasi II menempatkan given pada
x1,2 dan x1,3 dengan x1,2  x1,3 , dan konfigurasi III menempatkan given pada x2,2

dan x2,3 dengan x2,2  x2,3 . Sedangkan konfigurasi IV, V dan VI memberikan
banyak solusi yang beragam, yaitu: 18, 36, dan 12 (lampiran 12). Untuk
konfigurasi IV dan VI menghasilkan solusi yang seragam yaitu 18 solusi,
sedangkan untuk konfigurasi V memberikan solusi 36 dan 12 (lampiran 12). Jadi
dari beberapa bentuk konfigurasi dengan pemberian 2 given tidak memberikan
jumlah solusi yang sama, begitu juga dengan pemberian 3 given pada Sudoku
ukuran 4 × 4 memberikan beragam solusi. Hal ini juga terjadi pada Sudoku
ukuran 9 × 9 memberikan beragam solusi untuk given yang sama (lampiran 12).

SIMPULAN DAN SARAN
Simpulan
Dalam penulisan karya ilmiah ini telah diperlihatkan pencarian solusi
Sudoku dari soal puzzle yang ditentukan, dengan menggunakan metode branch
and bound yang diimplementasikan pada script m-file. Pencarian solusi Sudoku
diperluas tidak hanya untuk mencari solusi Sudoku tradisional, tetapi dengan
penambahan beberapa kendala dan perubahan pada script m-file sehingga bisa
menemukan solusi untuk Sudoku diagonal atau dikenal dengan nama Sudoku X.
Script m-file pada penulisan karya ilmiah ini telah berhasil memperoleh solusi
Sudoku dengan menggunakan metode branch and bound. Dari pembahasan di
atas dapat disimpulkan juga bahwa hubungan antar ukuran Sudoku, unsur awal,
dan konfigurasi Sudoku tradisional belum dapat menentukan pola keteraturan
banyaknya solusi untuk Sudoku ukuran 9 × 9, namun untuk konfigurasi tertentu
dapat ditentukan pola keteraturan menentukan banyaknya solusi yang muncul
(Sudoku dengan ukuran 4 × 4).
Saran
Pada karya ilmiah ini pencarian solusi Sudoku hanya sampai solusi untuk
Sudoku tradisional dan Sudoku X (diagonal). Saran untuk penulisan selanjutnya
yaitu mencari solusi beberapa varian Sudoku yang baru. Dalam tulisan ini untuk
mecari soal Sudoku masih menggunakan nilai given yang sudah tersedia, mungkin
untuk penulisan selanjutnya bisa membuat soal-soal Sudoku yang memiliki hanya
1 (satu) solusi.

30

DAFTAR PUSTAKA
Bartlett AC, Chartier TP, Langville AN, Rankin TD. 2008. An Integer
Programming Model for the Sudoku Problem. College of Charleston and
Davidson College, (US). [Jurnal]
Garfinkel RS & GL Nemhauser. 1972. Integer Programming, New York.(US):
John Willey & Sons.
Leon SJ. 2001. Aljabar Linear dan Aplikasinya. Alit Bondan: Penerjemah, Jakarta.
(ID): Erlangga. Terjemahan dari: Linear Algebra With Applications.
Setianto D. 2011. Penjadwalan Kereta Api Menggunakan Pemrograman Linear
Integer [Skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan
Alam, Institut Pertanian Bogor.
Taha HA. 1996. Pengantar Riset Operasi. Drs. Daniel Wirajaya: Penerjemah,
Jakarta. (ID): Binarupa Aksara. Terjemahan dari: Operations Research.
Winston WL. 2004. Operations Research; Applications and Algorithms 4th ed.
Duxbury, New York (US).

31
Lampiran 1 Script m-file sudoku.m untuk mencari solusi Sudoku tradisional.
%created by: Michael Kleder, December 2006
%Script M-File MATLAB 7.10.0
function A=sudoku(M)
if ndims(M)~=2
error('Matriks harus 2 dimensi.')
end
if any((size(M)-[9 9])~=0)
error('Matriks yang dibuat harus memiliki 9 kolom dan 9
baris.')
end
if any(any(M~=floor(M))) || any(abs(M(:)-4.5)>4.5)
error(soal dan solusi merupakan bilangan bulat 1 sampai 9
.')
end

A=0*M;
[M,imp,A]=recurse(M,A);
if imp
error('Tidak ada solusi.')
end
A=A(:,:,2:end);
return
function [M,imp,A]=recurse(M,A)
[M,imp]=deduce(M);
if imp
return
end
z=find(~M(:));
if isempty(z)
A(:,:,end+1)=M;
return
end
impall=zeros(1,9);
for v=1:9
Q=M;
Q(z(1))=v;
[Q,impall(v),A]=recurse(Q,A);
end
imp=all(impall);
M=Q;
return
function [M,imp]=deduce(M)
imp=0;
Mprev = 10*M;
while any(M(:)-Mprev(:))
Mprev=M;
N=ones(9,9,9);
[i,j]=find(M);
for n=1:length(i)
N(i(n),j(n),:)=0;
N(i(n),j(n),M(i(n),j(n)))=1;
end

32
if any(any(sum(N,3)