2

論文http://webglimpse.net/pubs/suffix.pdfで理論を調べてみました

しかし、彼らが言うとき、私はちょっと迷っています

Ai を最初のバケットの最初の接尾辞 (つまり、Pos[0] = i) とし、Ai-h を検討します (ih < 0 の場合、Ai を無視して Pos[1] の接尾辞を取る、など)。 . Ai は最小の h シンボル文字列から始まるため、Ai-h はその 2h バケットの最初にあるはずです。

私はこの声明を理解することができません。ih < 0 の場合、Ai-h を無視できるのはなぜですか。フェーズ 1 で ih > 0 の場合、const 時間で位置を決定するには

1 つのサンプル impl はhttp://belbesy.wordpress.com/2012/10/10/spoj-649-distinct-substrings-suffix-arrays-nlgn/です。

4

1 に答える 1

1

C++ コードを理解しようとする代わりに、単純な 5 文字の例として、Manbers-Myers サフィックス配列構築アルゴリズムのこの Python 実装を手で見ていくことを強くお勧めします。

Python 版はコードが 15 行程度しかないため、非常に簡単に理解できます。

Python を理解していなくても、疑似コードとして扱い、理解できない構文を Google で検索してください。

個人的には、5 文字の文字列 1 つを手で見て、アルゴリズムがどのように機能するかを理解するのに十分でした..

于 2017-04-28T16:57:25.197 に答える