带有禁止子序列的排列


15

[ñ]表示集合而C(n,k)表示来自的元素的所有组合的集合,没有重复。让是在元组。我们说一个置换 集合避免如果存在整数无k-元组使得 k [ n ] p = p 1 p 2p k k C n k π [ n ] [ n ] [ n ] p i 1 < i 2 < < ķ π 1{1个ñ}ķ[ñ]p=p1个p2pķkC(n,k)π:[n][n][n]pi1<i2<...<ik

π(i1)=p1,π(i2)=p2,...,π(ik)=pk.

例如,如果则置换避免作为子序列,而置换则不这样做。12453 134 1 2 3 5 4n=5124531341个2354

问题:令为常数。给定一组的元组,找到一个置换 ,其避免各在元组。 小号Ç Ñ ķ ķ π [ Ñ ] [ Ñ ] ķ 小号ķ小号Cñķķπ[ñ][ñ]ķ小号

  1. 中有多项式的算法吗?和?在此,以一元形式给出。在时间运行的算法会很好。|P|ñññFķ|P|Gķ
  2. 还是这个问题NP完全?

欢迎提供有关此问题的任何参考或算法建议。请注意,上面定义的避免排列子序列的概念与仅元素的相对顺序很重要的避免排列模式的概念不同,并且似乎在组合学中得到了很好的研究。


您是说随机进行排列并验证它是否不违反S中的任何约束条件吗?随机多项式时间算法总比没有好。假定k为常数,因此根据定义它很小。但是我不知道如果S有很多约束,它将如何有效地工作。由于根据David的回答,问题是k = 3时的NPC,我有点怀疑随机算法是否有效。您能解释一下您的想法吗?
Mateus de Oliveira Oliveira

抱歉,我忽略了您有一禁止的元组。无法保证拒绝采样将是有效的。
DW

Answers:


13

通过中间性的减少,对于,它是NP完全的。在中间性问题中,一个项被赋予n个项以完全排序,并且对某些三项项的约束迫使该三项中的一项在其他两项之间。在您的问题中,可以通过禁止三个元素上的所有子序列来强制使用相同的约束,而这三个元素不会将中间元素置于中间。但是众所周知,两者之间是NP完全的:请参见J. Opatrny,总排序问题,SIAM J. Comput。,8(1979),第111-114页。k=3n

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.