可计算性理论:P/NP/NP-Complete/NP-Hard简单理解

1.归约:通过一个问题解决另一个问题。

2.P问题:在常规计算机上可以以多项式时间内解决的问题。

3.非确定性(Non-deterministic)和NP问题

假设有这样一台计算机,它是可以同时测试所有可能答案的超级计算机。考虑这样一些问题,给出解的某个猜测,看看是否可以在多项式时间内检验这个猜测。如果可以,这样的计算机称为非确定性计算机

非确定性就是指这种猜测问题的正确答案或者并行检验所有可能的答案,以确定哪一个正确的思想,称为非确定性。如果某算法以这样的方式工作,该算法称为非确定性算法

如果一个问题可以在一台非确定性计算机上运行(并行检验所有穷举答案),在多项式时间内解决,这样的问题称为NP问题

4.P问题是一类特殊的NP问题。在多项式时间内解决的问题当然也能在多项式时间内验证。

5.NP完全(NP-Complete)问题

定义:存在一个问题Q,满足(1)Q在NP中;(2)NP的每一个其它问题都可以归约在多项式时间内归约到Q。

令人惊喜的是,NPC问题是存在的(合取范式问题,详见Cook在1971年的论文)。

6.P=NP?

显然,我们容易想到,如果我们找到一个NP完全问题使得所有的其它NP问题都可以在多项式时间内归约到它,并且找到了一个NP完全问题的多项式算法,也就说明所有的NP问题都可以用这样一个确定性的算法在多项式时间内解出,这就是P=NP。证明或者推翻P=NP可以说是现在数学和计算机行业最难的问题。

7.NP-Hard(NP难)问题

NP-Hard问题是指的是满足NPC问题定义的第2条而不满足第1条的问题。就是说是否存在一个非NP问题,所有的NP问题都能归化到它。也就是即使有一天发现了NPC问题的多项式算法,但NP-Hard问题仍然无法用多项式算法解决,因为它不是NP问题,对于答案的验证都很困难。

8.假如P=NP,意味着什么呢?

很多人认为P≠NP,因为P=NP的世界将会变得疯狂。但是世界不是无数次给过我们惊喜和惊吓吗?

推荐链接:http://www.matrix67.com/blog/archives/2552

更具体的讲解:https://blog.csdn.net/qq_29176963/article/details/82776543#PNPNPCNP_39

你可能感兴趣的:(算法基础)