PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

dokumen-dokumen yang mirip
Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

PENYELESAIAN TEKA-TEKI PENYUSUNAN ANGKA MENGGUNAKAN ALGORITMA RUNUT BALIK

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Algoritma Puzzle Pencarian Kata

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

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

PENCARIAN SOLUSI DENGAN ALGORITMA BACKTRACKING UNTUK MENYELESAIKAN PUZZLE KAKURO

Strategi Algoritma Penyelesaian Puzzle Hanjie

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

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.

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

UNTUK PEMECAHAN MASALAH PADA PERMAINAN HASHIWOKAKERO

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

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

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

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

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

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

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

Algoritma Divide and Conquer untuk Optimasi Pemberian Efek Aura pada Permainan DotA (Defense of the Ancient)

PENYELESAIAN GAME TEKA-TEKI SILANG DENGAN MENERAPKAN ALGORITMA BACKTRACKING

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

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

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

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

Penerapan Algoritma Backtracking pada Pewarnaan Graf

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

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

Penerapan Algoritma Backtrack pada Knight s Tour

I. PENDAHULUAN. 1.1 Permainan Rush Hour

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Pendeteksian Deadlock dengan Algoritma Runut-balik

Penerapan Algoritma Greedy dalam Permainan Connect 4

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

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

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

Algoritma Backtracking Pada Permainan Peg Solitaire

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

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

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

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

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Penyelesaian Permainan Pacman yang disederhanakan dengan Algoritma Backtracking

Algoritma Penentuan Graf Bipartit

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

Analisis Perbandingan Algoritma Rekursif dan Non-Rekursif secara DFS (Depth First Search) dengan Memanfaatkan Graf

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

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

Penerapan Algoritma Brute Force pada permainan Countdown Number

Penggunaan Algoritma Greedy dalam Optimasi Masalah Perkebunan

Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis

Penerapan Algoritma Brute Force di Permainan Nonogram

IF3051 Strategi Algoritma Penerapan Algoritma Greedy untuk Peletakan Tanaman dalam Game Harvest Moon: Back to Nature

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

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

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

ALGORITMA GREEDY DALAM PERMAINAN DOTS AND BOXES

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

ANALISIS TEKNIK PENGISIAN KATA DALAM PERMAINAN TEKA-TEKI SILANG

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

Penerapan Algoritma Greedy untuk Permainan Halma

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

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

MAKALAH ALGORITMA DIVIDE AND CONQUER

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Kompleksitas Algoritma Sorting yang Populer Dipakai

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

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Penggunaan Graf dalam Pemodelan Matematis Permainan Delapan Jari

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

Algoritma Brute Force pada Fluid Particle Engine

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

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

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

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

BAB VII ALGORITMA DIVIDE AND CONQUER

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

Penerapan Algoritma Greedy pada Intelegensia Buatan untuk Transfer Pemain dalam Permainan Simulasi Sepakbola

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Brute-Force Hitori Solver

Transkripsi:

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA Wahyu Fahmy Wisudawan Program Studi Teknik Informatika Institut Teknologi Bandung, NIM: 506 Jl. Dago Asri 4 No. 4, Bandung e-mail: al_izzatusysyifa@students.itb.ac.id ABSTRAK TTS angka merupakan permainan sederhana yang terdiri dari matriks persegi yang masing-masing persegi kecilnya harus diisi dengan satu digit bilangan berdasarkan daftar angka yang disediakan. Masalah ini dapat diselesaikan secara sederhana dengan algoritma runut balik. Algoritma ini diimplementasikan secara rekursif dan akan terus berproses sampai semua elemen matriks yang menjadi persoalan terisi. Untuk mengisi elemen matriks ini, digunakan fungsi kriteria yang mencari bilangan yang cocok untuk ditempatkan pada posisi yang sedang menjadi fokus pemrosesan. Jika tidak ada bilangan cocok yang ditemukan, maka terjadi runut balik. Untuk mempermangkus algoritma ini, salah satu cara yang dapat digunakan adalah dengan mengefektifkan perolehan fungsi kriteria. Dengan demikian, prosesproses komputasi yang tidak diperlukan dapat dilewati. Kata kunci: Teka Teki Silang Angka, Runut Balik, Backtracking, Algoritma. luas. Permainan ini hanya membutuhkan keuletan, keterampilan, dan kecermatan saja. Berikut ini salah satu contoh TTS angka dengan ukuran 0x0: Tabel Daftar Angka yang Disediakan Jumlah Digit Mendatar Menurun 4-6 - (dua) 4-6 - 58 46 (tiga) 4 85 8 5 5 846 4 (empat) 8 484-46 - 6484 06-5 (lima) 548 - - 64 6 (enam) - 55. PENDAHULUAN Teka teki silang (TTS) angka merupakan sebuah permainan yang populer di berbagai kalangan. Teka teki silang angka, atau selanjutnya kita sebut sebagai TTS angka, mirip dengan teka teki silang biasa yang umumnya merupakan teka-teki kata-kata. TTS angka terdiri dari beberapa deret tabel yang saling menyilang satu sama lain. Deret-deret tabel tersebut ada yang horizontal dan ada yang vertikal, dan dapat diisi dengan sederetan angkaangka tertentu yang telah ditentukan. Tantangan dari permainan ini adalah kita harus tepat mengisi TTS dengan bilangan-bilangan positif yang disediakan, yang umumnya telah ditentukan jenisnya, apakah termasuk angka yang mengisi matriks teka-teki secara mendatar atau mengisi matriks teka-teki secara menurun. Dalam bermain TTS angka, tidak diperlukan IQ tinggi dan pengetahuan yang Gambar. Contoh TTS angka Matriks teka-teki di atas harus diisi dengan angka-angka yang telah disediakan di Tabel. Contoh, misalnya kita MAKALAH IF5 STRATEGI ALGORITMIK TAHUN 008

mengisi secara vertikal 4 grid di sudut kiri atas dengan angka. Hasilnya adalah sebagai berikut: Gambar. Contoh TTS angka setelah satu pengisian Permainan berakhir jika kita berhasil mengisi semua matriks TTS dengan angka-angka yang telah disediakan.. METODE Metode yang digunakan di dalam makalah ini untuk menyelesaikan persoalan TTS angka di atas adalah algoritma runut balik (backtracking). Namun, algoritma ini dapat lebih dimangkuskan dengan beberapa metode yang nanti akan dijelaskan. Sebelum memasuki penjelasan algoritma tersebut, kita akan terlebih dahulu memasuki pembahasan struktur data untuk menyimpan soal TTS dan daftar bilanga yang tersedia di dalam memori komputer.. Struktur Data Dalam bagian ini, akan dijelaskan rincian tentang struktur data yang akan digunakan untuk menyelesaikan masalah TTS angka ini. Struktur data yang pertama kali dibutuhkan adalah matriks penyimpan soal TTS dan matriks daftar angka. Sementara selama proses penyelesaian persoalan, dibutuhkan pohon dinamis yang mempresentasikan status pencarian solusi... Matriks Soal TTS Matriks ini berukuran m x n, dimana m adalah banyak baris TTS angka, dan n adalah banyak kolomnya. Matriks ini hanya berisi bilangan satu digit, sehingga untuk efisiensi memori, dalam implementasinya, lebih baik menggunakan tipe data primitif yang berukuran kecil yang didukung oleh bahasa tersebut. Misalnya small byte (yang hanya berukuran 8 bit) di bahasa pemrograman C#. Untuk mudahnya, selanjutnya kita akan menganggap bahwa elemen matriks ini adalah integer. Di dalam makalah ini, matriks ini kita beri nama MatriksSoal. Sementara untuk area yang diwarnai hitam di atas (tidak valid) direpresentasikan oleh matriks ini dengan bilangan negatif, misalnya -... Pasangan Matriks Daftar Angka Matriks ini berisi daftar angka-angka yang disediakan untuk diisikan ke TTS dan tanda kalau elemen matriks yang berkesesuaian telah dipakai. Ada 4 matriks yang dibutuhkan. Yaitu matriks untuk bilangan yang harus diisi secara menurun dan matriks untuk bilangan yang harus diisi secara mendatar. Matriks untuk bilangan yang harus diisi secara mendatar kita beri nama MatriksDaftarMendatar, sementara matriks untuk bilangan yang harus diisi secara menurun kita beri nama MatriksDaftarMenurun. Dua Matriks sisanya berkesesuaian dengan matriks sebelumnya, dimana ukurannya sama, namun tipe datanya boolean. Matriks ini berfungsi sebagai penanda bahwa Matriks pasangannya dengan elemen yang berkesesuaian telah dipakai. Pasangan MatriksDaftarMendatar kita beri nama MatriksDaftar- MendatarIsDipakai, dan pasangan Matriks- DaftarMenurun kita beri nama MatriksDaftar- MenurunIsDipakai. Masing-masing matriks ini berukuran p x q dengan p adalah jumlah jenis bilangan (dilihat dari jumlah digit bilangannya) dan q adalah jumlah maksimum bilangan masing-masing jenis tersebut. Misalnya untuk contoh di atas kita membutuhkan MatriksDaftarMendatar berukuran 4 x 4 dan MatriksDaftarMenurun berukuran x 5. Bilangan yang disediakan diasumsikan tidak dimulai dari 0.. Algoritma Runut Balik Algoritma yang digunakan untuk pencarian solusi teka-teki ini adalah algoritma runut balik. Pertama-tama, prosedur menerima masukan i dan j yang merupakan penunjuk (pointer) yang menunjukkan posisi program saat itu memulai pencarian solusinya. Kemudian program memasuki pengulangan while yang akan terus terjadi jika MatriksSoal yang harus diisi belum diisi semua. Selanjutnya dicek apakah MatriksSoal[i,j] merupakan area yang tidak valid (bukan merupakan area yang diperbolehkan untuk diisi) atau sudah diisi. Jika benar, program akan mencari posisi selanjutnya yang valid dan belum diisi. Jika salah, program akan memulai proses pencarian solusi. Solusi dicari dengan terlebih dahulu mengecek arah manakah yang memungkinkan untuk proses pengisian, apakah mendatar, ataukah menurun. Kemudian dicari manakah pangkal dan berapa panjang dari deret kotak MAKALAH IF5 STRATEGI ALGORITMIK TAHUN 008

kosong tersebut. Setelah itu ada fungsi yang memperoleh bilangan yang sesuai panjang dan arahnya dari matriks penyimpan daftar bilangan yang disediakan (MatriksDaftarMendatar atau MatriksDaftarMenurun tergantung dari deret kotak kosong tersebut), dan angka pada bilangan tersebut berkesesuaian dengan angka-angka yang telah dimasukkan sebelumnya. Fungsi ini disebut fungsi kriteria. Setelah bilangan yang sesuai didapatkan, maka bilangan tersebut diisikan ke deret kotak kosong yang didapat sebelumnya. Setelah itu terjadi pemanggilan prosedur itu sendiri secara rekursif. Namun, jika bilangan ini tidak didapatkan, maka pengisian solusi selangkah sebelumnya dihapus dan disinilah terjadi runut balik. Perhatikan algoritma di bawah ini: procedure SolvingInBackTracking (input: i: integer, j: integer) Kamus: ismendatar: boolean p, q: integer k : integer temp : integer Algoritma: while (MatriksSoal belum diisi semua) do if ((MatriksSoal[i,j] tidak valid) or (MatriksSoal[i,j] sudah diisi) ) then {cari i dan j yang mana MatriksSoal[i,j] belum diisi dan bukan tembok} else ismendatar := getposisibil() setposisiawalbilangan(p,q) k := getpanjangbil(ismendatar, p, q) if (mendapatkan bilangan yang sesuai panjang dan arahnya dari matriks penyimpan daftar bilangan yang disediakan) then temp := getbilcocok(ismendatar, k) {isi MatriksSoal[i,j] dengan temp digit per digit} {set Matriks penanda telah dipakai yang berkesesuaian} SolvingInBackTracking (getposisix(), getposisiy()) else {tdk didapat bilangan yang sesuai} {hapus pengisian solusi sebelumnya dari MatriksSoal} {set Matriks penanda telah dipakai yang berkesesuaian} endif endif endwhile Proses pertama, pengisian pertama Proses kedua, pengisian kedua Proses ketiga, pengisian ketiga Contoh penggunaan algoritma ini untuk contoh soal pada tabel dan gambar digambarkan sebagai berikut: MAKALAH IF5 STRATEGI ALGORITMIK TAHUN 008

8 4 5 8 4 6 4 Proses keempat, pengisian keempat Proses kelima, terjadi runut balik 8 4 6 Proses keenam Proses ketujuh Gambar. Tujuh proses pertama pemecahan solusi persoalan TTS angka dengan algoritma runut balik Pada gambar di atas, lingkaran merah menunjukkan posisi penunjuk (pointer) berada. Proses di atas akan terus berlangsung hingga didapatkan solusi berikut: 8 4 5 4 8 4 5 6 8 8 4 6 6 4 6 4 4 0 6 8 4 4 Gambar 4. Solusi akhir. Pengembangan Fungsi Kriteria Algoritma di atas masih dapat dikembangkan dengan dengan pengembangan fungsi kriteria. Perhatikan proses ke-empat di atas. Sebenarnya penambahan bilangan 58 dapat ditolak karena dengan penambahan bilangan ini, maka tidak ada bilangan yang sesuai untuk proses selanjutnya, yaitu pada posisi (,6). Sehingga penolakan sejak dini ini dapat memperingkas banyaknya proses yang diperlukan supaya solusi dapat dicapai. Pengembangan baru spesifikasi fungsi pembatas dapat dijabarkan sebagai berikut:. Sesuai arahnya.. Sesuai panjangnya dengan panjang deret kotak kosong. MAKALAH IF5 STRATEGI ALGORITMIK TAHUN 008

. Angka pada bilangan tersebut berkesesuaian dengan angka-angka yang telah dimasukkan sebelumnya. 4. Jika ketiga kriteria di atas terpenuhi, maka dicek, apakah penambahan tersebut memungkinkan untuk menuju solusi. Pengembangan fungsi kriteria di atas mempersingkat proses pencarian solusi dengan salah satunya melompati proses keempat yang digambarkan di atas. Contoh lainnya adalah proses ke- (yang tidak digambarkan di makalah ini). Perhatikan gambar di bawah ini: 4 5 8 8 4 6 6 4 4 0 6 4 Gambar 5. Proses ke- Pada gambar di atas, proses ke- menambahkan bilangan 8 mulai dari posisi (5,6). Namun, penambahan ini tidak menuju solusi karena tidak ada bilangan pada daftar yang tersedia yang memenuhi kriteria untuk mengisi deret kotak kosong selanjutnya, yang awal posisinya dimulai dari (4,).. KESIMPULAN Teka teki silang (TTS) angka dapat dicari solusinya dengan algoritma runut balik. Algoritma ini sangat mudah dipahami dan diimplementasikan. Algoritma ini juga cukup fleksibel untuk dikembangkan, terutama pada fungsi kriterianya. Pengembangan fungsi kriterianya meliputi pengecekan sejak dini terhadap solusi yang diperoleh. Sehingga perolehan yang diketahui tidak menuju solusi tidak perlu diproses lebih lanjut. REFERENSI [] Rinaldi Munir, Strategi Algoritmik, ITB, 00. MAKALAH IF5 STRATEGI ALGORITMIK TAHUN 008