求最长回文子串及最长重复子串.docVIP

  • 5
  • 0
  • 约 9页
  • 2017-06-08 发布于湖北
  • 举报
求最长回文子串与最长重复子串。 长沙雅礼中学 何林 【介绍】 问题的提出: 问题1 最长回文子串 顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。 输入长度为n的串S,求它最长回文子串。 问题2 最长重复子串 如果一个串x在S中出现,并且xx也在S中出现,那么x就叫做S的重复子串。 输入长度为n的串S, 本文主要涉及“最长回文子串”和“最长重复子串”这两个经典的信息学问题。把他们放在一起讨论,是因为两者的解法具有惊人的类似性。 从算法的最优性上说,两者都存在线性时间复杂度的算法——使用后缀树。无庸置疑,后缀树已经成了优化字符串处理类问题的不二法门。但是它有两个致命缺点。 后缀树的时空复杂度和字符串涉及的字符集有直接关系。称后缀树是“线性数据结构”也是建立在字符集规模为常数的假设上。因此,所谓“线性算法”,准确的说,只是“伪线性”。 实践后缀树的编程复杂度极高。如果说上一点是后缀树在理论上的硬伤,那么这一点就是后缀树在实践上的致命弱点。对时间要求很高的信息学竞赛,是不允许选手花数个小时去编写一个长而容易出错的程序的。最重要的一点是,因为字符集比较大,后缀树的实际运行效果往往不佳,甚至很容易发生空间上的爆炸。 以上两个原因限制了后缀树在竞赛中的应用,虽然它在理论上的价值是不可取代的。 一种折衷的数据结构

文档评论(0)

1亿VIP精品文档

相关文档