• Tidak ada hasil yang ditemukan

Implementasi Algoritma Backtracking Pada Game Puzzle Kakuro

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Backtracking Pada Game Puzzle Kakuro"

Copied!
79
0
0

Teks penuh

(1)

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana

HERDI PRAYOGA

10109422

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

(2)

v

ABSTRACT ... ii

KATA PENGHANTAR ... iii

DAFTAR ISI ... v

DAFTAR GAMBAR ... ix

DAFTAR TABEL ... xii

DAFTAR SIMBOL ... xiii

DAFTAR LAMPIRAN ... xix

BAB 1 PENDAHULUAN ... 1

1.1 Latar Belakang Masalah ... 1

1.2 Rumusan Masalah ... 2

1.3 Maksud Dan Tujuan ... 2

1.4 Batasan Masalah ... 3

1.5 Metode Penelitian ... 3

1.5.1 Metode Pengumpulan Data ... 4

1.5.2 Metode Pembangunan Perangkat Lunak ... 4

1.6 Sistematika Penulisan ... 6

BAB 2 LANDASAN TEORI ... 9

2.1 Puzzle Kakuro ... 9

2.1.1 Definisi Puzzle Kakuro ... 9

(3)

vi

2.2.2 Sejarah Algoritma ... 13

2.3 Algoritma backtracking ... 13

2.3.1 Prinsip Algoritma Backtracking ... 14

2.3.2 Kegunaan Backtracking ... 16

2.4 Kecerdasan Buatan... 17

2.5 Unified Modeling Language (UML) ... 19

2.5.1 Diagram Unified Modeling Language (UML) ... 20

2.6 Java.... . ... 24

2.7 Greenfoot ... 26

BAB 3 ANALISIS DAN PERANCANGAN SISTEM ... 27

3.1 Analisis Masalah ... 27

3.2 Analisis Game ... 28

3.3 Analisis Masukan ... 31

3.4 Analisis Algoritma ... 32

3.4.1 Analisis Algoritma Backtracking Pembangkit Nilai Soal ... 35

3.4.2 Analisis Algoritma Backtracking Penyelesaian Jawaban ... 39

3.4.1.1 Penyelesaian Jawaban Pada Kotak Kosong ... 39

3.4.1.2 Penyelesaian Jawaban Pada Kotak Terisi Nilai ... 44

3.5 Analisis Kebutuhan Perangkat Lunak ... 46

3.5.1 Analisis Kebutuhan Perangkat Keras ... 47

(4)

vii

3.5.3.2 Use Case Scenario ... 48

3.5.3.3 Activity Diagram ... 49

3.5.3.4 Squence Diagram ... 51

3.5.3.5 Class Diagram ... 53

3.5.3.6 Perancangan Antarmuka ... 53

3.5.3.7 Jaringan Semantik ... 55

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM ... 57

4.1 Implementasi ... 57

4.1.1 Implementasi Perangkat Keras ... 57

4.1.2 Implementasi Perangkat Lunak ... 57

4.1.3 Implementasi Antarmuka ... 58

4.2 Pengujian Sistem ... 59

4.2.1 Pengujian White Box ... 60

4.2.1.1 Pengujian Algoritma Backtracking Pada Game Puzzle Kakuro ... 60

4.2.2 Pengujian Black Box ... 64

4.2.2.1 Rencana Pengujian ... 64

4.2.2.2 Kasus Dan Hasil Pengujian (Black Box) ... 64

4.3 Kesimpulan ... 65

BAB 5 KESIMPULAN DAN SARAN ... 67

5.1 Kesimpulan ... 67

(5)
(6)

69

[1] D. N. Putra, O. O. Sardjito and C. Lawrence, "Penerapan Dan Implementasi

Algoritma," 2009.

[2] D. U. Soraya, "Penerapan Algoritma Backtracking (Runut Balik) Dalam

Permainan teka-Teki Silang (TTS)," Teknik Informatika, 2009.

[3] I. Sommerville, SOftware Enginerring Ninth Edition, 2011.

[4] E. Talbot's, "Enter the Kakuro Puzzles," [Online]. Available:

http://www.articlesphere.com/Article/Enter-the-Kakuro-Puzzles/32877.

[Accessed 22 July 2014].

[5] D. Berthier, "Pattern-Based Constraint Satisfaction And Logic Puzzles,"

Teknik Informatika, 2012.

[6] "Kakuro," [Online]. Available: http://en.wikipedia.org/wiki/Kakuro.

[Accessed 22 July 2014].

[7] R. Munir, "Algoritma Pemograman Dalam Bahasa Pascal dan C," Teknik

Informatika, 2005.

[8] T. J. Purwadi and E. Kurniawan, "Penerapan Algoritma Backtracking Pada

Permainan Math Maze," Teknik Informatika, 2010.

[9] Suyanto, Artificial Intelligence (Searching, Reasoning, Planning, and

Learning), Informatika, 2010.

[10] P. W. Pudjo and H. , Menggunakna Unified Modeling Language (UML),

Informatika, 2011.

[11] Suarga, Dasar Pemrograman Komputer Dalam Bahasa Java, Andi, 2009.

(7)

Nama lengkap : Herdi Prayoga

Tempat tanggal lahir : Cirebon, 19 Juli 1991

Agama : Islam

Alamat : Jl. Kesunean Tengah, No.41, RT.05/RW.08,

Kel. Kesepuhan, Kec. Lemahwungkuk, Cirebon.

No telpon : 085224060466

Email : [email protected]

2. Riwayat Pendidikan

1. Tahun 1997 – 2003 : SD Negeri 1 Tirtawinaya, Cirebon.

2. Tahun 2003 – 2006 : SMP Negeri 6, Cirebon.

3. Tahun 2006 – 2009 : SMK Muhammadiyah, Cirebon.

4. Tahun 2009 – 2014 : Universitas Komputer Indonesia

Program Studi S1 Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer

(8)

1 1.1 Latar Belakang Masalah

Kakuro adalah permainan puzzle yang bersifat logika dan biasa disebut

sebagai transliterasi matematis dari puzzle silang. Permainan puzzle kakuro

merupakan inovasi dari permainan puzzle dengan menerapkan unsur matematika

dan logika. Permainan ini adalah permainan penjumlahan angka dengan aturan

mainnya yaitu dengan mengisi setiap kotak yang tersedia (kotak jawaban) dengan

angka bulat dari 1 hingga 9 dengan beberapa syarat dalam pengisiannya. Soal-soal

dalam permainan puzzle kakuro bersifat unik, karena soal-soal ini akan saling

terkait baik dengan soal lainnya maupun jawaban dalam menyelesaikan

permainan puzzle kakuro [5]. Untuk menyelesaikan permainan puzzle kakuro ini,

jumlah pada nilai jawaban harus bernilai sama dengan nilai soal dan tidak boleh

terdapat dua angka yang sama pada satu lajur (kolom maupun baris).

Oleh karena itu dibutuhkan teknik untuk membangkitkan soal yang

bersifat unik dengan sistem random yang akan menghasilkan soal yang akan

saling terkait dari soal satu dengan soal lainnya dan mencari solusi dalam

menyelesaikan jawaban pada permainan puzzle kakuro dengan beberapa syarat

didalamnya. Algoritma backtracking dapat menjadi pilihan dalam menyelesaikan

permasalahan pada puzzle kakuro karena pada dasarnya algoritma ini berfungsi

untuk mencari segala kemungkinan solusi dengan menerapkan ruang keadaan

dalam bentuk pohon solusi hingga menghasilkan solusi yang layak. Secara umum

algoritma backtracking dapat berfungsi dengan baik untuk memecahkan

masalah-masalah yang berkembang secara dinamis (dynamic problem solving) sehingga

menjadi dasar algoritma untuk kecerdasan buatan (artificial intelligence) [1].

Pencarian solusi pada algoritma backtracking dilakukan dengan menelusuri

simpul-simpul di dalam pohon dengan teknik Depth-First Search (DFS).

Algoritma backtracking adalah algoritma yang berbasiskan Depth-First

(9)

backtracking berprinsip pada metode rekursif. Untuk menyelesaikan keseluruhan

masalah, dibutuhkan sebuah solusi untuk permasalahan pertama kemudian

permasalahan-permasalahan lainnya akan dicoba untuk diselesaikan secara

rekursif berdasarkan solusi pertama. Apabila pada kemungkinan solusi yang dicari

tidak ditemukan, maka dilakukan backtrack untuk menguji kemungkinan solusi

selanjutnya. Proses backtrack akan selesai ketika tidak ada lagi solusi yang

mungkin untuk diselesaikan pada permasalahan awal. Pada algoritma baktracking

tidak perlu mencari kemungkinan-kemungkinan solusi yang ada sehingga

kemungkinan-kemungkinan solusi yang ada akan dipangkas (pruning) [2].

Oleh karena itu, algoritma backtracking akan diterapkan pada permainan puzzle

kakuro dengan permasalahannya dan mengambil pokok bahasan skripsi

bagaimana menerapkan algoritma tersebut pada perangkat lunak game dengan judul “IMPLEMENTASI ALGORITMA BACKTRACKING PADA GAME PUZZLE KAKURO”.

1.2 Rumusan Masalah

Berdasarkan uraian pada latar belakang masalah diatas, didapatkan

perumusan masalahnya adalah bagaimana mengimplementasikan algoritma

backtracking pada game puzzle kakuro.

1.3 Maksud Dan Tujuan

Berdasarkan permasalahan yang diteliti, maka maksud dari penulisan tugas

akhir ini adalah untuk mengimplementasikan algoritma backtracking pada game

puzzle kakuro. Adapun tujuannya adalah sebagai berikut :

1. Membangkitkan nilai soal pada permainan dengan sistem random

menggunakan algoritma backtracking.

2. Mendapatkan solusi penyelesaian dalam menemukan jawaban pada

(10)

1.4 Batasan Masalah

Batasan masalah dalam pembangunan game ini adalah sebagai berikut :

1. Game berbasis desktop.

2. Game dibangun dengan desain 2D.

3. Game bersifat offline.

4. Game bergenre puzzle game.

5. Aplikasi yang dibangun dibatasi hanya untuk puzzle kakuro berukuran grid

(9x9).

6. Algoritma yang digunakan untuk membangkitkan nilai soal dengan sistem

random serta pencarian solusi jawaban pada permainana puzzle kakuro adalah

menggunakan algoritma backtracking.

7. Data masukan untuk mengisi jawaban pada game puzzle kakuro diisi dengan

angka bilangan bulat dari 1 hingga 9.

8. Kotak jawaban dibatasi hanya menampilkan 2 hingga 3 kotak jawaban dalam

satu lajur (baris maupun kolom) pada game puzzle kakuro.

9. Metode analisis perancangan yang digunakan adalah analisis perancangan

dan pengembangan perangkat lunak berorientasi objek, dengan menggunakan

pemodelan Unified Modeling Language (UML).

10. Aplikasi yang digunakan untuk membangun game ini adalah :

a. Aplikasi yang digunakan untuk membangun game adalah greenfoot.

b. Bahasa pemograman yang digunakan adalah java.

1.5 Metode Penelitian

Metodologi penelitian yang digunakan adalah metodeologi analisis

kualitatif. Analisis kualitatif adalah metode analisis yang meliputi observasi,

dokumentasi, serta mendapatkan pemahaman yang mendalam tentang

(11)

1.5.1 Metode Pengumpulan Data

Metode pengumpulan data yang digunakan dalam penelitian ini adalah

studi literatur, dengan cara mengumpulkan literatur, jurnal, paper, dan pencarian

data yang bersumber dari internet berkaitan dengan aplikasi yang akan dibangun.

1.5.2 Metode Pembangunan Perangkat Lunak

Metode pembangunan perangkat lunak yang digunakan p a d a k a s u s i n i

adalah model waterfall. Model ini mengusulkan sebuah pendekatan kepada

perkembangan aplikasi yang sistematik dan sekuensial yang mulai pada tingkat

dan kemajuan sistem pada seluruh requirements definition, system and software

design, implementation and unit testing, integration and system testing, operation

maintenance. Dimodelkan setelah siklus rekayasa konvensional, model

sekuensial linier melingkupi aktivitas-aktivitas sebagai berikut :

1. Requirements Definition.

Tahap requirements definition merupakan tahap pengumpulan kebutuhan

data secara lengkap, kemudian dianalisis dan didefinisikan kebutuhan data

tersebut sehingga terpenuhi oleh aplikasi yang akan dibangun. Fase ini harus

terpenuhi secara lengkap untuk menghasilkan desain yang sesuai.

2. System and Software Design.

Tahapan system and software design merupakan tahap dimana dilakukan

penuangan pikiran dan perancangan sistem terhadap solusi dari permasalahan

yang ada dengan menggunakan perangkat pemodelan sistem seperti diagram

alir data (data flow diagram), diagram hubungan entitas (entity relationship

diagram) serta struktur dan bahasan data.

3. Implementation and Unit Testing.

Tahap implementation and unit testing merupakan tahap dimana penulisan

kode program atau coding yang merupakan penerjemahan design dalam

bahasa yang dapat dikenali oleh komputer. Dilakukan oleh programmer yang

akan menterjemahkan transaksi yang diminta oleh pemain. Tahapan ini yang

merupakan tahapan secara nyata dalam mengerjakan suatu sistem. Dalam

(12)

pengkodean selesai maka akan dilakukan testing terhadap sistem yang telah

dibuat. Tujuan testing adalah menemukan kesalahan-kesalahan terhadap

sistem tersebut dan kemudian diperbaiki.

4. Integration and System Testing.

Tahap integration and system testing merupakan tahap dimana sistem yang

baru diuji kemampuan dan keefektifannya sehingga didapatkan kekurangan

dan kelemahan sistem yang kemudian dilakukan pengkajian ulang dan

perbaikan terhadap aplikasi menjadi lebih baik dan sempurna.

5. Operationand Maintenance.

Tahap operationand maintenance merupakan tahap dimana penerapan dan

pemeliharaan program secara normal tidak selalu diperlukan, tahap ini

merupakan bagian siklus panjang. Sistem telah terpasang dan sedang dalam

penggunaan. Pemeliharaan mencakup perbaikan kesalahan yang tidak

ditemukan dalam tahap-tahap sebelumnya. Meningkatkan implementasi

unit-unit sistem dapat mempertinggi pelayanan sistem yang disebabkan oleh

kebutuhan baru.

(13)

1.6 Sistematika Penulisan

Sistematika penulisan laporan akhir penelitian ini disusun untuk

memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika

penulisan tugas akhir ini adalah sebagai berikut :

BAB I PENDAHULUAN

Bab ini berisi penjelasan latar belakang permasalahan pada puzzle kakuro dengan

menerapkan algoritma backtracking untuk membangkitkan soal permainan

dengan sistem random serta mendapatkan solusi penyelesaian jawaban pada permainan puzzle kakuro. Perumusan masalah yang didapat, dapat menjadi acuan

untuk menghasilkan maksud dan tujuan pada game puzzle kakuro. Dikuti dengan

metodologi penelitian serta sistematika penulisan untuk menggambarkan struktur

penulisan yang lebih baik.

BAB II LANDASAN TEORI

Membahas berbagai konsep dasar dan teori-teori yang berkaitan dengan topik

penelitian yang dilakukan dan hal-hal yang berguna dalam proses analisis

permasalahan.

BAB III ANALISIS DAN PERANCANGAN SISTEM

Menganalisis masalah dari model penelitian, menggambarkan identifikasi

masalah, menerapkan kedalam contoh kasus, hardware, software, diagram

pembuatan sistem dan UML (Unified Modeling Language).

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Merupakan tahapan yang dilakukan dalam penelitian secara garis besar dimulai

dari tahap persiapan sampai pada tahap penarikan kesimpulan, metode, dan kaidah

yang diterapkan dalam penelitian. Pada bab ini juga, menerapkan kegiatan

implementasi dan pengujian pada game puzzle kakuro menggunakan algoritma

(14)

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan yang sudah diperoleh dari hasil yang di dapat pada

implementasi algoritma backtracking pada game puzzle kakuro meliputi

kecerdasan buatan atau artificial intellegence (AI), desain, dan tools-tools yang

dikembangkan serta saran yang ditambahkan dalam implementasi algoritma

(15)
(16)

9 2.1 Puzzle Kakuro

Kakuro adalah sebuah permainan puzzle yang bermula bernama cross

sums. Puzzle, pertama dikeluarkan pada tahun 1966 oleh Dell Megazine di

Amerika Serikat. Sepuluh tahun kemudian, Dell Megazine memperkenalkan

puzzle sudoku pada dunia. Maki Kaji presiden dari Nicoli Puzzle, pada tahun 1980

membawa masuk cross games ke Jepang. Maki Kaji memberi nama puzzle

buatannya adalah kasan kurosu (penjumlahan silang). Pada tahun 1986, Nicoli

memberi nama dagang game dengan nama kakuro (kependekan dari kasan

kurosu). September 2005 adalah titik penentunya, dimana game puzzle kakuro

diperkenalkan ke barat oleh The Guardian dan The Daily Mail yang menerbitkan

puzzle kakuro setiap harinya di Inggris dan setelah itu game puzzle kakuro ini

menyebar keseluruh dunia [4].

2.1.1 Definisi Puzzle Kakuro

Puzzle kakuro adalah permainan puzzle dengan ukuran grid N x M dengan

mempunyai dua jenis kotak yaitu kotak berwarna hitam dan kotak berwarna putih.

Pada kedua jenis kotak tersebut mempunyai dua posisi yaitu horizontal dan

vertikal. Kotak berwarna hitam digunakan sebagai tanda pembatas dan soal untuk

menyelesaikan permainan puzzle kakuro, sedangkan kotak berwarna putih

digunakan sebagai kotak pengisian jawaban. Pada baris paling atas dan kolom

paling kiri pada grid puzzle kakuro, hanya berisi kotak berwarna hitam (dapat

berfungsi sebagai pembatas atau soal). Aturan dalam pengisisan puzzle kakuro ini

adalah dengan mengisi angka bilangan bulat dari 1 hingga 9 dengan tidak boleh

terdapat angka yang sama pada satu lajur (baris maupun kolom). Nilai angka yang

terdapat pada kotak pengisian jawaban yang sudah dijumlahkan harus bernilai

sama dengan nilai angka pada kotak soal disetiap lajurnya [5]. Gambar 2.1 adalah

(17)

Gambar 2.1 Contoh soal dan solusi penyelesaiannya

2.1.2 Aturan Permainan Puzzle Kakuro

Puzzle kakuro adalah adalah sebuah permainan puzzle yang bersifat puzzle

logika. Puzzle ini biasa disebut transliterasi matematis dari puzzle silang. Aturan

dalam permainan puzzle kakuro ini adalah dengan mengisi setiap setiap kotak

yang tersedia dengan angka bulat dari 1 hingga 9 dengan beberapa syarat dalam

pengisiannya. Adapun syarat-syarat dalam pengisian kotak jawaban adalah

sebagai berikut [5]:

1. Setiap kotak jawaban hanya boleh diisikan dengan bilangan bulat dari angka

1 hingga 9.

2. Setiap kotak jawaban yang berurutan dalam satu lajur (lajur yang dimaksud

adalah deretan kotak yang berurtutan dalam satu baris atau kolom) tidak

boleh memiliki angka yang sama.

3. Isi dari setiap lajur harus memiliki jumlah yang sama pada ujung kiri (baris)

(18)

Gambar 2.2 Cara pengisisan dengan jumlah jawaban sesuai dengan soal

Pengisian kotak jawaban seperti pada gambar gambar 2.3merupakan contoh yang

salah karena terdapat dua angka atau lebih pada satu lajur.

Gambar 2.3 Nilai sama pada lajur

Sedangkan pada gambar 2.4 merupakan pengisian kotak jawaban yang benar

karena terdapat pada lajur yang berbeda walaupun dalam kotak yang sama.

(19)

2.2 Algoritma

Algoritma adalah salah satu cabang ilmu komputer yang membahas

prosedur penyelesaian suatu permasalahan. Algoritma adalah urutan

langkah-langkah dalam menentukan suatu masalah. Algoritma juga dapat didefinisikan

dengan deretan langkah komputasi yang mentransformasikan masukan (input)

menjadi keluaran (output). Dapat disimpulkan algoritma adalah serangkaian

urutan langkah-langkah atau prosedur untuk menyelesaikan suatu masalah dengan

memproses nilai keluaran.

Algoritma dapat ditulis dalam bentuk pseudocode ataupun flowchart. Pseudocode berasal dari kata pseudo yang artinya mirip atau menyerupai dan code

berarti kode, sehingga pseudocode adalah kode yang menyerupai kode program

sebenarnya. Sedangkan flowchart merupakan bentuk gambar atau diagram yang

mempunyai aliran satu atau dua arah secara skuensial.

2.2.1 Definisi Algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian yang disusun

secara matematis dan logis. Langkah-langkah dalam algoritma harus logis dan

harus dapat ditentukan bernilai salah atau benar. Dalam beberapa konteks,

algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu.

Pertimbangan dalam pemilihan algoritma adalah [7]:

1. Algoritma haruslah benar, artinya algoritma akan memberikan keluaran yang

dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus

apapun algoritma, apabila menghasilkan keluaran yang bernilai salah maka

algoritma tersebut bukanlah algoritma yang baik.

2. Seberapa baik algoritma yang diterapkan, artinya algoritma yang baik harus

mampu memberikan hasil yang sedekat mungkin dengan nilai sebenarnya.

Dalam hal ini, hal terpenting pada algoritma untuk menyelesaikan masalah

yang memerlukan aproksimasi hasil (hasil yang berupa pendekatan).

3. Efisiensi algoritma, artinya efisiensi algoritma dapat ditinjau dari dua hal

(20)

2.2.2 Sejarah Algortima

Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari

Uzbekistan Al Khawārizmi. Dahulu, orang hanya mengenal kata algorism yang

berarti proses menghitung dengan angka arab. Para ahli bahasa berusaha

menemukan asal kata algorism, dan akhirnya para ahli sejarah matematika

berhasil menemukan asal kata yang berasal dari penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al Khawārizmi. Al Khawārizmi dibaca orang barat menjadi algorism. Al Khawārizmi menulis kitab Al Jabar

Wal-Muqabala yang artinya “Buku Pemograman Dan Pengurangan” (The Book of

Restoration And Reducation). Perubahan kata dari algorism menjadi kata algoritm

muncul dikarenakan kata algorism sering dikelirukan dengan arithmetic, sehingga

akhiran -sm berubah menjadi –thm. Seiring perkembangan, lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi)

secara umum sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia,

kata algorithm diserap menjadi algoritma.

2.3 Algoritma Backtracking

Algoritma backtracking pertama kali diperkenalkan oleh D.H. Lehmer

pada tahun 1950. Dalam perkembangannya, beberapa ahli seperti RJ Walker,

Golomb, dan Baumert menyajikan uraian umum tentang algoritma backtracking

dan penerapannya dalam berbagai persoalan dan aplikasi. Algoritma backtracking

merupakan salah satu metode pemecahan masalah yang termasuk dalam strategi

yang berbasis pencarian pada ruang status [8].

Algoritma backtracking bekerja secara rekursif dan melakukan pencarian

solusi persoalan secara sistematis pada semua kemungkinan solusi yang ada.

Algoritma ini berbasis Depth-First Search (DFS) dalam pencarian solusi dengan

melakukan penelusuran suatu struktur berbentuk pohon berakar secara preorder.

Proses ini dicirikan dengan ekspansi simpul terdalam lebih dahulu sampai tidak

ditemukan lagi suksesor dari suatu simpul.

Mekanisme penyelesaian dengan menggunakan algoritma backtracking

(21)

dibutuhkan sebuah solusi untuk permasalahan pertama kemudian

permasalahan-permasalahan lainnya akan dicoba untuk diselesaikan secara rekursif berdasarkan

solusi pertama. Apabila pada kemungkinan solusi yang dicari tidak ditemukan,

maka dilakukan backtrack untuk menguji kemungkinan solusi selanjutnya. Proses

backtrack akan selesai ketika tidak ada lagi solusi yang mungkin untuk

diselesaikan pada permasalahan awal. Dalam penerapannya, algoritma

backtracking mempunyai properti umum didalmnya yang harus dibutuhkan :

1. Solusi Persoalan.

Solusi dinyatakan sebagai vektor dengan n-tuple :

X = ( ),

Mungkin saja = … =

Contoh = {0,1}, = 0 atau 1

2. Fungsi Pembangkit nilai .

Dinyatakan sebagai predikat : T(k)

T(k)membangkitkan nilai untuk yang merupakan komponen vektor solusi.

3. Fungsi Pembatas.

Dinyatakan sebagai : B ( ) mengarah ke solusi.

Jika true, maka pembangkit nilai untuk dilanjutan, dan jika false maka

( ) akan dibuang dan tidak dapat dipertimbangkan kembali dalam

pencarian solusi. Penjelasan lain dapat dilihat melalui gambar berikut :

Gambar 2.1 Tree pencarian solusi

Solusi persoalan adalah kemungkinan solusi yang didapatkan dari permasalahan

yang diberikan, sedangkan fungsi pembatas merupakan fungsi yang akan

menentukan langkah selanjutnya berupa penerusan pencarian solusi ataupun

(22)

2.3.1 Prinsip Algoritma Backtracking

Algoritma backtracking pada pencarian kemungkinan solusi dibuat dalam

bentuk pohon ruang status dan algoritma akan menelusuri pohon tersebut secara

Depth-First Seacrh (DFS) sampai ditemukan solusi yang layak. Langkah-langkah

pencarian solusi pada algoritma backtracking adalah sebagai berikut [8]:

1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan yang

dipakai adalah mengikuti metode pencarian Depth-First Search (DFS).

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. Apabila 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.

Gambar 2.6 Contoh pohon ruang status algoritma backtracking

Salah satu fungsi yang menjadi ciri khas algoritma backtracking adalah

fungsi pemangkasan (pruning). Jika tahap-tahap pencarian solusi suatu masalah

(23)

dilakukan terhadap simpul-simpul yang tidak mengarah kesolusi. Jika suatu

simpul telah dipangkas, simpul-simpul yang menjadi anak dan turunan dari

simpul tersebut secara langsung tidak akan diproses, karena pemangkasan sebuah

simpul seperti membuang seluruh lintasan yang berada dibawah simpul tersebut.

A

Gambar 2.7 Proses pemangkasan pada ruang status (pruning)

Berdasarkan gambar 2.7, simpul yang dipangkas adalah simpul D dan F. Akibat

pemangkasan tersebut, simpul K yang merupakan anak simpul D serta simpul L

dan M yang merupakan anak simpul F tidak akan diproses [2].

2.3.2 Kegunaan Backtracking

Penggunaan terbesar backtrack adalah untuk membuat artificial

intellegence (AI) pada puzzle games. Dengan algoritma ini, program dapat

menghasilkan pohon sampai dengan kedalaman tertentu dari current status dan

memilih solusi yang akan membuat langkah-langkah pemain dalam melakukan

tindakan untuk menghasilkan pohon solusi baru dengan jumlah pilihan langka

terbanyak.

Beberapa kegunaan yang cukup terkenal dari algoritma backtracking pada

suatu masalah statik adalah pemecahan masalah N-Queen problem dan maze

solver [1]. N-Queen problem adalah bagaimana cara meletakan bidak queen catur

(24)

memangsa bidak lainnya dengan satu gerakan. Meskipun terdapat kemungkinan

lebih dari satu solusi, tetapi pencarian semua solusi biasanya tidak terlalu

diperlukan.

Gambar 2.8 Contoh N-Queen problem

Pada maze solver cara kerjanya adalah bagaimana mencari jalan keluar dari

suatu maze (labirin). Pada maze yang sederhana dimana field yang dibentuk dapat

dipresentasikan dalam bentuk biner dan pada setiap petak maksimal terdapat 4

kemungkinan yaitu atas, kanan, bawah, dan kiri. Untuk masalah ini biasanya

solusi pertama yang ditemukan bukanlah solusi yang paling optimal, sehingga

untuk mendapatkan hasil yang optimal dibutuhkan pencarian terhadap seluruh

kemungkinan solusi yang ada.

Gambar 2.9 Contoh maze solver

2.4 Kecerdasan Buatan

Kecerdasan buatan merupakan sub-bidang ilmu komputer (computer

science) yang khusus ditujukan untuk membuat perangkat lunak dan perangkat

keras yang sepenuhnya bisa menirukan beberapa fungsi otak manusia, atau

(25)

(intelligent). Kecerdasan buatan didasarkan pada teori suara (sound theoretical)

dan prinsip-prinsip aplikasi dari bidangnya. Prinsip-prinsip ini meliputi struktur

data yang digunakan dalam representasi pengetahuan algoritma yang diperlukan

untuk mengaplikasikan pengetahuan serta bahasa dan teknik pemograman yang

digunakan dalam mengimplementasikannya.

Beberapa para ahli, mendefinisikan kecerdasan buatan (artificial

intelligence) secara berbeda-beda tergantung pada sudut pandangnya

masing-masing. Para ahli ada yang mendefinisikan kecerdasan buatan (artificial

intelligence) fokus kepada logika berpikir manusia saja, ada juga yang

mendefinisikan kecerdasan buatan (artificial intelligence) secara lebih luas

terhadap tingkah laku manusia. Stuart Russel dan Peter Norvig mengelompokan

definisi kecerdasan buatan (artificial intelligence) yang diperoleh dari beberapa

textbook berbeda kedalam empat kategori, yaitu [9]:

1. Thinking humanly : The cognitive modeling approach

Pendekatan thinking humanly dilakukan dengan dua cara sebagai berikut :

a. Melalui intropeksi dimana proses ini adalah menangkap

pemikiran-pemikiran yang didapat pada saat berfikir.

b. Melalui eksperimen-eksperimen psikologi.

2. Acting humanly : The turing test approach

Pada tahun 1950, Alan Turing membuat sebuah eksperimen program

penginterogasian untuk menguji kemampuan komputer pada manusia melalui

teletype (komunikasi berbasis teks jarak jauh). Dalam hal ini, apabila

integrator tidak dapat membedakan yang diinterogasi adalah manusia atau

komputer maka program tersebut lolos dari turing test. Turing test sengaja

menghindari interaksi fisik antara integrator dan komputer, karena simulasi

fisik manusia tidak memerlukan intelejensia.

3. Thinking rationally : The laws of thought approach

Terdapat dau masalah pada pendekatan ini, yaitu :

a. Tidak mudahnya untuk membuat pengetahuan informal dan menyatakan

(26)

logika, khususnya ketika pengetahuan tersebut memiliki kepastian

kurang dari 100%.

b. Terdapat perbedaan besar antara dapat memecahkan masalah “dalam prinsip” dan memecahkannya “dalam dunia nyata”.

4. Acting rationally : The rationally agent approach

Membuat inferensi yang logis merupakan bagian dari suatu rational agent.

Hal ini disebabkan satu-satunya cara untuk melakukan aksi secara rasional

adalah dengan menalar secara logis. Dengan menalar secara logis, maka bisa

didapatkan kesimpulan bahwa aksi yang diberikan akan mencapai tujuan atau

tidak. Apabila mencapai tujuan, maka agent dapat melakukan aksi

berdasarkan kesimpulan tersebut.

Thinking humanly dan acting humanly adalah dua definisi dalam arti yang sangat

luas. Hingga saat ini, pemikiran manusia yang diluar rasio, yakni refleks dan

intuitif (perasaan), belum dapat ditirukan oleh komputer. Sedangkan definisi

thinking rationally jauh lebih sempit dari acting rationally dengan pendekatan

rational agent. Hal ini berdasarkan pemikiran bahwa komputer dapat melakukan

penlaran secara logis dan juga dapat melakukan aksi secara rasional berdasarkan

hasil penalaran.

2.5 Unified Modeling Language (UML)

Unified Modeling Language merupakan salah satu alat bantu yang dapat

digunakan dalam bahasa pemograman yang berorientasi objek, saat ini UML akan

mulai menjadi standar masa depan bagi industri pengembangan sistem/perangkat

lunak yang berorientasi objek sebab pada dasarnya UML digunakan oleh banyak

perusahaan raksasa seperti IBM, Microsoft, dan sebagainya. Berikut ini beberapa

definisi UML [10]:

Unified Modeling Language merupakan metode pengembangan perangkat

lunak (sistem informasi) dengan menggunakan metode grafis serta merupakan

(27)

1. Unified Modeling Language (UML) adalah bahasa yang telah menjadi

standar untuk visualisasi, menetapkan, membangun dan mendokumentasikan

arti suatu sistem perangkat lunak.

2. Unified Modeling Language (UML) dapat didefinisikan sebagai sebuah

bahasa yang telah menjadi standar dalam industri untuk visualisasi,

merancang dan mendokumentasikan sistem perangkat lunak.

3. Unified Modeling Language (UML) merupakan standard modeling language

yang terdiri dari kumpulan-kumpulan diagram, dikembangkan untuk

membantu para pengembang system dan software agar bisa menyelesaikan

tugas-tugas seperti spesifikasi, visualisasi, desain arsitektur, konstruksi,

simulasi dan testing, serta dokumentasi.

Berdasarkan beberapa pendapat yang dikemukakan diatas dapat ditarik

kesimpulan bahwa Unified Modeling Language (UML) adalah sebuah bahasa

yang berdasarkan grafik atau gambar untuk memvisualisasikan,

menspesifikasikan, membangun, dan pendokumentasian dari sebuah sistem

pengembangan perangkat lunak berbasis Object Oriented Programming (OOP).

Gambar 2.10 Logo Unified Modeling Language (UML)

2.5.1 Diagram Unified Modeling Language (UML)

Beberapa literatur menyebutkan bahwa UML menyediakan sembilan jenis

diagram, yang lain menyebutkan delapan karena ada beberapa diagram yang

digabung, misalnya diagram komunikasi, diagram urutan dan diagram pewaktuan

digabung menjadi diagram interaksi. Namun demikian model-model itu dapat

dikelompokkan berdasarkan sifatnya yaitu statis atau dinamis. Jenis diagram itu

(28)

1. Diagram Kelas (Class Diagram)

Diagram kelas menggambarkan struktur sistem dari segi pendefinisian

kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang

disebut atribut dan metode atau operasi.

a. Atribut merupakan variabel-variabel yang dimiliki oleh suatu kelas.

b. Operasi atau metode adalah fungsi-fungsi yang dimiliki oleh suatu kelas.

Diagram kelas dibuat agar pembuat program atau programmer membuat

kelas-kelas sesuai rancangan di dalam diagram kelas agar antara

dokumentasi perancangan dan perangkat lunak menjadi sinkron. Berikut

adalah contoh dari diagram kelas.

Gambar 2.11 Contoh class diagram

2. Diagram Use Case

Diagram use case merupakan pemodelan untuk kelakuan (behaviour) sistem

informasi yang akan dibuat. Use case mendeskripsikan sebuah interaksi

antara satu atau lebih aktor dengan sistem informasi yang akan dibuat. Secara

kasar, use case digunakan untuk mengetahui fungsi apa saja yang ada di

dalam sebuah sistem informasi dan siapa saja yang berhak menggunakan

fungsi-fungsi itu. Syarat penamaan pada use case adalah nama didefinisikan

sesimpel mungkin dan dapat dipahami. Ada dua hal utama pada use case

yaitu pendefinisian apa yang disebut aktor dan use case.

a. Aktor merupakan orang, proses, atau sistem lain yang berinteraksi

dengan sistem informasi yang akan dibuat diluar sistem informasi yang

akan dibuat itu sendiri, jadi walaupun simbol dari aktor adalah gambar

(29)

b. Use case merupakan fungsionalitas yang disediakan sistem sebagai

unit-unit yang saling bertukar pesan antar unit-unit atau aktor.

Gambar 2.12 Contoh use case diagram

3. Diagram Aktivitas (Activity Diagram)

Diagram aktivitas menggambarkan workflow (aliran kerja) atau aktivitas dari

sebuah sistem atau proses bisnis atau menu yang ada pada perangkat lunak.

Yang perlu diperhatikan disini adalah bahwa diagram aktivitas

menggambarkan aktivitas sistem bukan apa yang dilakukan aktor, jadi

aktivitas yang dapat dilakukan oleh sistem. Diagram aktivitas juga banyak

digunakan untuk mendefinisikan hal-hal berikut :

a. Rancangan proses bisnis dimana setiap urutan aktivitas yang

digambarkan merupakan proses bisnis sistem yang didefinisikan.

b. Urutan atau pengelompokkan tampilan dari system / user interface

dimana setiap aktivitas dianggap memiliki sebuah rancangan antarmuka

tampilan.

c. Rancangan pengujian dimana setiap aktivitas dianggap memerlukan

(30)

d. Rancangan menu yang ditampilkan pada perangkat lunak.

Gambar 2.13 Contoh activity diagram

4. Diagram State Machine (Statechart Diagram)

State machine diagram atau statechart diagram atau dalam bahasa Indonesia

disebut diagram mesin status atau sering juga disebut diagram status

digunakan untuk menggambarkan perubahan status atau transisi status dari

sebuah mesin atau sistem atau objek. Jika diagram sekuen digunakan untuk

interaksi antar objek maka diagram status digunakan untuk interaksi di dalam

sebuah objek. Perubahan tersebut digambarkan dalam suatu graf berarah.

Gambar 2.14 Contoh state chart diagram

5. Diagram Sekuen (Squence Diagram)

Diagram sekuen menggambarkan kelakuan pada objek use case dengan

mendeskripsikan waktu hidup objek dan message yang dikirimkan dan

diterima antar objek. Oleh karena itu untuk menggambar diagram sekuen

(31)

metode-metode yang dimiliki kelas yang diinstansiasi menjadi objek itu.

Membuat diagram sekuen juga dibutuhkan untuk melihat skenario yang ada

pada use case. Banyaknya diagram sekuen yang harus digambar adalah

minimal sebanyak pendefinisian use case yang memiliki proses sendiri atau

yang penting semua use case yang telah didefinisikan interaksi jalannya

pesan sudah dicakup pada diagram sekuen sehingga semakin banyak use case

yang didefinisikan maka diagram sekuen yang harus dibuat juga semakin

banyak.

Gambar 2.15 Contoh squence diagram

2.6 Java

Java adalah salah satu bahasa pemrograman komputer yang berorientasi

objek, yang diciptakan oleh satu tim dari perusahaan Sun Microsystem, perusahaan

workstation UNIX (Sparc) yang cukup terkenal. Java diciptakan berdasarkan bahasa

C++, dengan tujuan platform independent (dapat dijalankan pada berbagai jenis

hardware tanpa kompilasi ulang), dengan slogan “Write Once, Run Anywhere

(WORA), dan Java pada hakikatnya lebih sederhana dan memakai objek secara

(32)

Asal usul java dimulai pada tahun 1991 ketika Sun Microsystem melakukan

penelitian terhadap berbagai produk elektronika. James Gosling (kepala proyek

penelitian) beserta Patrick Naughton ditugaskan untuk merancang perangkat lunak

aplikasi yang independen, tidak bergantung pada jenis perangkat keras, agar bisa

dipakai pada berbagai peralatan elektronik itu. James Gosling kemudian memakai

bahasa pemrograman C++ untuk menulis beberapa aplikasi untuk peralatan mikro,

namun ternyata dia mengalami banyak kesulitan. Setiap kali sebuah peralatan mikro

menggunakan jenis microchip yang berbeda, program yang digunakannya harus

dikompilasi ulang. Berdasarkan hal itu kemudian munculah ide dari James Gosling

untuk menciptakan sebuah bahasa baru, yang ditulis berdasarkan C++ namun dengan

beberapa perbaikan. Bahasa ini kemudian disebut Oak (nama pohon yang terlihat dari

jendela ruangan kerja James Gosling), yang digunakan untuk membuat perangkat

lunak cerdas bagi peralatan elektronika buatan Sun Mirosystem.

Pada tahun 1994, ketika Web mulai populer nama bahasa Oak kemudian

diganti menjadi Java (salah satu sebabnya ternyata nama Oak telah terlebih dahulu

dipakai untuk hal lain). Menurut gosip, Gosling bingung mencari nama untuk bahasa

baru tersebut karena setiap nama yang dipikirkannya untuk nama bahasa

pemrogramannya ternyata sudah ada yang memakai, sampai suatu ketika dia mampir

di sebuah kafe untuk minum kopi, dan ia meminta “Java”. Timbullah idenya untuk memakai nama Java. Menurut Gosling nama ini cukup cool.

Java kemudian dipakai untuk membuat sebuah browser yang bernama WebRunner.

Setelah berhasil maka browser ini kemudian dinamakan HotJava dengan simbol

secangkir kopi panas.

(33)

2.7 Greenfoot

Greenfoot merupakan software pembelajaran pemrograman berorientasi

objek, dengan berbasis pemrograman java yang memungkinkan kita untuk

membuat game 2 dimensi (2D). Greenfoot diprakarsai oleh Michael Kolling pada

tahun 2003. Prototype pertama dibangun oleh Michael Kolling dan Paul

Henrikson pada tahun 2003-2004. Pembangunan dilanjutkan pada tahun 2005

oleh kelompok Blue J lain dari University of Kent dan Deakin University.

Greenfoot versi 1.0 pertama dirilis pada tanggal 31 Mei 2006. Pada bulan Maret

2009, proyek greenfoot menjadi software open source dan berlisensi dibawah

GNU GPL.

Untuk menjalankan greenfoot ini diharuskan sudah menginstalasi program

java 5 (JDK 1.5) atau program java terbaru. Didalam greenfoot terdapat project yang

dinamakan scenario. Dalam project tersebut, kita dapat membuat dua macam tipe

class dari library greenfoot, yaitu class world dan class actor. World merupakan latar

dari game yang akan dibuat. Actor adalah kelas yang berfungsi sebagai karakter pada

game yang akan dibuat.

(34)

27 3.1 Analisis Masalah

Kakuro adalah permainan puzzle yang bersifat logika dan biasa disebut

sebagai transliterasi matematis dari puzzle silang. Permainan ini adalah

permainan penjumlahan angka dengan aturan mainnya yaitu dengan mengisi

setiap kotak yang tersedia (kotak jawaban) dengan angka bulat dari 1 hingga 9

dengan beberapa syarat dalam pengisiannya. Soal-soal dalam permainan puzzle

kakuro bersifat unik, karena soal-soal ini akan saling terkait baik dengan soal

lainnya maupun jawaban dalam menyelesaikan permainan puzzle kakuro [5].

Untuk menyelesaikan permainan puzzle kakuro ini, jumlah total pada nilai

jawaban harus bernilai sama dengan nilai soal dan tidak boleh terdapat dua angka

yang sama pada satu lajur (kolom maupun baris).

Gambar 3.1 Contoh penyelesaian puzzle kakuro

Oleh karena itu dibutuhkan teknik untuk membangkitkan soal yang bersifat

unik dengan sistem random yang akan menghasilkan soal yang akan saling terkait

dari soal satu dengan soal lainnya dan mencari solusi dalam menyelesaikan

jawaban pada permainan puzzle kakuro dengan beberapa syarat didalamnya.

Dengan menggunakan prinsip dasarnya, algoritma backtracking mencari segala

(35)

solusi hingga menghasilkan solusi yang layak. Kelayakan solusi pada permainan

puzzle kakuro didefinisikan dengan suatu nilai akan dinyatakan layak apabila

tidak terdapat nilai angka yang sama pada satu serta nilai total pada jawaban harus

bernilai sama dengan nilai soal. Fungsi solusi didefiniskan jika semua kotak

kosong (kotak jawaban) telah terisi dengan nilai yang sesuai (sesuai dengan fungsi

kelayakan). Berikut gambaran kelayakan solusi pada permainan puzzle kakuro :

Gambar 3.2 Solusi layak pada permainan puzzle kakuro

3.2 Analisis Game

Analisis game yang akan diteliti pada game puzzle kakuro adalah dengan

membangkitkan soal permainan serta menyelesaikan jawaban. Pada dasarnya

permainan puzzle kakuro ini disetiap soal maupun jawaban akan saling terkait satu

sama lainnya dan mempunyai nilai pasti disetiap jawabannya. Oleh karena itu,

algoritrma backtracking akan diterapkan pada kasus puzzle kakuro ini. Berikut

merupakan alur membangkitkan soal permainan serta penyelesaian jawaban :

1. Proses pembangkitan soal.

Pada proses pembangkitan soal, nilai soal harus saling terkait dengan nilai

soal lainnya. Pada kasus ini, algoritma backtracking akan diterapkan dalam

membangkitkan soal. Algoritma backtracking bekerja untuk mencari nilai

yang akan menjadi nilai jawaban dalam pembangkitan soal dengan

menerapkan aturan permainan pada puzzle kakuro yaitu tidak boleh terdapat

(36)

Inisialisasi kotak Membangkitkan

jawaban Akumulasi jawaban Cetak soal

Gambar 3.3 Proses pembangkitan soal

Berikut penjelasan alur proses pada gambar 3.3 dengan kasus permainan

puzzle kakuro :

Gambar 3.4 Inisialisasi kotak permainan

Gambar 3.4 menjelaskan tentang keadaan awal permainan sebelum

menentukan nilai acuan pada lajur. Dimana kotak permainan disusun

berdasarkan kotak blok yang berwarna hitam dan kotak kosong yang

berwarna putih.

Gambar 3.5 Membangkitkan jawaban

Gambar 3.5 menjelaskan tentang pembangkit nilai jawaban. Pengisian ini

bertujuan untuk membangkitkan nilai soal pada kotak blok. Selain bertujuan

(37)

Gambar 3.6 Akumulasi jawaban dan cetak soal

Gambar 3.6 menjelaskan tentang akumulasi nilai jawaban dan cetak nilai

soal untuk permainan ini. Untuk mencetak soal, kotak yang berisikan nilai

jawaban dalam satu lajur akan diakumulasikan dari total nilai jawaban.

2. Proses penyelesaian jawaban pada kotak kosong.

Pada proses ini, penyelesaian jawaban dengan algoritma backtracking dengan

sistem terurut dalam pencarian nilai. Proses pencarian nilai dilakukan dari

angka 1 hingga 9, dan dengan melakukan tahapan pengecekan nilai yaitu

tidak boleh terdapat angka yang sama pada satu lajur serta total nilai jawaban

pada satu lajur yang akan dibandingkan dengan nilai soal.

Membangkitkan

jawaban Cetak jawaban

Gambar 3.7 Proses penyelesaian jawaban pada kotak kosong

3. Proses penyelesaian jawaban pada kotak terisi nilai.

Pada proses ini, penyelesaian jawaban dengan algoritma backtracking hampir

sama dengan proses penyelesaian jawaban pada kotak tidak terisi. Hanya saja

pada proses pengecekan nilai, nilai jawaban yang telah diisi oleh pemain akan

dicek ulang dengan nilai jawaban pada algoritma backtracking.

Membangkitkan jawaban

Cek jawaban pemain dengan jawaban yang dibangkitkan

(38)

3.3 Analisis Masukan

Analisis masukan yang dilakukan dalam penelitian ini adalah menganalisis

inputan puzzle dalam algoritma backtracking pada game kakuro. Masukan

tersebut berupa nilai (angka), akan tetapi masukan diberi batasan nilai yaitu dari

angka 1 hingga 9, berikut merupakan tabel analisis masukan pada game puzzle

kakuro.

Tabel 3.1 Nilai masukan 2 kotak

Nilai acuan lajur Nilai kombinasi

3 1-2

Tabel 3.2 Nilai masukan 3 kotak

Nilai acuan lajur Nilai kombinasi

6 1-2-3

7 1-2-4

8 1-2-5; 1-3-4

(39)

Nilai acuan lajur Nilai kombinasi

untuk menganalisis cara kerja algoritma backtracking terhadap kasus permainan

puzzle kakuro, bagaimana cara kerja algoritma backtracking dalam pembangkitan

(40)

Sebelum meneliti cara kerja algoritma backtracking pada game puzzle

kakuro ini, akan dibahas terlebih dahulu bagaimana cara menginisialisasikan

kotak terlebih dahulu yang akan menghasilkan kotak kosong (kotak jawaban) dan

kotak blok (kotak nilai soal / pembatas).

Dalam proses inisialisasi kotak pada puzzle kakuro, di setiap kotak puzzle

kakuro akan diberikan nilai indeks yang akan digambarkan dengan titik koordinat

sumbu (X, Y). Pada sumbu X menyatakan posisi kotak secara horizontal, dan

sumbu Y menyatakan posisi kotak secara vertikal. Titik koordinat sumbu X, dan

Y akan di gambarkan sebagai berikut :

Gambar 3.9 Titik koordinat sumbu (X, Y)

Pada gambar 3.9 menjelaskan keadaan awal kotak sebelum terjadinya

inisialisasi kotak permainan yang akan menentukan nilai acuan lajur dan kotak

permainan. Dimana kotak permainan disusun berdasarkan kotak blok yang

berwarna hitam dan kotak kosong yang berwarna putih seperti yang terjadi pada

proses gambar 3.4. Dalam menentukan kotak blok dan kosong dalam permainan

puzzle kakuro ini, maka alur proses yang akan terjadi adalah sebagai berikut :

1. Mengecek lajur nilai X.

Apabila nilai indeks pada kotak yang dipilih terdapat nilai 0 pada sumbu X

atau Y, maka kotak tersebut akan menjadi kotak blok. Sedangkan apabila

nilai indeks pada kotak yang dipilih terdapat nilai > 0 pada sumbu X atau Y,

(41)

2. Mengecek lajur nilai Y.

Nilai indeks pada kotak yang dipilih akan menjadi kotak blok, apabila lajur

pada sumbu Y diatasnya terdapat 3 kotak kosong. Sedangkan nilai indeks

pada kotak yang dipilih akan menjadi kotak kosong, apabila lajur pada sumbu

Y diatasanya kurang dari 3 kotak kosong. Pada pengecekan lajur sumbu Y

terdapat batasan, karena pada permainan yang dibuat hanya dibatasi 2 hingga

3 kotak kosong sebagai nilai masukan.

Dari pengecekan tersebut, didapatlah kotak blok dan kosong untuk menentukan

lajur permainan seperti pada gambar gambar 3.4. Proses pengecekan nilai pada

titik koordinat (X, Y) diatas akan dijelaskan pada alur flowchart berikut :

(42)

3.4.2 Analisis Algoritma Backtracking Pembangkit Nilai Soal

Analisis algoritma backtracking pada pembangkit nilai soal merupakan

penjelasan alur atau cara kerja algoritma backtracking saat terjadi pembuatan soal

di dalam game puzzle kakuro yang sudah terinisialisasi kotak terlebih dahulu.

Algoritma backtracking akan bekerja saat pencarian nilai dan akan melakukan

backtrack apabila terdapat nilai angka yang sama dalam satu lajur. Penjelasan

tersebut akan digambarkan pada kotak sebagai berikut.

Kotak soal

Kotak jawaban

Gambar 3.11 Keadaan awal satu lajur

Gambar 3.11 menjelaskan tentang keadaan awal satu lajur sebelum

menentukan nilai soal. Dimana kotak dari satu lajur disusun berdasarkan kotak

jawaban dan kotak soal. Setelah tampil satu lajur tersebut, alur kerja algoritma

backtracking akan dimulai dengan menujuk kotak jawaban pertama menggunakan

pointer yang akan dicari nilai jawaban kedalam array.

Kotak soal

Kotak jawaban

Kotak yang dipilih

Gambar 3.12 Memilih kotak jawaban

Gambar 3.12 menjelaskan ketika pointer memilih kotak jawaban. Sebelum

menentukan nilai jawaban, kotak jawaban di cek terlebih dahulu oleh sistem

apakah kotak jawaban dalam kondisi kosong atau terisi nilai dalam satu lajur.

Apabila kotak jawaban dalam kondisi kosong, maka sistem akan mengisi kotak

jawaban dengan cara random. Dan apabila kotak jawaban dalam kondisi terisi

(43)

Kotak masukan nilai kakuro

Kotak yang dipilih oleh pointer

Gambar 3.13 Pencarian nilai masukan di dalam array

Gambar 3.13 menjelaskan pencarian nilai masukan untuk kotak jawaban di

dalam array. Pencarian dilakukan berdasarkan nilai yang telah ditentukan yaitu

nilai 1 hingga 9. Penentuan pencarian nilai dilakukan dengan cara random.

Setelah nilai dipilih maka nilai pada array akan di masukan kedalam kotak

jawaban. Berikut terjadinya proses pembentukan nilai soal dengan menentukan

nilai jawaban terlebih dahulu menggunakan algoritma backtracking pada tabel

3.3.

Tabel 3.3 Proses pembangkitan nilai soal

Proses Nilai kotak jawaban Nilai masukan array

1.

2.

3.

4.

5. -

Dari proses tabel 3.3 terdapat proses-proses yang menghasilkan nilai jawaban

hingga terjadinya pembangkitan nilai soal. Dari proses tersebut akan dijelaskan

kembali dengan alur kerja bagaimana terjadinya proses pembangkitan nilai soal

(44)

Tabel 3.4 Alur kerja pembangkitan nilai soal

Kotak jawaban pertama pada satu lajur

Cek lajur

1. Apabila lajur dalam keadaan terisi nilai semua, maka proses cek lajur

dilanjutkan ke lajur selanjutnya.

2. Apabila lajur dalam keadaan kosong, maka lakukan pencarian nilai

jawaban.

Random nilai Pencarian nilai jawaban yang dilakukan oleh sistem secara random didalam array, dengan ketentuan nilai dari 1 hingga 9.

Cetak nilai Nilai yang terpilih oleh sistem pada proses pencarian nilai akan dimasukan kedalam kotak jawaban.

Kotak jawaban kedua hingga terakhir pada satu lajur

Cek lajur, Random nilai

Cek duplikat

1. Apabila terdapat nilai yang sama pada lajur dalam proses pencarian

nilai, maka dilakukan pencarian nilai ulang oleh sistem dengan tidak

memilih kembali nilai yang sudah terpilih sebelumnya.

2. Apabila nilai yang terpilih tidak bernilai sama pada lajur, maka

proses pencarian nilai dilanjutkan ke kotak kosong sebelahnya.

Cetak nilai

Cetak soal

Lajur yang telah terisikan nilai jawaban akan diakumulasikan yang akan

menghasilkan nilai soal. Nilai jawaban yang sudah melalui tahap

akumulasi hingga menghasilkan nilai soal, akan dihapus baik dalam

kotak jawaban maupun pada sistem.

Dari alur kerja pembangkitan nilai soal tersebut, didapatlah nilai soal dari hasil

pencarian nilai jawaban yang sudah diakumulasikan. Alur kerja dalam

(45)
(46)

3.4.3 Analisis Algoritma Backtracking Penyelesaian Jawaban

Analisis algoritma backtracking dalam menyelesaikan jawaban terjadi

kedalam dua kondisi, yaitu kondisi disaat kotak jawaban kosong atau kondisi

disaat kotak jawaban terisi nilai.

3.4.3.1 Penyelesaian Jawaban Pada Kotak Kosong

Algoritma backtracking pada kondisi kotak jawaban kosong atau tidak

terisikan nilai, algoritma backtracking bekerja dengan mengecek nilai jawaban

dengan mengecek apakah terdapat nilai yang sama pada lajur serta mengecek

akumulasi total nilai jawaban dengan dengan nilai soal. Untuk menjelaskan

bagaimana algoritma backtracking bekerja, maka akan dijelaskan alur proses

aktivitas algoritma backtracking yang bekerja pada tabel 3.5.

Tabel 3.5 Proses terjadinya nilai jawaban

Proses Nilai kotak jawaban Nilai masukan array

1.

2.

3.

4.

5.

Dari proses tabel 3.5 terdapat proses-proses yang menghasilkan nilai jawaban dari

keadaan awal lajur yang sudah terisikan nilai soal. Dari proses tersebut akan

dijelaskan kembali dengan alur kerja bagaimana terjadinya proses terjadinya nilai

(47)

Tabel 3.6 Alur kerja terjadinya nilai jawaban

Kotak jawaban pertama pada satu lajur

Cek lajur

1. Apabila lajur dalam keadaan terisi nilai semua, maka proses cek lajur

dilanjutkan ke lajur selanjutnya.

2. Apabila lajur dalam keadaan kosong, maka lakukan pencarian nilai

jawaban.

Pencarian

nilai

Pencarian nilai jawaban yang dilakukan oleh sistem secara berurutan

didalam array, dengan ketentuan nilai dari 1 hingga 9.

Cek total

1. Apabila nilai jawaban yang terpilih oleh sistem bernilai kurang dari

nilai soal dan tidak berada pada kotak terakhir pada lajur, maka

proses pencarian nilai dilanjutkan ke kotak kosong sebelahnya.

2. Apabila nilai jawaban yang terpilih oleh sistem bernilai kurang dari

nilai soal dan berada pada kotak terakhir pada lajur, maka proses

pencarian nilai dilakukan ulang dengan melanjutkan nilai

sebelumnya yang terpilih hingga menghasilakn nilai yang sama

dengan nilai soal apabila diakumulasikan.

Cetak nilai Nilai yang terpilih oleh sistem pada proses pencarian nilai akan dimasukan kedalam kotak jawaban.

Kotak jawaban kedua hingga terakhir pada satu lajur

Cek lajur, Pencarian nilai

Cek duplikat

1. Apabila terdapat nilai yang sama pada lajur pada proses pencarian

nilai, maka dilakukan pencarian nilai ulang oleh sistem dengan tidak

memilih kembali nilai yang sudah terpilih sebelumnya.

2. Apabila nilai yang terpilih tidak bernilai sama pada lajur, maka

proses pencarian nilai dilanjutkan ke kotak kosong sebelahnya.

(48)

Dari alur kerja terjadinya nilai jawaban tersebut, didapatlah nilai jawaban dari

keadaan awal lajur yang sudah terisikan nilai soal. Alur kerja dalam terjadinya

nilai jawaban diatas akan digambarkan pada alur flowchart berikut :

(49)

Gambar 3.15 adalah proses penyelesaian jawaban pada kotak kosong yang

digambarkan kedalam flowchart, dimana pada prosesnya terdapat beberapa

pengecekan baik pengecekan nilaerri maupun lajur. Pengecekan nilai maupun

lajur akan menghasilkan solusi yang layak, apabila memenuhi fungsi kelayakan

dalam permainan puzzle kakuro. Solusi yang layak dalam permainan puzzle

kakuro adalah apabila nilai jawaban dalam satu lajur bernilai sama dengan nilai

soal serta nilai jawaban saling terkait dengan nilai jawaban lainnya pada lajur

yang berbeda. Berikut merupakan contoh kasus dari solusi layak dalam permainan

puzzle kakuro pada 3 lajur yang digambarkan kedalam pohon solusi pada gambar

(50)
(51)

Pada gambar 3.16 terjadi alur proses dalam menemukan solusi yang layak yang

digambarkan kedalam pohon solusi dengan menghasilkan kedalaman 8 untuk

mencapai solusi pada tiga lajur. Kedalaman pohon solusi pada permainan puzzle

kakuro ini didapat, apabila kotak jawaban pada satu lajur tidak saling terkait lagi

dengan kotak jawaban pada lajur lainnya. Dalam prosesnya, terjadi pemangkasan

(pruning) terhadap simpul-simpul yang tidak mengarah ke solusi. Simpul yang

menjadi simpul anak dan turunan tidak akan diproses kembali, karena telah terjadi

pemangkasan.

3.4.3.2 Penyelesaian Jawaban Pada Kotak Terisi Nilai

Algoritma backtracking pada kondisi kotak jawaban terisi nilai, alur proses

kerja algoritmanya sama dengan alur proses kerja algoritma backtracking

penyelesaian jawaban pada kotak kosong yang terjadi pada tabel 3.5. Alur kerja

sistem pada penyelesaian jawaban pada kotak terisikan nilai seperti pada gambar

3.8. Pada alur tersebut terjadi proses pencocokan nilai jawaban yang diisikan oleh

pemain dengan nilai jawaban yang dibangkitkan oleh sistem menggunakan

algoritma backtracking. Untuk menjelaskan bagaimana alur proses penyelesaian

jawaban pada kotak terisikan nilai tersebut, maka akan dijelaskan pada tabel 3.7.

Tabel 3.7 Proses pencocokan kedua nilai jawaban

Proses Nilai jawaban diisi pemain Nilai jawaban yang dibangkitkan pada Tabel 3.5

Dari proses tabel 3.7 terdapat proses-proses dalam pencocokan nilai jawaban dari

(52)

sistem menggunakan algoritma backtracking. Keadaan awal, nilai jawaban yang

telah diisikan pemain sudah terisikan nilai jawaban terlebih dahulu, baik dalam

satu lajur maupun pada seluruh kotak jawaban. Selanjutnya, mencari nilai

jawaban yang dibangkitkan oleh sistem menggunakan algoritma backtracking

sebagai nilai pembanding dengan nilai jawaban yang telah diisi oleh pemain.

Setelah kedua nilai jawaban didapat, maka proses selanjutnya adalah pencocokan

nilai jawaban yang akan dijelaskan pada alur kerja bagaimana terjadinya proses

pencocokan kedua nilai jawaban pada tabel tabel 3.8.

Tabel 3.8 Alur kerja pencocokan kedua nilai jawaban

Kotak jawaban pertama pada satu lajur

Cek nilai

1. Apabila nilai jawaban yang diisi oleh pemain bernilai sama dengan

nilai jawaban yang dibangkitkan oleh sistem didalam array

menggunakan algoritma backtracking, maka sistem tidak akan

menampilkan warna merah pada kotak jawaban karena sesuai dengan

nilai yang dibangkitkan sistem.

2. Apabila nilai jawaban yang diisi oleh pemain bernilai tidak sama

dengan nilai jawaban yang dibangkitkan oleh sistem didalam array

menggunakan algoritma backtracking, maka sistem akan

menampilkan warna merah pada kotak jawaban yang tidak sesuai

dengan nilai yang dibangkitkan sistem.

Kotak jawaban kedua hingga terakhir pada satu lajur

Cek nilai

Dari alur kerja pencocokan kedua nilai jawaban tersebut, didapatlah hasil dari

pencocokan kedua nilai jawaban. Dimana sistem akan menampilkan kotak

berwana merah pada kotak jawaban yang tidak bernilai sama dengan nilai

jawaban yang telah dibangkitkan oleh sistem. Alur kerja dalam pencocokan kedua

(53)

Gambar 3.17 Proses pencocokan nilai jawaban

3.5 Analisis Kebutuhan Perangkat Lunak

Perangkat lunak (software) merupakan hal terpenting dalam mendukung

kinerja sebuah sistem. Perangkat lunak digunakan dalam sebuah sistem untuk

memberikan perangkat keras (hardware) sebuah perintah agar perangkat keras

melakukan apa yang diinginkan oleh pemain. Berikut ini, kebutuhan perangkat

lunak untuk menerapkan algoritma backtracking pada puzzle kakuro pada tabel

3.9.

Tabel 3.9 Spesifikasi perangkat lunak

Spesifikasi Perangkat Lunak

(54)

3.5.1 Analisis Kebutuhan Perangkat Keras

Agar aplikasi dapat berjalan dengan baik, maka dibutuhkan perangkat

keras (hardware) yang sesuai dengan kebutuhan aplikasi. Tabel 3.10 adalah

spesifikasi minimum perangkat keras yang dibutuhkan agar dapat menjalankan

aplikasi permainan puzzle kakuro secara optimal.

Tabel 3.10 Spesifikasi perangkat keras

Komputer Spesifikasi Perangkat Keras

Prosesor Prosesor 1,6 Ghz

Resolusi Layar 800 x 600 pixel

Memori Memori 128 Mb

Hardisk Hardisk 20 Gb

Keyboard dan mouse Standar

Sound card Standar

3.5.2 Analisis Kebutuhan Non Fungsional

Analisis kebutuhan non fungsional merupakan analisis yang dibutuhkan

untuk menentukan spesifikasi kebutuhan sistem. Spesifikasi yang meliputi elemen

atau komponen-komponen yang dibutuhkan untuk sistem yang akan dibangun

hingga sistem tersebut diimplementasikan. Analisis kebutuhan ini menentukan

spesifikasi masukan yang diperlukan sistem, keluaran yang akan dihasilkan sistem

dan proses yang dibutuhkan untuk mengolah masukan sehingga menghasilkan

suatu keluaran yang diinginkan.

3.5.3 Analisis Kebutuhan Fungsional

Pemodelan yang digunakan pada game yang akan dibuat adalah analisis

perancangan dan pengembangan perangkat lunak berbasis objek, dimana alat yang

akan digunakan untuk pengembangan perangkat lunak yaitu pemodelan Unified

(55)

3.5.3.1 Use case Diagram

Gambar 3.18 Use case diagram

Definisi use case berfungsi untuk menjelaskan fungsi dari use case yang terdapat

pada diagram use case. Definisi use case dijelaskan pada tabel 3.11.

Tabel 3.11 Definisi use case

No Use Case Keterangan

1. Memainkan Permainan Proses untuk memulai memainkan permainan

2. Keluar Proses untuk keluar dari permainan

3.5.3.2 Use Case Scenario

Skenario use case merupakan penjelasan mengenai alur kejadian yang di

dalamnya menjelaskan urutan interaksi antara aktor dengan use case tersebut.

Adapun skenario use case digambarkan sebagai berikut.

Tabel 3.12 Tabel memainkan permainan

Identifikasi

Nomor 1

Nama Memainkan Permainan

(56)

Deskripsi Proses untuk memainkan permainan

Aktor Pemain

Skenario Utama

Kondisi Awal Pemain berada di permainan

Aksi Aktor Reaksi Sistem

1. Mengatur blok permainan

2. Random jumlah kolom

3. Random jumlah baris

4. Mengatur nilai pada blok dengan

random

5. Mengecek nilai

6. Melakukan backtracking

7. Cek jumlah kolom

8. Jika blok pada kolom tidak

kosong maka lakukan pencarian

backtracking, jika kosong maka

nilai input dinyatakan salah

9. Cek jumlah baris

10. Jika blok pada baris tidak kosong

maka lakukan pencarian

Activity diagram merupakan gambaran alur aktivitas pada permainan yang

sedang dirancang, bagaimana masing-masing alur aktivitas berawal, decision yang

mungkin terjadi, dan bagaimana berakhir. Activity diagram dijelaskan melalui

(57)

1. Activity memainkan permainan

(58)

2. Activity keluar permainan

Gambar 3.20 Activity keluar permainan

3.5.3.4 Squence Diagram

Sequence diagram menggambarkan tindakan objek pada use case dengan

mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima

(59)

1. Squence diagram memainkan permainan

Gambar 3.21 Squence diagram memainkan permainan

2. Squence diagram keluar permainan

(60)

3.5.3.5 Class Diagram

Class diagram merupakan gambaran sistem berupa relasi antar kelas-kelas

ataupun paket-paketnya. Class diagram dijelaskan melalui gambar berikut.

Gambar 3.23 Class diagram permainan puzzle kakuro

3.5.3.6 Perancangan Antarmuka

Perancangan antarmuka bertujuan untuk memberikan gambaran tentang

aplikasi yang akan dibangun, sehingga akan mempermudah dalam

mengimplementasikan aplikasi serta akan memudahkan pembuatan aplikasi.

Antarmuka permainan merupakan halaman yang muncul pertama kali pada saat

(61)

1. Perancangan antarmuka permainan.

Gambar 3.24 Antarmuka permainan

2. Pesan ketika permaianan terselesaikan.

Gambar

Gambar 2.15 Contoh squence diagram
Gambar 2.17 Logo Greenfoot [12]
Gambar 3.1 Contoh penyelesaian puzzle kakuro
Gambar 3.2 Solusi layak pada permainan puzzle kakuro
+7

Referensi

Dokumen terkait

Fungsi batas disini akan melakukan fungsinya jika nilai yang dicari dari algoritma depth first search telah berhasil diselesaikan dengan sempurna maka fungsi batas

[r]

Dari nilai beta yang diperoleh untuk simpul N dan O akan memperbaiki nilai H sehingga H menjadi bernilai tiga dan alpha menjadi tiga.. Penerapan αβ

Dengan kata lain, solusi untuk meng- assign suatu nilai pada tiap variabel adalah dengan suatu cara dimana semua constraint dapat dipenuhi oleh nilai-nilai

Apabila kolom jawaban di isi dengan angka yang tidak sesuai dengan jawaban soal penjumlahan, maka jawaban user akan dinyatakan “salah”. Apabila kolom jawaban tidak di

• Proses Pembangkitan Maze yang bentuk selnya akan saling terhubung, pasti akan menghasilkan solusi dengan aturan Start dan Finish harus diletakan di bagian sisi kiri. dan

Berat barang yang dimasukkan dan dimensi truk yang digunakan sama dengan yang terjadi pada simpul 2 dan fungsi pembatas tidak akan mematikan simpul tersebut

Salah satu persoalan yang akan penulis bahas yaitu pada game tata nama senyawa untuk mengacak kata dengan aturan harus mengisi jawaban yang telah disediakan, pada