使用manber myers算法的后缀数组

时间:2013-08-28 18:37:50

标签: arrays algorithm data-structures suffix-array

我试图通过论文http://webglimpse.net/pubs/suffix.pdf

中的理论

但是当他们说

时,我有点迷茫
  

让Ai成为第一个桶中的第一个suf fi x(即Pos [0] = i),并考虑Ai-h(如果ih <0,那么我们忽略Ai并采用Pos [1]的suf fi x,等等)。由于Ai以最小的h符号字符串开头,因此Ai-h应该是其2h桶中的第一个。

我无法理解这句话。如果i-h 0时,如何在常数时间内确定位置。阶段1中的0?

一个示例impl是http://belbesy.wordpress.com/2012/10/10/spoj-649-distinct-substrings-suffix-arrays-nlgn/

1 个答案:

答案 0 :(得分:0)

我强烈建议,不要试图理解C ++代码,而是手动浏览这个Python implementation of the Manbers-Myers suffix array construction algorithm,以获得一个简单的5个字符示例。

因为Python版本只有大约15行代码,所以很容易理解。

即使您不了解Python,也要将其视为伪代码,将谷歌视为您不理解的语法。

就个人而言,我手工浏览了一个5个字符的字符串,这足以帮助我理解算法是如何工作的。