Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

dokumen-dokumen yang mirip
Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

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

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Implementasi Algoritma DFS pada permainan Monument Valley

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan Algoritma Runut-balik pada Permainan Math Maze

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

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

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

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

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Strategi Optimized Brute Force Pada Tent Puzzle Solver

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

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

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

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Algoritma Traversal di dalam Graf

Perbandingan BFS, DFS dan Greedy pada Permainan Logika Crossing Bridge

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

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Penerapan Algoritma Backtrack pada Knight s Tour

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

Penerapan Algoritma BFS, DFS, DLS dan IDS dalam Pencarian Solusi Water Jug Problem

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penerapan Algoritma Backtracking pada Knight s Tour Problem

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

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

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

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

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 Greedy untuk menyelesaikan Permainan Othello

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Algoritma Backtracking Pada Permainan Peg Solitaire

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Oleh Lukman Hariadi

Aplikasi Algoritma Brute Force dan Backtracking pada Permainan Slitherlink

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

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

Penerapan Algoritma Backtracking pada Game The Lonely Knight

Algoritma Puzzle Pencarian Kata

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

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

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

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Implementasi Algoritma Greedy, BFS, Branch and Bound, dan Metode Heuristik dalam Permainan Reversi

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

Penggunaan Graf dalam Pemodelan Matematis Permainan Delapan Jari

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Perbandinganan Penggunaan Algoritma Greedy dan Modifikasi Algoritma Brute Force pada Permainan Collapse XXL

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

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

Penyelesaian Permainan Sliding Puzzle 3x3 Menggunakan Algoritma Greedy Dengan Dua Fungsi Heuristik

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

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

Penerapan Algoritma Greedy dan Backtrackng Dalam Penyelesaian Masalah Rubik s Cube

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Penerapan Algoritma Runut-Balik pada Magic Square

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

Algoritma Brute Force pada Fluid Particle Engine

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

Perbandingan Algoritma Greedy & Bactracking Dalam Penyelesaian Permainan 2048

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Algoritma Runut-balik (Backtracking)

Penggunaan BFS dan DFS untuk Pixel Traversing

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

Implementasi Algoritma Runut Balik pada Permainan Texas Hold em Poker

PENYELESAIAN TEKA-TEKI PENYUSUNAN ANGKA MENGGUNAKAN ALGORITMA RUNUT BALIK

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

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

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

PENCARIAN SOLUSI DENGAN ALGORITMA BACKTRACKING UNTUK MENYELESAIKAN PUZZLE KAKURO

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

Perbandingan BFS dan DFS pada Pembuatan Solusi Penyelesaian Permainan Logika

Permasalahan Clique dalam Graf

Transkripsi:

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning Mamat Rahmat / 13512007 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia mamat.rahmat@students.itb.ac.id Abstrak Flow Free adalah sebuah permainan bertema puzzle yang cukup populer. Solusi dari game Flow Free ini tidak unik. Makalah ini akan membahas metode pencarian semua solusi dari game tersebut menggunakan brute force dan pruning. Untuk memenangkan permainan, pemain harus menghubungkan setiap pasangan lingkaran berwarna dengan lintasan. Kata Kunci Flow Free, Puzzle, Brute Force, Pruning, Depth First Search. I. PENDAHULUAN Flow Free adalah sebuah permainan bertema puzzle. Game ini tersedia dalam berbagai macam platform, dari web hingga mobila Game ini terdiri dari sebuah matriks n x n berisi beberapa pasangan lingkaran berwarna yang tersebar di dalam grid. Untuk selanjutnya dalam makalah ini sel berisi lingkaran berwarna dituliskan sebagai colored cell. Contoh Solusi Game Flow Free [2] Contoh Tampilan Game Flow Free [2] Tujuan dari game ini adalah membangun lintasan dengan menelusuri sel dari setiap sel berisi lingkaran berwarna ke sel pasangannya sedemikian sehingga tidak ada lintasan yang berpotongan. Untuk membentuk lintasan, pemain harus melakukan klik atau touch pada salah satu colored cell lalu dengan melakukan drag, pemain menelusuri sel ke kiri, ke kanan, ke atas atau ke bawah sedemikian sehingga lintasan berakhir di colored cell pasangannya. Lintasan dianggap tidak valid jika tidak berakhir di colored cell pasangannya atau jika lintasan memotong lintasan lain yang telah dibuat sebelumnya. Pemain juga dapat menghapus lintasan yang telah dibuat tetapi dengan konsekuensi penambahan jumlah move yang dicatat, sehingga menyebabkan pengurangan nilai. Tingkat kesulitan dari game ini berdasarkan kepada besar matriks yang digunakan serta sebaran pasangan dari colored cell.

II. LANDASAN TEORI Untuk mendapatkan semua solusi dari permainan flow free ini dibutuhkan algoritma yang dapat mencakup semua kemungkinan kandidat solusi. Salah satu metode yang dapat digunakan adalah metode brute force, yaitu dengan membangkitkan semua kemungkinan lintasan dari setiap pasangan dan metode pruning, yaitu memangkas pembangkitan lintasan dengan mengabaikan yang tidak mungkin menghasilkan solusi. A. Metode Brute Force Sesuai namanya, sebuah algoritma Brute Force merupakan algoritma yang mencoba semua kemungkinan yang ada dan biasanya sangat bergantung kepada kinerja dari komputer. ini seringkali dikatakan tidak cerdas dan pada umumnya memiliki tingkat kemangkusan yang sangat rendah. Hal tersebut dikarenakan algoritma ini biasanya membutuhkan jumlah langkah pengerjaan yang besar dalam melakukan penyelesaian masalah, terutama jika masalah yang diberikan oleh pengguna tergolong cukup besar. Karena hal-hal tersebutlah algoritma ini juga mendapat julukan algoritma yang naïf. brute force biasanya menjadi pilihan yang kurang disukai, karena terkadang sangat bergantung dengan kemampuan alat komputasi dalam pengerjaannya. Hal ini jugalah yang membuat algoritma brute force digunakan sebagai alat pembanding dalam menguji kompleksitas sebuah algoritma baru. Namun, meskipun algoritma brute force bukan merupakan teknik pemecahan masalah yang mangkus, hampir semua persoalan yang ada di dunia ini dapat diselesaikan dengan brute force, bahkan ada beberapa operasi yang sampai saat ini hanya bisa diselesaikan menggunakan brute force. brute force juga terkadang lebih mudah diimplentasikan dan lebih mudah dipahami karena kesederhanaannya. Oleh karena itu biasanya dalam proses pengajaran cara pertama yang diajarkan biasanya adalah brute force, sebelum masuk ke cara yang lebih canggih. 3. Merupakan dasar dan penghasil beberapa algoritma penting lain 4. Kebih kuat dalam menghadapi berbagai macam kemungkinan masalah Kekurangan : 1. Jarang menghasilkan algoritma mangkus 2. Karena banyak proses yang dijalankan, kadang membutuhkan waktu lama dalam penyelesaian 3. Kerkadang sangat bergantung pada kualitas hardware B. Metode Pruning Metode pruning, yaitu memangkas pembangkitan state pencarian dengan mengabaikan state yang tidak mungkin menghasilkan solusi. Misalkan tree di bawah merepresentasikan ruang pencarian yang harus ditelusuri untuk menemukan solusi Contoh pohon ruang pencarian Dengan lemma yang dapat dibuktikan secara matematis, kita dapat memangkas pencarian dengan tidak menelusuri state pencarian yang tidak perlu. Kedua hal di atas disebabkan karena pada dasarnya brute force didasarkan pada pola pikir paling sederhana manusia, namun tidak bisa dikalkulasikan di manusia karena keterbatasan kinerja otaknya. Berikut adalah kelebihan dan kekurangan dari algoritma brute force: Kelebihan 1. Dapat diaplikasikan secara luar pada berbagai persoalan 2. Sederhana dan lebih mudah dipahami Contoh pruning pada pohon ruang pencarian

Karekteristik dari metode pruning ini adalah : 1. Semakin tinggi state atau semakin kecil kedalaman state yang kita pruning maka semakin banyak state pencarian yang kita pangkas 2. Dengan pruning yang tepat, keuntungan dari pemangkasan ini dapat mengurangi waktu pencarian secara eksponensial. Dengan metode ini, waktu penelusuran dapat dikurangi. Salah satu aplikasi dari metode pruning yang terkenal adalah penggunaan Alpha-Beta pruning pada komputer catur [4]. Alpha-beta pruning mengeliminasi kemungkinan langkah ke depan dari himpunan hasil analisis jika mereka terbukti tidak lebih baik dari langkah yang telah ditemukan. Pengembang dari komputer catur Deep Blue menggunakan algoritma ini dan menghasilkan inovatif teori yang disebut sebagai "singular extensions" [5]. 4. Penelusuran berhenti ketika simpul awal dari DFS ini sudah tidak mempunyai tetangga yang belum pernah dikunjungi. Berikut ini adalah pseudocode penelusuran graf dengan algoritma DFS. [1] procedure DFS(input v : integer) { Mengunjungi seluruh simpul graf dengan algoritma pencarian DFS Masukan: v adalah simpul awal kunjungan Keluaran: semua simpul yang dikunjungi ditulis ke layar } w : integer write(v) dikunjungi[v] <- true for tiap simpul w yang bertetangga dengan simpul v do if not dikunjungi[w] then DFS(w) endif endfor Permainan catur pertama dari komputer Deep Blue melawan Kasparov C. Pencarian Depth-First-Search Depth-First Search (DFS) atau algoritma pencarian mendalam merupakan salah satu algoritma untuk melakukan traversal pada graf. ini menelusuri simpul tetangga pertama dari simpul yang dikunjungi saat ini, kemudian masuk ke simpul anak dan melakukan hal yang sama sampai simpul tujuan ditemukan atau tidak ada lagi anak dari simpul tersebut. Jika hal itu terjadi, maka akan dilakukan runut balik (backtrack) ke simpul level atasnya. DFS secara alami menggunakan rekursif dalam implementasinya. Berikut ini adalah langkahlangkah traversal graf dengan memanfaatkan algoritma DFS : 1. Kunjungi simpul akar. 2. Untuk sebuah tetangga dari simpul ini yang belum pernah dikunjungi sebelumnya, anggap simpul ini sebagai akar untuk melakukan DFS pada langkah pertama. 3. Jika sudah tidak terdapat tetangga yang belum pernah dikunjungi lagi, lakukan runut balik ke simpul yang telah dikunjungi sebelumnya. III. METODE PEMECAHAN MASALAH A. Lemma Jika suatu sel berada pada semua kemungkinan lintasan suatu pasangan colored cell, maka lintasan solusi dari pasangan colored cell itu juga mengandung sel tersebut Hal ini benar karena himpunan lintasan solusi suatu pasangan colored cell merupakan himpunan bagian semua lintasan suatu pasangan colored cell. Sehingga karakteristik yang terdapat pada himpunan semua lintasan juga merupakan karakteriskik dari lintasan solusi. Akibatnya, pada pembangunan lintasan untuk pasangan colored cell selanjutnya, sel yang pasti milik colored cell sebelumnya tidak akan ditelusuri. Prinsip inilah yang akan dipakai pada metode pruning di pembahasan selanjutnya. B. Model Game Flow Free Game Flow Free dimodelkan dalam matriks nxn berisi dua buah bilangan 1, 2, 3, hingga banyaknya colored cell yang merepresentasikan pasangan colored cell pada game sebenarnya. Sementara cell yang bukan colored cell berisi bilangan nol.

C. Penelusuran Lintasan. penelusuran lintasan diimplementasikan menggunakan algoritma DFS. Akar dari algortma DFS ini adalah koordinat dari colored cell pertama dari yang dicari. reserved[w] dimana w adalah sebuah koordinat, artinya w pasti merupakan bagian dari colored cell nomer reserved[w], kecuali untuk reserved[w] = 0. Simpul solusi adalah koordinat dari colored cell kedua. procedure DFSFlowFree(input v : point, num: interger, L : list, z : point) { Menelusuri grid dengan memperhatikan variable reserved sehingga diperoleh semua lintasan dari akar ke simpul solusi. Masukan: v adalah koordinat dari sel, num adalah nomer colored cell yang sedang dicari lintasannya, L adalah list dari lintasan dari koordinat colored cell pertama hingga v, z adalah kooridinat colored cell kedua. Keluaran: lintasan yang menghubungkan colored cell } w : point L.push_back(v) if v = z then masukkan L ke Lintasan[num] else for tiap point w yang bersisian dengan v do if w.x>=1 and w.x<=nrow and w.y>=1 and w.x<=ncol and grid[w]=0 and not dikunjungi[w] and reserved[w]=0 then dikunjungi[v] <- true DFS(w) dikunjungi[v] <-false endif endfor D. Utama Untuk setiap colored cell, cari semua lintasan menggunakan algoritma DFSFlowFree, lalu iterasi untuk setiap koordinat sel, jika ia terdapat pada semua kemungkinan lintasan, tandai reserved di koordinat tersebut dengan nilai nomer dari colored cell. Lakukan hal ini dua kali. Jika iterasi selesai, reserved akan berisi semua cell yang merupakan milik dari colored cell dengan nomor reserved[koordinal sel]. w : point for a in [1..2] for k in[1..ncoloredcell] L.empty() DFSFlowFree(CoordColoredCell1[k], L, I, CoordColoredCell2[k]) for i in [1..NRow] for j in [1..NCol] if point(i,j) is in every L[k] then reserved(point(i,j)) <- k IV. KESIMPULAN DAN SARAN brute force dapat diterapkan sebagai solusi pemecahan masalah pencarian semua solusi permainan Flow Free yang juga membuktikan bahwa brute force memang memiliki lingkup penyelesaian yang cukup besar. Metode pruning menggunakan lemma dari karakteristik persoalan dapat memangkas waktu pencarian. brute force ini dapat juga ditingkatkan dengan penambahan algoritma greedy di dalamnya, misalnya dengan membangkitkan lintasan mulai dari colored cell dengan jarak antar pasangannya adalah paling kecil. V. PENGANTAR Penulis mengucapkan syukur kepada Tuhan Y.M.E dan terima kasih kepada rekan-rekan yang telah membantu penulis sehingga pengerjaan makalah ini dapat dilakukan dan diselesaikan. 1. Rinaldi M. dan Masayu L.K selaku dosen Strategi 2. Dea Monik yang tak kenal lelah memberi semangat 3. dan rekan-rekan lain yang tidak disebutkan namanya REFERENSI [1] Rinaldi Munir, Diktat Kuliah IF3051 Strategi, Bandung: Program Studi Teknik Informatika ITB, 2009. [2] http://moh97.us/flow/ Diakses tanggal 12/5/2014 07.30 [3] http://blog.bigduckgames.com/2012/07/13/flow-free-faq/ Diakses tanggal 12/5/2014 08:03 [4] http://illumin.usc.edu/printer/188/deep-blue-the-history-andengineering-behind-computer-chess/ Diakses tanggal 12/5/2014 10.00 [5] T. Anantharaman et al. "Singular extensions:adding selectivity to brute-force searching." Artificial Intelligence, vol. 43, pp. 99-109, 1990

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, 12 Mei 2014 ttd Mamat Rahmat / 13512007