“P=NP”问题或许是计算机科学中最著名的问题。它意味着什么?为什么如此有趣?
顺便提一句,如果能够证明这个命题的真假,会非常有价值哦。 :)
“P=NP”问题或许是计算机科学中最著名的问题。它意味着什么?为什么如此有趣?
顺便提一句,如果能够证明这个命题的真假,会非常有价值哦。 :)
P代表多项式时间。NP代表非确定性多项式时间。
定义:
多项式时间意味着算法的复杂度为O(n^k),其中n是数据的大小(例如要排序的列表中的元素数量),k是一个常数。
复杂度是以操作次数为单位衡量的,作为数据项数量的函数。
操作是针对特定任务而言有意义的基本操作。例如,在排序时,基本操作是比较。 在矩阵乘法中,基本操作是两个数字的乘法。
现在问题是,确定性与非确定性意味着什么?有一个抽象的计算模型,一种名为图灵机(TM)的想象电脑。该机器具有有限数量的状态和无限的纸带,纸带分成离散的单元格,可以将有限集合的符号写入和读取。 在任何给定时间,TM处于其状态之一,并查看纸带上的特定单元格。 根据它从该单元格读取的内容,它可以向该单元格中写入新符号,将纸带向前或向后移动一个单元格,并进入另一个状态。 这称为状态转换。 令人惊奇的是,通过仔细构建状态和转换,可以设计一个TM,它等效于任何可以编写的计算机程序。 这就是为什么它被用作证明计算机能够做什么和不能做什么的理论模型。
这里有两种TM(图灵机):确定性的和非确定性的。确定性的TM对于读取的每个符号,每个状态只有一个转换。非确定性的TM可能有多个这样的转换,即它能同时检查多种可能性,有点像生成多个线程。不同之处在于非确定性的TM可以生成任意数量的“线程”,而在实际计算机中只能同时执行特定数量的线程(等于CPU数量)。事实上,计算机基本上就是带有有限带的确定性TM。另一方面,除了量子计算机之外,非确定性TM无法被物理实现。直观地说,如果一个问题属于P,那么它也属于NP。对于P问题的潜在答案,我们可以通过重新计算该答案来验证答案。
不太明显,也更难回答的问题是,是否所有属于NP的问题都属于P。 能否在多项式时间内验证答案意味着能否在多项式时间内计算该答案?
许多重要问题被证明为NP-完全问题(基本上,如果这些问题中的任何一个被证明属于P,那么所有NP问题均被证明属于P)。 如果P=NP,那么所有这些问题都将被证明具有高效(多项式时间)解决方案。
大多数科学家认为P!= NP。 然而,目前没有为P=NP或P!=NP的任何一个猜想提供证明。 如果有人为任何一个猜想提供了证明,他们将赢得100万美元的千禧年大奖。
简单回答一下:
假设我们有一个问题,需要一定数量的输入,并且有各种潜在的解决方案,这些方案可能或可能不会为给定的输入解决问题。 智力游戏杂志中的逻辑谜题是一个很好的例子:输入是条件(“乔治不住在蓝色或绿色的房子里”),潜在的解决方案是一个陈述列表(“乔治住在黄色的房子里,种豌豆并拥有一只狗”)。 一个著名的例子是旅行推销员问题:给定城市列表,任何城市之间到达的时间以及时间限制,潜在解决方案将是推销员访问它们的城市顺序列表,并且如果行程时间总和小于时间限制,则解决方案可行。
如果我们可以有效地检查潜在解决方案是否有效,则此类问题属于NP。例如,给定推销员按顺序访问的城市列表,我们可以计算每个城市之间的旅行时间总和,并轻松查看是否符合时间限制。 如果我们可以有效地找到一个解决方案,那么该问题就属于P。
因此,如果你能够有效地验证上述类型问题的解决方案,那么你能否有效地找到解决方案(或证明不存在解决方案)呢? 显然的答案是“为什么你能够做到?” 这就是今天该问题的现状。 没有人能够证明它是否成立,这让许多数学家和计算机科学家感到困扰。 这就是为什么任何能够证明这个问题的人都可以得到Claypool基金会一百万美元奖励的原因。
我们通常认为P不等于NP,即没有一般方法可以找到解决方案。如果P=NP,很多事情都会发生改变。例如,加密会变得不可能,因此互联网上的任何隐私或可验证性也会消失。毕竟,我们可以有效地获取加密文本和密钥并生成原始文本,因此如果P=NP,我们可以在不事先知道密钥的情况下有效地找到密钥。密码破解将变得微不足道。另一方面,我们可以有效地解决整个规划问题和资源分配问题的类别。
您可能听说过NP完全的描述。 NP完全问题是一个NP问题(当然),并具有这种有趣的属性:如果它在P中,则每个NP问题都在其中,因此P=NP。如果您能够找到一种有效的方法来解决旅行推销员问题或来自谜题杂志的逻辑谜题,您可以有效地解决NP中的任何问题。 NP完全问题从某种意义上说是最难的NP问题。
因此,如果您可以为任何NP完全问题找到有效的一般解决技术,或证明不存在这样的技术,则您将获得声誉和财富。
根据我的了解,简单的计算问题(例如在图中查找两点之间的最短路径)可以很快地计算出来(O(n^k),其中n是输入的大小,k是一个常数(对于图来说,它是顶点或边的数量))。
其他问题,例如在图中查找穿过每个顶点的路径或从公钥获取RSA私钥更难(O(e^n))。
但是,计算机科学术语告诉我们的问题是,我们无法将非确定性图灵机转换为确定性图灵机,但是我们可以将非确定性有限状态自动机(例如正则表达式解析器)转换为确定性有限状态自动机(虽然可以,但机器的运行时间会很长)。也就是说,我们必须尝试每条可能的路径(通常聪明的计算机科学教授可以排除一些路径)。
这很有趣,因为没有人知道解决方案。有人说它是真的,有人说它是假的,但是没有共识。另一个有趣的事情是,解决方案对于公钥/私钥加密(如RSA)将是有害的。您可以像现在生成RSA密钥一样轻松地破解它们。
这是一个相当鼓舞人心的问题。
关于P=?NP问题的“什么”和“为什么”,我无法添加太多内容,但是就证明而言。一个证明不仅值得额外的学分,而且它可以解决其中的一个千禧难题。最近进行了一项有趣的调查,发表的结果(PDF)对于证明的主题绝对值得一读。
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完全的,那么布尔公式可满足性问题也是NP完全的。
我们知道图的3着色问题是NP完全的;然而,历史上我们首先展示了布尔电路可满足性的NP完全性,然后将其缩小为3着色问题(而不是反过来)。