私は、書籍アルゴリズム4thのKMPアルゴリズムを学んでいます。私はアルゴリズムの大部分を理解することができましたが、数日の間、dfa構築のプロセスで立ち往生しています。DMP構築の過程をKMPアルゴリズムで理解する方法
例えば、ABABAC
のパターンをとってください。 C
に不一致がある場合(dfaの状態が5)、テキスト内の文字を右にシフトする必要があります。したがって、私たちが知っているパターン文字はBABA
です。しかし、どのように建設中のDFAの次の状態を把握するには?我々はフルバックアップが私たちを残してしまうことを学ぶためにDFAを使用して、我々はJ = 5で一致していたときにDFAがABABAC
のために、何をすべきかを決定するために、例えば
:私は、下のテキストを理解することができませんでした状態3では
BABA
ですので、dfa[][3]
をdfa[][5]
にコピーできます。
「フルバックアップはBABA
の状態3になります」とは何ですか、指定された入力がないときにこの結論を得る方法は何ですか?そして、私はテキストに残っているグラフを理解できません。誰でもその意味を説明できますか?私は2、3日間自分でそれを理解しようとしましたが、まだそれを得ることができませんでした。ありがとうございました!あなたが入力文字列に一致しているとき
And you can read the segment of Algorithms 4th here.