KMPプレフィックス関数と文字列照合オートマトンの間の接続


7

LET文字列照合オートマトンパターンのための、ありますAP=(Q,Σ,δ,0,{m})PΣm

  • Q={0,1,,m}
  • δ(q,a)=σP(P0,qa) for all and a \ in \ SigmaqQaΣ

σP(w)の最長プレフィックスの長さPの接尾辞であるwであり、

σP(w)=max{kN0P0,kw}

さて、聞かせて\パイプレフィックス機能からクヌース-モリス-プラット法であるが、π

πPq=最高{k|k<qP0kP0q}

πP\ pi_Pを使用してδすばやく計算できます。中心的な観測は次のとおりです。

上記の概念と\ in \ Sigmaを想定しaΣます。ためq{0メートル}q=メートル又はPq+1aは、その保持します

δqa=δπPqa

しかし、どうすればこれを証明できますか?


参考までに、これは\ pi_Pの計算方法ですπP

m ← length[P ]
π[0] ← 0
k ← 0
for q ← 1 to m − 1 do
  while k > 0 and P [k + 1] =6 P [q] do
    k ← π[k]
    if P [k + 1] = P [q] then
       k ← k + 1
    end if
    π[q] ← k
 end while
end for

return π

3
もう少し詳しく教えてもらえますか?パターンとは何ですか?プレフィックス関数とは正確には何ですか?指定したリンクにプレフィックス関数が表示されませんでしたか?オートマトンは確定的ですか、非確定的ですか?
デイブクラーク

3
それがKMP遷移関数の定義ではないですか?あなたは見つけるかもしれないこれらのノートは便利(ただし、脚注1を参照します)。
JeffE

KMPの接頭辞機能を使用して質問を編集しました
ボブ

1
したがって、あなたの質問は基本的に、上記のコードがKMPの前置関数を計算することを証明する方法です。
rgrig 2012年

2
@Raphael:私は、編集された質問が見つけるずっと読みにくく。
JeffE 2012年

回答:


3

まず第一に、定義により

  • δ(q,a)=σP(P0,qa)=:s1および
  • δ(πP(q),a)=σP(P0,πP(q)a)=:s2

スケッチのとを調べてみましょう:s1s2

スケッチ
[ ソース ]

ここでと仮定します。これは、の最大の選択と直接矛盾します。我々は仮定した場合我々がいるという事実と矛盾両方と、特に、最大限に選ばれている理由を。どちらの場合も矛盾につながるため、が成立し、qeds2>s1s1s1>s2 s2πP(q)πP(q)s11s1=s2


要求に応じて、より精巧なバージョンの証明:

次に、を表示する必要があります。これは、反対が矛盾につながることを示すことによって行います。s1=s2

  • と仮定します。なお、ためとの定義により。したがって、 -のプレフィックスのサフィックス -は長いよりの定義である、の最長プレフィックスこれはサフィックスです。これは矛盾です。s2>s1P0,s2P0,qaP0,s2P0,πP(q)aP0,πP(q)P0,qs2P0,s2P P0,qaP0,s1s1PP0,qa

他のケースを続ける前に、見てみましょう。そのため観察、我々は。仮定すると、すぐの最大の選択反する(セットであるから選択されます)。πP(q)s11P0,s1P0,qaP0,s1P0,qπP(q)<s11πP(q)s11πP(q)

  • と仮定します。私達はちょうど示した、およびを覚えておいてください。したがって、の矛盾する最大選択(セット内にあるから選択されます)。s1>s2|P0,πP(q)a|s1P0,πP(q)aP0,qas1>s2s2s1s2

どちらのようも保持することができ、我々はそれを証明している、QEDs1>s2s2>s1s1=s2


または回答を正当化できますか?q=メートルPq+1a

@SCO:「正当化」とはどういう意味ですか?これは、「wのサフィックスであるPの最長のプレフィックス」が使用されることを保証するステートメントの単なる条件です。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.