【NPC】1、NP、P、NPC概念介绍

原创 2012年12月04日 23:16:22


一、P、NP、NPC概念


1971年,Stephen Cook提出了第一个NPC问题:布尔可满足性问题。
1973年,Leonid Levin提出了21个经典的NPC问题。
1979年,Garey和Johnson出版了一本书:“Computers and Intractability: A Guide to NP-Completeness”,中文版是“计算机和难解性”,在这本书中提出了“6个基本的NPC问题:3SAT、顶点覆盖、团、三维匹配、汉密尔顿回路、划分问题”。


P问题:我们以前接触过的算法如:图搜索问题、最短路径问题、最小生成树问题,都是能够在多项式时间内解决的决策问题,我们把这些问题称为P问题。
P问题是集合的集合,因为P={最短路径问题、最小生成树问题、...},而最短路径问题又是一个集合。

NP问题:多项式时间内能够验证的问题称为NP问题。
验证(Verify)的意思是:给定一个问题的实例(Instance)、证书(Certificate,证书就是类似于证据),需要验证这个证书是这个问题的正确答案。
比如汉密尔顿路径问题,实例为G=(V,E),证书为顶点序列 {v0,v1,v2,v3,....,vk},我们的目的是要验证这个证书就是这个问题的答案,验证方法为:先遍历一遍这个点序列,看看是不是每个点只出现一次,然后对于(vi,vi+1)是否为G的边,这样就能够验证这个点序列是不是汉密尔顿路径,很显然这个验证过程是多项式时间的,所以汉密尔顿路径是NP问题。

(1)P问题是不是NP问题呢?
很显然是,因为我们如果要验证一个P问题,只需要给一个实例和一个空的证书(即不需要给证书),直接求解P问题即可,所以也是多项式时间能验证的。
(2)P是不是等于NP呢?
目前的答案是“不是”,但是还不能证明,因为NP中还有一类NPC问题,如果我们能够证明NPC是P问题,则NP=P。

NPC问题:目前不能用多项式时间解决的问题,但是我们还不能证明这个问题不能用多项式解决,我们这次的目标是研究这个问题。
NPC的定义:

NP难问题:如果一个问题不满足NPC的第一个条件,只满足NPC的第二个条件,则称为NP难问题。


二、规约


规约(Reduction):如果我们要证明一个问题A是NPC问题,则只需要首先证明他是NP问题,然后只要找一个你所知道的NPC问题规约到A即可。
如果A到B规约成功,则说明:B至少比A要难,即只要有一个解决B的黑盒子算法,则就能解决A问题。
规约类似于函数调用,比如要将A规约到B,则只要:
function A(....)
    //一系列变换
    B(....);

因此我们在证明一个问题是NPC问题时,如果掌握的已知NPC问题越多,对于你的规约越有利。

一般来说证明B是NPC的过程如下:

1.证明B是NP问题。
2.知道一个已知的NPC问题A。
3.给出一个规约过程,并证明此规约过程是多项式时间的。
对于A中的任意一个实例:
4.如果A有一个真的实例,则B也有一个真的实例。
5.如果B有一个真的实例,则A也有一个真的实例。

接下来的文章也是按照这个方式来证明的。

总结一下P、NP、NPC的关系如下:


如果我们能够证明一个问题是NPC问题,则表明很有可能这个问题不能用多项式时间解决。下面的图是《计算机与复杂性》这本书中的趣图,很形象地说明了证明一个问题是NPC的用处。
 
 
 
 
 
 
 

P、NP、NPC和NP-Hard相关概念的图形和解释

P、NP、NPC和NP-Hard相关概念的图形和解释 一、相关概念       P: 能在多项式时间内解决的问题   NP: 不能在多项式时间内解决或不确定能不能在多项式时...
  • huang1024rui
  • huang1024rui
  • 2015年10月15日 19:48
  • 5879

P、NP、NP-Hard、NPC问题之间的关系

P、NP、NP-Hard、NPC问题之间的关系导语: 探究P、NP、NP-Hard、NPC问题之间的关系 P问题  P问题是能够在多项式时间内求出问题的解,多项式时间就是类似与O(n^{r}),其...
  • ppaii123
  • ppaii123
  • 2016年04月26日 17:17
  • 1102

P,NP,NPc

P,NP,NPc首先说个基本概念----时间复杂度:并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。具有O(1)的时间复杂度,也称常数级复杂度;数据规模...
  • liyangbing315
  • liyangbing315
  • 2010年05月06日 16:29
  • 1340

P、NP、NPC

P类中包含的是在多项式时间内可解的问题。 NP类中包含的是在多项式时间内“可验证”的问题 NPC 如果一个问题属于NP,且与NP中的任何问题是一样“难的”,则说它属于NPC类。即 NP-compl...
  • micx0124
  • micx0124
  • 2013年08月14日 19:44
  • 285

P问题、NP问题、NPC问题的概念及实例证明

一、几种问题及其关系 二、规约一种技巧 三、如何对问题证明 四、NP-Complete间的规约例子 首先解释一下什么是NP问题,什么是NP hard问题,什么是NP完全问题。 * P Proble...
  • u012176591
  • u012176591
  • 2016年05月21日 16:29
  • 6951

P、NP、NP-Hard、NPC问题之间的关系

P、NP、NP-Hard、NPC问题之间的关系导语: 探究P、NP、NP-Hard、NPC问题之间的关系 P问题  P问题是能够在多项式时间内求出问题的解,多项式时间就是类似与O(n^{r}),其...
  • ppaii123
  • ppaii123
  • 2016年04月26日 17:17
  • 1102

【算法】P,NP,NPC问题总结

P问题 P是一个判定问题类,这些问题可以用一个确定性算法在多项式时间内判定或解出。 如果一个判定性问题的复杂度是该问题的一个实例的规模n的多项式函数,则我们说这种可以在多项式时间内解决的判定性问题属于...
  • mengaliu_123
  • mengaliu_123
  • 2016年09月23日 09:54
  • 529

P,NP,NPC

P,NP,NPC
  • shinystone111
  • shinystone111
  • 2016年11月01日 21:58
  • 144

P、NP、NPC和NP-Hard相关概念的图形和解释

P、NP、NPC和NP-Hard相关概念的图形和解释 一、相关概念       P: 能在多项式时间内解决的问题   NP: 不能在多项式时间内解决或不确定能不能在多项式时...
  • huang1024rui
  • huang1024rui
  • 2015年10月15日 19:48
  • 5879

什么是P问题、NP问题和NPC问题

这或许是众多OIer最大的误区之一。     你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的N...
  • sinat_25357975
  • sinat_25357975
  • 2016年04月16日 12:00
  • 602
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【NPC】1、NP、P、NPC概念介绍
举报原因:
原因补充:

(最多只允许输入30个字)