P问题,NP问题,NP完全问题,NP难问题

这四类问题可以用时间复杂度进行区分。
函数时间复杂度具有如下规律:
O(1)<O(logn)<O(nlogn)<O( n 2 n^2 n2)<O( n 3 n^3 n3)<O( 2 n 2^n 2n)<O(n!)<O( n n n^n nn),其中,n指问题的规模。
P(Polynominal,多项式)问题:可以在多项式时间内解决的问题。一个规模为n的问题,如果能在n的多项式时间内解决,就是一个P问题。

NP(Nondeterministic polynominal,非确定性多项式)问题:可以在多项式时间内验证一个解的问题。也就是说,我们虽然不知道能不能在多项式时间内找到问题的解,但是,如果已知一个解,我们可以在多项式时间内验证这个解是否为该问题的可行解。
视频中举了一个非常通俗易懂的例子:在一次聚会中,有100万个人,我们需要找出其中具有"高颜值"的人,需要逐个遍历,属于穷举法,非常耗时,但是如果我们随便找出一个人,来判断他的颜值,却能轻易地在有限时间内得出:此人是否为"高颜值"。这就是我们所说的,能够在多项式时间内对这个"解"进行验证。
知乎上面有个博主举了著名的旅行商(TSP)问题,解释的非常好:P问题、NP问题、NP完全问题和NP难问题
在这里插入图片描述
显然,一个P问题也是一个NP问题。如果能够在多项式时间内找到问题的解,那么当然能在多项式时间内验证一个解是否满足问题的约束。反过来,如果一个问题是NP问题,它是否为P问题呢?这是一个史上最难的数学问题之一,美国克雷数学研究所曾悬赏一百万美金求解该难题。
NP难(Hard)问题和NP完全(Complete)问题:NP问题能够在多项式时间内规约(转化为)问题X,X的复杂度大于原NP问题,则X是一个NP-Hard问题,如果X也是一个NP问题,则称X是NP-Complete的,否则X是NP-Hard的。NP-Complete问题是NP问题中最难以解决的一类问题。例如逻辑电路(给定一个逻辑电路,问是否存在一种输入为true)、哈密顿回路问题和旅行商问题。
旅行商(TSP)问题:
在这里插入图片描述
有一个旅行商从A点出发开始送货,要送到所有的城市,且不重复,怎样的路径是最短的?如果计算机来遍历所有的方法,将是一个规模非常大,几乎不可能解决的NP完全问题。

在这里插入图片描述
参考文章:https://zhuanlan.zhihu.com/p/73953567
参考视频:https://www.bilibili.com/video/BV1Wz4y1d7wb?from=search&seid=9763121901535508344

おすすめ

転載: blog.csdn.net/qq_43511299/article/details/119719569
おすすめ