有关P , NP, NPC , NP-Hard问题

一,基础知识铺垫
要想明白什么是NP问题首先要清晰什么是P问题,而想要清晰P问题就要明白什么是***多项式级别的时间复杂度***
PS: 首先时间复杂度本质是一个函数,它是指一个算法在图灵机上运行时输入数据的规模与运行时间之间的函数 比如冒泡排序的时间复杂度O(n^2),它表明当待排序数据规模翻一倍时,排序时间变为原来的 4倍(2的平方)。

	那么什么是多项式级别的时间复杂度
                	**☟☟☟☟☟☟☟**
***多项式级别的时间复杂度***:
	类似于**O(1),O(logn),O(n),O(n^2),O( n ^6).............**括号中不是阶乘或指数级别的时间复杂度成为多项式级别
	PS:	在高数中我们知道x-->∞时,不同函数值y趋向无∞的速度不同,其中阶乘(n!)和指数函数(a^n)变化速度最快,不属于多项式级别,值得注意的是幂函数属于多项式级别。
	
		下面我们正式引入P问题
		         **☟☟☟☟☟☟☟☟**

二,**P问题:一个问题可以找到许多算法来解决,如果存在一个算法时间复杂度是多项式级别的,我们就称该问题是P问题

       下面我们引入NP问题
                 **☟☟☟☟☟☟☟☟**

三,**NP问题是指在多项式级别的时间复杂度内能够被验证的问题
PS;需要提到的是很多人会把NP问题理解为P问题的否定,这是错误的,P问题强调解决,NP问题强调验证,举个NP例子来说,在图论中有最短路径问题,假设图很复杂,结点很多,我们需要找到所有路径才能知道哪条是最短路径,这样时间复杂度可能很高,但我们验证一路径是否比当前已知路径短却很简单,只需把边的权值加和。
所以很多人也把NP问题称为人品问题,意思就是你可以在多项式时间内猜到一个当前最优解。
著名的Hamilton问题和素因子分解就是NP问题,Hamilton问题简单来说就是从指定起点经过所有中间点一次最终到达指定终点的问题,找到这样的路径很困难,但已知一条路径再去验证却很简单,

				下面我们引入较为复杂的NPC问题和NP--hard问题
			              	  **☟☟☟☟☟☟☟☟**

四,NPC问题和NP–hard问题
在开始之前我们要先了解一个概念,叫***归约***
简单的理解就是:如果 A问题归约到B 那么B问题解决了 A问题就解决了。但A解决B未必解决。
举一个归约的例子,问题A:求解bx+c=0
问题B: 求解ax^2+bx+c=0
会解问题B的一元二次方程就一定会解问题A的一元一次方程,因为只需让a=0即可。

                      那么什么是NPC问题呢?
                        **☟☟☟☟☟☟☟☟**

***NPC问题***也称NP完全问题,是NP-Complete的缩写。NPC问题满足两点,首先,NPC问题肯定也是NP问题;其次,所有NP问题都能够在多项式时间内规规约到NPC问题

NP-hard问题NP–hard问题就是所有NP问题都可以在多项式时间内约化(Reducibility)到NP-Hard问题
NP-hard问题就是NPC问题不满足第一条,顾名思义NP-Hard问题是NP系问题中最困难的一种,难在难以在多项式时间内找到解并且即使给出解,也难以在多项式时间内验证
例如销售员旅行问题,要求销售员从北京出发在指定的n个城市逗留一次,最终回到北京,要求路费最少。(和哈密顿问题相似)由于出行工具,飞机高铁。。。。是否有特价航班,,,日程安排与出行日期是否冲突等问题的影响,解决该问题目前为止还不存在有效的算法,如果给了你一个最终解,你如何确定它的正确性呢?遍历,把这个解与所有其它行程比对,从而确定它是否是最优的,但是验证解的复杂度仍然是n!。所以NP-Hard问题区别于NPC问题不保证是NP问题。

有关P , NP, NPC , NP-Hard问题_第1张图片
到此为止,有关P , NP, NPC , NP-Hard问题我们已经辨析 结束了,接下来介绍一些作者在翻阅其他博主的相关文章中看到的一些有趣的事:
NP=P?
有关P , NP, NPC , NP-Hard问题_第2张图片
克雷CMI数学研究是一家目的在于促进和传播数学知识非盈利数学机构,旨在给予有潜质的数学家各种奖项和资助,该研究所在2000年5月24日公布的七个千禧年难题,它们是:
(1)霍奇猜想
  (2)庞加莱猜想
  (3)黎曼假设
  (4)杨-米尔斯规范场存在性和质量间隔假设
  (5)NS方程解的存在性与光滑性
  (6)贝赫和斯维讷通-戴尔猜想
  (7)P=NP?

这七个问题被研究所认为是“重要的经典问题,经许多年仍未解决”。解答任何一题的第一个人将获颁予一百万美元奖金,所以这七个问题共值七百万美元。近20年过去了,在这7个问题中,只有庞加莱猜想得到了解决。
  据说Google面试程序员是曾经提问过什么时候NP=P.?错误答案是当N=1时【emoji】

什么是P=NP?
  一个问题可以在多项式时间复杂度内求解,当然可以在多项式时间复杂度内验证。但是反过来,一个可以在多项式时间复杂度内验证的问题是否一定能够通过多项式时间复杂度的算法求解呢?也就是说,是否全部的“NP类问题”都属于“P类问题”呢?这就是著名的“NP=P”问题
  如果P=NP?结果是true,那对世界的影响将是super super巨大的
  虽然我意会了各种博主千奇百怪举例还有无数离奇的头脑风暴,但是大家说的都太高端,用程序员朴实无华的语言描述就是,P=NP的话,计算机原来整不了的问题现在通过算法优化就可以整了,原来不确定整不整的了的问题,现在只要找到他的归约NPC可以整,那所有归约前的NP问题也都整了,
  如果酱婶儿整的话,什么SSL,RSA加密,银行以太坊加密就都不好使了,但氨基酸序列可以更好预测蛋白质结构,什么天气预报更准了,中国人民站起来了
  但是大批科学家还4广泛认为P=NP是不成立的,好了,我就看明白zei些,希望对大家有帮助,over!不接受错误指证。

你可能感兴趣的:(np问题)