はい。
こちらもご覧ください
極端な例として、ABCD
テキスト内のパターンを見つける必要があるかどうかを考えてみましょう12345678
。
もちろん、最も早い一致はテキストの先頭から始まります。D
パターンを後方に一致させようとするため、テキストの 4 番目の文字と一致するかどうかを確認します。
?
12345678
ABCD
ABC
これは一致ではないため、最初の 3 文字と一致させようとしても意味がないことがわかっています。4
また、(線形時間前処理の後で) 見つけた文字がパターンにまったく現れないこともわかっているため、見つけることができる最も早い一致は、次の位置、つまり 5 番目の文字から開始する必要があります。
D
再び後方一致を試みるので、8 番目の文字と一致するかどうかを確認します。
?
12345678
ABCD
私たちは見つけます8
; これは一致しません。したがって、パターンはテキストには表示されません。テキストから 2 文字だけを表示する必要がありました。
これは、Boyer-Moore アルゴリズムの重要な特徴の 1 つです。長さ のテキストと長さN
の固定パターンのM
場合、平均ケースのパフォーマンスはN/M
比較になります。つまり、最初は直感に反するかもしれませんが、探しているパターンが長ければ長いほど、通常はより速く見つけることができます。