Boyer-Moore Algoritması ve Analizi Kerem ERZURUMLU Sunum Planı • Temel Tanımlar • Basit Bir Arama Algoritması • Algoritma • Analizi • Boyer-Moore Arama Algoritması • Algoritma • Analizi • Sonuç Temel Tanımlar •

Download Report

Transcript Boyer-Moore Algoritması ve Analizi Kerem ERZURUMLU Sunum Planı • Temel Tanımlar • Basit Bir Arama Algoritması • Algoritma • Analizi • Boyer-Moore Arama Algoritması • Algoritma • Analizi • Sonuç Temel Tanımlar •

Boyer-Moore
Algoritması ve Analizi
Kerem ERZURUMLU
Sunum Planı
• Temel Tanımlar
• Basit Bir Arama Algoritması
• Algoritma
• Analizi
• Boyer-Moore Arama Algoritması
• Algoritma
• Analizi
• Sonuç
Temel Tanımlar
• Metin arama algoritması üzerinde
• Aranan: Aranmakta olan kelime
• Metin: Aranan kelimenin arandığı katar
olarak anılacaktır
Basit Bir Arama Algoritması - I
• Düz mantık ile yaratılacak olan ilk
algoritma;
for(i=0;i<strlen(metin);i++)
t=i
match=0
for(j=0;(j<strlen(aranan))&&(match==0));j++)
if(metin[t++]!=aranan[i]) match=1
Basit Bir Arama Algoritması - II
• Algoritma metin içindeki her harf için en
az 1 defa çağırılacaktır
• En kötü durumu sürekli tekrar eden bir
harf kümesi içindir
• aaaaaaaaaaaa içerisinde aab aranması
• En kötü durum için algotirma karmaşıklığı
O(n*m) olacaktır
• En iyi durum için (arananın ilk harfinin
metin’de olmaması) karmaşıklığı O(n)
olacaktır
Boyer-Moore Algoritması - I
• Arama işleminin daha akıllı yapılmasına
dayanır
• Birinci amaç metin’in ilgili konumunun
aranan’da hangi konum olabileceğini
tahmin etmekdir
• İkinci amaç metin’in bir an önce sonuna
ulaşmaktır
• Arama öncesi işlemler O(m)
karmaşıklığındadır
Boyer-Moore Algoritması - II
• Öncelikle aranan kelimedeki harflerin
kaçıncı konumda oldukları bulunur
• Aranan kelimenin uzunluğu kadar atlanır
• Metin’deki mevcut konumdaki harf
uyuyorsa
• Bir önceki harfe bakılır
• Uymuyorsa
• Metin’den alınan harfin aranan’da kaçıncı harf
olduğuna bakılarak aranan boyundan bu sayı
eksiği kadar ileri atlanır.
Boyer-Moore Algoritması - III
• Uymuyorsa?
• Aranan: “Zerrin”
• Metin: “Kerem ile Zerrin’i
gördüm.”
• İlk deneme;
• “kerem ile Zerrin ...”
ZerrinZerrin
Boyer-Moore Algoritması - IV
• “Kerem ile Zerrin’i gördüm”
Zerrin ‘ ’ ve ‘n’ ‘ ’ arananın bir parçası
değil
Zerrin ‘e’ ve ‘n’,‘e’ arananın 2
harfi
Zerrin
Boyer-Moore Algoritması - V
char *search(char *pat,char *text,int n)
{ int i, j, k, m, skip[MAXCHAR];
m = strlen(pat);
if( m==0 ) return( text );
for( k=0; k<MAXCHAR; k++ ) skip[k] = m;
for( k=0; k<m-1; k++ ) skip[pat[k]] = m-k-1;
for( k=m-1; k < n; k += skip[text[k] & (MAXCHAR-1)] )
{
for( j=m-1, i=k; j>=0 && text[i] == pat[j]; j-- ) i--;
if( j == (-1) ) return( text+i+1 );
}
return( NULL );
}
Boyer-Moore Algoritması - V
• Arama öncesi işlem O(m)
• En kötü durum
• Metin: “aaaaaaaaabaa”
• Aranan:“baa”
• O(n*m)
• En iyi durum O(n/m)
• Ortalama durumda O()
Kaynakça
• Introduction Algorithms
• Thomas H. Cormen, Charles R. Leisersen, ronald L. Rivest,
• http://www-igm.univmlv.fr/~lecroq/string/node14.html
• http://wwwlsi.upc.es/~rbaeza/handbook/algs/7/713b.srch.c.
html
• http://www.cee.hw.ac.uk/~alison/ds98/node78.htm
l
• http://www.cs.ucr.edu/~jiang/cs141/string.pdf