PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

dokumen-dokumen yang mirip
Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

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

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Penerapan Algoritma Brute Force pada permainan Countdown Number

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.

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

Strategi Algoritma Penyelesaian Puzzle Hanjie

Penerapan Algoritma Greedy pada Permainan Tower Defense

Algoritma Exhaustive Search Dalam Permainan Congklak

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Penerapan Algoritma Greedy untuk Permainan Flood It

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN CONGKLAK

Penerapan Algoritma Greedy pada Permainan Bubble Breaker

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

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

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

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

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

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

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

Penentuan Langkah Sederhana dalam Permainan Kartu Hearthstone dengan Algoritma Greedy

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Perbandingan Algoritma Dijkstra dan Algoritma Floyd-Warshall dalam Penentuan Lintasan Terpendek (Single Pair Shortest Path)

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

Penerapan Algoritma Brute Force di Permainan Nonogram

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Implementasi Algoritma Greedy pada Permainan Ludo

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

APLIKASI ALGORITMA GREEDY DALAM PERMAINAN JAWBREAKER

Penggunaan Algoritma Greedy dalam Optimasi Masalah Perkebunan

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

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

Aplikasi Algoritma Greedy untuk Menyelesaikan Permainan Magic Wingdom

Aplikasi Algoritma Pencarian String Dalam Sistem Pembayaran Parkir

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Implementasi Algoritma Runut Balik pada Permainan Texas Hold em Poker

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

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

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

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

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

Algoritma Backtracking Pada Permainan Peg Solitaire

ALGORITMA MENCARI LINTASAN TERPENDEK

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

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

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

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

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

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

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

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

MAKALAH ALGORITMA DIVIDE AND CONQUER

Implementasi Brute Force pada Game Mahjong Titans

PENGGUNAAN ALGORITMA GREEDY PADA MESIN PENCARI

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

1, 2, 3

Penerapan Algoritma Greedy dalam Permainan Tradisional Congklak

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Penerapan Algoritma Greedy dalam Permainan Connect 4

Algorima Greedy Pada Self Serve Gas Station

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

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

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH DAN STRING MATCHING PADA SISTEM PAKAR

Algoritma Brute Force (lanjutan)

ANALISA PENGGUNAAN ALGORITMA GREEDY PADA PERMAINAN FIVE LINK

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

Penerapan algoritma Greedy dalam penentuan Porter Generic Strategies untuk suatu perusahaan

Algoritma Greedy pada Board Game Saboteur

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

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

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

Implementasi Pencocokan String Tidak Eksak dengan Algoritma Program Dinamis

Transkripsi:

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE Mohammad Dimas (13507059) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jalan Ganesha nomor 10 e-mail: if17059@students.if.itb.ac.id ABSTRAK Exhaustive search adalah teknik pencarian solusi secara brute force (lempang / straight forward) untuk masalah yang melibatkan pencarian elemen dengan sifat khusus, biasanya di antara objek-objek kombinatorik seperti permutasi, kombinasi atau himpunan bagian dari sebuah himpunan. Permainan scramble adalah permainan yang melibatkan papan dan huruf, pada papan berukuran 4x4 atau lebih diletakkan huruf-huruf alfabet secara acak, pemain diharuskan menemukan kata-kata yang terdapat dalam kamus bahasa yang digunakan dalam permainan, misalkan Bahasa Inggris. Kata yang dimaksud adalah kata dengan panjang minimal 3 huruf dengan huruf-huruf pada papan sebagai huruf penyusun. Dalam menyusun kata yang dimaksud, huruf-huruf penyusunnya harus saling bertetangga. Setiap kata yang ditemukan memiliki nilai berdasarkan panjang dan huruf yang dikandungnya. Untuk memenangkan permainan, pemain harus memperoleh kata-kata sebanyak mungkin dengan waktu yang disediakan. Dalam makalah ini penulis bermaksud membahas suatu metode untuk menemukan solusi dari permainan ini, solusi yang didapat diharapkan dapat membantu pemain untuk memperoleh nilai setinggitingginya. Solusi yang diberikan berupa menghasilkan seluruh kata-kata yang dapat dibentuk berdasarkan huruf yang dibangkitkan oleh permainan, dan memberikan posisi huruf-huruf penyusun kata tersebut pada papan. Dalam menemukan solusi tersebut penulis akan mengimplentasikan Exhaustive Search sebagai bagian dari algoritma bruteforce. Kata kunci: Scramble, Solusi, Exhaustive Search, brute force,. 1. PENDAHULUAN 1.1 PERATURAN PERMAINAN Permainan scramble dapat dimainkan oleh satu orang ataupun lebih, namun demikian berapapun jumlah orang yang memainkannya, inti dari permainan ini tetap sama, yaitu setiap pemain harus memperoleh nilai setinggitingginya. Gambar 1 tampilan permainan scramble Dalam permainan ini akan terdapat papan berukuran 4x4 atau lebih dengan huruf acak di atasnya. Untuk memperoleh nilai pemain harus menemukan kata yang terdapat di kamus permainan(misalnya bahasa inggris) di dalam papan tersebut. Kata yang valid ialah kata yang panjangnya lebih dari 3 huruf dan kata tersebut terdaftar didalam kamus. Selain itu huruf-huruf penyusun kata harus membentuk suatu jalur. Misalkan kata yang dimaksud adalah Scramble, maka huruf s harus bertetangga dengan huruf c, huruf c bertetangga dengan huruf r dan begitu seterusnya hingga seleruh huruf dalam kata. Untuk setiap huruf yang ada di dalam papan hanya dapat dipakai satu kali dalam pembentukan suatu kata, misalkan kata yang dimaksud doll, maka l pertama dan l

ke-dua adalah dua l yang berbeda. Besarnya nilai yang didapat dipengaruhi oleh panjang kata dan huruf yang terdapat di dalam kata tersebut, semakin panjang kata maka semakin besar nilainya, dan adanya huruf-huruf tertentu seperti q atau z akan memberikan suatu nilai tambah. Jika permainan ini dimainkan oleh satu orang, maka tujuan permainan ialah menciptakan rekor personal yang baru, rekor personal yang baru akan tercipta ketika rekor sebelumnya telah dilewati dengan cara mendapatkan nilai yang lebih tinggi, sedangkan jika dimainkan lebih dari satu orang, maka tiap pemain akan bertanding untuk memperoleh nilai paling tinggi. 1.2 SKEMA UMUM ALGORITMA EXHAUSTIVE SEARCH Exhaustive Search adalah bentuk algoritma dasar yang dipergunakan untuk pencarian. Exhaustive search merupakan teknik pencarian solusi seccara brute force untuk masalah yang melibatkan pencarian elemen dengan sifat khusus, biasanya di antara objek-objek kombinatorik seperti permutasi, kombinasi, atau himpunan bagian dari semua himpunan. tersebut mengiterasi seluruh kemungkinan solusi yang mungkin ada pada suatu masalah yang diberikan, memeriksa apakah solusi telah ditemukan, dan melanjutkan pencarian hingga solusi ditemukan dan mengembalikan nilai solusi tersebut. Metode exhaustive search dapat dirumuskan langkahlangkahnya sebagai berikut 1. Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis 2. Evaluasi setiap kemungkinan solusi satu per ssatu, mungkin saja beberapa kemungkinan solusi yang tidak layak dikeluarkan, dan simpan solusi terbaik yang ditemukan sampai sejauh ini 3. Bila solusi ditemukan, nilai solusi tersebut dikembalikan procedure search(input sol: solusi, depth: int) Menuliskan solusi dari hasil pencarian yang ditemukan dengan teknik pencarian exhaustive search. Masukan sol:solusi dan depth:int. solgenerated : solusi function generatesolution() solusi Mengembalikan kandidat solusi yang mungkin function issolution(sol : solusi) boolean Memeriksa apakah solusi yang diberikan adalah solusi yang benar atau tidak. true jika sol adalah solusi; false jika sol bukan solusi. procedure printsolution(input sol: solusi) Menuliskan solusi dari masukan ke layar. Masukan sol: solusi. if (issolution(sol)) printsolution(sol) else solgenerated generatesolution() search(solgenerated, depth+1) 2. RUANG LINGKUP MASALAH Ruang lingkup pada makalah ini penulis batasi pada tahapan yang dibutuhkan untuk menyelesaikan permainan scramble dan memperoleh nilai yang setinggi-tingginya. Terdapat dua tahapan yang dibutuhkan untuk menyelesaikan permainan ini, yaitu: 1. Menemukan kata-kata yang ada di dalam papan Kata-kata yang mungkin ada di dapan dapat diperoleh dengan cara merangkai huruf-huruf yang ada dipapan, huruf-huruf tersebut dirangkai sedemikian hingga seluruh kombinasi yang mungkin diperoleh. Dari rangkaian kata yang diperoleh dibandingkan dengan kata yang ada di dalam kamus, jika kata hasil rangkaian dan kata yang ada di kamus cocok, berarti kata tersebut ialah kata yang dimaksud.

2. Menentukan huruf-huruf penyusun beserta posisi huruf tersebut di atas papan Setelah memperoleh kata-kata yang dapat dibentuk dari huruf-huruf yang diberikan, pemain harus menginput kata tersebut ke dalam permainan sehingga ia dapat memperoleh nilai. Untuk melakukan hal tersebut pemain harus mengetahui jalur pembentukan kata yang dimaksud dengan cara mengetahui posisi huruf-huruf penyusunnya di papan. 3 MENEMUKAN KATA-KATA YANG ADA DI DALAM PAPAN 3.1 Representasi Masalah Untuk merepresentasikan masalah ini kamus bahasa yang digunakan disimpan dalam bentuk array of list of strig. Array dipergunakan untuk mengoptimasi proses pencarian, tiap kata dengan panjang yang berbeda-beda disimpan pada array yang berbeda pula, sehingga list dalam suatu array selalu menyimpan kata-kata dengan panjang yang sama. Huruf-huruf dalam papan direpresentasikan dalam bentuk kelas baru, yaitu kelas node, di dalam kelas tersebut disimpan informasi huruf berupa string dan informasi tetangga huruf tersebut berupa list of node. Informasi huruf yang disimpan oleh node disimpan dalam bentuk string dikarenakan dalam permainan scramble ini terdapat huruf yang selalu dipasangkan dengan huruf lain dalam satu area, contohnya Q yang selalu digabung dengan u. Kombinasi huruf-huruf yang dicari direpresentasikan dalam bentuk string. String yang akan diproses hanyalah string dengan panjang antara 3 hingga 10 karakter, pembatasan tersebut didasarkan atas peraturan permainan yang hanya menerima kata dengan panjang lebih dari 3 karakter dan juga usaha untuk mengoptimasi pencarian dengan membatasi panjang karakter pada kata hingga 10 karakter. Hasil pencarian direpresentasikan dalam bentuk list of string. 3.2 Inisiasi Pada tahap ini dilakukan inisasi berupa menyiapkan seluruh kebutuhan program sehingga proses pencarian dapat dilakukan. Persiapan yang dilakukan diantara lain menyiapkan kamus dan menyiapkan kelas node. Kamus disiapkan dengan cara membaca file eksternal dan kemudian memasukkannya kedalam struktur internal berupa array of list of string, kata-kata di dalam kamus dipisah-pisahkan sesuai dengan panjangnya dengan tujuan optimasi. Berikut adalah pseudocode-nya: function LoadAllWords() array of list of string Fungsi ini akan mengembalikan array of list of string yang merupakan hasil konversi dari bentuk list of string, konversi dilakukan dengan memisahmisahkan berdasarkan panjang kata i: integer AllWord: list of string Temp: array of list of string function getword() list of string Fungsi ini akan mengembalikan list of string yang merupakan hasil pembacaan file eksternal AllWord getword() Iterate i 0..Allword.Count if AllWord.ElemenAt(i).length<10 then Temp AllWord.ElemenAt(i).length.Add(AllWord.El emenat(i)) Temp Inisiasi berikutnya yaitu menyiapkan kelas node dengan cara menghubungkan tiap node dengan tetanggatetangganya. Berikut adalah pseudocode-nya: function LinkBoard(size:integer, board:array of array of string) array of array Node Fungsi ini akan mengembalikan nodenode yang akan siap dipakai, yaitu node dengan seluruh atributnya telah terinisialisasi. Masukan fungsi ini berupa size yang bertipe integer yang merepresentasikan ukuran papan dan juga board yang merupakan array dua dimensi yang merepresentasikan huruf-huruf yang dibangkitkan permainan i: integer j: integer

temp: array of array of Node procedure AddSibbling(input i,j:integer, input/output board:array of array of Node) Prosedur ini menginisialisasi nilai Sibbling atau tetangga node pada posisi i,j. Sibbling atau Tetangga maksudnya node lain pada array yang mengelilingi node yang dimaksud, Sibbling direperesentasikan dalam bentuk list of node Iterate i 0..size Iterate j 0..size Temp i,j.letter board i,j Iterate i 0..size Iterate j 0..size AddSibbling(i,j,temp) temp 3.3 Pencarian Tahap ini merupakan inti dari tahap pertama, pada tahap ini dilakukan pencarian kata-kata yang dapat dibentuk dengan huruf-huruf yang dibangkitkan oleh permainan. Pencarian ini dilakukan dengan menggunakan exhaustive search. Inti dari pencarian ini yaitu mencocokan seluruh kombinasi huruf-huruf yang terdapat di papan, yaitu huruf yang dibangkitkan oleh permainan, dengan kata yang ada di kamus. Proses pengkombinasian dilakukan dengan mengiterasi seluruh huruf yang ada di papan, dan untuk setiap huruf tersebut digabungkan dengan huruf tetangganya, hal tersebut dilakukan secara rekursif hingga panjang kombinasi mencapai 10 huruf atau seluruh tetangga telah dikombinasikan. Dikarenakan tiap Node hanya dapat dipakai satu kali dalam penyusunan suatu kata, maka diperlukan penyimpanan yang berfungsi mencatat node-node mana saja yang telah dipakai, bentuk penyimpanan yang digunakan berupa list. Berikut adalah pseudocodenya: procedure findwords(input currword:string, currnode:node, usednode:list of Node, output foundword:list of string) Prosedur ini berfungsi untuk mencari seluruh kata-kata yang dapat dibentuk berdasarkan huruf-huruf yang dibangkitkan oleh permainan Length: integer temp: list of Node AllWord: array of list of string LoadAllWords() Length currword.length if(length>=3)then if(allword Length.contains(currWord))th en foundword.add(currword) if(length>9)then usednode.add(currnode) iterate i 0..currNode.Sibbling.count if(!usednode.contains(currnode.sibbl ing.elemenat(i)))then temp usedword //CCtor findwords(currword+ currnode.sibbling.elemenat(i).letter, currnode.sibbling.elemenat(i), temp, foundwords) 4 MENENTUKAN HURUF-HURUF PENYUSUN BESERTA POSISI HURUF TERSEBUT DI ATAS PAPAN 4.1 Representasi Masalah Pada bagian ini, terdapat 3 hal utama yang perlu direpresentasikan di dalam algoritma, yaitu kata yang akan dicari huruf penyusunnya, huruf-huruf yang dibangkitkan, dan posisi huruf-huruf penyusun kata tersebut. Kata yang akan dicari huruf-huruf penyusun beserta posisi huruf-hurufnya direpresentasikan dalam bentuk string. Huruf-huruf yang dibangkitkan dalam permainan direpresentasikan dalam bentuk array dua dimensi dari textbox. Sedangkan posisi huruf-huruf penyusunnya direpresentasikan dalam bentuk list of point. 4.2 Inisiasi

Pada tahap ini terdapat satu hal yang harus dilakukan sebelum pencarian dapat dilakukan, yaitu memastikan kata yang dicari posisi huruf-huruf penyusunnya memang kata yang dapat dibentuk dengan huruf-huruf yang dibangkitkan permainan. Hal tersebut dapat terlaksana dengan sendirinya jika kata yang dicari ialah hasil dari tahap pertama, yaitu menemukan kata-kata yang ada di dalam papan pada bab 3. 4.3 Pencarian Bagian ini merupakan bagian terpenting dalam tahapan ini, disini akan dihasilkan posisi huruf-huruf penyusun suatu kata pada papan. Pencarian dilakukan dengan cara rekursif, serupa dengan pencarian pada bab 3.3. Pertamatama dilakukan iterasi terhadap seluruh huruf pada papan, disetiap iterasi dilakukan pengkombinasian huruf yang sedang ditunjuk dengan tetangga-tetangganya secara rekursif, rekursif akan dihentikan jika panjang kombinasi huruf melewati panjang kata yang dimaksud, kombinasi huruf yang didapat bukan merupakan substring kata yang dimaksud, dan kombinasi huruf yang didapat telah sama dengan kata yang dimaksud. Berikut adalah pseudocodenya: Procedure findpath(input targetword:string, currword:string, currpoint:point, output path:list of point) Prosedur ini akan menghasilkan list of point yang berisi posisi huruf-huruf penyusun kata yang dimaksud yaitu targetword. Setelah mengetahui posisi huruf-hurufnya tindakan selanjutnya yaitu meng-highlight textbox tempat huruf yang bersangkutan berada. Fungsi ini mengembalikan huruf pada papan dengan posisi p. if currword.length > targetword.length then else if targetword.substring(0,currword.length).compareto(currword)!=0 then else if targerword.compareto(currword)==0 then path.add(currpoint) iterate i 0..path.count //highlight textbox pada posisi path.elemenat(i).x dan path.elemenat(i).y path.add(currpoint) sibbling getsibbling(currpoint) iterate i 0..temp.count if(!path.contain(sibbling.elemenat(i ))) then temp path//cctor findpath(targetword, currword+wordat(sibbling.elemenat(i)),s ibbling.elemenat(i),temp) 5 CONTOH SOLUSI Length: integer i: integer sibbling: list of point temp: list of point function getsibbling(p:point) list of point Fungsi ini mengembalikan point-point yang berada disekitar point masukan Gambar 2 screenshot program dengan papan 4x4 function wordat(p:point) string

Gambar 3 screenshot program dengan papan 5x5 6 KESIMPULAN Kesimpulan yang dapat diambil yaitu: 1. Exhaustive search merupakan metode yang relatif sederhana, namun untuk masalah pencarian, metode ini merupakan metode yang cukup powerful dalam artian, prosesnya di dalam program tidak terlalu berat dan proses pembuatannya yang mudah dan dapat relatif dapat dimengerti. 2. Dengan memisahkan proses pencarian solusi menjadi dua tahap, membuat program berjalan lebih ringan dikarenakan proses pencarian posisi huruf penyusun hanya dilakukan terhadap kata yang diinginkan saja. REFERENSI [1] Munir, Rinaldi, Diktat Kuliah IF3051 Strategi Algoritmik, Program Studi Teknik Informatika ITB, 2009. [2] http://www.codeproject.com/kb/cs/wordscramble.aspx. Diakses pada 24 Desember 2009 pukul 13.00 [3] http://www.algorithmist.com/index.php/exhaustive_search. Diakses pada 31 Desember 2009 pukul 8.06