我有这个任务来证明这个问题:
有限字母表£,两个字符串x,y€ £*,和正整数K.是 有一种方法来派生字符串y 从字符串x乘K序列 或更少的单个符号操作 删除或相邻的符号 交换?
是np-complete。我已经发现我必须从设置覆盖问题的决策版本进行转换,但我不知道如何做到这一点。任何帮助将不胜感激。
答案 0 :(得分:2)
看起来像修改过的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 | < = L,和
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.]
如果源MSC问题是,则表明字符串校正问题(A,B,k)是可以满足的。
从字符串构造中可以清楚地看出证明不是微不足道的:-)但是管理它并不是太复杂。
答案 1 :(得分:0)
提到的NP硬度证明仅适用于任意大的字母。 对于有限字母,问题是多项式时间,请参见 https://dblp.org/rec/bibtex/journals/tcs/Meister15