【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的用处。
 
 
 
 
 
 
 

Karp的21个NPC问题及其规约

备注:主要参考的内容是 1、  SAT问题(SATISFIABILITY)          (判断合取范式(有限个简单析取式的合取)是否可满足)          判断析取范式(有限个...
  • u013012544
  • u013012544
  • 2014-05-18 18:54:26
  • 6261

【NPC】5、顶点覆盖规约到独立集、团问题

一、问题描述         二、证明
  • xiazdong
  • xiazdong
  • 2012-12-04 23:31:23
  • 7161

算法:NP问题,NP完全问题(NPC),NPhard问题

在做计算机算法关于NP完全问题这一章的作业的时候,发现有很多概念理解的不是很透彻,然后就反复看老师的讲义,在网上查阅各种资料,花了很多时间来弄懂这块的内容。发现书上的概念太正式,定义太标准,不容易很快...
  • qq_23926575
  • qq_23926575
  • 2016-12-14 22:51:03
  • 4197

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

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

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

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

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:16
  • 1397

P,NP,NPC问题

http://blog.csdn.net/dongwq/article/details/4305435
  • a263169
  • a263169
  • 2015-07-28 09:49:56
  • 208

【NPC】2、SAT规约到3SAT

一、SAT、3SAT问题描述     二、证明
  • xiazdong
  • xiazdong
  • 2012-12-04 23:21:14
  • 13029

<em>npc</em>问题详解与实例大全

P问题、NP问题、<em>NPC</em>问题的概念及实例证明 加密技术在信息安全领域的重要作用 算法第一次实验 <em>NPC</em>问题 Karp的21个<em>NPC</em>问题及其<em>规约</em> 【算法】P 算法<em>NPC</em>问题 ...
  • 2018年04月17日 00:00

简述P问题,NP问题,NPC问题以及NP Hard问题

发现我们经常谈到NP问题,NP完全问题,NP难问题,但是其实他们之间是有区别的。 1、P问题是指:一个问题可以找到一个能在多项式的时间里解决它的算法。也就是复杂度为O(1),O(log(n)),O(n...
  • John159151
  • John159151
  • 2015-10-11 21:52:41
  • 1944
收藏助手
不良信息举报
您举报文章:【NPC】1、NP、P、NPC概念介绍
举报原因:
原因补充:

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