好像修改了Levenshtein distance。问题可以用 DP 在二次时间内解决。
从最小集覆盖 (MSC) 到该字符串校正问题的转换描述于:
Robert A. Wagner
On the complexity of the Extended String-to-String Correction Problem
1975, Proceedings of seventh annual ACM symposium on Theory of computing
简单来说就是 MSC 问题:
给定有限集 x_1, ..., x_n 和整数 L,是否存在 {1,...,n} 的子集 J 使得 |J|
union_{j in J} x_j = union all x_i ?
令 w = 联合所有 x_i,令 t = |w|和 r = t^2,并选择符号 Q、R、S 不在 w 中。
取字符串:
A = Q^r R x_1 Q^r S^(r+1) ... Q^r R x_n Q^r S^(r+1)
B = R Q^r ... R Q^r w S^(r+1) ... S^(r+1) <- each ... is n times
and
k = (l+1)r - 1 + 2t(r+1)(n-1) + n(n-1)(r+1)^2/2 + (r*n + |x_1 ... x_n| - t)*W_d
[W_d is delete operation weight, can be 1.]
证明串串校正问题(A,B,k)是可满足的,只要源MSC问题是。
从字符串构造来看,证明并非微不足道 :-) 但管理起来并不太复杂。