世界上最难的绕口令 世界上最难的数学题( 二 )


一:P/NP问题
P/NP问题是世界上最难的数学题之一 。在理论信息学中计算复杂度理论领域里至今没有解决的问题,它也是克雷数学研究所七个千禧年大奖难题之一 。P/NP问题中包含了复杂度类P与NP的关系 。1971年史提芬·古克和Leonid Levin相对独立的提出了下面的问题,即是否两个复杂度类P和NP是恒等的(P=NP?) 。复杂度类P即为所有可以由一个确定型图灵机在多项式表达的时间内解决的问题;类NP由所有可以在多项式时间内验证解是否正确的决定问题组成,或者等效的说,那些解可以在非确定型图灵机上在多项式时间内找出的问题的集合 。很可能,计算理论最大的未解决问题就是关于这两类的关系的: P和NP相等吗? 在2002年对于100研究者的调查,61人相信答案是否定的,9个相信答案是肯定的,22个不确定,而8个相信该问题可能和现在所接受的公理独立,所以不可能证明或证否 。对于正确的解答,有一个1百万美元的奖励 。NP-完全问题(或者叫NPC)的集合在这个讨论中有重大作用,它们可以大致的被描述为那些在NP中最不像在P中的(确切定义细节请参看NP-完全理论) 。计算机科学家现在相信P, NP,和NPC类之间的关系如图中所示,其中P和NPC类不交 。
假设P ≠ NP的复杂度类的图解 。如P = NP则三个类相同 。简单来说,P = NP问题问道:如果是/不是问题的正面答案可以很快验证,其答案是否也可以很快计算?这里有一个给你找点这个问题的感觉的例子 。给定一个大数Y,我们可以问Y是否是复合数 。例如,我们可能问53308290611是否有非平凡的因数 。答案是肯定的,虽然手工找出一个因数很麻烦 。从另一个方面讲,如果有人声称答案是"对,因为224737可以整除53308290611",则我们可以很快用一个除法来验证 。验证一个数是除数比找出一个明显除数来简单得多 。用于验证一个正面答案所需的信息也称为证明 。所以我们的结论是,给定正确的证明,问题的正面答案可以很快地(也就是,在多项式时间内)验证,而这就是这个问题属于NP的原因 。虽然这个特定的问题,最近被证明为也在P类中(参看下面的关于"质数在P中"的参考),这一点也不明显,而且有很多类似的问题相信不属于类P 。像上面这样,把问题限制到“是/不是”问题并没有改变原问题(即没有降低难度);即使我们允许更复杂的答案,最后的问题(是否FP = FNP)是等价的 。
关于证明的难度的结果
虽然百万美元的奖金和投入巨大却没有实质性结果的大量研究足以显示该问题是困难的,但是还有一些形式化的结果证明为什么该问题可能很难解决 。最常被引用的结果之一是设计神谕 。假想你有一个魔法机器可以解决单个问题,例如判定一个给定的数是否为质数,可以瞬间解决这个问题 。我们的新问题是,若我们被允许任意利用这个机器,是否存在我们可以在多项式时间内验证但无法在多项式时间内解决的问题?结果是,依赖于机器能解决的问题,P = NP和P ≠ NP二者都可以证明 。这个结论带来的后果是,任何可以通过修改神谕来证明该机器的存在性的结果不能解决问题 。不幸的是,几乎所有经典的方法和大部分已知的方法可以这样修改(我们称它们在相对化) 。如果这还不算太糟的话,1993年Razborov和Rudich证明的一个结果表明,给定一个特定的可信的假设,在某种意义下“自然”的证明不能解决P = NP问题 。这表明一些现在似乎最有希望的方法不太可能成功 。随着更多这类定理得到证明,该定理的可能证明方法有越来越多的陷阱要规避 。这实际上也是为什么NP完全问题有用的原因:若对于NP完全问题存在有一个多项式时间算法,或者没有一个这样的算法,这将能用一种相信不被上述结果排除在外的方法来解决P = NP问题

秒懂生活扩展阅读