号码分配


10

给定k数字A1A2...Ak,使得i=1kAi=k(2k+1)就是数字i1,i2,...,i2k,它是1、2,...,2k的排列,1,2,...,2k使得

i1+i2A1i3+i4A2...i2k1+i2kAk

我找不到有效的算法,就可以解决这个问题。这似乎是一个组合问题。我找不到类似的NP-Complete问题。这个问题看起来像是已知的NP完全问题,还是可以用多项式算法解决?


你在这个问题上取得了进展吗?
Yuval Filmus

我忘了提及A1A2...Ak
gprime 2013年

相关问题,也没有令人满意的答案。(乍一看可能不清楚它们之间的关系,但是如果,则问题等同于找到的置换,从而。1 2 N i 2 a - 1 - i 2 a = A iK=2N12Ni2a1i2a=Ai
彼得·索尔

Answers:


8

这个问题强烈是NP完成的。

假设所有的都是奇数。然后我们知道,由于为奇数,因此和为偶数,另一个为奇数。我们可以假设是奇数,而是偶数。通过让和,我们可以证明这等效于要求数字两个置换和,使得。2 Ĵ - 1 + 2 Ĵ = Ĵ 2 Ĵ - 12 Ĵ2 Ĵ - 12 Ĵ π Ĵ = 1Aji2j1+i2j=Aji2j1i2ji2j1i2jσĴ=1πj=12(i2j1+1)πσ1...ÑπĴ+σĴ=1σj=12(i2j)πσ1nπj+σj=12(Aj+1)

已知此问题是NP完全的。请参见此cstheory.se问题以及答案中引用的W. Yu,H。Hoogeveen 和JK Lenstra的论文。


6

这是一个入门的提示:由于从到的所有数字的总和正好是,因此只有在实际上,等等的情况下才有可能解决。 。因此,给定我们知道,依此类推。另外,。2 ķ ķ 2 ķ + 1 112kk(2k+1)3 + 4 = 2 1 2 3 Ĵ4 ķ - 1i1+i2=A1i3+i4=A2i1i23Aj4k1


那么我应该如何选择呢?我没有看到解决方案。但是感谢属性i13Aj4k1
gprime

2
如果进行排序,我们知道,,,等等。这些标准以及足够?如果是这样,则可能有一个针对此问题的简单算法。 3 1 10 1 + 2 21 1 + 2 + 3 Σ = ķ 2 ķ + 1 Ai3A110A1+A221A1+A2+A3iAi=k(2k+1)
彼得·索尔

是的,它们已排序。我将尝试使用它...
gprime

@PeterShor您还必须考虑相反方向的限制,例如,依此类推。轶事地看问题,看来一个简单的贪心算法应该在存在时就发现解决方案,而在不存在时就恰好失败,但是我很难证明这一点。4n1An,8n6An1+An
13年

@torquestomp:您提出了一个很好的观点。实际上,来自一个方向的限制也意味着来自另一个方向的限制,但是乍看之下一点都不明显。我看着一个类似的问题,无法找到一个简单的算法(但在我看来,这些标准的模拟确实足够了)。
彼得·索尔

0

这是一个匹配问题,因此可以使用Edmond的算法解决。参见维基百科


1
Stackexchange的想法是尽可能合理地进行问答。您能否将答案扩展为不仅仅是Wikipedia的链接?
卢克·马蒂森

你能详细说明吗?我看不到如何使用该算法来解决我的问题。
gprime

1
实际上,对我来说,这看起来像是3匹配的特例,它是NP完全的。这并不意味着OP问题是NP完全的。
彼得·索尔

可能是两方匹配吗?我将研究3个匹配项,看看是否可以解决。谢谢!
gprime
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.