ChatGPT解决这个技术问题 Extra ChatGPT

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

关闭。这个问题是题外话。它目前不接受答案。想改进这个问题?更新问题,使其成为 Stack Overflow 的主题。 9年前关闭。社区上个月审查了是否重新打开此问题并将其关闭:原始关闭原因未解决 改进此问题

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

哦,为了获得额外的荣誉,请张贴一份声明的真假证明。 :)

正如麻省理工学院的 Scott Aaronson 所阐述的那样,“如果 P = NP,那么世界将是一个与我们通常认为的截然不同的地方。“创造性飞跃”没有特殊价值,解决问题之间没有根本的差距问题并在找到解决方案后立即识别解决方案。每个能够欣赏交响乐的人都是莫扎特;每个可以循序渐进的论证的人都是高斯……”摘自en.wikipedia.org/wiki/Complexity_classes_P_and_NP

A
Andrew Campbell

代表多项式时间。 NP 代表非确定性多项式时间。

定义:

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

复杂性是用操作次数来衡量的时间,它是数据项数量的函数。

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

现在的问题是,确定性与非确定性是什么意思?有一个抽象的计算模型,一种称为图灵机 (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 个变量的布尔表达式为真。目前在实践中,在非确定性 TM 上花费多项式时间的任何问题只能在确定性 TM 或传统计算机上以指数时间完成。例如,解决真值分配问题的唯一方法是尝试 2^n 种可能性。


解决 SAT 的唯一方法是列举案例,这不是真的。有关 DPLL 算法的信息,请参阅 en.wikipedia.org/wiki/…,该算法在许多常见情况下实际上非常有效。
德里克,我不同意。我真的不明白你如何在没有图灵机的情况下解释 P 和 NP。我曾经在一个算法课上尝试过。如果我不知道 TM,我会完全迷路。
在实践中,解决 NP 完全问题所花费的时间确实比在真实计算机上的多项式时间要长,但这并不是它的意思,它只是当前的技术水平,因为 P=NP 是未知的。如果有人找到一个多项式算法来解决任何 NP 完全问题,那将证明 P=NP,我们知道这没有发生,因为它会出现在新闻中!相反,如果证明了 P!=NP,那么我们可以自信地说在多项式时间内没有 NP 完全问题是可解的。
我知道这已经很老了,但我只想说答案是史诗般的,它是第一个为我点击的!好工作
在倒数第二段的更正:“我们可以肯定,在传统计算机上没有办法在多项式时间内解决 NP 完全问题”,因为 P 是 NP 的子集,证明 P != NP 不一定说任何关于 NP 中不是 NP-Complete 的问题实际上在 P 中的任何信息。
C
Carlos F

如果可以在多项式时间内计算答案,则在 P(多项式时间)中是或否问题。如果可以在多项式时间内验证是的答案,则在 NP(非确定性多项式时间)中是或否问题。

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

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

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

大多数科学家认为 P!=NP。但是,对于 P = NPP!=NP,尚未建立任何证据。如果有人提供任一猜想的证明,they will win US $1 million


D
David Thornley

给出我能想到的最简单的答案:

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

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

(有效地,在这里,有一个精确的数学含义。实际上,这意味着大问题不会不合理地难以解决。在寻找可能的解决方案时,一种低效的方法是列出所有可能的潜在解决方案,或类似的东西,而一种有效的方法需要搜索更有限的集合。)

因此,P=NP 问题可以这样表达:如果您可以有效地验证上述问题的解决方案,您能否有效地找到解决方案(或证明没有解决方案)?显而易见的答案是“你为什么能做到?”,这就是今天的问题所在。没有人能够以一种或另一种方式证明这一点,这让很多数学家和计算机科学家感到困扰。这就是为什么任何能够证明该解决方案的人都会从 Claypool 基金会获得 100 万美元。

我们通常假设 P 不等于 NP,即没有找到解决方案的通用方法。如果结果证明 P=NP,很多事情都会改变。例如,密码学将变得不可能,随之而来的是互联网上的任何隐私或可验证性。毕竟,我们可以有效地获取加密文本和密钥并生成原始文本,因此如果 P=NP 我们可以在事先不知道密钥的情况下有效地找到密钥。密码破解将变得微不足道。另一方面,我们可以有效地解决各类规划问题和资源分配问题。

你可能听说过 NP-complete 的描述。一个 NP 完全问题(当然)是一个 NP 问题,并且具有这个有趣的性质:如果它在 P 中,那么每个 NP 问题都是,所以 P=NP。如果你能找到有效解决旅行推销员问题的方法,或者从谜题杂志中找到逻辑谜题,你就可以有效地解决 NP 中的任何问题。 NP 完全问题在某种程度上是最难的 NP 问题。

所以,如果你能为任何 NP 完全问题找到一种有效的通用解技术,或者证明不存在这样的问题,那么名利就是你的了。


在你的倒数第二段中,你有“在某种程度上,最难的排序”。你应该说 NP-complete 是最难的,因为它们是 NP-hard。
我不确定财富会不会是你的。政府可能想要你的脑袋。
A
Ajit Panigrahi

根据我的拙见做一个简短的总结:

有一些简单的计算问题(比如在图中找到两点之间的最短路径),计算速度非常快( O(n^k),其中 n 是输入的大小,k 是常数(在图的情况下,它是顶点或边的数量))。

其他问题,例如找到穿过图中每个顶点的路径或从公钥中获取 RSA 私钥更难 (O(e^n))。

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

这很有趣,因为甚至没有人知道解决方案。有人说是真的,有人说是假的,但没有达成共识。另一个有趣的事情是,解决方案会对公钥/私钥加密(如 RSA)有害。您可以像现在生成 RSA 密钥一样轻松破解它们。

这是一个非常鼓舞人心的问题。


这并不完全正确 - 您可以将 NDTM 转换为 DTM,但新机器的运行时间与原始机器的运行时间呈指数关系(您有效地首先搜索 NDTM 的状态转换图)。
L
Lucky

对于问题的 P=?NP 部分的内容和原因,我没有什么可以补充的,但关于证明。一个证明不仅值得一些额外的功劳,而且可以解决其中一个Millennium Problems。最近进行了一项有趣的民意调查,关于证明主题,published results (PDF) 绝对值得一读。


J
Jonas Kölker

首先,一些定义:

如果对于某些 k,您可以在小于 n^k 的时间内计算出解决方案,则 P 中存在一个特殊问题,其中 n 是输入的大小。例如,排序可以在小于 n^2 的 n log n 中完成,因此排序是多项式时间。

如果存在 ak 使得存在一个大小最多为 n^k 的解,那么您可以在最多 n^k 的时间内及时验证,那么问题就存在于 NP 中。对图进行 3 色着色:给定一个图形,3 色是一个大小为 O(n) 的(顶点,颜色)对的列表,您可以及时验证 O(m)(或 O(n^2) ) 是否所有邻居都有不同的颜色。因此,仅当存在简短且易于验证的解决方案时,图才可进行 3 色着色。

NP 的等效定义是“可在多项式时间内由非确定性图灵机解决的问题”。虽然这会告诉您名称的来源,但它并不能让您直观地感受到 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_l,让 v 的颜色与这些变量的值匹配。通过公式的构造,邻居不会有相同的颜色。

因此,如果图的 3 色是 NP 完全的,那么布尔公式可满足性也是如此。

我们知道图的 3 着色是 NP 完全的;然而,从历史上看,我们通过首先展示布尔电路可满足性的 NP 完备性,然后将其减少到 3-colorability(而不是相反)来知道这一点。