Kecerdasan Buatan dan id bab 5

KATA PENGANTAR

Puji syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa yang telah menganugerahkan
rahmat dan kasih-Nya sehingga pada akhirnya penulis dapat menyelesaikan tugas akhir ini
dengan baik. Dimana tugas akhir ini penulis sajikan dalam bentuk buku yang sederhana.
Adapun judul tugas akhir yang penulis ambil sebagai berikut

“PENERAPAN

ALGORITMA RUNUT-BALIK (BACKTRACKING) DALAM PENYELESAIAN
PERMAINAN SUDOKU”
Tujuan penulisan tugas akhir ini dibuat sebagai salah satu syarat kelulusan UAS
Program Diploma Tiga (DIII) Universitas Negeri Surabaya. Sebagai bahan penulisan diambil
berdasarkan hasil penelitian (eksperimen), observasi dan beberapa sumber literatur yang
mendukung penulisan ini. Penulis menyadari bahwa tanpa bimbingan dan dorongan dari
semua pihak, maka penulisan tugas akhir ini tidak akan lancar.
Semoga laporan ini dapat memberikan wawasan yang lebih luas kepada pembaca.
Walaupun makalah ini memiliki kelebihan dan kekurangan. Penyusun mohon untuk saran dan
kritiknya. Terima kasih.

1


DAFTAR ISI
Kata Pengantar...........................................................................................................................1
Daftar isi.....................................................................................................................................2

BAB 1 PENDAHULUAN
1.1 Latar Belakang..................................................................................................................3
1.2 Perumusan Masalah..........................................................................................................3
1.3 Tujuan dan Manfaat Penelitian.........................................................................................4
BAB 2 LANDASAN TEORI.....................................................................................................5
BAB 3 IMPLEMENTASI DAN PEMBAHASAN....................................................................8
BAB 4 PENUTUP....................................................................................................................11
Daftar Pustaka

2

BAB 1
PENDAHULUAN
1.1 Latar Belakang
Permainan Sudoku adalah bentuk permainan puzzle pada papan berukuran 2x2 yang

melatih logika manusia dlam berpikir cepat namun teliti. Di dalam penyelesaian
permainan Sudoku ini, kita dituntut untuk memikirkan masak-masak langkah-langkah
yang akan kita ambil. Hal ini dikarenakan apabila kita mengambil langkah tanpa
pertimbangan terlebih dahulu atau kita mengambil langkah secara asal, maka
nantinyahal tersebut justru akan menyulitkan kita ketika di tuntut untuk mengambil
langkah selanjutnya guna menyelesaikan permainan ini. Permasalahan yang di dapat
aitu bagaiman membantu user untuk menyelesaikan soal – soal dari Sudoku yang ada.
Sehingga dalam satu baris, kolom dan region (region 2x2 )tidak ada angka berulang.
1.2 Rumusan Masalah
Berdasarkan uraian latar belakang yang telah dijelaskan sebelumnya maka rumusan
masalah dalam penulisan tugas akhir uas ini adalah Bagaimana menganalisis,
memecahkan

cara

jalan

game

serta


mengimplementasikan

“PENERAPAN

ALGORITMA RUNUT-BALIK (BACKTRACKING) DALAM PENYELESAIAN
PERMAINAN SUDOKU”.
1.3 Tujuan dan Manfaat Penelitian
1.3.1 Tujuan
Berdasarkan permasalahan topik diatas, tujuan dari penelitian ini adalah :
1. Mempelajari dan mengenal lebih dalam tentang pembuatan game Sudoku
2. Mengetahui lebih dalam tentang bahasa pemrograman yang dipakai dalam
pembuatan game puzzle Sudoku.
3. Mengetahui cara jalan dari algoritma yang dipakai di game Sudoku

1.3.2 Manfaat
Adapun manfaat yang diharapkan dari penelitian ini adalah sebagai berikut :
3

1. Bagi penulis untuk menambah wawasan dan pengetahuan dalam merancang suatu

games dengan menggunakan bahasa c# dan algoritmanya.
2. Bagi pengguna dari hasil penelitian ini diharapkan dapat memberikan motivasi
dan pemahaman dalam mata kuliah kecerdasan buatan.

BAB 2
LANDASAN TEORI
4

2.1

Artificial Intelligence
Kecerdasan Buatan (Artificial Intelligence) didefinisikan sebagai kecerdasan yang

ditunjukkan oleh suatu entitas buatan. Sistem seperti ini umumnya dianggap komputer.
Beberapa macam bidang yang menggunakan kecerdasan buatan antara lain sistem pakar,
permainan komputer (games), logika fuzzy, jaringan syaraf tiruan dan robotika.
Secara garis besar, AI terbagi ke dalam dua faham pemikiran yaitu AI Konvensional
dan Kecerdasan Komputasional (CI, Computational Intelligence). AI konvensional
kebanyakan melibatkan metoda-metoda yang sekarang diklasifiksikan sebagai pembelajaran
mesin, yang ditandai dengan formalisme dan analisis statistik. Dikenal juga sebagai AI

simbolis, AI logis, AI murni dan AI cara lama (GOFAI, Good Old Fashioned Artificial
Intelligence). Metoda metodanya meliputi:
1. Sistem pakar: menerapkan kapabilitas pertimbangan untuk mencapai kesimpulan.
Sebuah sistem pakar dapat memproses sejumlah besar informasi yang diketahui dan
menyediakan kesimpulan-kesimpulan berdasarkan pada informasi-informasi tersebut.
2. Petimbangan berdasar kasus
3. Jaringan Bayesian
4. AI berdasar tingkah laku: metoda modular pada pembentukan sistem AI secara
manual. Kecerdasan komputasional melibatkan pengembangan atau pembelajaran
iterative

(misalnya

penalaan

parameter

seperti

dalam


sistem

koneksionis.

Pembelajaran ini berdasarkan pada data empiris dan diasosiasikan dengan AI nonsimbolis, AI yang tak teratur dan perhitungan lunak. Metoda-metoda pokoknya
meliputi:


Jaringan Syaraf, Sistem Fuzzy, Komputasi Evolusioner

Metoda-metoda ini terutama dibagi menjadi algoritma evolusioner (misalnya
algoritma genetik) dan kecerdasan berkelompok (misalnya algoritma semut) Dengan sistem
cerdas hibrid, percobaan-percobaan dibuat untuk menggabungkan kedua kelompok ini.
Penemuan-penemuan baru tentang Artificial Intelligence terus berlanjut hingga saat ini,
termasuk di dunia game.

2.2

Bactracking


5

Algoritma runut-balik (backtracking) adalah algoritma yang berbasis pada DFS untuk
mencari persoalan secara lebih mangkus. Runut-balik (backtracing), yang merupakan
perbaikan dari algoritma brute-force, secara sistematis mencari solusi persoalan di antara
semua kemungkinan solusi yang ada. Hanya saja algoritma ini merupakan pencarian yang
mengarah ke solusi yang dipertimbangkan saja. Algoritma runut-balik banyak digunakan
pada program permainan (game) dan masalah pada bidang kecerdasan buatan. Salah satu
jenis permainan yang dapat diselesaikan dengan algoritma runut-balik (backtracking) adalah
permainan Sudoku. Pada makalah ini, penulis akan membahas tentang penerapan algoritma
runut-balik (backtracking) dalam penyelesaian permainan sudoku. Dengan menggunakan
algoritma runut-balik, solusi dapat ditemukan lebih cepat tanpa harus mencoba semua
kemungkinan solusi. Melalui pembahasan dalam makalah ini, algoritma runut-balik
(backtracking) digunakan pada saat program diminta untuk menyelesaikan permainan dengan
mengisikan angka–angka tertentu yang memenuhi fungsi batasan pada kotak–kotak yang
masih kosong (belum diisi atau bernilai nol). Jika dalam proses pengisian ternyata terjadi
ketidaksinambungan maka akan dilakukan proses runut-balik (backtracking).
2.3


Prinsip Pencarian Solusi dengan Metode Runut-Balik
Di sini kita hanya akan meninjau pencarian solusi pada pohon ruang status yang
dibangun secara dinamis. Langkah-langkah pencarian solusi adalah sebagai berikut:
1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan
yang dipakai adalah mengikuti metode pencarian mendalam (DFS). Simpul-simpul
yang sudah dilahirkan dinamakan simpul hidup (live mode). Simpul hidup yang sedang
diperluas dinamakan simpuel-E (Expandnode). Simpul dinomori dari atas ke bawah
sesuai dengan urutan kelahirannya.
2. Tiap kali simpul-E diperluas, lintasan yang dibangun olehnya bertambah panjang.
Jika lintasan yang sedang dibentuk tidak mengarah ke solusi, maka simpul-E tersebut
“dimatikan” sehingga menjadi simpul mati (dead node). Fungsi yang digunakan untuk
membunuh simpul-E adalah dengan menerapkan fungsi pembatas (bounding function).
Simpul yang sudah mati tidak akan pernah diperluas lagi.
3. Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian
diteruskan dengan membangkitkan simpul anak yang lainnya. Bila tidak ada lagi
simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan
melakukan runut-balik ke simpul hidup terdekat (simpul orangtua). Selanjutnya simpul
ini menjadi simpul-E yang baru. Lintasan baru dibangun kembali sampai lintasan
tersebut membentuk solusi.
6


4. Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul
hidup untuk runutbalik.
2.4

Penerapan Algoritma Runut-Balik dalam Penyelesaian Sudoku
Penerapan algoritma runut-balik dalam penyelesaian Sudoku adalah sebagai berikut:
1. Algoritma dimulai pada elemen kosong pertama pada matriks.
2. Periksa seluruh kemungkinan angka yaitu n (dengan ∈ {1, 2, 3, 4, 5, 6, 7, 8, 9})
yang dapat diisi oleh elemen kosong tersebut dengan memeriksa batasan (dengan fungsi
pembatas).
3. Jika nilai n tersebut memenuhi fungsi pembatas (valid), maka elemen kosong
tersebut diisi dengan nilai n, dan lanjutkan pemeriksaan ke elemen kosong berikutnya.
4. Jika nilai n tersebut tidak memenuhi fungsi pembatas, maka uji dengan nilai n lain.
5. Jika seluruh nilai n telah diuji dan tidak ada nilai n yang memenuhi fungsi pembatas,
maka lakukan backtracking ke elemen sebelumnya.
6. Elemen ini akan diuji lagi dengan nilai n baru berdasarkan fungsi pembatas.
7. Lakukan cara yang sama dengan poin nomor 3.
8. Proses diatas akan dilakukan terus-menerus secara rekursif hingga ditemukan suatu
solusi atau tidak ditemukan suatu solusi.

9. Suatu solusi dinyatakan benar jika seluruh elemen kosong telah diisi dengan nilai
valid.

BAB 3
IMPLEMENTASI DAN PEMBAHASAN
3.1 Alur Algoritma Sudoku
Dari alur di bawah ini dapat di nyatakan bahwa dalam menentukan angka yang
akan muncul nantinya perlu mempertimbangkan kolom dan baris. Dengan
mempertimbangkan kolom dan baris maka dapat melakukan runut balik yang
artinya jika angka tersebut sudah ada maka tidak akan muncul untu yang kedua
kalinya.
7

3.2 Implementasi

Halawan awal pada proses yang akan dimainkan

8

Masukan angka sesuai dengan keingan dan setelah selesai klik button eksekusi dan

nantinya akan melakukan analisis sendiri seperti di bawah ini

Hasil di atas merupakan eksekusi dari angka bantuan yang telah di masukkan pada awal
permainan.
Apabila tidak memasukkan angka bantuan sistem telah menyediakan button Random
Grid yaitu angka bantuan yang telah di tetapkan oleh sistem dan nantinya akan
langsung di eksekusi.

9

Ini adalah angka bantuan dari sistem

Dan gambar di atas adalah hasil dari eksekusi

BAB 5
PENUTUP
4.1 Kesimpulan
10

Algoritma runut-balik (backtracking) merupakan algoritma yang cukup mangkus
untuk menyelesaikan berbagai persoalan. Hal ini disebabkan pada algoritma runutbalik, tidak perlu mencari semua kemungkinan solusi untuk diuji. Hanya
kemungkinan solusi yang mengarah pada solusi yang dipertimbangkan saja yang
perlu diuji, sehingga algoritma ini cukup mangkus untuk digunakan. Berbeda dengan
algoritma brute-force yang mencari semua kemungkinan solusi untuk diuji, sehingga
tidak mangkus. Oleh karena itu, algoritma runut-balik banyak diterapkan dalam
berbagai persoalan, terutama program game dan persoalan artificial intelligence. Hasil
analisis penggunaan algoritma runut-balik dalam menyelesaikan persoalan pengisian
angka-angka Sudoku menunjukkan bahwa algoritma ini cukup mangkus untuk
mendapatkan solusi persoalan tersebut. Sistem kerja algoritma runut-balik yang
sistematis dan ciri khasnya yang hanya memeriksa kemungkinan solusi yang memang
dapat dipertimbangkan untuk menjadi solusi akhir, diperkirakan dapat menjadi solusi
yang efektif dan efisien untuk persoalan ini.
4.2 Saran
1. Adanya keterbatasan pada saat aplikasi berjalan, yaitu terkadang aplikasi menjadi
not responding pada saat aplikasi melakukan uji coba. Diharapkan, pada penulisan
selanjutnya kode penulisan menggunakan threading sehingga aplikasi dapat
berjalan dengan baik.
2. Aplikasi dapat dikembangkan dengan menambah optimasi pada algoritma
backtracking dengan mengunakan teknik – teknik penyelesaian sudoku lainnya,
seperti hidden pair atau hidden triple.

Daftar Pustaka
http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/20092010/Makalah2009/MakalahIF3051-2009-054.pdf
http://sichesternonamanis.blogspot.com/2011/05/permainan-sudoku-denganmetode.html

11