什么是“ P = NP?”,为什么它是一个如此著名的问题?[关闭]


234

在计算机科学中,P = NP是否可能是最著名的问题。这是什么意思?为何如此有趣?

哦,为了获得额外的荣誉,请张贴声明的真实性或虚假性证明。:)


11
麻省理工学院的斯科特·亚伦森(Scott Aaronson)很好地阐述了“如果P = NP,那么这个世界将比我们通常认为的世界大不相同。在“创造性的飞跃”中不会有特殊的价值,解决难题问题,并在找到解决方案后立即加以认识。每个欣赏交响曲的人都是莫扎特;每个能够循序渐进地争论的人都是高斯...”摘录自en.wikipedia.org/wiki/Complexity_classes_P_and_NP
gts 2012年

Answers:


365

P代表多项式时间。NP代表不确定的多项式时间。

定义:

  • 多项式时间意味着算法的复杂度为O(n ^ k),其中n是数据的大小(例如,要排序的列表中元素的数量),而k是常数。

  • 复杂度是根据需要执行的操作数来衡量的时间,它是数据项数量的函数。

  • 操作是任何有意义的,因为对于一个特定的任务的基本操作。对于排序,基本操作是比较。对于矩阵乘法,基本运算是两个数相乘。

现在的问题是,确定性与非确定性是什么意思?有一个抽象的计算模型,一个称为Turing machine(TM)的虚拟计算机。该机器具有有限数量的状态和无限磁带,磁带具有离散单元,可以在其中写入和读取有限的一组符号。在任何给定时间,TM处于其状态之一,并且它正在查看磁带上的特定单元。根据从该单元读取的内容,它可以在该单元中写入一个新符号,将磁带向前或向后移动一个单元,然后进入另一种状态。这称为状态转换。令人惊讶的是,通过仔细构造状态和转换,您可以设计一个TM,它等效于任何可以编写的计算机程序。

这里有两种与我们有关的TM:确定性和非确定性。确定性TM对于它正在读取磁带的每个符号,从每个状态只有一个转换。非确定性TM可以具有多个这样的转换,即它能够同时检查多个可能性。这有点像产生多个线程。区别在于非确定性TM可以生成所需数量的此类“线程”,而在实际计算机上,一次只能执行特定数量的线程(等于CPU数量)。实际上,计算机基本上是带有有限磁带的确定性TM。另一方面,除非使用量子计算机,否则不能物理地实现不确定的TM。

已经证明,可以由确定性TM解决任何可以由非确定性TM解决的问题。但是,尚不清楚需要多少时间。语句P = NP表示,如果问题在非确定性TM上花费多项式时间,则可以构建确定性TM,它也可以在多项式时间内解决相同的问题。到目前为止,没有人能够证明它可以完成,但是也没有人能够证明它不能完成。

NP完全问题是指NP问题X,使得任何NP问题Y都可以通过多项式归约化为X。这意味着,如果有人想出了一个NP完全问题的多项式时间解,那也将为任何NP问题提供一个多项式时间解。因此,这将证明P = NP。相反,如果有人要证明P!= NP,那么我们可以肯定,没有办法在传统计算机上解决多项式时间内的NP问题。

NP完全问题的一个示例是找到一个真值分配的问题,该值会使包含n个变量的布尔表达式为true。
就目前而言,在非确定性TM上花费多项式时间的任何问题只能在确定性TM或常规计算机上以指数时间完成。
例如,解决真相分配问题的唯一方法是尝试2 ^ n种可能性。


5
解决SAT的唯一方法并不是对案件进行枚举,这是不正确的。有关DPLL算法的信息,请参见en.wikipedia.org/wiki/…,该算法在许多常见情况下实际上非常有效。
道格·麦克林

44
德里克,我不同意。我真的看不到没有图灵机您怎么解释P和NP。我曾经在算法课上尝试过。如果我不知道TM,那我会完全迷失。
Dima

4
这是真的在实践中,解决NP完全问题花费的时间比真正的计算机上多项式时间更大,但是这不是这个意思,这只是艺术的当前状态,作为一个事实,即P = NP是未知的结果。如果有人发现用于解决任何NP完全问题的多项式算法,那将证明P = NP,而且我们知道这没有发生,因为它将成为新闻!相反,如果证明P!= NP,那么我们可以自信地说在多项式时间内没有NP完全问题可以解决。
史蒂夫·杰索普

21
我知道这已经很老了,但是我只想说答案是史诗般的,这是第一个为我点击的答案!干得好
Dimitar Dimitrov 2013年

4
倒数第二段的更正是:“我们可以确定没有办法在传统计算机上解决多项式时间内的NP 完全问题”,因为P是NP的子集,证明P!= NP不一定表示什么问题NP不属于NP完全什么实际上是P.
米莉·史密斯

88
  1. 一个是或否的问题是在PP olynomial时间),如果答案可以在多项式时间来计算。
  2. 如果可以在多项式时间内验证“是”,则NP(确定性P多项式时间N)中的“是或否”问题。

直观地看,如果问题出在P中,那么问题就出在NP中。给定P中某个问题的潜在答案,我们可以通过简单地重新计算答案来验证答案。

NP中的所有问题是否都在P中,不太明显,更难回答。我们可以在多项式时间内验证答案的事实是否意味着我们可以在多项式时间内计算答案?

有许多重要的问题被认为是NP完全的(基本上,如果证明这些问题中的任何一个在P中,那么所有 NP问题都被证明在P中)。如果P = NP,那么所有这些问题都将被证明具有有效的(多项式时间)解决方案。

大多数科学家认为P!= NP。但是,对于P = NPP!= NP尚未建立任何证据。如果有人为任何一个猜想提供证明,他们将赢得100万美元


23

要给出最简单的答案,我可以想到:

假设我们有一个问题,它需要一定数量的输入,并且具有各种潜在的解决方案,对于给定的输入,这可能会或可能不会解决该问题。拼图杂志中的逻辑拼图将是一个很好的例子:输入是条件(“乔治不在蓝色或绿色的房子里”),而潜在的解决方案是陈述表(“乔治住在黄色的房子里”房子,种豌豆和养狗”。一个著名的例子是旅行推销员问题:给定一个城市列表,从一个城市到另一个城市的时间,以及一个时间限制,一个可能的解决方案是按照推销员访问它们的顺序列出城市。如果旅行时间的总和小于时间限制,它将起作用。

如果我们可以有效地检查潜在的解决方案以查看其是否有效,那么NP中就存在这样的问题。例如,给定销售商可以访问的城市列表,我们可以累加城市之间每次旅行的时间,并轻松查看它是否在时间限制内。如果我们可以有效地找到一个解决方案(如果存在),则P中存在问题。

(有效地,这里具有精确的数学含义。实际上,这意味着解决大问题并不是没有道理的困难。寻找可能的解决方案时,一种无效的方法是列出所有可能的解决方案,或者类似的解决方案,而有效的方法则需要搜索更有限的集合。)

因此,P = NP问题可以这样表示:如果您可以有效地验证上述问题的解决方案,您是否可以有效地找到解决方案(或证明没有问题)?显而易见的答案是“为什么要这么做?”,这几乎是今天的状况。没有人能够以一种或另一种方式证明它,这困扰着许多数学家和计算机科学家。这就是为什么任何可以证明该解决方案的人都可以从Claypool Foundation那里获得一百万美元的资助。

我们通常假设P不等于NP,没有找到解决方案的一般方法。如果事实证明P = NP,那么很多事情都会改变。例如,加密将变得不可能,并且互联网将无法实现任何形式的隐私或可验证性。毕竟,我们可以有效地获取加密的文本和密钥并生成原始文本,因此,如果P = NP,我们可以有效地找到密钥而无需事先知道。密码破解将变得微不足道。另一方面,我们可以有效地解决所有类别的计划问题和资源分配问题。

您可能已经听过NP-complete的描述。一个NP完全问题(当然是NP),并且具有这个有趣的特性:如果它在P中,则每个NP问题都是,所以P = NP。如果您可以找到有效解决Traveling Salesman问题或难题杂志中的逻辑难题的方法,则可以有效解决NP中的任何问题。从某种意义上说,NP完全问题是最难的NP问题。

因此,如果您可以找到解决任何NP完全问题的有效通用解决方法,或者证明不存在此类问题,那么名利双收就是您的了。


1
在最后第二段中,“某种程度上,最困难”。您应该说NP-complete是最难的,因为它们是NP-hard。
grom

1
我不确定那笔财富会归您所有。政府可能想要你的头。
米莉·史密斯

9

从我的拙见中得出的简短摘要:

存在一些简单的计算问题(例如,找到图形中两个点之间的最短路径),可以很快地计算出这些问题(O(n ^ k),其中n是输入的大小,k是常数(在图的情况下,它是顶点或边的数量)。

其他问题(例如,找到跨越图形中每个顶点的路径或从公共密钥获取RSA私有密钥)则更困难(O(e ^ n))。

但是CS说话告诉我们,问题在于我们无法将非确定性图灵机“转换”为确定性图灵机,但是我们可以将非确定性有限自动机(如regex解析器)转换为确定性有限自动机。可以,但是机器的运行时间会很长)。也就是说,我们必须尝试所有可能的路径(通常,聪明的CS教授可以排除一些)。

有趣的是,没有人对解决方案有任何想法。有人说这是真的,有人说这是错误的,但没有达成共识。另一个有趣的事情是,解决方案对于公共/私有密钥加密(例如RSA)将是有害的。您可以像现在生成RSA密钥一样容易地破坏它们。

这是一个令人鼓舞的问题。


1
这不是完全正确的-您可以将NDTM转换为DTM,但是新机器的运行时间与原始计算机的运行时间呈指数关系(您有效地先搜索NDTM的状态转换图)。
亚当·赖特

6

除了关于证明,我没有什么可以补充问题的P =?NP部分的内容和原因。证明不仅值得额外加分,而且可以解决千年问题之一。最近进行了一次有趣的民意测验,关于证据的主题,绝对值得阅读已发表的结果(PDF)


5

首先,一些定义:

  • 一个具体问题是P中,如果你能在计算时间解决少于n^k一段k,这里n是输入的大小。例如,可以进行n log n小于的n^2排序,因此排序是多项式时间。

  • NP中存在一个问题,如果存在k这样的问题,即最多存在一个大小解决方案n^k,您最多可以及时验证n^k。以图形的3色表示:给定一个图形,3色是(顶点,颜色)对的列表,该对具有大小O(n),您可以及时验证O(m)(或O(n^2))所有邻居是否具有不同的颜色。因此,仅当存在一个简短且易于验证的解决方案时,图形才是3色的。

NP的等效定义是“可由P中N个不确定性图灵机解决的问题 olynomial时间”。尽管可以告诉您名称的来源,但并不能使您对NP问题有什么直觉。

请注意,P是NP的子集:如果您可以在多项式时间内找到一个解,则可以在多项式时间内验证一个解决方案-只需检查给定的解决方案等于您可以找到的解决方案即可。

为什么这个问题P =? NP很有趣?要回答这个问题,首先需要了解什么是NP完全问题。简单地说,

  • 如果(1)L在P中,并且(2)解决L的算法可以用于解决NP中的任何问题L',则问题L是NP完全的;也就是说,给定L'的实例,并且仅当L'的实例具有解决方案时,您才能创建具有解决方案的L的实例。正式地说,NP中的每个问题L'都可以归结为L。

请注意,L的实例必须是多项式时间可计算的,并且必须具有L'大小的多项式大小。这样,在多项式时间内解决一个NP完全问题就为我们提供了所有 NP问题的多项式时间解决方案。

这是一个例子:假设我们知道图的3色是一个NP难题。我们要证明确定布尔公式的可满足性也是一个NP难题。

对于每个顶点v,都有两个布尔变量v_h和v_l,以及要求(v_h或v_l):每对只能具有值{01、10、11},我们可以将其视为颜色1、2和3。

对于每个边(u,v),要求(u_h,u_l)!=(v_h,v_l)。那是,

not ((u_h and not u_l) and (v_h and not v_l) or ...) 列举所有相等的配置,并规定都不是这种情况。

AND将所有这些约束放在一起,得出一个具有多项式大小(O(n+m))的布尔公式。您可以检查计算是否也需要多项式时间:您在做简单O(1)为每个顶点和每个边事情。

如果您可以求解我所做的布尔公式,那么您还可以求解图形着色:对于每对变量v_h和v_1l,让v的颜色为与这些变量的值匹配的颜色。通过公式的构造,邻居将不会拥有相同的颜色。

因此,如果图的3色是NP完全的,则布尔表达式的可满足性也是如此。

我们知道图的3色是NP完全的。但是,从历史上看,我们首先通过显示布尔电路可满足性的NP完全性,然后将其降低为3色性(而不是相反)来知道这一点。

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.