与えられたパターンのプレフィックス関数にこのようなものがある可能性はありますか?
0 0 1 2 3 0 1 2 3 4 5 3 4 56 7 0 1 2
上記の45の後のプレフィックス関数では、6または0の可能性しかありませんか?上記のように45の後に3(5未満で0より大きい)などの可能性がある場合、パターンはどのようになりますか。
これに似たパターンしか考えられませんが、
a b a b a b a b c a
0 0 1 2 3 4 5 6 0 1
ありがとう。
与えられたパターンのプレフィックス関数にこのようなものがある可能性はありますか?
0 0 1 2 3 0 1 2 3 4 5 3 4 56 7 0 1 2
上記の45の後のプレフィックス関数では、6または0の可能性しかありませんか?上記のように45の後に3(5未満で0より大きい)などの可能性がある場合、パターンはどのようになりますか。
これに似たパターンしか考えられませんが、
a b a b a b a b c a
0 0 1 2 3 4 5 6 0 1
ありがとう。
これは、6の後にリンク4が失敗するパターンの例です。
a b c a b c d a b c a b c a
0 0 0 1 2 3 0 1 2 3 4 5 6 4
あなたの特定の例は不可能です。目的のプレフィックステーブルから文字列の作成を開始すると、次のようになります。
0 0 1 2 3 0 1 2 3 4 5 3 4 5 6 7 0 1 2
a b a b a c a b a b a
長さの接頭辞に対応するテーブルのエントリは、その接頭辞pの最も広い境界線の幅を示しbますw。次のエントリは、 w+1(拡張可能な場合b)、0(一致するプレフィックスがない場合)、またはの境界線の幅より1つ大きい場合にのみ指定できbます。
したがって、length-pプレフィックス(と)table[p]の最も広い境界線の幅が含まれている場合は、、、...、のいずれかになります。table[0] = -1table[p+1]1+table[p]1+table[table[p]]1+table[table[...[table[p]]]] = 1 + table[0] = 0