接尾辞木()が定義され、構成

接尾辞木(接尾辞木):

:Sは、ルートノードを含むm個のTの接尾辞木を有する単語列は、有向ツリーされ、正確にm個の葉を有する木は、これらの葉を1からmまでの番号与えられます。各内部ノードは、ルートを除き、少なくとも2つのつの子ノードを有し、$の各エッジは、非空の文字列を識別するために使用されます同じノードから任意の二つの辺の同定は、同一のワードで開始しないであろう接尾辞木の重要な特徴は、次のとおり、任意のリーフのルートノードからリーフまで私は、すべての経験豊富なエッジサフィックスを識別する正確に位置I S、即ち、S [I、...、M]から出発してスペル連結ツリー内の識別されたノードは、ルートからノードへのすべての識別されたエッジの系列として定義されます。

サフィックス:配列の長さmのストリングS = S1、S2 .... SM、、示されたSi = SI SI + 1 ..... iがSの接尾辞であるSMは明らかS1 = S元の文字列であります;

接尾辞木が定義されている:ツリー以下の条件を満たすに接尾辞木である長M系列S:

1)m個の葉ノードと、2)ルートノードとリーフノードに加えて、少なくとも2つの内側エッジ(子ノード)、空でないシーケンスSの各エッジ対応を有する各ノード。

3)任意の内部ノードからの逸脱に対応する配列の最初の文字の双方が同じではありません。

4)リーフノード・パスへのルートからの文字列は、私は最初からSサフィックス文字列を構成しています。

パスレーベル:パスラベルパスと呼ばれる文字の配列に対応します。

ノードタグ:タグは、ノードタグと呼ばれ、このパスに対応するルートノードから開始します。

この問題を解決するために存在しないすべての文字のシーケンスのは、接尾辞木を持っている、例えばxabxa XA xabxa(接尾xabxa、abxa、BXA、XA、持っている)プレフィックス、文字列の最後に$記号は、そのような任意のもの接尾辞として他の接尾辞ではありません。

(Xabxa $接尾辞木)

 注:葉ノードに対応するリーフノードのパス上の文字(複数可)へのルートは、私はいくつかの文字の開始位置を文字列が始まる接尾辞、リーフノードの店舗を表しからI(s)は、いくつか持っていますリーフノードは、ルートノードと内部ノードは、任意のデータ、データを格納するだけリーフノードとエッジを格納しません。

 

暗黙の接尾辞木:暗黙の接尾辞木Sシーケンスは、接尾辞木S $の配列を意味する$ものは削除ツリー得マージンその後、$記号をエッジ削除。

(Xabxaは暗黙の接尾辞木を$)

つまり:$シンボルエッジの削除のすべての空の側を削除することです暗黙のサフィックスツリー構造の後、

サフィックスツリー構造:

接頭文字列I = mは暗黙接尾辞木Sを構成することができるS、S1、S2 .... SI構成暗黙接尾辞木のTi、。

后缀树伪代码
1、初始化一个隐含后缀树
for i 从 1 到 m:  //m为字符串长度
   逐步构造隐含后缀树
   for j 从 1 到 i+1:
        #后缀拓展规则
        在已经构建好的后缀树中找到从root结点出发
        标记位S[j....i]的序列,如果需要的话将
        S[i+1]加入到这条路径后面
   进行下一次隐含后缀树的构造
end  //完成整个后缀树的构造

サフィックス拡張ルール:

ツリー内のΒ= Sそう... I [j]は、Sが1であり、β... iは一のサフィックスJ伸長工程は、配列ベータ]ことを確実にすることであるの、S [I + 1] ;

1、ルール1:βは、ちょうどS [I + 1]が直接リーフノード上に追加された点を終了リーフ・ノード・パスです。

(Βは、エンドポイントとしてリーフノードへのパスが、直接経路Sに増加する[I + 1])

図2に示すように、ルール2:βは、S [I + 1]の開始へのパスバックされていないが、少なくとも1つの経路が存在する内部ノードのβ終端は、新たなリーフノードを作成した場合、継続βであります

βは、ルートノードの外部からの子ノードを作成する場合を除き、一辺の中央にある内部ノードとS標識されたこのエッジの子ノード[I + 1]としても確立します

βのラベルされた内部ノードを起動します。

(Βの内部ノードの中央部に、その挿入端から経路と内部ノードは、その経路標識S [I + 1]の子ノードを生成します)

3,3ルール:βがないアクションの開始時にS [I + 1]のパスの始まりと終わりです。

(何もしないβで始まるパスはあり)

例:徐々に文字列S =「axabxb」接尾辞木を構築します。

文字 A バツ A B バツ B
添字 1 2 3 4 5 6

 時間の複雑さの解析:

各内側ループのパスβを見つける必要があり、その時間複雑さは、内側および外側層の環状O(I ^ 2)のO(β)であり、一緒に時間複雑性はO(M ^ 3)です。

公開された79元の記事 ウォン称賛81 ビュー5735

おすすめ

転載: blog.csdn.net/weixin_44638960/article/details/102743453