Aplikasi Algoritma Brute Force dan Backtracking pada Permainan Slitherlink

dokumen-dokumen yang mirip
Penyelesaian Game Lights Out dengan Algoritma Runut Balik

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Strategi Optimized Brute Force Pada Tent Puzzle Solver

Penerapan Algoritma Greedy dan Backtrackng Dalam Penyelesaian Masalah Rubik s Cube

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

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

Penerapan Algoritma Backtracking pada Game The Lonely Knight

Penerapan Algoritma Backtrack pada Knight s Tour

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Penerapan Algoritma Runut-balik pada Permainan Math Maze

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

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

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

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

Oleh Lukman Hariadi

Penerapan Algoritma Backtracking dalam Permainan Futoshiki Puzzle

Penerapan Algoritma Brute Force di Permainan Nonogram

Algoritma Backtracking Pada Permainan Peg Solitaire

Penerapan Algoritma Branch & Bound dan Backtracking pada Game Flow

Penerapan Algoritma Brute Force pada permainan Countdown Number

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

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

Penyelesaian Permainan Pacman yang disederhanakan dengan Algoritma Backtracking

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Penerapan Algoritma Greedy dalam Permainan Tetris

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

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

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

PENYELESAIAN TEKA-TEKI PENYUSUNAN ANGKA MENGGUNAKAN ALGORITMA RUNUT BALIK

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

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

Penerapan Algoritma Runut Balik pada Pathuku Games

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

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

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Logika Permainan Sudoku

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

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

PENCARIAN SOLUSI DENGAN ALGORITMA BACKTRACKING UNTUK MENYELESAIKAN PUZZLE KAKURO

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penerapan Algoritma Brute Force pada Permainan Kartu 24 (24 game)

Strategi Algoritma Penyelesaian Puzzle Hanjie

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

dengan Algoritma Branch and Bound

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Menyelesaikan Kakuro Puzzle dengan Kombinatorial

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

Penerapan Algoritma Exact Cover Problem pada Persoalan Pentomino Puzzle

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Penggunaan Brute Force dalam Mencari Pergerakan pada Permainan Pokémon Shuffle

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

Aplikasi Matematika Diskrit dalam Permainan Nonogram

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

Algoritma Brute Force pada Fluid Particle Engine

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

Penerapan Strategi Algoritma Menyelesaikan Kompleksitas Pixel Maze secara Otomatis pada Virupizxel

PENYELESAIAN GAME TEKA-TEKI SILANG DENGAN MENERAPKAN ALGORITMA BACKTRACKING

Penerapan Logika dan Peluang dalam Permainan Minesweeper

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.

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

Aplikasi Algoritma Branch and Bound dalam Pencarian Solusi Optimum Job Assignment Problem

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Penggunaan Algoritma Backtracking Untuk Menentukan Keisomorfikan Graf

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Penerapan Algoritma Backtracking pada Pencarian Solusi Fill-in Crossnumber

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Penerapan Algoritma Greedy Best First Search untuk Menyelesaikan Permainan Chroma Test : Brain Challenge

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

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

PENGGUNAAN ALGORITMA BRUTE FORCE DALAM PERMAINAN PERMAINAN THE LEGEND OF DRUNKEN MAN

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

Implementasi Algoritma Runut Balik pada Permainan Texas Hold em Poker

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

Implementasi Algoritma DFS pada permainan Monument Valley

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

Kombinasi Tiga Algoritma untuk Puzzle Shikaku

Penerapan Algoritma Flood Fill untuk Mengurangi Ruang Pencarian pada Pencarian Solusi Puzzle Pentomino

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Transkripsi:

Aplikasi Algoritma Brute Force dan Backtracking pada Permainan Slitherlink Kevin Chandra Irwanto 13508063 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia if18063@students.if.itb.ac.id ABSTRAK Slitherlink merupakan suatu permainan logika yang bermain-main dengan titik, garis, dan angka. Slitherlink ini di-develop oleh Nikoli Co., Ltd. (perusahaan game di Jepang yang juga men-develop Sudoku). Cara bermainnya cukup mudah hanya dengan menaruh garis-garis sebanyak angka, dan yang terpenting adalah garis-garis tersebut harus membentuk suatu loop yang tidak boleh putus. Pada Slitherlink tidak mempunyai solusi ganda, yakni hanya 1 solusi mutlak untuk setiap puzzle-nya. Angka-angka yang digunakan hanya 0, 1, 2, dan 3. Pada makalah ini akan dibahas penyelesaian solusi untuk permainan Slitherlink ini dengan algoritma Brute Force dan Backtracking. Pembahasan juga disertai dengan peraturanperaturan dalam permainan Slitherlink ini. 2.1. Slitherlink Seperti yang telah dijelaskan sebelumnya, permainan ini adalah permainan sederhana yang hanya menggunakan garis, titik, dan angka. Kata Kunci : Slitherlink, Fences, Loop the Loop, Ouroboros, Dotty Dilemma, Brute Force, Backtracking, 1. PENDAHULUAN Slitherlink adalah suatu permainan logika yang hanya menggunakan angka, garis, dan titik dalam permainannya. Permainan ini di-develop oleh Nikoli Co., Ltd., perusahaan yang juga men-develop permainan Sudoku. Awal mula penulis bermain Slitherlink lewat suatu aplikasi pada situs jejaring yang sudah tidak asing lagi, Facebook. Lalu akhirnya tercetus ide untuk mengambil tema makalah tentang permainan ini. Jadi, pada makalah ini akan dibahas tentang bagaimana permainan Slitherlink itu sendiri, peraturanperaturan serta bagaimana penerapan algoritma Brute Force dan Backtracking dalam permainan ini. 2. DASAR TEORI Pada bagian ini akan dijelaskan secara rinci apa itu permainan Slitherlink maupun algoritma yang dipakai, dalam hal ini algoritma yang dipakai adalah algoritma Brute Force dan Backtracking. Gambar diatas memperlihatkan suatu solusi untuk penempatan angka seperti pada gambar. Berikut peraturan-peraturan permainan Slitherlink ini, antara lain : Angka di dalam suatu kotak kecil menandakan banyaknya garis yang harus dibuat diantara 4 garis yang tersedia, Garis-garis yang dibuat harus membentuk suatu loop (seperti pada contoh gambar di atas, garis hitam tebal membentuk suatu loop besar yang mengikuti aturan sebelumnya), karena itu tidak boleh ada garis yang bercabang, Hanya ada satu loop besar, tidak boleh ada 2 atau lebih loop dalam satu problem, dan Hanya ada satu solusi mutlak (tidak mengenal solusi ganda). Makalah IF3051 Strategi Algoritma Sem. I Tahun 2010/2011 Halaman 1

Bentuk dasar pada permainan ini tidak hanya terpaku pada bujur sangkar saja, namun bisa juga menggunakan suatu hexagon, pentagon, atau bentuk dasar lainnya. Pada Slitherlink terdapat kotak kosong yang tidak jelas berapa garis yang harus dibuat. Kotak-kotak inilah yang sebenarnya membuat permainan menjadi sulit, karena kotak dengan angka di dalamnya lebih mudah diisi daripada kotak yang tidak ada. Namun tingkat kesulitannya bukan berarti terletak pada banyaknya kotak yang tidak berangka, tetapi terletak pada kombinasi kotak-kotak itu sendiri. 2.2 Algoritma Brute Force Brute Force adalah sebuah pendekatan yang lempang(straight-forward) untuk memecahkan suatu masalah, biasanya didasarkan pada pernyataan masalah(problem statement) dan definisi konsep yang dilibatkan. Algoritma ini memecahkan masalah dengan sangat sederhana, langsung, dan dengan cara yang jelas(obvious way). Algoritma ini umumnya tidak cerdas dan tidak mangkus, karena ia membutuhkan jumlah langkah(step) yang besar dalam penyelesaiannya, terutama bila masalah yang dipecahkan berukuran besar. Walaupun bukan merupakan teknik pemecahan masalah yang mangkus, namun algoritma ini dapat diterapkan hampir untuk seluruh masalah yang ada. Bahkan ada beberapa masalah yang hanya bisa dipecahkan secara Brute Force. Ketika menggunakan Brute Force, biasanya membantu kita dalam menemukan algoritma yang lebih mangkus. Selain itu, implementasinya juga lebih sederhana dibanding algoritma-algoritma yang lebih canggih. Langkah pertama adalah menghilangkan semua kemungkinan di sekitar angka 0. 2.3 Algoritma Backtracking Backtrack atau juga disebut Runut-Balik adalah algoritma yang berbasis pada DFS(Depth First Search) untuk mencari suatu solusi persoalan secara lebih mangkus. Algoritma ini sebenarnya merupakan perbaikan dari algoritma Brute Force. Kadang pula disebutkan bahwa runut-balik merupakan bentuk tipikal dari algoritma rekursif(berulang). Istilah runut-balik pertama kali diperkenalkan oleh D.H. Lehmer tahun 1950. Algoritma ini banyak digunakan pada permainan logika seperti tic-tac-toe, catur, menemukan jalan keluar dari labirin, dan masalah-masalah pada AI(Artificial Intelligence). 3. METODE Metode yang digunakan adalah dengan algoritma Brute Force. Salah satu contoh problem yang termasuk kategori mudah adalah problem yang didalamnya terdapat angka 0. Langkah kedua, adalah menghilangkan kemungkinan yang menyebabkan tidak terjadinya suatu loop. Ketika menghilangkan kemungkinan tersebut, maka kotak 2 di atas dan di bawah kotak 0 harus diisi. Karena hanya tersisa 2 garis saja. Kemudian teruskan sampai ada kemungkinan garis tersebut bercabang. Makalah IF3051 Strategi Algoritma Sem. I Tahun 2010/2011 Halaman 2

Langkah ketiga adalah menghilangkan kemungkinankemungkinan garis bercabang, karena garis-garis tersebut harus membentuk suatu loop yang besar. Untuk kasus easy problem dengan metode tersebut dapat terselesaikan dengan mudah. Dikarenakan ada angka 0 dan susunan angka serta kotak yang masih relatif mudah untuk dilanjutkan dengan mengulangi kedua langkah diatas. Untuk selanjutnya akan dicoba dengan menggunakan contoh hard problem. Berikut salah satu contoh hard problem. Langkah kedua dan ketiga diulangi terus sampai selesai. Karena tidak ada kotak 0, jadi algoritma dimulai dari kotak paling kiri atas. Misal algoritma Brute Force memilih A terlebih dahulu. Menggunakan kedua langkah Makalah IF3051 Strategi Algoritma Sem. I Tahun 2010/2011 Halaman 3

metode sebelumnya yang diulang terus-menerus akan didapat : terlebih dahulu sebagai solusi problem tersebut. Jika diteruskan maka akan terlihat seperti gambar dibawah. Garis X dan Y harus diambil, tetapi hal ini mengakibatkan tidak dapat membuat suatu loop dengan baik. Sama halnya dengan garis C dan D. Karena stuck, maka disinilah algoritma Backtracking diperlukan. Kondisi dirunut-balik sampai dengan kondisi pemilihan garis A pada gambar sebelumnya. Selanjutnya, akan dicoba dengan memilih garis B sebagai solusi. Kembali muncul masalah antara dua pilihan. Misal kita pilih garis G sebagai salah satu solusi. Permasalahan lagi muncul memilih antara 2 pilihan yaitu garis E atau garis F yang akan dipilih sebagai solusi. Sesuai Brute Force, kita akan mengambil garis E Disini jika kita memilih I sebagai solusi, maka mau tidak mau kita harus mengambil garis K juga. Sehingga berakibat terjadinya 2 buah loop. Padahal dalam peraturan disebutkan tidak boleh ada 2 atau lebih loop. Maka dari itu kita Backtrack pengambilan garis I, lalu memilih garis J. Namun, pemilihan garis J juga mengakibatkan garis I, L, dan K menjadi tidak boleh diambil. Sehingga pada Makalah IF3051 Strategi Algoritma Sem. I Tahun 2010/2011 Halaman 4

kotak 2 yang dikelilingi garis KLMN, hanya tersisa garis M dan N saja. Hal ini jelas bertentangan karena garis tidak boleh bercabang. Lakukan Backtrack lagi sebelum kita memilih garis G sebagai solusi, kita ganti dengan memilih garis H sebagai solusi. Slitherlink ini ada beberapa trik. Misalnya jika ada kotak 3 bertetanggaan satu sama lainnya, harus dibuat sedemikian rupa agar membentuk angka 2 atau angka 5 tiduran. Dari contoh di atas, dapat ditarik kesimpulan jika ada 2 buah kotak 3 berdekatan, pasti garis-garis sejajarnya merupakan solusi. Karena jika tidak maka akan membentuk suatu loop kecil yang menyalahi aturan. Namun tidak akan dibahas semua trik-trik yang ada, karena pada dasarnya algoritma Brute Force adalah algoritma sederhana yang memerlukan waktu dan proses yang cukup lama tetapi pasti menghasilkan suatu result. 4. KESIMPULAN Pemilihan garis H mengakibatkan kotak 3 yang ditunjuk tidak dapat membuat tepat 3 buah garis disekitar angka tersebut. Sehingga harus di-backtrack lagi sampai dengan sebelum memilih garis E sebagai solusi, dan menggantinya dengan garis F. Hampir seluruh permainan logika dapat diselesaikan dengan algoritma Brute Force + Backtracking. Algoritma Brute Force sebenarnya dapat dilengkapi dengan beberapa trik lain yang dapat membantu penyelesaian menjadi lebih cepat, namun hal tersebut pasti menambah cost dari proses pencarian solusi. 5. DAFTAR REFERENSI [1] http://www.nikoli.co.jp/en/puzzles/slitherlink/ terakhir diakses 8 Desember 2010, [2] http://www.facebook.com/looppuzzle terakhir diakses 8 Desember 2010, [3] http://en.wikipedia.org/wiki/slitherlink terakhir diakses 8 Desember 2010, [4] Ir. Rinaldi Munir, M.T., Diktat Kuliah IF3051 Strategi Algoritma, STEI ITB, 2009. 6. PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 29 April 2010 Ttd Akhirnya selesai juga salah satu dari hard problem. Sebenarnya, dalam pengerjaan suatu problem dalam Kevin Chandra Irwanto 13508063 Makalah IF3051 Strategi Algoritma Sem. I Tahun 2010/2011 Halaman 5