如何使用 π 前缀函数在时间 O(m |Σ|) 中给出一个有效的算法来计算字符串匹配自动机的转移函数 δ?
我想在有限自动机中计算转移函数。正常转换函数具有 O(m^3|Σ|) 复杂度,其中 m = 模式 P 的长度,Σ 是字母表。COMPUTE_TRANSITION_FUNCTION(P,Σ)
m = length(P);
for q = 0 through m do
for each character x in Σ
k = min(m+1, q+2); // +1 for x, +2 for subsequent repeat loop to decrement
repeat k = k-1 // work backwards from q+1
until Pk 'is-suffix-of' Pqx;
d(q, x) = k; // assign transition table
end for; end for;
return d;
End algorithm.
π 是 KMP 算法中定义的前缀函数