摘要:
相比后缀树,后缀数组的优势是存储空间小,相关算法效率高。但是若存放childtab还是使用up,down和nextLIndex三个属性,这显然不符合后缀数组节省空间的"第一原则"。幸运的是,可以压缩存储childtab,将三个属性up,down和nextLIndex变成一个一维数组。后缀数组childtab压缩存储的基本思路是保留所有的nextLIndex值(因为nextLIndex没有冗余),将大部分冗余的down值剔除(剩下部分的down值存放到空白的nextLIndex位置中),然后将up值放到空白的nextLIndex位置。首先给出lcp-interval和chil 阅读全文
摘要:
后缀数组自底向上遍历等价于后缀树的自底向上遍历。由于后缀数组不是树型结构,在遍历时除了SA本身之外还需要额外的信息,这时Suffix Array就是一个增强的后缀数组(Enhanced Suffix Array)了。该算法使用后缀数组的一个增强信息---LCP表,并通过堆栈模拟自底向上的遍历。遍历的结果就是一颗虚拟的lcp-interval树,其中每一个结点对应后缀树的一个内部结点。有些应用中,遍历时需要知道每个结点的孩子信息,因此在下面的实现中提供了两个版本bottomUpTraverseWithoutChildren和bottomUpTraverseWithChildren。需要说明的是, 阅读全文