理解P/NP问题

发布于:2022-11-12 ⋅ 阅读:(653) ⋅ 点赞:(0)

今天在学习时候突然看到了经常出现的NP完全问题,之前一直没在意这是一个什么问题,今天仔细的搜索理解了一下,给大家伙谈谈我的理解,有不对的请大家指正。

到底什么是 P/NP 问题

简单来说就是

P(Polynomial)问题:在多项式时间被验证的问题
NP(Nondeterministic Polynomially)问题:能否证明在多项式时间内找到这个问题的
P类问题是NP问题的子集,因为存在多项式时间解法的问题,总能在多项式时间内验证他。

多项式时间

多项式的一般表达式为 a 0 a_0 a0+ a 1 x a_1x a1x+ a 2 a_2 a2 x 2 \def\bar#1{#1^2} \bar{x} x2+…+ a k a_k ak x k \def\bar#1{#1^k} \bar{x} xk
但求解问题的规模为n时,最坏求解时间是O( n k n^k nk),这就是多项式的算法。

例如:

P vs. NP 是一个非常重要的,未被解决的计算机问题。2000年,克雷顿数学研究所,发布了7个数学难题(Millennium Prize Problems),每个奖励100万美金,其中就有P vs NP问题。

P代表多项式时间。我们发现现实生活中有一类问题,可以在多项式时间(比如 O( n 2 n^2 n2) 等等)内被验证。虽然可以在多项式时间被验证,但是往往不容易解决, 我们将这类问题归类成NP问题。 所以NP问题,本质上是一类在我们可以接受的时间范围内可以被验证的问题。

比如说数独问题,验证很容易,只要遍历行和列去检查就可以了是一个O(n^2)的算法,但是求解很困难。尤其是很大的数独,比如1000*1000的数独。

再比如说,求地图上两点的最短路径,我们可以轻松的在多项式时间内解决。

但是这些可以被计算机验证的问题,可以被计算机解决吗? 于是我们得到一个疑问:数独问题也可以在多项式时间内解决吗? 如果可以,那么P=NP;如果不可以,那么 P ≠ \neq =NP。

究竟P=NP还是P ≠ \neq =NP 呢? 这就是P vs NP问题。 这个问题我们不知道答案,如果谁发现了答案,那么可以得到100万美金的奖励。

推荐阅读:浅谈P vs. NP


网站公告

今日签到

点亮在社区的每一天
去签到