算法合集之后缀数组.ppt

后缀数组——应用举例 r r i i-r-1 i+r+1 反射相等 以某个位置为中心向两边扩展的复杂度为O(m) 整个算法的复杂度为 O(m2) 后缀数组——应用举例 求以一个位置i为中心向两边扩展的最远值 是算法的核心部分 需要降低这一步的复杂度 后缀数组——应用举例 $ 中心 i i=2m-i+2 i-r i+r i+r # 求以i为中心向两边扩展的最远值,等价于 求Suffix(i)和Suffix(i)的最长公共前缀 后缀数组!!! 同时和粉红串反射相等 T串 T串 Suffix(i)和Suffix(i)的公共前缀 后缀数组——应用举例 解法: 初始化答案为0。按照前述方法修改串T,得到串S 求出后缀数组SA、名次数组Rank 计算height数组并进行标准RMQ方法预处理 复杂度:  设len(S)=n,则n=2m+2 O(m) + O(nlogn) + m*O(1) = O(nlogn) 枚举i,计算以i为中心向两边扩展的最远值并更新答案 + 2*O(n) 后缀数组 VS 后缀树 后缀树也可以做到类似的事情 后缀数组有什么优势呢? 后缀数组 VS 后缀树 后缀数组在信息学竞赛中最大的优势: 易于理解,易于编程,易于调试 后缀数组比后缀树占用的空间少 ——处理长字符串,如DNA分析 后缀数组 VS 后缀树 时间复杂度的比较 按照字符总数|Σ|把字符集Σ分为三

文档评论(0)

1亿VIP精品文档

相关文档