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.

dokumen-dokumen yang mirip
Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Strategi Algoritma Penyelesaian Puzzle Hanjie

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Penerapan Algoritma Brute Force di Permainan Nonogram

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

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

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Algoritma Exhaustive Search Dalam Permainan Congklak

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

Algoritma Puzzle Pencarian Kata

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

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

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

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

Penerapan Algoritma Brute Force pada permainan Countdown Number

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Strategi Optimized Brute Force Pada Tent Puzzle Solver

Penerapan Algoritma Backtrack pada Knight s Tour

Algoritma Brute Force pada Fluid Particle Engine

Menebak Password RAR Menggunakan RAR Password Recovery Magic dengan Algoritma Brute Force

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Pengaplikasian Algoritma Knuth-Morris-Pratt dalam Teknik Kompresi Data

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

PENGGUNAAN ALGORITMA GREEDY PADA MESIN PENCARI

Sieve of Eratosthenes, Algoritma Bilangan Prima

Algoritma Brute Force (lanjutan)

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

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

Penerapan Algoritma Greedy pada Permainan Tower Defense

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Algoritma Brute Force (lanjutan)

Algoritma Brute Force (Bagian 2) Oleh: Rinaldi Munir Bahan Kuliah IF2251 Strategi Algoritmik

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Penerapan algoritma Greedy dalam penentuan Porter Generic Strategies untuk suatu perusahaan

Penerapan Algoritma Greedy pada Permainan Bubble Breaker

Aplikasi Algoritma Pencarian String Dalam Sistem Pembayaran Parkir

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

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

Penggunaan Algoritma Brute Force dan Greedy dalam Permainan Atomas

Penggunaan Algoritma Pencocokkan Pola pada Sistem Barcode

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

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Penerapan Algoritma Brute Force pada Password Recovery

Penggunaan Algoritma Greedy dalam Optimasi Masalah Perkebunan

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

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

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

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

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

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Aplikasi Strategi Algoritma dalam Pembagian Kelompok Tugas Besar

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

APLIKASI ALGORITMA PENCOCOKAN STRING KNUTH-MORRIS-PRATT (KPM) DALAM PENGENALAN SIDIK JARI

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penentuan Lokasi Pemasaran Produk dengan Media Periklanan Menggunakan Algoritma Greedy

Sieve of Eratosthenes dan Aplikasinya Dalam Problem Solving

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Implementasi Algoritma Runut Balik pada Permainan Texas Hold em Poker

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

Optimasi Konversi String Biner Hasil Least Significant Bit Steganography

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

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

Algoritma Brute Force dalam Pattern Matching pada Aplikasi Pendeteksian Potongan Citra

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

Aplikasi Graf dalam Rute Pengiriman Barang

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

I. PENDAHULUAN. 1.1 Permainan Rush Hour

Brute-Force Hitori Solver

Aplikasi Algoritma Greedy untuk Menyelesaikan Permainan Magic Wingdom

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Transkripsi:

Penyelesaian Verbal Arithmetic dengan Algoritma Brute Force Luthfi Chandra Fibrian - 13510047 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia Luthfi.chandra@s.itb.ac.id Abstract Verbal arithmetic adalah salah satu permainan matematika yang menyerupai aljabar. Teka-teki ini mensubtitusi semua angka dengan huruf. Untuk memecahkan teka-teki ini bisa digunakan sifat-sifat bilangan dan teknik aljabar. Puzzle ini dapat diselesaikan dengan memanfaatkan berbagai algoritma. Salah satu algoritma yang bisa digunakan adalah algoritma brute force. Algoritma brute force dapat menghasilkan solusi paling optimal dan cocok untuk permasalahan yang relatif kecil seperti pada persoalan verbal arithmetic. Algoritma brute force untuk persoalan ini dapat memanfaatkan berbagai heuristic yang berdasarkan teknik-teknik aljabar. Index Terms Verbal arithmetic, brute force, exhaustive search, heuristic, aljabar. I. PENDAHULUAN Verbal arithmetic adalah salah satu permainan matematika yang terdiri dari persamaan matematika sederhana dengan angka-angka yang tidak diketahui yang dinyatakan dengan huruf-huruf. Tujuan dari permainan ini adalah menemukan nilai dari masing-masing huruf. Persamaan matematika dalam permainan ini adalah persamaan matematika yang sederhana, seperti penjumlahan, pengurangan, perkalian, dan pembagian. Nilai dari setiap angka tidak harus unik tetapi akan lebih menarik jika nilai dari setiap angka unik. Peraturan umum verbal arithmetic puzzle: Tujuan dari permainan ini adalah mencari nilai masing-masing huruf. Setiap huruf merepresentasikan sebuah nilai yang merupakan angka 0 sampai angka 9. Operasi pada soal adalah pertambahan, pengurangan, perkalian, dan pembagian. Tidak ada angka yang dimulai oleh angka 0. Contoh: PLAY = 0123 tidak valid karena dimulai dengan angka 0. Berikut adalah contoh dari permainan verbal arithmetic: P=2, L =8, A =4, Y =0, T=6, H =1, E =9, G =3, M =5 Contoh lainnya: 0= V,1= I,2= O,3= R, 4= N,5= L,7= A,8= F,9= E. Verbal arithmetic bisa digunakan untuk pengajaran aljabar. Pengsubtitusian angka dengan huruf dalam tekateka ini serupa dengan aljabar. Lebih jauh lagi, verbal arithmetic juga bisa digunakan untuk memodelkan pemecahan kode enkripsi dari suatu ciphertext. II. DASAR TEORI Algoritma brute force adalah algoritma yang paling sederhana. Algoritma brute force menggunakan pendekatan yang paling straightforward untuk mencari solusi dari suatu permasalahan. Pada umumnya algoritma brute force tidak efisien dalam pemecahan suatu masalah. Algoritma ini memerlukan komputasi yang sangat besar sehingga akan lebih baik jika algoritma ini digunakan untuk masalah yang berukuran kecil. Algoritma brute force dapat digunakan untuk menyelesaikan berbagai persoalan. Hampir tidak ada persoalan yang tidak bisa diselesaikan oleh algoritma brute force. Algoritma brute force selalu menghasilkan solusi paling optimal. Keunggulan algoritma brute force: Hampir semua persoalan bisa diselesaikan. Mudah dimengerti karena menggunakan pendekatan yang straightforward.

Selalu menghasilkan solusi paling optimal. Kelemahan algoritma brute force: Sangat jarang menghasilkan algoritma yang mangkus. Untuk permasalahan yang besar, algoritma brute force bisa berjalan sangat lambat. Kompleksitasnya sangat besar. Salah satu varian dari algoritma brute force adalah exhaustive search. Exhaustive search bisa digunakan untuk mencari solusi untuk masalah-masalah kombinatorik. Langkah-langkah umum exhaustive search: Enumerasi setiap solusi yang mungkin. Evaluasi setiap kemungkinan solusi dan simpan hasil terbaiknya. Pilih solusi terbaik dari hasil evaluasi. Contoh exhaustive search: Misalkan terdapat sebuah kunci gembok yang dikunci menggunakan kombinasi angka sebanyak 3 digit. Mencoba satu per satu kombinasi kunci dimulai dari 000 sampai hasilnya didapatkan. mempercepat pencarian solusi. 3.1.1 Mencari 0 dan 9 di Penjumlahan dan Pengurangan Angka 0 dan 9 bisa dicari jika ada dua atau tiga huruf yang sama di kolom yang sama. Dari kolom A + A = A dan A + B = B dapat disimpulkan bahwa nilai adalah 0 karena angka berapapun jika ditambahkan atau dikurangi 0 pasti tidak akan berubah. Pada contoh di atas bisa didapatkan A = 9 atau A = 0. Ini tergantung oleh adanya carry 1 dari hasil operasi kolom sebelumnya. 3.1.2 Mencari 1 di Penjumlahan atau Pengurangan Angka 1 bisa ditemukan jika jumlah angka di baris pertama = jumlah angka dibaris kedua dan jumlah baris hasil operasi = jumlah angka di baris pertama + 1. Didapatkan solusi yaitu 135 Exhaustive search dapat dipercepat dengan menggunakan heuristic. Teknik ini digunakan untuk mengeliminasi kemungkinan-kemungkinan yang mustahil tanpa harus mengujinya dengan exhaustive search. III. PENERAPAN BRUTE FORCE PADA VERBAL ARITHMETIC PUZZLE Verbal arithmetic puzzle dapat diselesaikan dengan algoritma brute force. Pencarian solusi dapat dilakukan dengan cara exhaustive search. Semua kemungkinan solusi dienumerasi lagi dicek satu per satu sampai ditemukan solusi yang valid. 3.1 Heuristic Semakin banyak jumlah huruf, maka semakin lama proses pencarian solusinya. Oleh karena itu, penyelesaian sebaiknya tidak menggunakan brute force secara murni. Akan lebih baik jika menerapkan heuristic untuk M pasti bernilai 1 karena menerima carry dari penjumlahan S+M=O dan nilai S+M 10. Pada operasi pengurangan, angka 1 bisa ditemukan jika jumlah angka di baris kedua = jumlah angka di baris pertama 1 dan jumlah angka di baris kedua = jumlah angka di baris hasil operasi. Pada contoh di atas, C pasti bernilai 1. 3.1.3 Mencari 1 di Perkalian atau Pembagian Semua angka jika dikalikan dengan 1 maka hasilnya akan tetap angka itu. Contoh: MAKE * T = MAKE. Dapat disimpulkan bahwa nilai T = 1. Pada operasi pembagian juga berlaku hal yang sama. Contoh:

Pada operasi pertama, didapatkan K * NET = NET. Dapat disimpulkan nilai K = 1. 3.1.4 Mencari 0 dan 5 di Operasi Perkalian atau Pembagian Angka apapun jika dikali dengan 0 pasti hasilnya adalah 0. Angka ganjil apapun jika dikalikan dengan 5 pasti menghasilkan angka 5. Dari contoh di atas didapatkan: ##A * C = ###A ##A * B = ###A Dapat disimpulkan A = 0 atau A = 5. 3.2 Brute Force Jika solusi belum ditemukan setelah menerapkan heuristic maka langkah selanjutnya adalah melakukan brute force. Struktur data yang digunakan adalah sebagai berikut: struct Soal { char[] operand1; char[] operand2; char[] hasil; } integer[] kemungkinan; Setiap element dari operand1, operand2, dan hasil memiliki array kemungkinan yang menyatakan angkaangka apa saja yang mungkin menjadi solusi. Pada awal program array kemungkinan diinisialisasi dengan {0,1,2,..,.9}. Untuk menguji semua kemungkinan digunakan iterasi yang mirip dengan iterasi pada odometer. Ilustrasi: Ketika operand1 sudah diuji semua kemungkinannya, operand2 dilakukan increment. Setelah semua kemungkinan operand2 diuji, hasil dilakukan increment. Iterasi dilakukan berulang-ulang sampai semua kemungkinan dicoba atau sampai solusi didapatkan. Pada saat pengujian setiap huruf harus memiliki angka yang unik. Berikut ini adalah pseudo-code dari program verbal arithmetic solver: Prosedur terapkan_heuristic: procedure terapkan_heuristic(input/output Soal soal) {menerapkan heuristic untuk mengeliminasi kemungkinan yang sudah pasti salah. Angka yang dianggap tidak mungkin dihapus dari array kemungkinan} Prosedur cari_solusi: procedure cari_solusi(input/output soal:soal) {mencari solusi dari persoalan dengan mencoba semua kemungkinan} DEKLARASI boolean found Tahap selanjutnya: ALGORITMA found <-- false while(not found) do foreach(kemungkinan_h in array_hasil) do foreach(kemungkinan2 in operand2) do foreach(kemungkinan1 in operand1) do increment(kemungkinan1) if(semua angka unik and operand1 + operand2 = array_hasil) then found <-- true endif endfor increment(kemungkinan2) endfor

endfor endwhile increment(kemungkinan_h) Berikut ini adalah contoh eksekusi dari pseudocode tersebut: Soal: Setelah dilakukan prosedur terapkan_heuristic: Pada tahap ini huruf Y memenuhi heuristic. Pada persoalan ini hanya satu huruf yang memenuhi heuristic sehingga jumlah kemungkinan solusinya besar. Hal ini akan menyebabkan lamanya proses pencarian solusi. Selanjutnya dilakukan evaluasi untuk semua kemungkinan sampai didapatkan solusinya. Setelah dilakukan evaluasi, didapatkan solusi sebagai berikut: P = 2

L = 8 A = 4 Y = 0 T = 6 H = 1 E = 9 G = 3 M = 5 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, 21 Desember 2012 IV. ANALISIS Persoalan verbal arithmetic dapat diselesaikan dengan algoritma brute force tetapi memerlukan komputasi yang sangat besar. Pada contoh di atas jumlah evaluasi yang dilakukan sangat banyak dan memakan waktu yang cukup lama. Semakin banyak huruf dan bilangan yang digunakan, semakin banyak evaluasi yang dilakukan. Pada contoh terdapat sembilan huruf dan bilangan yang digunakan dimulai dari 0 sampai 9. Kompleksitas algoritma brute force untuk persoalan ini adalah: O(n m ) m adalah banyaknya huruf n adalah banyaknya bilangan. Luthfi Chandra Fibrian 13510047 V. KESIMPULAN Persoalan verbal arithmetic dapat diselesaikan dengan algoritma brute force tetapi membutuhkan waktu yang cukup lama. Meskipun sudah diterapkan beberapa heuristic, tetap saja waktu yang dibutuhkan untuk pencarian solusi cukup lama. Untuk mempercepat waktu eksekusi algoritma, perlu ditambahkan lagi heuristicheuristic lainnya untuk mengeliminasi kemungkinankemungkinan yang mustahil. REFERENCES [1] Rinaldi Munir, Diktat Kuliah IF3051 Strategi Algoritma, Program Studi Teknik Informatika ITB, 2005 [2] http://www.puzzles-on-line-niche.com/mathgames.html#sthash.kz0iwxka.dpbs waktu akses: 20 Desember 2012 pukul 19.00 [3] http://cryptarithms.awardspace.us/primer.html#05m waktu akses: 20 Desember 2012 pukul 20.00 [4] http://www.mathematik.unibielefeld.de/~sillke/puzzles/alphametic/ waktu akses: 20 Desember 2012 pukul 20.00