ガリルの法則はボイヤー・ムーアアルゴリズムでどのように機能しますか?


7

ガリルのルールを使用したボイヤー・ムーアのテキスト検索アルゴリズムがどのように機能するかを知りたいのですが。検索を試みましたが、このWikipediaページなど、見つけた情報を理解できませんでした。そして、なぜこのルールで線形時間の複雑さを実現するのでしょうか?


答えは詳細に説明された専門家の意見である必要はなく、あなたがそれがどのように機能するかを考えているだけです!
Andi Domi 2016

回答:


1

アルゴリズムは単純な原理に基づいています。長さnの部分文字列に一致させようとしていると仮定し  ます。まずインデックスmの文字を見てみましょう。その文字が文字列にない場合、必要な部分文字列はインデックス1 2 .... nの文字で開始できないことがわかり  ます。

その文字が文字列内にある場合は、文字列の最後の位置にあると想定します。次にジャンプして、その可能な開始位置から文字列を一致させようとします。この情報は、私の最初の表です。

部分文字列の先頭から照合を開始すると、不一致が見つかった場合、最初から始めることはできません。別の時点から部分的に試合に臨むことができた。たとえば、anandanandを一致させようとしている場合   、ananは、次のaは広告ではないことを認識していますが、anを一致させただけなので、サブストリングの3番目の文字を一致させるようにジャンプする必要があります。 。これは、「x文字の一致後に失敗した場合、一致のy番目の文字である可能性があります」という情報が2番目のテーブルに格納されます。

一致に失敗した場合、2番目のテーブルは、一致のどこまで進んだかがわかっていることに注意してください。最初の表は、私が見たばかりのキャラクターに基づいて、どのくらい前に戻ったかを知っています。これら2つの情報のうち、より悲観的なものを使用したいとします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.