關於AC自動機fail指針的靈感

 

看之前先看下trie樹是怎麼構造的

樹上的詞分別是(從上到下)

{  he , hers , his , she}

按圖所示分成3層

 

看到第三層

是"she"

其中,

①s指向root

 

②h先找到s的fail指針,發現是,不是h,

然後h就不高興了,再問問s的fail指針root:“你有沒有兒子是叫h的”

root說:“有,你指向他吧”

然後h就滿足了

 

③e開始找了,首先問他老爸h:“你的fail指針指着誰”

h說:“圖上第一行那個h啊”

然後e就屁顛屁顛地跑去問圖上第一行那個h:“你有沒有名字和我一樣的兒子啊”

圖上第一行那個h說:“有,他地址是xxx”

最後e的fail指針就指向xxx地址,也就是第一行那個e了

 

發現這樣,如果一個字符串查到第三行的e纔不匹配,那說明他前面應該有個‘he’

剛好e的失敗指針指向的是第一行的‘he...’的那個e;

這樣就不用從h開始再找一遍啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章