种子计算的线性时间算法
A Linear Time Algorithm for Seeds Computation
摘要:
单词中的种子是周期的放松版本,其中重复子字的出现可以重叠。我们展示了一个线性时间算法计算一个词的所有种子的线性大小表示(种子的数量可能是二次的)。特别是,人们可以很容易地从我们的表示中获得最短的种子和种子的数量。因此,我们解决了Smyth(2000)调查中提出的一个开放问题,并改进了Iliopoulos,Moore和Park(1996)以前的O(n log n)算法。我们的方法是基于种子和子字复杂性之间的组合关系(这里使用的第一次在上下文中的种子)。在以前的论文中,种子的紧凑表示由两个独立的部分组成,分别对单词的后缀树和单词的逆后缀树进行操作。我们的第二个贡献是一个更简单的表示所有的种子,避免了处理颠倒的字。这项工作的一个初步版本,用一个更复杂的算法构建了早期的种子表示,在第23届年度ACM-SIAM离散算法研讨会(SODA 2012)上发表。
英文摘要:
A seed in a word is a relaxed version of a period in which the occurrences of the repeating subword may overlap. We show a linear-time algorithm computing a linear-size representation of all the seeds of a word (the number of seeds might be quadratic). In particular, one can easily derive the shortest seed and the number of seeds from our representation. Thus, we solve an open problem stated in the survey by Smyth (2000) and improve upon a previous O(n log n) algorithm by Iliopoulos, Moore, and Park (1996). Our approach is based on combinatorial relations between seeds and subword complexity (used here for the first time in context of seeds). In the previous papers, the compact representation of seeds consisted of two independent parts operating on the suffix tree of the word and the suffix tree of the reverse of the word, respectively. Our second contribution is a simpler representation of all seeds which avoids dealing with the reversed word. A preliminary version of this work, with a much more complex algorithm constructing the earlier representation of seeds, was presented at the 23rd Annual ACM-SIAM Symposium of Discrete Algorithms (SODA 2012).
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。