1. 程式人生 > >[學習筆記]後綴系列總結

[學習筆記]後綴系列總結

多節點 後綴數組 再次 後綴自動機 深度 排列 連接 發現 bsp

後綴樹

後綴插到trie樹裏。 把許多節點壓到一起。節點數量是O(n)的 節點可以記錄原串的起始終止位置。 可以查詢子串。

性質: LCA深度為LCP長度 某個點的子樹葉子個數為點所代表的子串的出現次數。 按字典序dfs就是後綴排序結果。

後綴數組

求法:倍增,基於基數排序 對於SA LCP(i,j)=min(hei[i]) 可以枚舉一個k,去掉hei<k的,把SA數組根據Hei分成一些塊。 塊內的兩兩之間LCP的長度都大於等於k k可以枚舉,或者二分。

後綴自動機

核心: 1.Right集合 2.Parent樹的聯系 3

學習思考: 後綴樹 反串上建SAM的Parent樹就是後綴樹。 trie樹建後綴自動機

**求兩個串本質不同的公共子串個數

#號連接,然後跑後綴數組

SA序列,記錄所屬的字符串s1,或者s2

排列成形如:

s1

s2

s2

s1

s2

s1

...

新出現的公共子串一定是s1,s2之間的height(例如s1,s2後s2,s1)

然後考慮再次出現的時候去掉之前出現過的。

發現就是之前上一次s1,s2的LCP位置取min過來的長度,減去即可。

[學習筆記]後綴系列總結