Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 关于后缀数组的原始论文中的勘误表?_Algorithm_Pseudocode_Suffix Array - Fatal编程技术网

Algorithm 关于后缀数组的原始论文中的勘误表?

Algorithm 关于后缀数组的原始论文中的勘误表?,algorithm,pseudocode,suffix-array,Algorithm,Pseudocode,Suffix Array,我正在查看介绍后缀数组的原始文章的图3中给出的伪代码 我无法理解第4行和第5行(从0开始索引)的逻辑。行内容如下: 如果r

我正在查看介绍后缀数组的原始文章的图3中给出的伪代码

我无法理解第4行和第5行(从0开始索引)的逻辑。行内容如下:

如果r或wr≤ aPos[N-1]+r然后
LW← N

W
是我们正在寻找的长度“p”的模式,
r
lcp(A[pos[N-1]:],W)
。问题是,在几乎所有情况下,此
lcp
的长度都小于“W”。这个条件是为了处理(我认为)模式在字典上大于数组中最大后缀的情况,但它根本不测试这一点。另一方面,第2行和第3行测试
W
是否小于词典中最小的后缀,这两行似乎很有意义

如果l=pwl≤ aPos[0]+l然后
LW← 0

我认为原文应该是这样的:

如果r
wr>aPos[N-1]+r
LW← N


W
可以大于
A[pos[N-1]:]
的唯一方法是它的
lcp
比模式的长度短(否则,所有
W
匹配,因此
W
不能大于,只能小于或等于我们共享
lcp
的对象)如果
lcp
后面的字符在
W
中大于
A[pos[N-1]]
。这似乎有道理吗?这是原稿中的错误吗?如果没有,请有人向我解释一下我是如何误解原始代码的?

我想你理解的文章是正确的,事实上它有一个错误

考虑以下示例:让
A=banana
W=nana
。然后
A[pos[N-1]:]=nana
。算法设置
LW=N
甚至失败,而实际上它是
N-1