算法分析与设计课件NP完全问题

上传人:自*** 文档编号:48495659 上传时间:2018-07-16 格式:PPT 页数:31 大小:437.04KB
返回 下载 相关 举报
算法分析与设计课件NP完全问题_第1页
第1页 / 共31页
算法分析与设计课件NP完全问题_第2页
第2页 / 共31页
算法分析与设计课件NP完全问题_第3页
第3页 / 共31页
算法分析与设计课件NP完全问题_第4页
第4页 / 共31页
算法分析与设计课件NP完全问题_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《算法分析与设计课件NP完全问题》由会员分享,可在线阅读,更多相关《算法分析与设计课件NP完全问题(31页珍藏版)》请在金锄头文库上搜索。

1、学习要点理解P类与NP类语言的概念 理解NP完全问题的概念理解近似算法的性能比及多项式时间近似格式的概念NPNP完全性理论与近似算法完全性理论与近似算法1P类与NP类问题n一般地说,将可由多项式时间算法求解的问题看作是易处理的问题,而将需要超多项式时间才能求解的问题看作是难处理的问题。n有许多问题,从表面上看似乎并不比排序或图的搜索等问题更困难,然而至今人们还没有找到解决这些问题的多项式时间算法,也没有人能够证明这些问题需要超多项式时间下界。n在图灵机计算模型下,这类问题的计算复杂性至今未知。n为了研究这类问题的计算复杂性,人们提出了另一个能力更强的计算模型,即非确定性图灵机计算模型,简记为N

2、DTM(Nondeterministic Turing Machine)。n在非确定性图灵机计算模型下,许多问题可以在多项式时间内求解。2NP完全问题NP完全问题是不确定性图灵机在P时间内能解决的问题,是世界七大数学难题之一。数学上著名的NP问题,完整的叫法是NP完全问题,也即“NP COMPLETE”问题,简单的写法,是 NP=P?的问题。 问题就在这个问号上,到底是NP等於P,还是NP不等於P。也就是说,NP问题到底是Polynomial(意思是多项式的),还是Non-Polynomial,尚无定论。 3NP里面的N,不是Non-Polynomial的N,是Non- Determinist

3、ic(意思是非确定性的),P代表Polynomial 倒是对的。NP就是Non-deterministic Polynomial的问题 ,也即是多项式复杂程度的非确定性问题。 什么是非确定性问题呢?有些计算问题是确定性的, 比如加减乘除之类,你只要按照公式推导,按部就班一步 步来,就可以得到结果。但是,有些问题是无法按部就班 直接地计算出来。比如,找大质数的问题。有没有一个公 式,你一套公式,就可以一步步推算出来,下一个质数应 该是多少呢?这样的公式是没有的。再比如,大的合数分 解质因数的问题,有没有一个公式,把合数代进去,就直 接可以算出,它的因子各自是多少?也没有这样的公式。 4这种问题的

4、答案,是无法直接计算得到的,只能通过间 接的“猜算”来得到结果。这也就是非确定性问题。而这些 问题的通常有个算法,它不能直接告诉你答案是什么,但可 以告诉你,某个可能的结果是正确的答案还是错误的。这个 可以告诉你“猜算”的答案正确与否的算法,假如可以在多 项式时间内算出来,就叫做多项式非确定性问题。而如果这 个问题的所有可能答案,都是可以在多项式时间内进行正确 与否的验算的话,就叫完全多项式非确定问题。 完全多项式非确定性问题可以用穷举法得到答案,一个个 检验下去,最终便能得到结果。但是这样算法的复杂程度, 是指数关系,因此计算的时间随问题的复杂程度成指数的增 长,很快便变得不可计算了。 5人

5、们发现,所有的完全多项式非确定性问题,都可以转换为一类叫 做满足性问题的逻辑运算问题。既然这类问题的所有可能答案,都可以 在多项式时间内计算,人们於是就猜想,是否这类问题,存在一个确定 性算法,可以在指数时间内,直接算出或是搜寻出正确的答案呢?这就 是著名的NP=P?的猜想。 解决这个猜想,无非两种可能,一种是找到一个这样的算法,只要 针对某个特定NP完全问题找到一个算法,所有这类问题都可以迎刃而解 了,因为他们可以转化为同一个问题。另外的一种可能,就是这样的算 法是不存在的。那么就要从数学理论上证明它为什么不存在。 6对P类,NP类及NP完全问题的研究推动 了计算复杂性理 论的发展,产生了许

6、多新概念,提出了许多新方法。但是 还有许多难题至今没有解决,P=NP?就是其中之一。许多 学者猜想PNP,但无法证明。7非确定性图灵机非确定性图灵机( NDTM ):一个k带的非确定性图灵机M 是一个7元组:(Q,T,I,b,q0,qf)。与确定性图灵机不 同的是非确定性图灵机允许移动函数具有不确定性,即对于 QTk中的每一个值(q;x1,x2,xk),当它属于的定义域时, Q(TL,R,S)k中有唯一的一个子集(q;x1,x2,xk)与之 对应。可以在(q;x1,x2,xk)中随意选定一个值作为它的函 数值。在图灵机计算模型中,移动函数是单值的,即对于QTk中 的每一个值,当它属于的定义域时

7、,Q(TL,R,S)k中只 有唯一的值与之对应,称这种图灵机为确定性图灵机,简记为 DTM(Deterministic Turing Machine)。 8P类与NP类语言P类和NP类语言的定义:P=L|L是一个能在多项式时间内被一台DTM所接受的语言 NP=L|L是一个能在多项式时间内被一台NDTM所接受的语言 由于一台确定性图灵机可看作是非确定性图灵机的特例 ,所以可在多项式时间内被确定性图灵机接受的语言也可 在多项式时间内被非确定性图灵机接受。故P NP。 9NP类语言举例无向图的团问题。该问题的输入是一个有n个顶点的无向图G=(V,E)和 一个整数k。要求判定图G是否包含一个k顶点的完

8、全子 图(团),即判定是否存在VV,|V|=k,且对于所有 的u,vV,有(u,v)E。若用邻接矩阵表示图G,用二进制串表示整数k,则 团问题的一个实例可以用长度为 的二进位串 表示。因此,团问题可表示为语言:CLIQUE=w#v|w,v0,1*,以w为邻接矩阵的 图G有一个k顶点的团,其中v是k的二进制表示。 10接受该语言CLIQUE的非确定性算法:用非确定性选择指令选 出包含k个顶点的候选顶点子集V,然后确定性地检查该子集是否 是团问题的一个解。算法分为3个阶段: 算法的第一阶段将输入串w#v分解,并计算出n= ,以及 用v表示的整数k。若输入不具有形式w#v或|w|不是一个平方数就 拒

9、绝该输入。显而易见,第一阶段可 在时间内完成。在算法的第二阶段中,非确定性地选择V的一个k元子集 VV。 算法的第三阶段是确定性地检查V的团性质。若V是一个 团则接受输入,否则拒绝输入。这显然可以在 时间内完成 。因此,整个算法的时间复杂性为 。 非确定性算法在多项式时间内接受语言CLIQUE,故CLIQUENP 。 11多项式时间验证VP=L|L*,为一有限字符集,存在一个多项式p和一 个多项式时间验证算法A(X,Y)使得对任意X*,XL当且仅 当存在Y*,|Y|p(|X|)且A(X,Y)=1。 多项式时间可验证语言类VP可定义为: 定理9-1:VP=NP。例如(哈密顿回路问题):一个无向图

10、G含有哈密顿回路吗?无向图G的哈密顿回路是通过G的每个顶点恰好一次的简单回 路。可用语言HAM-CYCLE 定义该问题如下: HAM-CYCLE=G|G含有哈密顿回路 12NP完全问题nPNP。n直观上看,P类问题是确定性计算模型下的易解问题类,而NP类问题是非确定性计算模型下的易验证问题类。n大多数的计算机科学家认为NP类中包含了不属于P类的语言,即PNP。nNP完全问题有一种令人惊奇的性质,即如果一个NP完全问题能在多项式时间内得到解决,那么NP中的每一个问题都可以在多项式时间内求解,即P=NP。n目前还没有一个NP完全问题有多项式时间算法。13多项式时间变换定义:语言L是NP完全的当且仅

11、当(1)LNP;(2)对于所有LNP有L p L。如果有一个语言L满足上述性质(2),但不一定满足性质(1) ,则称该语言是NP难的。所有NP完全语言构成的语言类称为NP 完全语言类,记为NPC。 设 , 是2个语言。所谓语言 能在多项式 时间内变换为语言 (简记为 p )是指存在映身f: , 且f满足: (1)有一个计算f的多项式时间确定性图灵机;(2)对于所有x ,x ,当且仅当f(x) 。 14多项式时间变换定理9-2:设L是NP完全的,则(1)LP当且仅当PNP;(2)若Lp ,且 NP,则 是NP完全的。 定理的(2)可用来 证明问题的NP完全 性。但前提是:要 有第一个NP完全问

12、题L。15一些典型的NP完全问题部分NP完全问题树16迄今为止,所有的NP完全问题都还没有多项式时间算法。对于这类问题,通常可采取以下几种解题策略。(1)只对问题的特殊实例求解(2)用动态规划法或分支限界法求解 (3)用概率算法求解 (4)只求近似解(5)用启发式方法求解 NP完全问题的近似算法17近似算法的性能若一个最优化问题的最优值为c*,求解该问题的一个 近似算法求得的近似最优解相应的目标函数值为c,则将 该近似算法的性能比定义为= 。在通常情况 下,该性能比是问题输入规模n的一个函数(n),即 (n)。该近似算法的相对误差定义为= 。若对问题 的输入规模n,有一函数(n)使得 (n),

13、则称 (n)为该近似算法的相对误差界。近似算法的性能比 (n)与相对误差界(n)之间显然有如下关系: (n)(n)-1。 18顶点覆盖问题的近似算法问题描述:无向图G=(V,E)的顶点覆盖是它的顶点集V 的一个子集VV,使得若(u,v)是G的一条边,则vV 或uV。顶点覆盖V的大小是它所包含的顶点个数 |V|。 VertexSet approxVertexCover ( Graph g ) cset=;e1=g.e;while (e1 != ) 从e1中任取一条边(u,v);cset=csetu,v;从e1中删去与u和v相关联的所有边;return c Cset用来存储顶点 覆盖中的各顶点。初

14、 始为空,不断从边集 e1中选取一边(u,v) ,将边的端点加入 cset中,并将e1中已 被u和v覆盖的边删去 ,直至cset已覆盖所 有边。即e1为空。 19顶点覆盖问题的近似算法图(a)(e)说明 了算法的运行过程 及结果。(e)表示 算法产生的近似最 优顶点覆盖cset, 它由顶点 b,c,d,e,f,g所组 成。(f)是图G的一 个最小顶点覆盖, 它只含有3个顶点 :b,d和e。 算法approxVertexCover的性能比为2。 20旅行售货员问题近似算法问题描述:给定一个完全无向图G=(V,E),其每一边 (u,v)E有一非负整数费用c(u,v)。要找出G的最小费用 哈密顿回路

15、。比如,费用函数c往往具有三角不等式性质,即对 任意的3个顶点u,v,wV,有:c(u,w)c(u,v)+c(v,w) 。当图G中的顶点就是平面上的点,任意2顶点间的费用 就是这2点间的欧氏距离时,费用函数c就具有三角不等 式性质。 旅行售货员问题的一些特殊性质:211 满足三角不等式的旅行售货员问题对于给定的无向图G,可以利用找图G的最小生成树的 算法设计找近似最优的旅行售货员回路的算法。 void approxTSP (Graph g) (1)选择g的任一顶点r;(2)用Prim算法找出带权图g的一棵以r为根的最小生成树T;(3)前序遍历树T得到的顶点表L;(4)将r加到表L的末尾,按表L中顶点次序组成回路H,作为计 算结果返回; 当费用函数满足三角不等式时,算法找出的旅行售货员回路 的费用不会超过最优旅行售货员回路费用的2倍。 22(b)表示找到的最小生成 树T;(c)表示对T作前序 遍历的次序;(d)表示L产 生的哈密顿回路H; (e)是G的一个最小费用旅 行售货员回路。 232 一般的旅行售货员问题在费用函数不一定满足三角不等式的一般情 况下,不存在具有常数性能比的解TSP问题的多项 式时间近似算法,除非P=NP。换句话说,若PNP ,则对任意常数1,不存在性能比为的解旅 行售货员问题的多项式时间近似算法。 24集合覆盖问题的近似算法问题描述:给定一个完

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号