为什么NP完全问题在近似上如此不同?


22

首先,我想说我是一名程序员,而我在复杂性理论方面没有很多背景。

我注意到的一件事是,尽管许多问题都是NP完全的,但是当扩展到优化问题时,有些问题比其他问题难得多。

一个很好的例子是TSP。尽管所有类型的TSP都是NP完全的,但通过连续的简化,相应的优化问题变得越来越容易。一般情况是NPO完全,度量情况是APX完全,而欧几里得情况实际上具有PTAS。

这对我来说似乎违反直觉,我想知道是否有这个原因。


2
如果您想了解基础知识,请参阅我们的参考问题。至于你的问题,你正在观察的区别 NP完全问题。
拉斐尔

Answers:


14

我们看到NP-完全问题的近似复杂度不同的一个原因是NP-完全问题的必要条件构成了问题复杂度的非常粗糙的度量。您可能熟悉问题是NP完全的基本定义:Π

  1. 在NP中,并且Π
  2. 对于所有其他问题中NP,我们可以把一个实例XΞ为实例ŸΠ在多项式时间,使得Ÿ是的是的实例Π当且仅当X是的是的实例ΞΞxΞyΠyΠxΞ

考虑条件2:所需要的就是我们可以将转换为y,以保留“单比特”是/否答案。例如,见证人相对于是或否的相对大小(即,优化上下文中解决方案的大小)没有条件。因此,唯一使用的度量是输入的总大小,它仅对解决方案的大小给出非常弱的条件。因此,将Ξ变成Π是相当“容易”的。xyΞΠ

通过查看一些简单算法的复杂性,我们可以看到各种NP完全问题的区别。着色具有蛮力O k n(其中n是输入大小)。对于k支配集,蛮力法取O n k。从本质上讲,这些是我们拥有的最佳精确算法。k-顶点覆盖层但是具有非常简单的O 2 k n ckO(kn)nkO(nk)kO(2knc)算法(选择一条边,在其中包括的端点上进行分支,标记所有被覆盖的部分,继续进行下去,直到没有未标记的边或达到和bactrack的预算)。在多项式时间多一归约(Karp归约,即我们在上面条件2中所做的事情)下,这些问题是等效的。k

当我们开始使用甚至更精细的工具(复杂度,参数化复杂度,我无法想到的其他任何复杂度)来处理复杂性时,我们使用的缩减变得更加严格,或更确切地说,对解决方案的结构更加敏感,并且差异开始出现;顶点覆盖(如Yuval所述)具有简单的2逼近度(但除非有一些复杂性类别崩溃,否则不具有FPTAS),k-支配集具有1 + log n -逼近算法(但无c log n -对于某些c > 0的近似kk(1+logn)(clogn)c>0),而对于 -Coloring 的直接版本,近似值根本没有任何意义。k


13

O(logn)1/2+k/nkO(1) 近似算法。

这些示例尚未完全组成。MAX-INDEPENDENT-SET(等效于MAX-CLIQUE)和MIN-VERTEX-COVER的问题密切相关–独立集合的补集是顶点覆盖。但是,尽管前者很难近似,但后者具有简单的2近似。

表示给定问题的NP硬度的折减有时可以用来表示近似硬度,但这并非总是如此-它取决于折减。例如,从MAX-INDEPENDENT-SET减少到MIN-VERTEX-COVER并不意味着近似于后一个问题的硬度,这比前一个问题容易得多。

总而言之,NP硬度只是问题的一方面。近似硬度是一个不同的方面,它在很大程度上取决于近似的概念。


您是否同意卢克·马蒂森(Luke Mathieson)的直觉性陈述,即与近似复杂度类别所使用的减少相比,降低卡尔普(Karp)本质上不那么“精致”?如果不是,您是否有反对这个想法的好例子(也许在EXP等其他复杂性类别中)?
GregRos 2015年

PNPP=NP

5

作为一种直观的方法,考虑到NP完全问题的实例化并不总是像一般情况那样困难。二进制可满足性(SAT)是NP完全的,但是找到A v B v C v D v的解决方案并不容易...复杂度算法仅约束最坏情况,而不是平均情况,甚至90%情况。

将NP完全问题简化为最简单的方法是简单地排除困难部分。是作弊,是的。但是通常其余部分对于解决现实世界中的问题仍然有用。在某些情况下,“容易”和“难”之间的界线很容易画出。正如您为TSP指出的那样,因为将问题约束在人们可能想到的“正常”方向上,所以难度大大降低。 ,很难找到现实生活中有用的方法来分离易零件和难零件。

为了完全脱离CS和数学的领域,请考虑使用一辆旧车。您的朋友想开车。如果您必须告诉他,“嘿,这辆汽车运转完美。只是不要让它超过95英里/小时。有一个令人讨厌的摆动会把您撞倒在路上,”这可能没什么大不了的。无论如何,您的朋友可能只想把它带到城里去。但是,如果您必须告诉他,“您必须正确地踩下离合器,使其从第1挡转到第2挡,否则发动机将失速”,对于您的朋友而言,如果没有经过少量的培训,就很难在城镇周围使用汽车。

同样,如果一个NP完全问题仅在特殊情况下才变得困难,那么当您查看子域时,它会相当快速地降低复杂性。但是,如果在常见情况下变得困难,则没有太多有用的子域可以避免困难的部分。


P=NP
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.