【发布时间】:2013-09-07 02:29:05
【问题描述】:
我正在讨论 DC3 算法,用于构建后缀数组的线性时间算法。我无法理解论文中可以是found here 的技术。
我无法理解论文第 6 页提到的重命名是如何完成的。如何按照步骤 1 进行重命名。附录中的相关代码部分是:
for (int i = 0; i < n02; i++)
{
if (T[SA12[i]] != c0 || T[SA12[i]+1] != c1 || T[SA12[i]+2] != c2)
{
name++; c0 = T[SA12[i]]; c1 = T[SA12[i]+1]; c2 = T[SA12[i]+2];
}
if (SA12[i] % 3 == 1)
{
R[SA12[i]/3] = name;
} // write to R1
else
{
R[SA12[i]/3 + n0] = name;
} // write to R2
}
请帮助我理解这部分内容。 (此代码来自pdf的第20页)
【问题讨论】:
-
我理解的部分是 name 是变量,对于不同的三元组是不同的,对于完全相同的三元组是相同的。但是不明白这里怎么用R的索引?