为什么用P进行线性编程而用NP进行整数编程很难?


35

线性编程(LP)在P中,而整数编程(IP)在NP中。但是由于计算机只能以有限的精度操作数字,因此实际上计算机正在使用整数进行线性编程。因此,LP和IP难道不属于同一复杂度等级吗?


7
给jmite的答案增加了一点:在许多情况下,完整性约束使问题变得更加棘手。例如,分数背包问题可以在多项式时间内求解,尽管整数背包问题是NP-Hard。因此,这不仅适用于LP和IP。
user340082710

7
即使我们认为计算机使用整数执行运算,也并不意味着返回的解决方案是整数。它可以是有理数,两个整数之比。这样可以提供更大的灵活性。当然,我们不能总是将合理的解决方案转换为IP 的可行解决方案。通常,知识产权对变量的约束将不仅仅是要求整体解决方案。认为一个的整数程序。01个

1
如果您愿意的话,以无限的精度操作数字并不难,特别是当它们是有理数时。有限精度仅仅是减少运行时间的优化。

2
@Hurkyl“如果愿意,以无限的精度操作数字并不难,特别是当它们是有理数时。” 实数有一个严格的子集,称为可计算数,其中包括有理数+诸如sqrt(2)等数字,并且被定义为可由图灵机计算的一组数字。那些没有包括在内的计算机,根据定义,不能用计算机来操纵。
Sasha the Noob 2015年

1
@SashatheNoob你在说什么与Hurkyl所说的并不矛盾。可计算数字没有预先定义的最大精度限制(只要图灵机有足够的内存,它就可以任意设置为您喜欢的任何值,因此精度是无限的)。要说可计算数的子集包括所有有理数,则您承认计算机可以无限精确地操纵数字。(Hurkyl的说法是绝对正确的。对于某些数据类型,精度受到限制的事实仅仅是一种优化。)
BrainSlugs83 2015年

Answers:


9

我不能发表评论,因为它需要50个代表,但是散布着一些误解,尤其是拉斐尔(Raphael)的评论:“一般来说,连续的领域意味着没有蛮力(也没有聪明的试探法来加速它)。”

这是绝对错误的。关键确实是凸性。在多项式时间收敛的意义上,除非有一些技术约束条件,否则在凸集上最小化凸函数(或最大化凹函数)基本上是微不足道的。

粗略地说,您可以说“数学”优化中的问题凸性与“计算机科学”优化中的贪婪算法的可行性之间存在对应关系。从某种意义上说,它们都启用了本地搜索方法。您将不必在贪婪的算法中回溯,也不必在凸优化问题中后悔下降的方向。目标函数的局部改进将始终使您更接近全局最优。

在非凸情况下并非如此。在这里,可能存在一个全局最小值,但是总是会引用本地下降算法的几个局部最小值,这与贪婪算法应用于NP问题时的方式相同。有时他们找到真正的最佳选择,但大多数时候却找不到。



21

线性规划之所以“高效”,是因为解空间可以由单个凸多面体表示。如果试图在该多面体上找到“最高”顶点(一个人可以对任何线性规划问题进行线性变换,以使“高度”对应于要最大化的数量),则可以从任何顶点沿边传播到最高点,而不必走下坡路。使整数编程变得“困难”的原因在于,没有连续的求解空间,而是存在许多不相交的求解空间,并且无法朝着最优求解逐步进行工作。


2
此处的关键字是“凸性”
科迪2015年

1
这不是爬山的单纯形法吗?在最坏的情况下,没有一种变异是多项式的吗?
jbapple

1
与离散空间相比,离散空间(允许离散搜索)更容易解决许多问题。
拉斐尔

@Raphael:您能举一些这类问题的例子吗?我一直在考虑这个问题,无法提出很多建议。
科迪2015年

@cody例如,查找(一维)函数的最大值/最小值。在这里看到一个可爱的示例,只有注意到我们可以将有限的搜索空间减少到有限的空间后,该示例才可以接受。请注意,LP是一种特殊的方式:通过指出我们只需要考虑多面体的角,便得到了有限的搜索空间。通常,连续域意味着没有蛮力(也没有聪明的试探法来加速它)。
拉斐尔

3

其他答案是正确的,但我发现它们有点技术性。假设您已扫除(消除了)矩阵并正在寻找任何解决方案,则矩阵如下所示:

column x1 x2 x3 x4 x5 x6 | solution
-----------------------------------
       1           1  1  | 3
          1              | 1
             1     1     | 2
                2  1  1  | 1  

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.