计算机科学>数据结构和算法
标题: 存储和搜索最大公共子序列的紧凑DAG
摘要: 两个字符串X和Y之间的最大公共子序列(MCS)是包含下最大的X和Y的子序列。 MCS放松并推广了众所周知且广泛使用的最长公共子序列(LCS)概念,它可以被视为最大长度的MCS。 虽然LCS和MCS的数量在字符串长度上都是指数级的,但LCS长期以来一直被用于字符串和文本分析,因为自70年代以来,人们就知道两个字符串之间所有LCS的简单紧凑表示法是通过动态编程或自动机构建的。 MCS似乎有一个更具挑战性的结构:即使有效地列出它们,直到最近还是一个悬而未决的问题,从而缩小了这两个问题之间的复杂性差异,但差距仍然很大。 在本文中,我们缩小了复杂性差距:我们展示了如何在多项式时间内构建多项式大小的DAG,该DAG允许对所有MCS集进行高效操作,例如在每个解决方案的恒定摊销时间(CAT)中枚举、计数和随机访问第i个元素(即秩和选择操作)。 除了改进已知的算法结果外,这项工作还为基于MCS的新序列分析方法铺平了道路。