图论中P、NP、NPC和NP难问题详解_第1页
图论中P、NP、NPC和NP难问题详解_第2页
图论中P、NP、NPC和NP难问题详解_第3页
图论中P、NP、NPC和NP难问题详解_第4页
图论中P、NP、NPC和NP难问题详解_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、P问题NP问题NPC问题NP难问题详解ContentsP问题问题1NP问题问题2NPC问题问题3NP难问题难问题4 时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。 不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n)。时间复杂度时间复杂度多项式级的复杂度 。如 O(1), O(log(n),O(na)等 因为它的规模n出现在底数的位置 !时间复杂度时间复杂度非多项式级的 如:O(an)和O(n!)

2、等! P问题是可以在多项式时间内被确定机(通常意义的计算机)解决的问题. 如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。 我们常见到的一些信息奥赛的题目都是P问题。 P问题问题 VS NP问题问题 ?P (Polynomial,多项式)问题NP(Non-Deterministic Polynomial, 非确定多项式)问题 首先:首先:NP问题不是非问题不是非P类问题类问题 ! NP问题问题,是指可以在多项式时间内被非确定机是指可以在多项式时间内被非确定机(他可以猜他可以猜,他总是能猜到最能满足他总是能猜到最能满足你需要的那种选择你需要的那种选择,如果你让他

3、解决如果你让他解决n皇后问题皇后问题,他只要猜他只要猜n次就能完成次就能完成-每次都每次都是那么幸运是那么幸运)解决的问题解决的问题.这里有一个著名的问题这里有一个著名的问题-千禧难题之首千禧难题之首,是说是说P问题是问题是否等于否等于NP问题问题,也即是否所有在非确定机上多项式可解的问题都能在确定机上也即是否所有在非确定机上多项式可解的问题都能在确定机上用多项式时间求解用多项式时间求解. NP问题是指可以在多项式的时间里验证一个解的问题,即可以在多项式的时问题是指可以在多项式的时间里验证一个解的问题,即可以在多项式的时间里猜出一个解的问题。间里猜出一个解的问题。 像像Hamilton回路问题

4、。回路问题。 在这个题中,找一个解很困难,但验证一个解很容易。在这个题中,找一个解很困难,但验证一个解很容易。 当然有不是当然有不是NP问题的问题,即咱猜到了解但是没用,因为咱不能在多项式的问题的问题,即咱猜到了解但是没用,因为咱不能在多项式的时间里去验证它。时间里去验证它。 如下面这个:如下面这个: 我们已经知道我们已经知道Hamilton回路是回路是NP问题,因为验证一条路是否恰好经过了每问题,因为验证一条路是否恰好经过了每一个顶点非常容易。但我们把问题换成这样:试问一个图中是否不存在一个顶点非常容易。但我们把问题换成这样:试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式

5、的时间里进行验证了,因为除非你试回路。这样问题就没法在多项式的时间里进行验证了,因为除非你试过所有的路,否则你不敢断定它过所有的路,否则你不敢断定它“没有没有Hamilton回路回路”。 已经知道所有的已经知道所有的P类问题都是类问题都是NP问题。问题。 那反之呢?其实就一句话:证明或那反之呢?其实就一句话:证明或推翻推翻P=NP 这就是所谓的这就是所谓的“NP问题问题”!P问题与问题与NP问题的对比问题的对比 换一种说法换一种说法,如果一个问题的复杂度是该问题的一个实例规模如果一个问题的复杂度是该问题的一个实例规模n的多项式的多项式函数,则这种可以在多项式时间内解决的问题属于函数,则这种可以

6、在多项式时间内解决的问题属于P类问题类问题.通俗地称所有复通俗地称所有复杂度为多项式时间的问题为易解的问题类,否则为难解的问题。杂度为多项式时间的问题为易解的问题类,否则为难解的问题。有些问题很难找到多项式时间的算法(或许根本不存在),例如有些问题很难找到多项式时间的算法(或许根本不存在),例如“找出找出无向图中哈密顿回路无向图中哈密顿回路”问题。但如果给了该问题的一个答案,可以在多项式问题。但如果给了该问题的一个答案,可以在多项式时间内判断这个答案是否正确。例如说对于哈密顿回路问题,给一个任意的时间内判断这个答案是否正确。例如说对于哈密顿回路问题,给一个任意的回路,很容易判断它是否是哈密顿回

7、路(只要看是不是所有的顶点都在回路回路,很容易判断它是否是哈密顿回路(只要看是不是所有的顶点都在回路中就可以了)。这里给出中就可以了)。这里给出NP问题的另一个定义问题的另一个定义,这种可以在多项式时间内验这种可以在多项式时间内验证一个解是否正确的问题称为证一个解是否正确的问题称为NP问题,亦称为验证问题类。问题,亦称为验证问题类。简单的说,存在多项式时间的算法的一类问题,称之为简单的说,存在多项式时间的算法的一类问题,称之为P类问题;而像类问题;而像梵塔问题,推销员旅行问题等问题,至今没有找到多项式时间算法解的一类梵塔问题,推销员旅行问题等问题,至今没有找到多项式时间算法解的一类问题,称之为

8、问题,称之为NP问题。同时,问题。同时,P类问题是类问题是NP问题的一个子集。问题的一个子集。NP完全( NP Complete,NPC )问题NPC问题(一) 人们普遍认为,人们普遍认为,P=NP不成立。那么多数人相信,存在至少一个不可能有不成立。那么多数人相信,存在至少一个不可能有多项式级复杂度的算法的多项式级复杂度的算法的NP问题问题这就是这就是NPC问题问题。 NPC问题是指这样一类问题是指这样一类NP问题问题,所有的所有的NP问题都可以用多项式时间划归到问题都可以用多项式时间划归到他们中的一个他们中的一个.所以显然所以显然NP完全的问题具有如下性质完全的问题具有如下性质:它可以在多项

9、式时它可以在多项式时间内求解,当且仅当所有的其他的间内求解,当且仅当所有的其他的NP完全问题也可以在多项式时间内完全问题也可以在多项式时间内求解。这样一来求解。这样一来,只要我们找到一个只要我们找到一个NPC问题的多项式解问题的多项式解,所有的所有的NP问题都问题都可以多项式时间内划归成这个可以多项式时间内划归成这个NPC问题问题,再用多项式时间解决再用多项式时间解决,这样这样NP就等就等于于P了了. Reducibility(“约化约化”或或“归约归约”):一个问题一个问题A可以约化为问题可以约化为问题B的含义即的含义即是,可以用解决问题是,可以用解决问题B的解法来解决问题的解法来解决问题A

10、,或者说,问题,或者说,问题A可以可以“变成变成”问题问题B。 如:一元一次方程可以如:一元一次方程可以“归约归约”为一元二次方程。为一元二次方程。 问题问题A可可“约化约化”为问题为问题B直观意义:直观意义:B的时间复杂度高于或者等于的时间复杂度高于或者等于A的时的时间复杂度。也就是说,问题间复杂度。也就是说,问题A不比问题不比问题B难。难。 很显然,约化具有一项重要的性质:约化具有传递性。如果问题很显然,约化具有一项重要的性质:约化具有传递性。如果问题A可约可约化为问题化为问题B,问题,问题B可约化为问题可约化为问题C,则问题,则问题A一定可约化为问题一定可约化为问题C。 现在再来说一下约

11、化的标准概念就不难理解了:如果能现在再来说一下约化的标准概念就不难理解了:如果能找到这样一个变化法则,对任意一个程序找到这样一个变化法则,对任意一个程序A的输入,都能的输入,都能按这个法则变换成程序按这个法则变换成程序B的输入,使两程序的输出相同,的输入,使两程序的输出相同,那么我们说,问题那么我们说,问题A可约化可约化为问题为问题B。 注:我们所说的注:我们所说的“可约化可约化”是指的可是指的可“多项式地多项式地”约化约化(Polynomial-time Reducible),即变换输入的方法是能在,即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时多项式的时间里完成的。

12、约化的过程只有用多项式的时间完成才有意义。间完成才有意义。NPC问题(二)NPC问题(三)NPC问题问题 p问题问题 P问题NP问题问题 p问题问题 约化约化 约化约化总结:总结: 定义:定义:同时满足下面两个条件的问题就是同时满足下面两个条件的问题就是NPC问题。问题。首先,它得是一个首先,它得是一个NP问题;然后,所有的问题;然后,所有的NP问题都问题都可以约化到它。可以约化到它。 证明:证明:先证明它至少是一个先证明它至少是一个NP问题,再证明其中一问题,再证明其中一个已知的个已知的NPC问题能约化到它问题能约化到它 NPC问题(四) NP-Hard问题:其满足问题:其满足NPC问题定义

13、的第二条但不一定要问题定义的第二条但不一定要满足第一条(就是说,满足第一条(就是说,NP-Hard问题要比问题要比 NPC问题的范围问题的范围广,但不一定是广,但不一定是NP问题)。问题)。 NP-Hard问题同样难以找到多项式的算法,但它不列入我问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是们的研究范围,因为它不一定是NP问题。即使问题。即使NPC问题问题发现了多项式级的算法,发现了多项式级的算法,NP-Hard问题有可能仍然无法得问题有可能仍然无法得到多项式级的算法。事实上,由于到多项式级的算法。事实上,由于NP-Hard放宽了限定条放宽了限定条件,它将有可能比所有

14、的件,它将有可能比所有的NPC问题的时间复杂度更高从而问题的时间复杂度更高从而更难以解决。更难以解决。NP-Hard问题?NPC问题(补充)NPC问题存在吗问题存在吗? 逻辑电路问题逻辑电路问题: 给定一个逻辑电路,问是否存在一种输入给定一个逻辑电路,问是否存在一种输入使输出为使输出为True。 这是第一个这是第一个NPC问题。其它的问题。其它的NPC问题都是由这个问题约问题都是由这个问题约化而来的。因此,逻辑电路问题是化而来的。因此,逻辑电路问题是NPC类问题的类问题的“鼻祖鼻祖”。 我们知道,一个逻辑电路由若干个输入,一个输出,若干我们知道,一个逻辑电路由若干个输入,一个输出,若干“逻辑门逻辑门”和密密麻麻的线组成,如下图:和密密麻麻的线组成,如下图: NPC问题(补充) 有输出无论如何都不可能为有输出无论如何都不可能为True的逻辑电路的逻辑电路吗?吗? NPC问题(补充) 逻辑电路问题属于NPC问题它显然属于NP问题,并且

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论