Implementasi Algoritma Backtracking Pada Game Puzzle Kakuro

IMPLEMENTASI ALGORITMA

  BACKTRACKING PADA GAME PUZZLE KAKURO

SKRIPSI

  Diajukan untuk Menempuh Ujian Akhir Sarjana

HERDI PRAYOGA 10109422

  

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

2014

  

DAFTAR ISI

  ABSTRAK ............................................................................................................... i

  

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

  2.1.2 Aturan Permainan Puzzle Kakuro ............................................................ 10

  2.2 Algoritma ................................................................................................. 12

  2.2.1 Definisi Algoritma ................................................................................... 12

  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

  3.5.3 Analisis Kebutuhan Fungsional ............................................................... 47

  3.5.3.1 Use Case Diagram ................................................................................... 48

  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

  DAFTAR PUSTAKA ............................................................................................ 69

DAFTAR PUSTAKA

  [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. [12] M. Kolling, Introducing To Programming With Greenfoot.

  

BIODATA PENULIS (RIWAYAT HIDUP)

1.

   Data Pribadi

  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 : 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

BAB 1 PENDAHULUAN

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

  

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 permainan puzzle kakuro dengan beberapa syarat dalam permainannya.

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 masalah- masalah yang sedang diteliti.

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

  Requirments Defination System and Software Design

  

Implementation and

Unit Testing

Integration and System Testing

  Operationand Maintenance

Gambar 1.1 Metode pembangunan perangkat lunak waterfall [3]

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

  backtracking.

  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

  backtracking pada game puzzle kakuro agar lebih baik.

BAB 2 LANDASAN TEORI

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

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) atau ujung atas (kolom) lajur tersebut.

Gambar 2.2 Cara pengisisan dengan jumlah jawaban sesuai dengan soal

  Pengisian kotak jawaban seperti pada gambar gambar 2.3 merupakan 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.

Gambar 2.4 Nilai sama pada satu lajur yang berbeda

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 yaitu efisiensi waktu dan memori.

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 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 melakukan backtrack.

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 dipresentasikan kedalam bentuk pohon solusi, maka proses pemangkasan akan 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

  B C D

  X E F G H I J K

  X L M

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

  (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 pengetahuan tersebut kedalam formal term yang diperlukan oleh notasi 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)

  upakan 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 bahasa untuk visualisasi, spesifikasi, konstruksi serta dokumentasi.

  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 antara lain [10] :

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

  Use case merupakan fungsionalitas yang disediakan sistem sebagai unit- unit yang saling bertukar pesan antar 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 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.