Penerapan Algoritma Brute force dalam Penentuan Keanagraman Dua Buah String

dokumen-dokumen yang mirip
Strategi Algoritma Penyelesaian Puzzle Hanjie

Algoritma Brute Force pada Fluid Particle Engine

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Algoritma Brute Force dalam Pattern Matching pada Aplikasi Pendeteksian Potongan Citra

Penerapan Algoritma Brute Force di Permainan Nonogram

Penerapan Algoritma Brute Force pada permainan Countdown Number

Algoritma Brute Force

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

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.

Algoritma Brute Force (lanjutan)

Penerapan Algoritma Brute Force pada Password Recovery

Algoritma Brute Force (lanjutan)

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Implementasi Brute Force dan Greedy dalam Permainan Big Two (Capsa)

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

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

Strategi Optimized Brute Force Pada Tent Puzzle Solver

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

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

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Pengaplikasian Algoritma Knuth-Morris-Pratt dalam Teknik Kompresi Data

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

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

ANALISIS PERMAINAN KATA MENGGUNAKAN ALGORITMA PEMROGRAMAN ANAGRAM DAN SUBANAGRAM

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

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

Algoritma Brute Force

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

Penerapan Rekursif dan Analisa Kompleksitas Algoritma Pada Brute Force Login

Optimasi Konversi String Biner Hasil Least Significant Bit Steganography

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Pembangkit Kunci Acak pada One-Time Pad Menggunakan Fungsi Hash Satu-Arah

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Algoritma Brute Force Oleh: Rinaldi Munir

Aplikasi Rekursif dalam Analisis Sintaks Program

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

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

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Penggunaan Brute Force untuk Mendeteksi Potensi Terjadinya Deadlock

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

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

String Matching Dalam Permainan The Hunt for Gollum

Membandingkan Pengaruh Panjang dan Besar Varian Karakter terhadap Entropi Password Menggunakan Algoritma Brute Force

Studi dan Implementasi Algoritma kunci publik McEliece

Implementasi Pencocokan String Tidak Eksak dengan Algoritma Program Dinamis

Aplikasi Algoritma MiniMax pada Beberapa Permainan Papan

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Brute-Force Hitori Solver

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

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Peluang dan Kombinasi pada Penjebolan Password

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Implementasi Algoritma Pencocokan String dalam Penentuan Tombol Respons Facebook

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

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

Penggunaan Algoritma Brute Force dan Greedy dalam Permainan Atomas

BAB 2 LANDASAN TEORI

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

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

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

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Algoritma Exhaustive Search Dalam Permainan Congklak

BAB 2 LANDASAN TEORI

Algoritma Backtracking Pada Permainan Peg Solitaire

Penggunaan Algoritma Pathfinding pada Game

Aplikasi Algoritma Greedy untuk Menyelesaikan Permainan Magic Wingdom

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

Pemanfaatan Algortima Boyer Moore dalam Penyaringan Teks Halaman Website Sederhana

Mencari Pola dalam Gambar dengan Algoritma Pattern Matching

ENKRIPSI CITRA BITMAP MELALUI SUBSTITUSI WARNA MENGGUNAKAN VIGENERE CIPHER

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

Penerapan Strategi Algoritma Menyelesaikan Kompleksitas Pixel Maze secara Otomatis pada Virupizxel

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penggunaan String Matching Dalam Mencari Kata Dalam Permainan Mencari Kata Dari Sebuah Matriks Huruf

Enkripsi Pesan pada dengan Menggunakan Chaos Theory

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

IMPLEMENTASI ALGORITMA BRUTE FORCE DALAM PENCARIAN DATA KATALOG BUKU PERPUSTAKAAN

Percobaan Perancangan Fungsi Pembangkit Bilangan Acak Semu serta Analisisnya

Transformasi Linier dalam Metode Enkripsi Hill- Cipher

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

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

Penentuan Lokasi Pemasaran Produk dengan Media Periklanan Menggunakan Algoritma Greedy

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Transkripsi:

Penerapan Algoritma Brute force dalam Penentuan Keanagraman Dua Buah String A. Bara Timur (13510019) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia bara.timur@itb.ac.id Abstraksi Pada makalah ini akan dijelaskan penggunaan algoritma brute force untuk menentukan apakah kedua string yang dibandingkan adalah anagram atau bukan. Termasuk perbandingan antara algoritma yang berbeda dan aplikasinya. Kata Kunci Anagram, Brute force, String I. PENDAHULUAN Anagram dipakai di beberapa aspek kehidupan contohnya permainan dan puzzle. Selain itu dipakai juga di bidang keamanan informasi. Dalam kehidupan sekarang ini, sering kali informasi yang ada dikodekan agar tidak dibajak atau diambil oleh orang yang tidak berwewenang. Banyak cara untuk mengkodekan suatu pesan agar tidak dimengerti oleh orang lain kecuali orang yang akan menerima pesan tersebut. Salah satu pengkodean adalah pengacakan letak huruf pada pesan tersebut. Pengacakan dari pesan tersebut menghasilkan sebuah anagram, yang memiliki jumlah tiap huruf sama dengan pesan sebelumnya. Untuk mengecek kesamaan tersebut terdapat beberapa algoritma yang bisa digunakan. Salah satunya adalah brute force, yang akan dibahas pada makalah ini. II. METODE Untuk memecahkan persoalan mengenai keanagraman suatu string, maka dibutuhkan suatu metode yang dapat membandingkan jumlah huruf yang ada pada kedua string tersebut. Metode yang paling mudah adalah metode brute force, yaitu dengan menghitung semua jumlah tiap huruf pada masing-masing string, kemudian membandingkan jumlah tiap hurufnya. II.1. Algoritma Brute force Brute force adalah sebuah pendekatan yang lempang (straightforward) untuk memecahkan suatu masalah (problem statement) dan definisi konsep yang dilibatkan Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung, dan dengan cara yang jelas (obvious way) meskipun bukan merupakan solusi yang paling mangkus. Karakteristik Algoritma Brute force. 1. Algoritma Brute force umumnya tidak cerdas dan tidak mangkus karena ia membutuhkan jumlah langkah yang besar dalam penyelesaiannya. Kadang pula algoritma Brute force disebut juga algoritma naïf (naïve algorithm). 2. Algoritma Brute force lebih cocok untuk masalah yang berukuran kecil. 3. Meskipun bukan metode yang mangkus, hampir semua masalah dapat diselesaikan dengan algoritma Brute force. Kekuatan dan Kelemahan Metode Brute force Kekuatan: 1. Metode brute force dapat digunakan untuk memecahkan hampir sebagian besar masalah (wide applicability). 2. Metode brute force sederhana dan mudah dimengerti. 3. Metode brute force menghasilkan algoritma yang layak untuk beberapa masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian matriks. 4. Metode brute force menghasilkan algoritma baku (standard) untuk tugas-tugas komputasi seperti penjumlahan/perkalian n buah bilangan, menentukan elemen minimum atau maksimum di dalam tabel (list). Kelemahan: 1. Metode brute force jarang menghasilkan algoritma yang mangkus. 2. Beberapa algoritma brute force lambat sehingga tidak dapat diterima. 3. Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya. Dalam praktiknya, algoritma ini sering digunakan untuk teknik hacking atau cracking. Karena mencobai semua kemungkinan, maka bukan tidak mungkin sebuah password dapat dibobol. Kenneth Thompson pernah berkata, "When in doubt, use brute-force" (jika ragu, gunakan brute-force).

Gambar 1. Contoh Program Brute Force hanya penerima saja yang mampu menerjemahkan pesan yang dikirim. Pada Jefferson disc, digunakan sebuah alat yang terdiri dari beberapa keping piringan, tiap piringan ini memiliki kombinasi huruf yang berbeda-beda. Biasanya hanya beberapa baris saja yang dapat dibaca, juga kepingan-kepingan pirijgan tersebut sudah diurutkan. Sedangkan dalam buku karangan Dan Brown, the Da Vinci Code, anagram dipakai untuk menyampaikan pesan kematian. Misalnya, O, Draconian devil! menjadi Leonardo Da Vinci. Atau dalam buku karangan JK Rowling, Harry Potter, anagram digunakan untuk menamakan karakter tertentu yang memiliki dua identitas. Tom Marvolo Riddle dan I am Lord Voldemort II.2. Anagram Menurut wordsmith.com anagram berarti : [n] Sebuah kata atau frase yang merupakan pengaturan ulang huruf dari kata lain atau frase [v] Untuk mengatur ulang huruf sedemikian rupa. Kata angram sendiri diambil dari bahasa latin, yaitu anagrammatismos, ana- (naik, lagi, sebelum, baru) + - gram (kata). Sedangkan menurut Wikipedia, anagram adalah salah satu jenis permainan kata yang huruf-huruf di kata awal biasanya diacak untuk membentuk kata lain atau sebuah kalimat. Contoh anagram adalah Informatika = if rat, I'm an OK.. Gambar 2. Permainan Scrabble Anagram diaplikasikan di permainan yang berbasiskan puzzle. Beberapa permainan yang menggunakan anagram adalah Anagrams, Scrabble, Countdown, Boggle, Brainteaser, Bananagrams. Inti dari kebanyakan permainan itu adalah membuat sebuah kata atau kalimat dari kumpulan huruf yang ada. Atau mengubah susunan huruf dari kata yang ada menjadi kata baru. Semakin panjang kata, maka skor yang didapat makin besar. Penggunaan lain adalah sebagai chipers. Beberapa teknik penganagraman digunakan untuk menyelesaikan sebuah kriptograms, seperti permutation cipher, transposition chiper, Jefferson disc. Guna dari chipers ini adalah melindungi isi pesan yang akan dikirim, sehingga Gambar 3. Jefferson disc Di dunia Barat anagram dianggap permainan saja, sering untuk menyusun sebuah sinonim. Demikian misalnya Salvador Dali, pelukis Spanyol yang surrealis, menyusun kembali huruf-huruf namanya lalu terbaca "Avida Dollars" (menyukai dollar-dollar).namun, dalam aliran-aliran mistik dari Timur Tengah dan Timur kombinasi huruf-huruf tertentu dianggap mempunyai arti magis. Demikian misalnya dalam ajaran rahasia untuk mencapai kesempurnaan. Baca misalnya Haryati Subadio, fnanasid dhanta (edisi Indonesia 1985). Menurut de Saussure prinsip anagram merupakan dasar bagi teknik puisi dalam bahasa-bahasa Indo-Eropa. Dengan memilih atau menyusun kembali fonem-fonem atau pasangan fonem dapat disusun kata-kata yang penting, misalnya nama seorang dewa, rumus sebuah mantra rahasia dan sebagainya. Dalam sementara kalangan teori sastra modern anagram dianggap sebuah kata yang membuka pengertian untuk menafsirkan sebuah teks menurut arti yang terdalam. Di bawah teks yang nampak tersembunyilah sebuah teks lain (hypoteks). Di dunia maya, juga telah bertebaran online solver untuk anagram, antara lain : Free Online Anagram Solver (at Letterpress Helper) Anagram Solver (at Word Game Helper) Xavier's Anagram Solver Andy's Anagram solver

Anagram Genius : Anagram Server Internet Anagram Server / I, Rearrangement Servant Free Scrabble Dictionary III. PENERAPAN Pada makalah ini akan diterapkan 2 macam algoritma yang berbasis brute force. Asumsi yang digunakan adalah panjang dari string pasti sama, sehingga tidak dicek panjang string pada algoritma yang akan digunakan. Algoritma yang pertama saya namakan Counter. Sedangkan algoritma yang kedua saya namakan Selection. Untuk algoritma yang pertama, diterapkan perhitungan jumlah tiap karakter yang ada pada string yang pertama dan string yang kedua. Hasil dari perhitungan ini dibandingkan, jika sama, maka kedua string tersebut adalah anagram. function counteralg(array of char string1,array of char string2) -> boolean {fungsi ini mengembalikan true jika string1 adalah anagram dari string2. Mengembalikan false jika bukan anagram. Menggunakan algoritma conter} Map<char,integer> charcounter1 Map<char,integer> charcounter2 {menghitung jumlah tiap karakter, kemudian dimasukkan ke map (untuk string1)} i traversal [0..String1.length-1] if(charcounter1.containskey(string1[i])) then charcounter1.put( String1[i], charcounter1.get(string1[i]) + 1) else charcounter1.put(string1[i], 1) { algoritma yang sama untuk string2......... } {Membandingkan hasil kemudian return} charcounter1.equals(charcounter2) Untuk menyatakan bahwa kedua map sama(equals), digunakan dua syarat. Yang pertama, ukuran kedua map sama. Yang kedua, kedua map tersebut memiliki entry yang sama. Yang dimaksud dengan entry adalah pasangan key dan value. Pengecekan dilakukan dengan looping untuk melihat kesaamaan entry. Untuk algoritma yang kedua dimulai dengan mengiterasi satu per satu karakter yang terdapat di string pertama. Kemudian mencari karakter tersebut di string kedua. Jika ada, maka karakter tersebut dihapus dari string kedua. Jika tidak ada, maka kedua string tersebut bukanlah anagram. Algoritma ini berhenti jika tiap karakter string pertama sudah ditelusuri. function selectionalg(array of char string1,array of char string2) -> boolean {fungsi ini mengembalikan true jika string1 adalah anagram dari string2. Mengembalikan false jika bukan anagram. Menggunakan algoritma selection} boolean isanagram, iscontain integer i1cek, i2cek isanagram true i1cek 0 while (isanagram AND i1cek < String1.length) i2cek 0 iscontain false while (not(iscontain) AND i2cek < String2.length) if (String1[i1Cek] = String2[i2Cek]) then iscontain true String2 DeleteChar(i2Cek, String2) else i2cek i2cek + 1 if (not(iscontain)) isanagram false i1cek i1cek + 1 Untuk algoritma DeleteChar, digunakan dasar algoritma deep copying, yaitu teknik copy string yang meng-assign satu per satu karakter ke alamat memori string yang baru. Algoritma ini dimodifikasi di beberapa bagian, yaitu mengurangi panjang string baru sebanyak 1 dari string lama, dan tidak memasukkan karakter tertentu ke string yang baru. String baru ini adalah kembalian dari fungsi DeleteChar. function DeleteChar(integer charpos, array of char stringtodel) array of char IV. HASIL PENGUJIAN DAN ANALISIS integer i array of char newstring[stringtodel.length - 1] i traversal [0..charPos-1] newstring[i] = stringtodel[i] i traversal [charpos..stringtodel.length 1] newstring[i] = stringtodel[i + 1] newstring Untuk menguji kedua algoritma ini, maka dibuatlah sebuah program sederhana. Implementasinya menggunakan bahasa Java. Kemudian menggunakan kakas bantu IDE Netbeans 7.1.1. Dari hasil yang didapat, kedua algoritma ini memiliki kelebihan dan kelemahan masing-masing. Untuk algoritma yang pertama, counter, baik digunakan untuk string yang sangat panjang. Untuk string sepanjang 12000 karakter, yang dibutuhkan

waktu 24-25 ms. Sedangkan untuk algoritma yang kedua, selection, dibutuhkan waktu 355-370 ms. Untuk string yang pendek, misalnya satu atau dua kata, hasil yang didapatkan bahwa algoritma selection lebih baik, yakni tidak sampai 1 ms. Sedangkan untuk counter dibutuhkan lebih dari 1 ms. Walaupun tidak terlalu signifikan, jelas terlihat masing-masing algoritma mempunyai tujuan yang berbeda. Kedua algoritma ini juga berbeda pada proses berhentinya. Jika algoritma counter berhenti pada saat perbandingan mapnya, algoritma selection berhenti pada saat ditemukannya perbedaan jumlah huruf pada antara string pertama dan string kedua. sangat panjang proses ini cukup memakan waktu, karena dilakukan berkali-kali. Gambar 5. Hasil perbandingan dari kedua algoritma, jika hasilnya benar Kedua algoritma ini masih bisa diperbaiki lagi sehingga hasil yang didapat menjadi lebih cepat. Untuk algoritma counter, bisa dilakukan multithreding, yakni sembari menghitung jumlah huruf, langsung dibandingkan, daripada harus dihitung dahulu, baru dibandingkan. Untuk algoritma selection penghapusan karakter didesain lebih baik lagi dengan cara menghapus cara deep copy. Lebih baik digunakan manipulasi string langsung tanpa harus memproses keseluruhan dari string tersebut. Gambar 4. Hasil Perbandingan dari kedua algoritma, jika hasilnya salah Yang membuat proses algoritma counter lama, adalah proses pembuatan map untuk menghitung jumlah karakter, serta pemasukan nilainya ke map. Namun ini menjadi kelebihan jika string sangat panjang, karena hanya dipanggil satu kali saja. Yang membuat proses algoritma selection lama, adalah proses penghapusan karakter dari string kedua. Karena menggunakan deep copy., Jika string V. KESIMPULAN Algoritma Brute Force dapat digunakan untuk menentukan keanagraman dari kedua buah string. Dalam aplikasinya, algoritma brute force terdapat beberapa macam. Algoritma counter, memiliki kelebihan membandingkan string yang sangat panjang. Algoritma selection, memiliki kelebihan membandingkan string yang pendek.

REFERENSI [1] http://id.wikipedia.org/wiki/anagram. Diakses 12/12/2012 16:42 [2] http://en.wikipedia.org/wiki/anagram. Diakses 12/12/2012 17:00 [3] http://www.wordsmith.org. Diakses 17/12/2012 16:24 [4] http://id.wikipedia.org/wiki/serangan_brutal. Diakses 17/12/2012 16:25 [5] http://en.wikipedia.org/wiki/brute-force_attack. Diakses 17/12/2012 16:26 [6] Cited in Henry Benjamin Wheatley, Of anagrams: a monograph treating of their history (1862) [7] http://myindoliterature.blogspot.com/2011/05/anagram.html. Diakses 17/12/2012 16:59 [8] Henry Benjamin Wheatley, On Anagrams (1862), hal. 58. [9] http://informatika.stei.itb.ac.id/~rinaldi.munir/stmik/. Diakses 17/12/2012 17:00 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, 17 Desember 2012 A. Bara Timur 13510019