转换字符串有多困难?
通过将字符散布到新的字符串中,从而使每个字符串的字符保持顺序,从而形成两个字符串的混洗。例如,MISSISSIPPI是一个洗牌MISIPP和SSISI。如果我将两个相同的字符串混洗,请说一个字符串平方。例如,ABCABDCDis square是因为它是ABCDand 的混洗ABCD,但是字符串ABCDDCBA不是正方形。 是否有一种快速的算法来确定字符串是方形的还是NP硬的?显而易见的动态编程方法似乎不起作用。 甚至以下特殊情况也似乎很困难:(1)每个字符最多出现四次 六次的字符串,以及(2)只有两个不同字符的字符串。 正如Per Austrin指出的那样,每个字符最多出现四次的特殊情况可以简化为2SAT。 更新: 此问题有另一种说法可以使硬度证明更容易。 考虑图G的顶点为1到n的整数。用端点之间的真实间隔来标识每个边缘。我们说,如果一个间隔适当地包含另一个,则嵌套两个G边。例如,边(1,5)和(2,3)是嵌套的,但(1,3)和(5,6)不是,而(1,5)和(2,8)不是。如果没有嵌套任何一对边,则G中的匹配是非嵌套的。 是否有一种快速的算法来确定G是否具有非嵌套的完美匹配,或者该问题是否难解决? 对字符串进行改组等效于在不相交的团体(边缘之间的字符相等)中找到一个非嵌套的完美匹配。特别地,对二进制字符串进行混排等效于在两个集团的不相交联合中找到非嵌套的完美匹配。但是我什至不知道这个问题对于一般的图形来说是困难的,还是对于任何有趣的图形类来说都不容易。 有一个简单的多项式时间算法可以找到完美的非交叉匹配。 更新(2013年6月24日):问题已解决! 现在有两个独立的证明,证明方串是NP完全的。 2012年11月,Sam Buss和Michael Soltys宣布减少3分区,这表明即使是9个字母以上的字符串,问题也很难解决。请参阅《 2014年计算机系统科学学报》中的“将正方形解混是NP-Hard ” 。 2013年6月,Romeo Rizzi和StéphaneVialette发布了最长的子序列问题的简化版本。请参见“ 关于识别随机混排乘积的平方的单词 ”,Proc。第八届俄罗斯国际计算机科学研讨会,Springer LNCS 7913,第235-245页。 还有一个更简单的证据表明,由于Shuai Cheng Li和Ming Li在2009 年,发现非嵌套完美匹配是NP困难的。请参见“ 论2区间模式的两个开放问题 ”,理论计算机科学 410(24–25) ):2410–2423,2009年。