- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章NP完全问题
第十二章 NP完全问题
一、易解的问题和难解的问题
存在多项式时间算法的问题,称为易解的问题
指数时间算法或排列时间算法的问题,称为难解的问题
二、难解问题的计算相关性
计算相关:某类问题可以归约为另一类问题
计算相关的问题,若它们之一可用多项式时间求解,则其它同类问题也可用多项式时间求解;若它们之一肯定不存在多项式时间算法,则同类的其它问题,也肯定不会找到多项式时间算法。
三、判定问题和优化问题
1、判定问题只牵涉到两种情况:或,可以容易地表达为语言的识别问题,方便地在图灵机上进行求解。
例:
排序问题的判定问题:给定一个整数数组,是否可以按非降顺序排序;
图着色的判定问题:给定无向图,是否可用种颜色为中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色。
2、优化问题牵涉到极值问题
例:
图着色的优化问题:为图着色,使相邻两个顶点不会有相同颜色时所需要的最少颜色数目。
3、判定问题转换为优化问题。
例:求解为图着色,使相邻两个顶点不会有相同颜色时所需最少颜色数。
令图的顶点个数为,彩色数是,
假定存在一个图着色判定问题的多项式时间算法coloring:
BOOL coloring(GRAPH G,int n,int num)
则可用下面的方法,利用算法coloring来解图着色的优化问题。
void chromatic_number(GRAPH G,int n,int num)
{
int high,low;
high = n;
low = 1;
while (low=high) {
num = (low + high) / 2;
if (coloring(G,n,num))
low = mid + 1;
else
high = mid –1;
}
num = high;
}
对算法coloring调用次,就能找出为图着色的最优彩色数。
根据假定,coloring是多项式时间算法,
所以,这个算法也是一个多项式时间算法。
12.1 P类和NP类问题
12.1.1 P类问题
一、确定性算法
定义12.1 是问题的一个算法。如果在处理问题的实例时,在算法的整个执行过程中,每一步只有一个确定的选择,就说算法是确定性的算法。
算法执行的每一个步骤,都有确定的选择。
重新用同一输入实例运行该算法,所得到的结果严格一致。
二、类判定问题
1、定义:
定义12.2 如果对某个判定问题,存在着一个非负整数,对输入规模为的实例,能够以的时间运行一个确定性的算法,得到或的答案,则该判定问题是一个类判定问题。
2、特性:类判定问题是由具有多项式时间的确定性算法来解的判定问题
例:
最短路径判定问题SHORTEST PATH:
给定有向赋权图(权为正整数)、正整数、及两个顶点,是否存在着一条由到、长度至多为的路径。
可排序的判定问题SORT:
给定个元素的数组,是否可以按非降顺序排序。
三、封闭
1、类判定问题的补:
改变判定问题的提法,“是否可以”、“是否存在”改为“是否不可以”、“是否不存在”的判定问题。
例:可排序判定问题的补NOT_SORT:
给定个元素的数组,是否不可以按非降顺序排序。
最短路径判定问题的补NOT SHORTEST PATH:
给定有向赋权图(权为正整数)、正整数、及两个顶点,是否不存在一条由到、长度至多为的路径。
2、封闭的定义
定义12.3 令是一类问题,如果对中的任何问题,的补也在中,则称类问题在补集下封闭。
3、类问题的封闭性
定理12.1 类问题在补集下是封闭的。
证明 令类判定问题的补为;
存在确定性算法,可用多项式时间返回或的答案。
算法是算法中返回的代码改为返回、返回的代码,改为返回的算法。
则算法是解问题的确定性算法,可用多项式时间返回或的答案。
因此类问题的补,也属于类问题。
所以,类问题在补集下是封闭的。
四、归约
1、归约的定义
定义12.4 令和是两个判定问题,如果存在一个具有如下性能的确定性算法,可以用多项式的时间,把问题的实例转换为问题的实例,使得的答案为,当且仅当的答案是。就说,以多项式时间归约于,记为。
2、类问题的归约性
定理12.2 和是两个判定问题,如果,并且,则。
证明 因为,
存在确定性算法,可用多项式时间,把问题的实例转换为问题的实例。使得的答案为,当且仅当的答案是。
如果对某个正整数,算法每一步的输出,最多可输出个符号,
则算法的输出规模,最多不会超过个符号。
因为,存在多项式时间的确定性算法,对输入规模为的问题进行求解。所得结果也是问题的结果。
令算法是把算法和算法合并起来的算法,
则算法也是确定性的算法,且以多项式时间得到问题的结果,
文档评论(0)