为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > NP完全问题

NP完全问题

2010-08-29 31页 ppt 437KB 51阅读

用户头像

is_460290

暂无简介

举报
NP完全问题nullnull学习要点 理解P类与NP类语言的概念 理解NP完全问题的概念 理解近似算法的性能比及多项式时间近似格式的概念NP完全性理论与近似算法P类与NP类问题P类与NP类问题一般地说,将可由多项式时间算法求解的问题看作是易处理的问题,而将需要超多项式时间才能求解的问题看作是难处理的问题。 有许多问题,从表面上看似乎并不比排序或图的搜索等问题更困难,然而至今人们还没有找到解决这些问题的多项式时间算法,也没有人能够证明这些问题需要超多项式时间下界。 在图灵机计算模型下,这类问题的计算复杂性至今未知。 为了研究这类问题的计算...
NP完全问题
nullnull学习要点 理解P类与NP类语言的概念 理解NP完全问题的概念 理解近似算法的性能比及多项式时间近似格式的概念NP完全性理论与近似算法P类与NP类问题P类与NP类问题一般地说,将可由多项式时间算法求解的问题看作是易处理的问题,而将需要超多项式时间才能求解的问题看作是难处理的问题。 有许多问题,从表面上看似乎并不比排序或图的搜索等问题更困难,然而至今人们还没有找到解决这些问题的多项式时间算法,也没有人能够证明这些问题需要超多项式时间下界。 在图灵机计算模型下,这类问题的计算复杂性至今未知。 为了研究这类问题的计算复杂性,人们提出了另一个能力更强的计算模型,即非确定性图灵机计算模型,简记为NDTM(Nondeterministic Turing Machine)。 在非确定性图灵机计算模型下,许多问题可以在多项式时间内求解。nullNP完全问题 NP完全问题是不确定性图灵机在P时间内能解决的问题,是世界七大数学难题之一。 数学上著名的NP问题,完整的叫法是NP完全问题,也即“NP COMPLETE”问题,简单的写法,是 NP=P?的问题。问题就在这个问号上,到底是NP等於P,还是NP不等於P。 也就是说,NP问题到底是Polynomial(意思是多项式的),还是Non-Polynomial,尚无定论。  null  NP里面的N,不是Non-Polynomial的N,是Non-Deterministic(意思是非确定性的),P代表Polynomial倒是对的。NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。   什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。但是,有些问题是无法按部就班直接地计算出来。比如,找大质数的问题。有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。 null 这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内算出来,就叫做多项式非确定性问题。而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。   完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。但是这样算法的复杂程度,是指数关系,因此计算的时间随问题的复杂程度成指数的增长,很快便变得不可计算了。   null 人们发现,所有的完全多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题。既然这类问题的所有可能答案,都可以在多项式时间内计算,人们於是就猜想,是否这类问题,存在一个确定性算法,可以在指数时间内,直接算出或是搜寻出正确的答案呢?这就是著名的NP=P?的猜想。  解决这个猜想,无非两种可能,一种是找到一个这样的算法,只要针对某个特定NP完全问题找到一个算法,所有这类问题都可以迎刃而解了,因为他们可以转化为同一个问题。另外的一种可能,就是这样的算法是不存在的。那么就要从数学理论上证明它为什么不存在。   null  对P类,NP类及NP完全问题的研究推动 了计算复杂性理论的发展,产生了许多新概念,提出了许多新方法。但是还有许多难题至今没有解决,P=NP?就是其中之一。许多学者猜想P≠NP,但无法证明。 非确定性图灵机非确定性图灵机 非确定性图灵机( NDTM ):一个k带的非确定性图灵机M是一个7元组:(Q,T,I,δ,b,q0,qf)。与确定性图灵机不同的是非确定性图灵机允许移动函数δ具有不确定性,即对于QTk中的每一个值(q;x1,x2,…,xk),当它属于δ的定义域时,Q(T{L,R,S})k中有唯一的一个子集δ(q;x1,x2,…,xk)与之对应。可以在δ(q;x1,x2,…,xk)中随意选定一个值作为它的函数值。 在图灵机计算模型中,移动函数δ是单值的,即对于QTk中的每一个值,当它属于δ的定义域时,Q(T{L,R,S})k中只有唯一的值与之对应,称这种图灵机为确定性图灵机,简记为DTM(Deterministic Turing Machine)。 P类与NP类语言 P类与NP类语言 P类和NP类语言的定义: P={L|L是一个能在多项式时间内被一台DTM所接受的语言} NP={L|L是一个能在多项式时间内被一台NDTM所接受的语言} 由于一台确定性图灵机可看作是非确定性图灵机的特例,所以可在多项式时间内被确定性图灵机接受的语言也可在多项式时间内被非确定性图灵机接受。故P  NP。 nullnull 接受该语言CLIQUE的非确定性算法:用非确定性选择指令选出包含k个顶点的候选顶点子集V,然后确定性地检查该子集是否是团问题的一个解。算法分为3个阶段: 在算法的第二阶段中,非确定性地选择V的一个k元子集V’V。 非确定性算法在多项式时间内接受语言CLIQUE,故CLIQUE∈NP。 多项式时间验证多项式时间验证 VP={L|L∈∑*,∑为一有限字符集,存在一个多项式p和一个多项式时间验证算法A(X,Y)使得对任意X∈∑*,X∈L当且仅当存在Y∈∑*,|Y|≤p(|X|)且A(X,Y)=1}。 多项式时间可验证语言类VP可定义为: 定理9-1:VP=NP。 例如(哈密顿回路问题):一个无向图G含有哈密顿回路吗? 无向图G的哈密顿回路是通过G的每个顶点恰好一次的简单回路。可用语言HAM-CYCLE 定义该问题如下: HAM-CYCLE={G|G含有哈密顿回路} NP完全问题NP完全问题PNP。 直观上看,P类问题是确定性计算模型下的易解问题类,而NP类问题是非确定性计算模型下的易验证问题类。 大多数的计算机科学家认为NP类中包含了不属于P类的语言,即P≠NP。 NP完全问题有一种令人惊奇的性质,即如果一个NP完全问题能在多项式时间内得到解决,那么NP中的每一个问题都可以在多项式时间内求解,即P=NP。 目前还没有一个NP完全问题有多项式时间算法。多项式时间变换多项式时间变换 定义:语言L是NP完全的当且仅当 (1)L∈NP; (2)对于所有L’∈NP有L’ ∝p L。 如果有一个语言L满足上述性质(2),但不一定满足性质(1),则称该语言是NP难的。所有NP完全语言构成的语言类称为NP完全语言类,记为NPC。 多项式时间变换多项式时间变换定理的(2)可用来证明问题的NP完全性。但前提是:要有第一个NP完全问题L。一些典型的NP完全问题一些典型的NP完全问题NP完全问题的近似算法NP完全问题的近似算法 迄今为止,所有的NP完全问题都还没有多项式时间算法。 对于这类问题,通常可采取以下几种解题策略。 (1)只对问题的特殊实例求解 (2)用动态规划法或分支限界法求解 (3)用概率算法求解 (4)只求近似解 (5)用启发式方法求解 近似算法的性能近似算法的性能 顶点覆盖问题的近似算法 顶点覆盖问题的近似算法 问题描述:无向图G=(V,E)的顶点覆盖是它的顶点集V的一个子集V’V,使得若(u,v)是G的一条边,则v∈V’或u∈V’。顶点覆盖V’的大小是它所包含的顶点个数|V’|。 VertexSet approxVertexCover ( Graph g ) { cset=; e1=g.e; while (e1 != ) { 从e1中任取一条边(u,v); cset=cset∪{u,v}; 从e1中删去与u和v相关联的所有边; } return c } Cset用来存储顶点覆盖中的各顶点。初始为空,不断从边集e1中选取一边(u,v),将边的端点加入cset中,并将e1中已被u和v覆盖的边删去,直至cset已覆盖所有边。即e1为空。 顶点覆盖问题的近似算法顶点覆盖问题的近似算法 图(a)~(e)说明了算法的运行过程及结果。(e)表示算法产生的近似最优顶点覆盖cset,它由顶点b,c,d,e,f,g所组成。(f)是图G的一个最小顶点覆盖,它只含有3个顶点:b,d和e。 算法approxVertexCover的性能比为2。 旅行售货员问题近似算法旅行售货员问题近似算法 问题描述:给定一个完全无向图G=(V,E),其每一边(u,v)∈E有一非负整数费用c(u,v)。要找出G的最小费用哈密顿回路。 比如,费用函数c往往具有三角不等式性质,即对任意的3个顶点u,v,w∈V,有:c(u,w)≤c(u,v)+c(v,w)。当图G中的顶点就是平面上的点,任意2顶点间的费用就是这2点间的欧氏距离时,费用函数c就具有三角不等式性质。 旅行售货员问题的一些特殊性质:1 满足三角不等式的旅行售货员问题1 满足三角不等式的旅行售货员问题 对于给定的无向图G,可以利用找图G的最小生成树的算法设计找近似最优的旅行售货员回路的算法。 void approxTSP (Graph g) { (1)选择g的任一顶点r; (2)用Prim算法找出带权图g的一棵以r为根的最小生成树T; (3)前序遍历树T得到的顶点表L; (4)将r加到表L的末尾,按表L中顶点次序组成回路H,作为计 算结果返回; } 当费用函数满足三角不等式时,算法找出的旅行售货员回路的费用不会超过最优旅行售货员回路费用的2倍。 null(b)表示找到的最小生成树T;(c)表示对T作前序遍历的次序;(d)表示L产生的哈密顿回路H; (e)是G的一个最小费用旅行售货员回路。 2 一般的旅行售货员问题2 一般的旅行售货员问题 在费用函数不一定满足三角不等式的一般情况下,不存在具有常数性能比的解TSP问题的多项式时间近似算法,除非P=NP。换句话说,若P≠NP,则对任意常数ρ>1,不存在性能比为ρ的解旅行售货员问题的多项式时间近似算法。 集合覆盖问题的近似算法集合覆盖问题的近似算法 问题描述:给定一个完全无向图G=(V,E),其每一边(u,v)∈E有一非负整数费用c(u,v)。要找出G的最小费用哈密顿回路。null集合覆盖问题举例:用12个黑点表示集合X。F={S1,S2,S3,S4,S5,S6,},如图所示。容易看出,对于这个例子,最小集合覆盖为:C={S3,S4,S5,}。 集合覆盖问题的近似算法集合覆盖问题的近似算法集合覆盖问题近似算法——贪心算法 算法的循环体最多执行min{|X|,|F|}次。而循环体内的计算显然可在O(|X||F|)时间内完成。因此,算法的计算时间为O(|X||F|min{|X|,|F|})。由此即知,该算法是一个多项式时间算法。 Set greedySetCover (X,F) { U=X; C=; while (U !=) { 选择F中使|S∩U|最大的子集S; U=U-S; C=C∪{S}; } return C; } 子集和问题的近似算法子集和问题的近似算法nullint exactSubsetSum (S,t) { int n=|S|; L[0]={0}; for (int i=1;i<=n;i++) { L[i]=mergeLists(L[i-1],L[i-1]+S[i]); 删去L[i]中超过t的元素; } return max(L[n]); }算法以集合S={x1,x2,…,xn}和目标值t作为输入。算法中用到将2个有序表L1和L2合并成为一个新的有序表的算法mergeLists(L1,L2)。 2 子集和问题的完全多项式时间近似格式2 子集和问题的完全多项式时间近似格式 基于算法exactSubsetSum,通过对表L[i]作适当的修整建立一个子集和问题的完全多项式时间近似格式。 在对表L[i]进行修整时,用到一个修整参数δ,0<δ<1。用参数δ修整一个表L是指从L中删去尽可能多的元素,使得每一个从L中删去的元素y,都有一个修整后的表L1中的元素z满足(1-δ)y≤z≤y。可以将z看作是被删去元素y在修整后的新表L1中的代表。 举例:若δ=0.1,且L=〈10,11,12,15,20,21,22,23,24,29〉,则用δ对L进行修整后得到L1=〈10,12,15,20,23,29〉。其中被删去的数11由10来代表,21和22由20来代表,24由23来代表。 2 子集和问题的完全多项式时间近似格式2 子集和问题的完全多项式时间近似格式对有序表L修整算法List trim(L,δ) { int m=|L|; L1=〈L[1]〉; int last=L[1]; for (int i=2;i<=m;i++) { if (last<(1-δ)*L[i]) { 将L[i]加入表L1的尾部; last=L[i]; } return L1; } 子集和问题近似格式int approxSubsetSum(S,t,ε) { n=|S|; L[0]=〈0〉; for (int i=1;i<=n;i++) { L[i]=Merge-Lists(L[i-1], L[i-1]+S[i]); L[i]=Trim(L[i],ε/n); 删去L[i]中超过t的元素; } return max(L[n]); }
/
本文档为【NP完全问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索