Modul-10
Analisis Pattern / String
Matching-2
(Karp-Rabin, KMP)
24/08/2014 Analisis Algoritma, @SUARGA 2
24/08/2014 Analisis Algoritma, @SUARGA 3
24/08/2014 Analisis Algoritma, @SUARGA 4
24/08/2014 Analisis Algoritma, @SUARGA 5
24/08/2014 Analisis Algoritma, @SUARGA 6
24/08/2014 Analisis Algoritma, @SUARGA 7
procedure BruteForceSearch(
input m, n : integer,
input P : array[0..n-1] of char,
input T : array[0..m-1] of char,
output ketemu : array[0..m-1] of boolean
)
Deklarasi: i, j: integer
Algoritma:
for (i:=0 to m-n) do
j:=0
while (j < n and T[i+j] = P[j]) do
j:=j+1
endwhile
if(j >= n) then
ketemu[i]:=true;
endif
endfor
24/08/2014 Analisis Algoritma, @SUARGA 8
%BruteForceSM - BruteForce String Matching
clear;
pattern = input('Masukkan pola : ');
text = input ('Masukkan string-nya : ');
M = length(pattern);
N = length(text);
Ok=0;
for i=1:N-M
for j=1:M
x=text(i+j);
y=pattern(j);
if (x ~= y)
break;
end;
end;
if (j == M)
fprintf('sama pada posisi %d\n',i);
Ok=1;
end;
end;
24/08/2014 Analisis Algoritma, @SUARGA 9
24/08/2014 Analisis Algoritma, @SUARGA 10
Algoritma Boyer-Moore
Berbeda dengan Brute-Force, algoritma Boyer-
Moore tidak perlu memeriksa satu persatu huruf
pada string-1 agar cocok dengan string-2
Boyer-Moore memanfaatkan satu tabel yang
memuat posisi pada string-1 yang memiliki
kesamaan dengan suatu huruf dalam string-2.
Andaikan string-2=ABCDE akan dicocokkan
pada posisi i pada string-1, namun pada posisi
(i+4) ditemukan X yang sama sekali tidak ada
dalam string-2, maka tidak perlu dilanjutkan,
langsung saja ke posisi (i+5)