Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

dokumen-dokumen yang mirip
SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

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

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

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

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penerapan Algoritma Backtracking pada Knight s Tour Problem

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Pembangkit Teka-Teki Silang dengan Algoritma Backtracking serta Aplikasi Permainannya yang Berbasis Web

Penerapan Algoritma Backtracking pada Game The Lonely Knight

ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU

Penyelesaian Permainan Pacman yang disederhanakan dengan Algoritma Backtracking

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

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Penyelesaian Permainan 3 missionaries and 3 cannibals Dengan Algoritma Runut-Balik

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Algoritma Runut-balik (Backtracking) Bagian 1

Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Penerapan Algoritma Backtrack pada Knight s Tour

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Pendeteksian Deadlock dengan Algoritma Runut-balik

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

ANALISIS PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI PERSOALAN LOMPATAN KUDA

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Pembentukan Pohon Pencarian Solusi dalam Persoalan N-Ratu (The N-Queens Problem)

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

PENCARIAN SOLUSI DENGAN ALGORITMA BACKTRACKING UNTUK MENYELESAIKAN PUZZLE KAKURO

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Penerapan Algoritma Backtracking pada Pencarian Solusi Fill-in Crossnumber

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

PENYELESAIAN TEKA-TEKI PENYUSUNAN ANGKA MENGGUNAKAN ALGORITMA RUNUT BALIK

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

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

Algoritma Runut-balik (Backtracking)

UNTUK PEMECAHAN MASALAH PADA PERMAINAN HASHIWOKAKERO

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

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

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Penerapan Algoritma Greedy dan Backtrackng Dalam Penyelesaian Masalah Rubik s Cube

Strategi Algoritma Penyelesaian Puzzle Hanjie

Algoritma Backtracking Pada Logic Game : Family Crisis (Game Penyebrangan)

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

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

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

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

OPTIMALISASI PENELUSURAN GRAF MENGGUNAKAN ALGORITMA RUNUT-BALIK

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

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.

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Penerapan Algoritma Runut-Balik pada Magic Square

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

1, 2, 3

Algoritma Backtracking Pada Permainan Peg Solitaire

Penggunaan Algoritma Backtracking Untuk Menentukan Keisomorfikan Graf

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

Penggunaan Algoritma Runut-balik Pada Pencarian Solusi dalam Persoalan Magic Square

Permasalahan Clique dalam Graf

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

Penerapan Algoritma Backtracking dalam Permainan Futoshiki Puzzle

ANALISIS PENYELESAIAN PUZZLE SUDOKU DENGAN MENERAPKAN ALGORITMA BACKTRACKING ABSTRAK

ANALISIS TEKNIK PENGISIAN KATA DALAM PERMAINAN TEKA-TEKI SILANG

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

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

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI TEKA-TEKI BATTLESHIP

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

ANALISIS PENYELESAIAN PUZZLE SUDOKU DENGAN MENERAPKAN ALGORITMA BACKTRACKING MEMANFAATKAN BAHASA PEMROGRAMAN VISUAL BASIC 6.0

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

IMPLEMENTASI BACKTRACKING ALGORITHM UNTUK PENYELESAIAN PERMAINAN SU DOKU POLA 9X9

Algoritma Pencarian String Knuth-Morris-Pratt Dalam Pengenalan Tulisan Tangan

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

Persoalan Cryptarithmetic dengan Algoritma Backtracking

Transkripsi:

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik Edward Hendrata (13505111) Program Studi Teknik Informatika, Institut Teknologi Bandung Jl Ganesha 10, Bandung E-mail: if15111@students.if.itb.ac.id Abstract Salah satu cara untuk menyelesaikan suatu permainan adalah mencoba semua kemungkinan yang ada sampai didapatkan solusi final yang memenuhi batasan dari permainan tersebut (metode brute force). Namun, melakukan pencarian solusi dengan mencoba semua kemungkinan memakan waktu dan resource yang sangat banyak. Untuk mengurangi pencobaan kemungkinan solusi, dapat digunakan algoritma runut balik (backtracking). Algoritma ini hanya akan melakukan pencobaan kemungkinan yang mengarah ke solusi saja. Salah satu permainan yang dapat diselesaikan dengan algoritma runut-balik adalah permainan Fig-Jig Kata Kunci : fig-jig, runut-balik, backtrack 1 Pendahuluan 1.1 Sekilas tentang permainan Permainan adalah kegiatan yang dibatasi oleh peraturan. Orang-orang melakukan permainan dengan tujuan sebagai rekreasi dan mengembangkan kemampuan fisik ataupun mental. Permainan dapat dilakukan dengan berbagai macam cara. Dapat dilakukan dengan beberapa orang baik saling berhadapan maupun saling berlawanan. Untuk melakukan permainan, biasanya diperlukan suatu keahlian misalnya seperti pada permainan catur. Dalam bermain catur, kita dituntut untuk memiliki kemampuan analisis dan berstrategi dengan baik agar dapat memenangkan permainan tersebut. Permainan sudah dilakukan sejak ribuan tahun yang lalu. Orang orang pada jaman dahulu menggunakan ranting pohon untuk melukis gambar kotak yang digunakan sebagai papan dan menentukan aturan mainnya pada saat itu juga. Jadi, pada saat itu juga, belum ada permainan yang mempunyai peraturan tetap. 2 Dasar Teori 2.1 Fig-Jig Fig-Jig merupakan permainan yang dikenalkan oleh majalah intisari. Fig-Jig dimuat sebagai permainan berhadiah bagi pembacanya yang berhasil menemukan solusi dari permainan tersebut. Pada dasarnya, Fig-Jig adalah permainan yang mirip dengan teka-teki silang. Permainan Fig-Jig mempunyai kotak-kotak yang sama dengan teka-teki silang, namun pada teka-teki silang, diberikan soal-soal yang jawabannya dapat ditulis pada kotak yang diketahui posisinya, sedangkan pada Fig-Jig diberikan jawabanjawaban yang harus ditulis pada kotak-kotak yang tidak diketahui posisinya. Jawaban yang diberikan berupa angka dengan digit yang berbeda-beda. Tugas dari pemain adalah mengisikan jawaban-jawaban tersebut pada kotak yang tersedia sehingga semua kotak terisi penuh. Saat ini, telah berkembang beribu-ribu permainan yang telah mempunyai peratutan tetap. Salah satu dari permainan tersebut adalah permainan Fig-Jig. Gambar 1. contoh Fig-Jig sederhana MAKALAH IF2251 STRATEGI ALGORITMIK 2007 1

2.2 Algoritma runut-balik Runut-balik (backtracking) adalah algoritma yang berbasis pada DFS untuk mencari solusi persoalan secara lebih mangkus. Runut balik, yang merupakan perbaikan dari algoritma brute force, secara sistematis mencari solusi persoalan di antara semua kemungkinan solusi yang ada. Dengan metoda ini, kita tidak perlu memeriksa semua kemungkinan solusi yang ada. Hanya pencarian yang mengarah ke solusi saja yang selalu dipertimbangkan. Akibatnya, waktu pencarian dapat dihemat. Runut-balik lebih alami dinyatakan dalam algoritma rekursif. Kadang-kadang disebutkan pula bahwa algoritma runut balik merupakan bentuk tipikal dari algoritma rekursif. 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 node). Simpulsimpul yang sudah dilahirkan dinamakan simpul hidup (live node). Simpul hidup yang sedang diperluas dinamakan simpul-e (expand node). 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 dibunuh 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. 4. Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul hidup untuk runut-balik 3 Algoritma runut balik pada Fig-jig 3.1 Pemindaian soal Pada tahap ini, program akan memindai soal untuk mendapatkan data-data yang diperlukan. 1. ListJawaban : array of array of string Pertama-tama, semua isi data diinisialisasikan. Data ini kemudian akan diisikan dengan jawaban-jawaban yang tersedia pada soal. Contoh pada gambar 1, listjawaban akan berisi : ListJawaban[3][0] = 126 ListJawaban[4][0] = 1357 ListJawaban[4][1] = 3356 ListJawaban[4][2] = 7132 ListJawaban[4][3] = dst Index dari array pertama meyatakan jumlah digit, dan index dari array kedua menyatakan data ke-. 2. soal : { isi : array of string length : integer ListSoal : array of soal Data ini merupakan list dari soal yang tersedia. Contoh pada gambar 1 : Gambar 2. Soal yang telah dibuat listnya MAKALAH IF2251 STRATEGI ALGORITMIK 2007 2

ListKotak terisi sebanyak 6 elemen soal dengan inisisalisasi awal isi =. isi pada ListKotak diisikan apabila pada soal mula-mula sudah ada kotak yang terisi. 3.2 Pseudo code algoritma runut balik pada Fig-Jig versi rekursif function solusi(idx : integer) : boolean { Mencari solusi Fig-Jig menggunakan algoritma backtrack Algoritma if( idx == lastidx+1 ) then {basis return true {seluruh kotak soal sudah terisi else // reccurent if (ListSoal[idx].isi <> ) return solusi(idx+1) // skip soal yang // terisi int i = 0; // inisialisasi ListJawaban elemen ke 0 int jmldigit = ListSoal[idx].length // jmldigit kotak soal while (ListJawaban[jmlDigit][i] <> ) { // masih ada elemen if (isvalid(listjawaban[jmldigit][i]], ListSoal[idx].isi)) { ListSoal[idx].isi = ListJawaban[jmlDigit][i] if (solusi(idx+1)) return true i = i+1 ListSoal[idx].isi = // kosongkan karena akan backtrack return false // backtrack -------------------------------------------------------------------- Function isvalid(jawaban : string, soal : string) { valid : boolean i : integer Algoritma i = 0 valid = true while (not(endofstring)) { if ((soal[i] <> ) (jawaban[i] <> soal[i])) { valid = false // tidak valid break return valid Pseudo code pencarian solusi Fig-Jig menggunakan algoritma backtrack MAKALAH IF2251 STRATEGI ALGORITMIK 2007 3

3.3 Skema Proses algoritma Dijalankan pada soal gambar 1 : START 12343 13642 kotak 1 313265 255617 313265 255617 kotak 2 126 126 kotak 3 1357 3356 7132 1357 kotak 4 3356 7132 3356 7132 kotak 5 313265 kotak 6 12343 kotak 7 3356 kotak 8 SOLUSI = tidak valid MAKALAH IF2251 STRATEGI ALGORITMIK 2007 4

4 Kesimpulan Permainan Fig-Jig dapat dapat diselesaikan dengan algoritma runut-balik. Algoritma runut-balik sudah cukup mangkus untuk diimplementasikan pada permainan Fig-Jig daripada algoritma brute force karena tidak perlu mencari seluruh kemungkinan solusi. Namun, algoritma runut-balik mempunyai kekurangan yaitu membutuhkan resource memori yang sangat besar karena sifatnya yang rekursif. 5 Referensi [RI] Munir, Rinaldi, Strategi Algoritmik, ITB, 2007. [WI] http://en.wikipedia.org/ Tanggal akses: 20 Mei 2007 pukul: 15.00 MAKALAH IF2251 STRATEGI ALGORITMIK 2007 5