PENYELESAIAN GAME TEKA-TEKI SILANG DENGAN MENERAPKAN ALGORITMA BACKTRACKING

dokumen-dokumen yang mirip
Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

PENYELESAIAN TEKA-TEKI PENYUSUNAN ANGKA MENGGUNAKAN ALGORITMA RUNUT BALIK

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Oleh Lukman Hariadi

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

BAB I PENDAHULUAN. pengalaman belajar untuk semua peserta didik (Pusat Kurikulum Badan

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Algoritma Backtracking Pada Permainan Peg Solitaire

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

MAKALAH STRATEGI ALGORITMIK (IF 2251) ALGORITMA RUNUT BALIK DALAM GAME LABIRIN

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Penerapan Algoritma Exact Cover Problem pada Persoalan Pentomino Puzzle

Penerapan Algoritma Backtracking pada Pewarnaan Graf

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

PENERAPAN ALGORITMA RUNUT-BALIK (BACKTRACKING) DALAM PENYELESAIAN PERMAINAN SUDOKU

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Kecerdasan Buatan/ Artificial Intelligence

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

Analisis Penggunaan Algoritma Backtracking dalam Penjadwalan Kuliah

Aplikasi Algoritma Brute Force dan Backtracking pada Permainan Slitherlink

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

PENCARIAN SOLUSI DENGAN ALGORITMA BACKTRACKING UNTUK MENYELESAIKAN PUZZLE KAKURO

UKDW BAB 1 PENDAHULUAN. 1.1 Latar Belakang

ANALISIS TEKNIK PENGISIAN KATA DALAM PERMAINAN TEKA-TEKI SILANG

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

Penerapan Algoritma Runut-Balik dan Graf dalam Pemecahan Knight s Tour

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Penggunaan Algoritma Backtracking Untuk Menentukan Keisomorfikan Graf

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Penerapan Algoritma Greedy dan Backtrackng Dalam Penyelesaian Masalah Rubik s Cube

Pemanfaatan Pohon dalam Realisasi Algoritma Backtracking untuk Memecahkan N-Queens Problem

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

PENERAPAN PEWARNAAN GRAF DALAM PENJADWALAN

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

@UKDW. Lampiran B - 1 BAB 1 PENDAHULUAN

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

BAB I PENDAHULUAN. 1.1 Latar Belakang

Penerapan Algoritma Backtracking pada Game The Lonely Knight

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

PENCARIAN MAKSIMUM CLIQUE DALAM GRAF DENGAN MENGGUNAKAN ALGORITMA BRANCH AND BOUND

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

UNTUK PEMECAHAN MASALAH PADA PERMAINAN HASHIWOKAKERO

Penerapan Teori Graf Pada Algoritma Routing

Implementasi Algoritma Backtracking untuk Memecahkan Puzzle The Tile Trial pada Permainan Final Fantasy XIII-2

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Implementasi Algoritma DFS pada permainan Monument Valley

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Penerapan Teori Graf untuk Menyelesaikan Teka-Teki Permainan The Knight's Tour

KI Kecerdasan Buatan Materi 7: Pencarian dgn. Batasan Kondisi (Constraint Satisfaction Problems)

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis

PERBANDINGAN ALGORITMA BFS DAN DFS DALAM PEMBUATAN RUTE PERJALANAN OBJEK PERMAINAN 2 DIMENSI

Penerapan Pohon Untuk Menyelesaikan Masalah Labirin

Penerapan Algoritma Backtracking dalam Permainan Futoshiki Puzzle

Penerapan Algoritma Runut Balik pada Pathuku Games

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

OPTIMALISASI PENELUSURAN GRAF MENGGUNAKAN ALGORITMA RUNUT-BALIK

ALGORITMA RUNUT-BALIK (BACKTRACKING ALGORITHM) PADA MASALAH KNIGHT S TOUR

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

PEMBANGKIT TEKA-TEKI SILANG DENGAN ALGORITMA BACKTRACKING SERTA APLIKASI PERMAINANNYA YANG BERBASIS WEB

METODE PERKIRAAN UKURAN POHON PENCARIAN

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Penerapan Algoritma Backtracking pada Pencarian Solusi Fill-in Crossnumber

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Penerapan Algoritma Brute Force pada Teka-teki Magic Square 3 x 3

Asah Otak dengan Knight s Tour Menggunakan Graf Hamilton dan Backtracking

Penerapan Kombinatorial dalam Permainan Sudoku

Pemanfaatan Algoritma Runut-balik dalam Penentuan Golongan Suara pada Dunia Paduan Suara

Penggunaan Metode Depth First Search (DFS) dan Breadth First Search (BFS) pada Strategi Game Kamen Rider Decade Versi 0.3

I. PENDAHULUAN II. DASAR TEORI. Contoh lainnya: Solusi: 0= V,1= I,2= O,3= R, 4= N,5= L,7= A,8= F,9= E.

BAB 1 PENDAHULUAN. untuk kesenangan dan kadang-kadang digunakan sebagai sarana pendidikan. Permainan

Strategi Permainan Menggambar Tanpa Mengangkat Pena

Solusi Terbaik Permainan Rocket Mania Deluxe dengan Pendekatan Algoritma BFS dan Algoritma Greedy

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

UKDW BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

Artificial Intelegence/ P_3 EKA YUNIAR

Penerapan Algoritma Brute Force di Permainan Nonogram

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Transkripsi:

PENYELESAIAN GAME TEKA-TEKI SILANG DENGAN MENERAPKAN ALGORITMA BACKTRACKING Tiffany Adriana - 13505068 Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung if15068@students.if.itb.ac.id ABSTRAK Pada saat ini telah banyak permainan (game) yang diperkenalkan kepada masyarakat umum. Baik game tradisional maupun game digital yang membutuhkan media khusus untuk memainkannya. Berbagai jenis game dimainkan oleh kalangan umur tertentu. Salah satu jenis game yang banyak dimainkan oleh orang dari berbagai umur adalah game Teka-Teki Silang. Permainan ini merupakan salah satu contoh Constraint Satisfaction Problem, yang memiliki batasan tertentu untuk menghasilkan solusi. Batasan pada game Teka-Teki Silang adalah panjang kata yang akan dimasukkan dan kesesuaian huruf pada dua kata yang saling bersilangan. Ada orang yang menghabiskan banyak waktu untuk menyelesaikan Teka-Teki Silang. Hal ini dapat disebabkan karena kurang efektifnya modus yang digunakan untuk menyelesaikan Teka- Teki Silang. Pada makalah ini penulis menampilkan pembahasan mengenai pemilihan algoritma yang tepat untuk menyelesaikan game Teka-Teki Silang secara efektif dan dalam waktu yang diharapkan lebih singkat. Algoritma yang digunakan adalah Backtracking (Runut Balik). Algoritma ini dilakukan ketika User akan memasukkan kata ke kotak. Pemeriksaan dilakukan terhadap panjang kata yang dimasukkan, dan kesesuaian huruf pada kata yang saling bersilangan. Jika terdapat ketidak-sesuaian, maka dilakukan backtrack. Pemeriksaan dilakukan sampai semua kotak terpenuhi dengan kata yang tepat. Kata kunci: Backtracking, Constraint Satisfaction Problem, Domain, Variabel, Game Teka-Teki Silang. 1. PENDAHULUAN Manusia adalah makhluk dengan aktivitas tinggi. Setiap orang memiliki tugasnya masing-masing. Untuk melepaskan diri dari kepenatan pekerjaan, banyak orang yang menyegarkan pikiran dengan bermain game. Ada banyak jenis game yang telah dikenal luas. Mulai dari game tradisional sampai game digital. Salah satu contoh game yang telah mendunia adalah teka-teki silang (crossword puzzle). Banyak orang memainkan game teka-teki silang, mulai dari anak kecil sampai orang dewasa. Tujuan game teka-teki silang adalah mengisi kotak-kotak dengan kata yang terdapat pada daftar kata yang tersedia. Pada makalah ini penulis ingin menunjukkan cara menyelesaikan teka-teki silang secar aefektif. Algoritma yang digunakan di sisni adalah backtracking. 2. PEMECAHAN PUZZLE TEKA-TEKI SILANG 2.1 Constraint Satisfaction Problem Constraint Satisfaction Problem (CSP) adalah problem matematis dimana harus ditemukan suatu state atau objek yang memenuhi sejumlah constraint (batasan) atau kriteria. Constraint meng-enumerasi nilai yang mungkin digunakan oleh suatu set variabel. Biasanya, domain terbatas adalah set terbatas dari elemen arbitrary. CSP pada domain seperti ini mengandung sebuah set variabel yang nilainya hanya bias diambil dari domain, dan suatu set constraint yang tiap constraint-nya menspesifikasi nilai yang boleh untuk suatu grup variabel. Solusi untuk masalah ini adalah evaluasi dari variabel-variabel yang memenuhi semua constraint. Dengan kata lain, solusi untuk meng-assign suatu nilai pada tiap variabel adalah dengan suatu cara dimana semua constraint dapat dipenuhi oleh nilai-nilai ini. Karakterisasi suatu Constraint Satisfaction Problem biasanya dibentuk dan didefenisikan dengan dimana X : suatu set variabel D : domain nilai C : suatu set constraint Tiap constraint adalah kembalian sepasang

dimana t adalah sebuah tuple of variable dan R adalah set of tuple of nilai, dengan hasil dari R adalah relasi. Semua tuple ini berjumlah sama dengan elemen. Evaluasi dari variabel adalah suatu fungsi dari variabel Evaluasi seperti ini memenuhi constraint jika Sedangkan solusi adalah evaluasi yang memenuhi semua constraint. Pada kenyataannya, beberapa constraint yang sering digunakan diekspresikan dengan bentuk yang compact, bukan meng-enumerasi semua nilai variabel yang mungkin. Salah satu constraint yang paling sering digunakan adalah constraint yang mengekspresikan bahwa nilai dari beberapa variabel semuanya berbeda. Salah satu contoh sederhana dari Constraint Satisfaction Problem adalah permainan Teka-Teki Silang. 2.2 Teka-Teki Silang Teka-teki Silang merupakan permainan yang berkaitan dengan huruf. Pada awal permainan tersedia sebuah template game board berbentuk segi empat yang tersusun dari kotak-kotak kecil. Di antara kotak kecil ini ada yang dapat diisi oleh User, yaitu kotak kosong biasanya direpresentasikan dengan kotak berwarna putih. Kotak putih yang harus diisi User terdiri dari dua jalur, yaitu mendatar dan menurun. Pada beberapa kotak tertentu terjadi persilangan antara dua kata, dimana tempat yang bersilangan harus diisi dengan huruf yang sama. Tujuan utama permainan adalah mengisi semua kotak berwarna putih dengan kata yang telah ditentukan. User harus menyesuaikan panjang kotak yang tersedia dengan panjang kata yang akan dipilih. Berikut adalah contoh template kotak yang harus diisi: 1 2 3 4 5 6 7 8 Gb. 1 Template Game Teka-Teki Silang (3) Angka 1,2,3,4,5,6,7,8 pada board menunjukkan kata yang akan dimulai pada kotak tersebut. 2.3 Algoritma Backtracking Backtracking adalah algoritma rekursif yang menjaga assignment parsial dari variabel. Pada awalnya semua variabel yang akan diperiksa belum di-assign dengan nilai apapun. Pada tiap tahap, sebuah variabel dipilih dan diassign dengan semua nilai yang mungkin secara bergantian. Untuk setiap nilai, konsistensi dari assignment parsial dengan constraint diperiksa, jika konsisten maka dilakukan fungsi rekursif. Jika semua nilai sudah dicoba, algoritma akan melakukan backtrack. Pada algoritma Backtracking, konsistensi didefenisikan sebagai pemenuhan semua constraint yang semua variabelnya telah di-assign. Algoritma Backtracking mencoba tiap kemungkinan sampai mendapatkan solusi yang benar. Selama pencarian, jika alternatif solusi tidak memberikan hasil yang benar, pencarian melakukan backtrack ke titik pilihan titik yang memiliki alternatif yang berbeda, kemudian mencoba alternatif selanjutnya. Jika alternatif yang dijalankan tidak memberikan hasil, pencarian akan kembali ke titik pilihan sebelumnya dan mencoba alternatif berikutnya yang ada di sana. Jika tidak ada titik pilihan lagi, maka pencarian gagal. Pencarian ini biasanya didapat dari fungsi rekursif dimana tiap instance mengambil satu atau lebih variabel dan secara alternatif meng-assign variabel tersebut dengan semua nilai yang mungkin. Algoritma Backtracking mirip dengan pencarian Depth-First Search, tapi algoritma Backtracking menggunakan ruang yang lebih kecil. Hal ini dikarenakan Backtracking hanya menyimpan satu solusi terakhir, dan meng-update solusi ini saja. Untuk mempercepat pencarian, sebelum melakukan pemanggilan rekursif, jika suatu nilai sudah dipilih algoritma akan melakukan salah satu dari dua kemungkinan berikut. Algoritma akan menghapus nilai tersebut dari domain yang belum di-assign (melakukan forward checking), atau algoritma akan memeriksa semua batasan untuk melihat nilai lain yang tidak termasuk dalam nilai yang baru di-assign ini (constraint propagation). 2.4 Menyelesaikan Game Teka-Teki Silang dengan Algoritma Backtracking Kita akan menyelesaikan template kotak game teka-teki silang yang telah ditunjukkan di atas dengan daftar kata yang harus diisi adalah sebagai berikut: AFT LASER KNOT ALE LEE TIE EEL LINE KEEL HEEL SAILS

HIKE SHEET HOSES STEER CSP biasanya direpresentasikan sebagai graf tidak berarah, disebut Constraint Graph. Pada graf ini, simpul merepresentasikan variabel dan busur merepresentasikan constraint biner. Sekarang kita perkenalkan variabel untuk merepresentasikan tiap kata dalam puzzle. Jadi kita memiliki variabel: Tabel 1, Daftar Variabel dan Domain Variabel Sel Domain 1 Datar 1 {HOSES, LASER, SAILS, SHEET, 4 Datar 4 {HEEL, HIKE, KEEL, KNOT, LINE} 7 Datar 7 {AFT, ALE, EEL, LEE, TIE} 8 Datar 8 {HOSES, LASER, SAILS, SHEET, 2 Turun 2 {HOSES, LASER, SAILS, SHEET, 3 Turun 3 {HOSES, LASER, SAILS, SHEET, 5 Turun 5 {HEEL, HIKE, KEEL, KNOT, LINE} 6 Turun 6 {AFT, ALE, EEL, LEE, TIE} Domain dari tiap variabel adalah daftar kata yang mungkin menjadi nilai variabel tersebut. Jadi, variabel 1Datar membutuhkan kata dengan panjang lima huruf, 2Turun membutuhkan kata dengan panjang lima huruf, 3Turun membutuhkan kata dengan panjang empat huruf, dst. Perlu diingat karena tiap domain memiliki 5 elemen dan ada 8 variabel, jadi jumlah state yang harus diperhitungkan mendekati 5^8=390.625. Constraint pada puzzle ini seluruhnya adalah constraint biner: 1Datar[3] = 2Turun[1] 1Datar[5] = 3Turun[1] 4Datar[2] = 2Turun[3] 4Datar[3] = 5Turun[1] 4Datar[4] = 3Turun[3] 7Datar[1] = 2Turun[4] 7Datar[2] = 5Turun[2] 7Datar[3] = 3Turun[4] 8Datar[1] = 6Turun[2] 8Datar[3] = 2Turun[5] 8Datar[4] = 5Turun[3] 8Datar[5] = 3Turun[5] huruf ketiga dari 1Datar harus sama dengan huruf pertama dari 2Turun Graf yang berhubungan adalah: 1D 7D 2T 3T 5T Gb. 2 Graf keterhubungan antar variabel Kita akan menyelesaikan puzzle ini dengan Backtracking. Pertama kita dapat mengurutkan variabel dengan urutuan sebagai berikut: 1Datar, 2Turun, 3Turun, 4Datar, 7Datar, 5Turun, 8Datar, 6Turun. Kemudian kita mulai meng-assign 1Datar HOSES Gb. 3 1Datar di-assign dengan kata HOSES 4D 6T 8D

2Turun HOSES LASER SAILS, 1Datar[3] tidak sama dengan 2Turun[1] LINE Karena semua kemungkinan gagal, maka dilakukan backtrack pada variabel yang terkahir diisi, ysitu 3Turun 3Turun SHEET Gb. 4 2Turun di-assign dengan kata SAILS Gb. 6 3Turun di-assign dengan kata SHEET 3Turun HOSES LASER SAILS 4Datar HEEL 4Datar HIKE Gb.7 4Datar di-assign dengan kata HIKE Gb. 5 3Turun di-assign dengan kata SAILS 4Datar HEEL HIKE KEEL KNOT

Begitu seterusnya sampai ditemukan hasil sebagai berikut: Gb.8 Game Teka-Teki Silang berhasil diselesaikan 3. KESIMPULAN Algoritma backtrack adalah algoritma yang cukup mangkus, karena kita tidak perlu memeriksa semua variabel. Tapi hanya perlu mengembangkan satu variabel, dan melakukan backtrack jika terjadi kesalahan. Hal ini dapat memberikan keuntungan, yaitu efektivitas waktu dalam pengerjaan. Karena itu algoritma backtracking banyak digunakan dalam berbagai bidang yang berkaitan dengan Intelijensi Buatan (Artificial Inteligence). Untuk menyelesaikan game teka-teki silang, algoritma backtracking dapat dikatakan cukup mangkus. Pada satu waktu tertentu backtracking hanya melakukan pemeriksaan terhadap satu variabel dan melakukan pengembangan terhadap variabel tersebut. Hal ini memungkinkan kita untuk menyelesaikan game dalam waktu yang relatif lebih singkat dan pencarian yang dilakukan lebih efektif. REFERENSI [1] Munir, Rinaldi. Strategi Algoritmik, 2007. [2] Backtracking Algorithm. http:\\en.wikipedia.org Diakses tanggal 17 Mei 2007 [3] Constraint Satisfaction Problem http:\\en.wikipedia.org Diakses tanggal 17 Mei 2007