1. 程式人生 > >字尾自動機:O(N)的構建及應用

字尾自動機:O(N)的構建及應用

顯然,在向s中新增新字元之前,shortest(link(last))的長度不小於shortest(p)的長度,因為link(last)至多是p。爾後假設我們由q拷貝得到了節點clone,並試圖從p沿字尾連結上溯,將所有通往q的轉移重定向為通往clone。設v是shortest(當前節點),在clone剛剛建立完成後,v=short(p)。然後,在每次沿字尾連結上溯時,v的值都會變小,而如果當前節點存在經過字元c通往q的轉移,就意味著q對應的字串集合中包含v+c,也意味著clone包含的字串集合中包含v+c。換言之,我們為clone包含的字串集合找到了一個更短的元素,即減少了short(clone)的長度。