[英]Pattern prefix-function computation in Knuth-Morris-Pratt Algorithm
給定模式的前綴功能中是否可能有類似這樣的內容,
0 0 1 2 3 0 1 2 3 4 5 3 4 5
6 7 0 1 2
在上述前綴函數中,4 5之后只有6還是0? 如果像上一個那樣在4 5之后有例如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(如果沒有前綴匹配)或比b
的某些邊框的寬度大一個。
因此,如果table[p]
包含length-p前綴的最寬邊框的寬度( table[0] = -1
),則table[p+1]
是1+table[p]
, 1+table[table[p]]
,..., 1+table[table[...[table[p]]]] = 1 + table[0] = 0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.