4. Textalgorithmen Arten von String-Matching-Problemen ...
4. Textalgorithmen Arten von String-Matching-Problemen ...
4. Textalgorithmen Arten von String-Matching-Problemen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>4.</strong> <strong>Textalgorithmen</strong> <strong>String</strong> <strong>Matching</strong>: Boyer und Moore<br />
Veranschaulichung:<br />
pat:<br />
j − s<br />
↓<br />
- - - - a b c b c<br />
pat: - - - - a b c b c<br />
↑<br />
j<br />
text: - - - - - - a b c a b c - - - - -<br />
↑<br />
↑<br />
i i + j − 1<br />
<strong>4.</strong> <strong>Textalgorithmen</strong> <strong>String</strong> <strong>Matching</strong>: Boyer und Moore<br />
Die entsprechenden Werte werden in einer Preprocessingphase ermittelt<br />
und in der Shift-Tabelle D abgelegt.<br />
D[j] := min{s| (BM1) und (BM2) gilt für j und s }<br />
s>0<br />
Der Algorithmus <strong>von</strong> Boyer und Moore verwendet nun im Falle eines<br />
Mismatches an Position j den in D[j] abgelegten Wert, um pat nach<br />
rechts zu verschieben.<br />
Damit man keinen Match verpaßt, muß s wiederum möglichst klein<br />
gewählt werden.<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 194<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 196<br />
<strong>4.</strong> <strong>Textalgorithmen</strong> <strong>String</strong> <strong>Matching</strong>: Boyer und Moore<br />
Veranschaulichung:<br />
naechstmoeglicher Match<br />
fuer BM2 !=<br />
Vergleich<br />
= fuer BM1<br />
Mismatch<br />
Pattern<br />
1<br />
j<br />
m<br />
<strong>4.</strong> <strong>Textalgorithmen</strong> <strong>String</strong> <strong>Matching</strong>: Boyer und Moore<br />
Algorithmus <strong>4.</strong>7. [Algorithmus <strong>von</strong> Boyer und Moore]<br />
i := 1<br />
while i ≤ n − m + 1 do<br />
j := m<br />
while j ≥ 1 and pat[j] = text[i + j − 1] do j := j − 1 end<br />
if j = 0 then return true<br />
i := i + D[j]<br />
end<br />
return false<br />
Text<br />
<br />
Beispiel <strong>4.</strong><strong>4.</strong> D[j] lautet für F 7 :<br />
j 1 2 3 4 5 6 7 8 9 10 11 12 13<br />
pat[j] a b a a b a b a a b a a b<br />
D[j] 8 8 8 8 8 8 8 3 11 11 6 13 1<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 195<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 197