NP完全问题.ppt

上传人:b****1 文档编号:1400874 上传时间:2022-10-22 格式:PPT 页数:36 大小:108.50KB
下载 相关 举报
NP完全问题.ppt_第1页
第1页 / 共36页
NP完全问题.ppt_第2页
第2页 / 共36页
NP完全问题.ppt_第3页
第3页 / 共36页
NP完全问题.ppt_第4页
第4页 / 共36页
NP完全问题.ppt_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

NP完全问题.ppt

《NP完全问题.ppt》由会员分享,可在线阅读,更多相关《NP完全问题.ppt(36页珍藏版)》请在冰豆网上搜索。

NP完全问题.ppt

第12章NP完全问题,1.NP完全问题概述2.P类和NP类问题3.NP完全问题4.co_NP类和NPI类问题,1.NP完全问题概述,1.1Church-Turing论题和Cook-Karp论题1.2问题分类1.3优化问题向判定问题的转换,1.1Church-Turing论题和Cook-Karp论题,计算复杂性理论有两个基本论题:

Church-Turing论题和Cook-Karp论题Church-Turing论题:

一个问题时可计算的当且仅当它在图灵机上经过有限次计算得到正确的结果。

这个论题把人类所面临的问题分为两类:

一类是可计算的,另一类是不可计算的。

但“有限次计算”是一个宽松的条件Cook-Karp论题:

一个问题是实际可计算的当且仅当它在图灵机上经过多项式时间(步数)计算得到正确的结果。

Cook-Karp论题将可计算问题类进一步划分成两类:

一类是实际可计算的,另一类是实际不可计算的,1.2问题分类,有两类问题,一类是判定问题,另一类是优化问题判定问题的解只涉及两种情况:

yes或no;优化问题则涉及极值问题判定问题举例:

给定一个带整数权的有向图G和一个正整数k,是否存在着一条长度小于k的哈密尔顿回路?

优化问题举例:

给定一个带整数权的有向图G,其最短路径长度的哈密尔顿长度是多少?

1.3优化问题向判定问题的转换,判定问题举例:

给定一个带整数权的有向图G和一个正整数k,是否存在着一条长度小于k的哈密尔顿回路?

优化问题举例:

给定一个带整数权的有向图G,其最短路径长度的哈密尔顿长度是多少?

如果上述判定问题用下面函数解决:

booleanHamilton(Graphg,intk);则上述优化问题可以用二分的方式在下面的函数中解决:

intminHamilton(Graph);/二分查找中调用Hamilton函数,2.P类和NP类问题,2.1P类问题2.2NP类问题,2.1P类问题,2.1.1确定性算法2.1.2P类判定问题2.1.3在补集下封闭的定义2.1.4P类问题在不集下封闭定理2.1.5判定问题规约的定义2.1.6判定问题规约的定理2.1.7判定问题规约定理示例,2.1.1确定性算法,定义:

假设A是问题的一个算法。

如果算法在处理实例的执行过程中每一个步骤都有一个确定的选择,则称算法A是确定性算法对于问题的确定性算法A,每一个实例执行多次的结果是严格一致的,2.1.2P类判定问题,定义:

如果对某个判定问题,存在着一个非负整数k,对输入规模为n的实例,能够以O(nk)的时间运行一个确定的算法,得到yes或no的答案,则称该判定问题是一个P(Polynomial)类判定问题举例:

给定两个大小均为n的集合A和B,判断这两个集合中是否存在着相同的元素?

2.1.3在补集下封闭的定义,可以把前述判定问题的提法改变:

给定两个大小均为n的集合A和B,判断这两个集合中是否不存在着相同的元素?

这个问题是前述问题的补定义:

令C是一类问题,如果对C中的任何问题C,如果的补也在C中,则称C类问题在补集下封闭,2.1.4P类问题在不集下封闭定理,定理:

P类问题在补集下是封闭的证明:

对于P类问题中的任意问题,只要修改相应的多项式级别算法A的代码,把返回yes的改为返回no,把返回no的改为返回yes即可,booleanjudgeEqual(intn,Elema,Elemb)for(inti=0;in;i+)for(intj=0;jn;j+)if(ai=aj)returnyes;/修改为noreturnno;/修改为yes,2.1.5判定问题规约的定义,定义:

令和是两个判定问题,如果存在一个具有如下性能的算法A,可以用多项式的时间,把问题的实例I转换为问题的实例I,使得I与I的答案一致,就称以多项式时间规约于,记为p举例:

问题是:

给定一个长度为n整数数组D和一个整数k判断是否存在D中的一个元素和k相等。

问题是:

给定一个长度为m整数数组E和一个整数k判断是否存在E中的两个元素,其和与k相等。

用于的实例I向的实例I转换的多项式算法A,2.1.6判定问题规约的定理,定理:

令和是两个判定问题,如果P,并且p,那么P证明:

根据和的规约特性,存在着多项式算法A,把的实例I转换为的实例I,并且二者运算结果一致。

由于A是多项式的,因此,其输出也是多项式的。

A的运算结果(就是I)是一个多项式规模的结果。

而的实例可以用多项式规模的时间运算得到结果。

处理的实例I所需时间是:

I向I转换所需时间+处理I所需时间,这两个时间都是多项式级别的,因此处理的实例I是多项式级别的,2.1.7判定问题规约定理示例,问题是:

给定一个长度为n整数数组D和一个整数k判断是否存在D中的一个元素和k相等。

问题是:

给定一个长度为m整数数组E和一个整数k判断是否存在E中的两个元素,其和与k相等假设问题的输入实例I是一个长度为n=4的数组2,4,-1,8,和一个整数3,转换算法A如下:

inttransfer(intn,intinst_ba)intinst=newintn*(n-1)/2;intcount=0;for(inti=0;in;i+)for(intj=0;ji;j+)instcount=inst_bari+inst_barj;count+;函数transfer输出一个数组6,1,3,10,12,7,规模是n的多项式级别。

它含有3,因此原问题结果是yes,否则原问题结果为no,2.2NP类问题,2.2.1非确定算法举例2.2.2NP类问题算法的阶段2.2.3NP类判定问题的定义2.2.4NP类问题举例2.2.5NP类问题的特征2.2.6P类问题和NP类问题的关系,2.2.1非确定算法举例,给定n个城市及其邻接费用矩阵,找出一个长度为n的序列,每个元素代表一个城市:

intgetSequence(intn,intcities)intresult=newintn;for(inti=0;in;i+)resulti=(int)(Math.random()*n);returnresult;这是一个多项式级别的算法,返回的序列长度为n,但不能保证相邻两个城市之间有通路,也不能保证各个城市只经过一次也可以用城市之间有通路作为条件生成一个长度是n的序列,这能保证两个相邻城市之间有通路,但不能保证经过且只经过每个城市一次。

这也可以在多项式级别的时间内完成,2.2.2NP类问题算法的阶段,一个NP类问题的算法一般分为2个阶段:

第一阶段是推测阶段,第二阶段是验证阶段在推测阶段,能够以多项式时间得到问题的一个“推测”实例(不一定是真正实例)在验证阶段,能够以多项式时间验证推测阶段所得实例是否是真正的实例。

如果不是实例,则算法结束;如果是实例,则以多项式时间判定这个实例的结果是yes或no,2.2.3NP类判定问题的定义,定义:

如果对某个判定问题,存在着一个非负整数k,对输入规模为n的实例,能够以O(nk)的时间运行一个非确定的算法,得到yes或no的答案,则该判定问题是一个NP类判定问题NP类判定问题的推测和验证合成之后是一个非确定的算法,这个非确定的算法必须在多项式时间内完成NP的意义是:

NondeterministicPolynomial,2.2.4NP类问题举例,例一:

给定n个城市、正常数k及城市之间的费用矩阵C,判断是否存在一条结果所有城市一次且仅一次、最后返回出发城市、费用小于常数k的回路推测阶段:

用纯随机的方式或相邻有通路城市之间随机的方式产生一条路径长度是n的路径序列。

这个过程可以用多项式级别的时间完成验证阶段:

首先验证这条路径的相邻城市之间是否有通路(第二种推测方式不需要);然后验证这条路径是否经过且只经过每个城市一次;最后验证这条路径的费用是否小于k。

所有验证工作耗时是多项式级别的,例二:

m团问题CLIQUE:

给定无向图G=(V,E)、正整数m,判定V中是否存在m个顶点,使得它们导出的子图构成一个完全图推测阶段:

可以随机地找出m个顶点(这些顶点可以重复);也可以随机地找出m个不重复的顶点。

这项工作的时间复杂度是多项式级别的验证和判断阶段:

验证m个顶点是否不重复(对第二种推测,可以省略该步),如果不重复,对于这m个顶点,判断它们在原图中是否两两相邻。

如果是,则回答yes;否则,回答no。

这项工作也可以在多项式级别的时间内完成,2.2.5NP类问题的特征,NP类问题的本质特征是:

对于给定的一个实例,能够以多项式时间判断它是不是问题的实例;如果是,能够以多项式时间对它作出问题中要求的yes或no的结果回答NP问题的另一个特征是多项式级别的推测:

能够以多项式时间推测问题的实例,2.2.6P类问题和NP类问题的关系,从定义上看:

P类问题可以用多项式时间的确定算法解决(判定或求解);NP类问题可以用多项式级别的时间的确定算法进行检查、验证和判定PNP。

这是因为P类问题一定可以用多项式时间的算法判定猜测NPP,也就是猜测至少存在着一个问题,它属于NP类,但它不属于P类。

但迄今没有给出证明,3.NP完全问题,3.1NP完全问题的定义3.2多项式规约关系的传递性定理3.3NP完全性的传递性定理3.4NP完全性的传递性举例3.5NP完全问题的重要特征3.6NP完全问题举例,3.1NP完全问题的定义,定义:

令是一个判定问题,如果对NP中每一个问题NP,有p,就称问题是一个NP难题定义:

令是一个判定问题,如果属于NP,并且对NP中每一个问题NP,有p,就称判定问题是NP完全的,记为NPC性质:

NP难题包含NP完全问题。

但有些NP难题不是NP完全问题,因为它可能不在NP问题中,3.2多项式规约关系的传递性定理,定理:

多项式规约关系满足传递性:

令、是三个判定问题,满足p,p,则有p证明:

通过规约关系的定义,必定存在着多项式算法A和A,A使得的实例I(规模是n)以多项式时间转换为的实例I,A使得的实例I以多项式时间转换为的实例I。

而A和A的多项式级别性质使得实例I的规模是n的多项式级别的。

综合起来,的任意实例都能在多项式级别转换为的实例,3.3NP完全性的传递性定理,定理:

令和是NP中的两个问题,使得p。

如果是NP完全的,则也是NP完全的证明:

由于是NP完全的,如果令是NP中任意一个问题,则有p。

根据关系p的传递性,p。

并且,在NP中是任意的,因此,是NP完全的,3.4NP完全性的传递性举例,已知哈密尔顿回路问题是一个NP完全问题,证明货郎担问题也是一个NP完全问题哈密尔顿回路问题:

给定无向图G=(V,E),是否存在一条回路,使得图中每个顶点在回路中出现且只出现一次货郎担问题:

给定n个城市和它们的距离矩阵,以及距离L,是否存在从某个城市出发,经过每个城市一次且仅一次,最后回到出发城市且距离小于或等于L的路线后面是具体说明:

对于哈密尔顿回路问题中的无向图G=(V,E),可以用多项式时间构造新的无向图G=(V,E),使得V=V,E=E。

对于E中的每条边(u,v)赋予如下权值:

通过上述转换,转换为货郎担问题可以证明两个问题等价:

(1)G中包含一条哈密尔顿回路,则这条路径上的边共有n条,每条边长度是1,则G中存在一条路径经过每个顶点且一次,并且长度不超过n

(2)如果G中存在一条满足货郎担问题的路径,则这条路径经过G中各个顶点一次,且仅一次,最后回到出发顶点,它肯定是一条哈密尔顿回路,3.5NP完全问题的重要特征,NP完全问题是NP判定问题中的一个子类,对这个子类中的一个问题,如果能够证明用多项式时间的确定性算法进行求解或判定,那么,NP中的所有问题都可以通过多项式时间的确定算法进行求解或判定如果NP完全问题中的任何一个问题能够找到或能够证明存在着一个多项式时间的确定性算法,那么,就可以证明NP=P,3.6NP完全问题举例,3.6.1可满足性问题(SATISFIABILITY)3.6.2三元可满足性问题(3_SATISFIABILITY),3.6.1可满足

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1