Brute Force Knuth Morris Pratt

2.3.4. Macam Algoritma String Matching

Secara garis besar string matching dibedakan menjadi dua Binstock Rex dalam Syaroni Munir, 2004 : 2, yaitu: 1. Exact string matching 2. Inexact string matching atau Fuzzy string matching.

2.4. Exact String Matching

Exact string matching , merupakan pencocokan string secara tepat dengan susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama. Bagian algoritma ini bermanfaat jika pengguna ingin mencari string dalam dokumen yang sama persis dengan string masukan. Beberapa algoritma exact string matching yang mengemuka antara lain :

1. Brute Force

Analisis dengan metoda Brute Force adalah membandingkan karakter per karakter sampai ditemukannya pola yang dicari dari awal string sampai dengan akhir string Sagita, 2006 :1 . Dengan asumsi bahwa teks berada di dalam array T[1..n] dan pattern berada di dalam arrayP[1..m], maka algoritma brute force pencocokan string adalah sebagai berikut: a. Mula-mula pattern P dicocokkan pada awal teks T. b. Dengan bergerak dari kiri ke kanan, bandingkan setiap karakter di dalam pattern P dengan karakter yang bersesuaian di dalam teks T sampai:semua karakter yang dibandingkan cocok atau sama pencarian berhasil, atau dijumpai sebuah ketidakcocokan karakter pencarian belum berhasil. c. Bila pattern P belum ditemukan kecocokannya dan teks T belum habis, geser pattern P satu karakter ke kanan dan ulangi langkah 2. Kekuatan dan Kelemahan Metode Brute Force. Munir, 2004:6 a. 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 penjumlahanperkalian n buah bilangan, menentukan elemen minimum atau maksimum di dalam tabel list. b. Kelemahan: 1 Metode brute force jarang menghasilkan algoritma yang mangkus. 2 Beberapa algoritma brute force lambat sehingga tidak dapat diterima. 3 Tidak sekontruktifsekreatif teknik pemecahan masalah lainnya. Berikut ini adalah pseudecode dari algoritma brute force :

2. Knuth Morris Pratt

Algoritma KMP dikembangkan oleh D. E. Knuth, bersama-sama dengan J. H. Morris dan V. R. Pratt. Munir, 2004 : 8 Dengan algoritma KMP procedure PencocokanStringinput P : string, T : string, n, m : integer,output idx : integer { Masukan: pattern P yang panjangnya m dan teks T yang panjangnya n. Teks T direpresentasika sebagai string array of character Keluaran: lokasi awal kecocokan idx } Deklarasi i : integer ketemu : boolean Algoritma: i ketemu false while i n-m and not ketemu do j 1 while j m and Pj = Ti+j do j j+1 endwhile { j m or Pj Ti+j } if j = m then{ kecocokan string ditemukan } ketemu true else i i+1 {geser pattern satu karakter ke kanan teks } endif endfor { i n – m or ketemu } if ketemu then idx i+1 else idx -1 endif waktu pencarian dalam pencocokan pattern dan teks dapat berkurang dikarenakan algoritma ini melakukan sejumlah pergeseran lebih jauh sesuai dengan informasi ketidakcocokan string antara teks dan pattern. Dalam Algoritma Knuth-Morris-Pratt KMP, untuk setiap karakter yang dibandingkan kita bisa memutuskan apakah berhasil atau gagal. Algoritma KMP membangun sebuah mesin automata yang status-statusnya adalah status dari string yang sedang kita cari dan setiap status memiliki fungsi berhasil dan gagal. Berhasil artinya status akan bergerak lebih mendekat ke status akhir dan gagal artinya status bisa jadi semakin jauh atau tetap terhadap status akhir. Kita akan mendapatkan sebuah karakter dari text saat kita berhasil dalam membandingkan dan akan me-reuse karakter bila kita gagal Sagita : 3. Berikut ini adalah pseudecode dari algoritma brute force : procedure KMPsearchinput m, n : integer, input P : array[1..m] ofchar, input T : array[1..n] ofchar, output idx : integer { Mencari kecocokan pattern P di dalam teks T dengan algoritma Knuth-Morris-Pratt. Jika ditemukan P di dalam T, lokasi awal kecocokan disimpan di dalam peubah idx. Masukan: pattern P yang panjangnya m dan teks T yang panjangnya n. Teks T direpresentasika sebagai string array of character Keluaran: posisi awal kecocokan idx. Jika P tidak ditemukan, idx = -1. } Deklarasi i, j : integer ketemu : boolean b : array[1..m] ofinteger procedure HitungPinggiraninput m : integer, P : array[1..m] ofchar, output b : array[1..m] ofinteger { Menghitung nilai b[1..m] untuk pattern P[1..m] }

3. Algoritma Boyer Moore