算法设计与分析王红梅第二版第10章问题的复杂性解析.pptVIP

算法设计与分析王红梅第二版第10章问题的复杂性解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 NP完全理论 第2章 NP完全理论 第10章 问题的复杂性 算法设计与分析—本科生课程 Design and Analysis of Algorithm 海南大学信息科学技术学院 College of Information Science and Technology, Hainan University * 第10章 问题的复杂性 * 计算的限制 算法作为求解问题的方法,可以求解现实世界中的很多问题,但有些问题仍然无法用任何算法求解,有些问题虽然有算法可以求解,但需要太长的运行时间或太大的存储空间 计算机学科的根本问题是什么能被(有效地)自动计算。图灵:一个问题是可计算的当且仅当它在图灵机上经过有限步骤后得到正确的结果。库克:一个问题是实际可计算的当且仅当它在图灵机上经过多项式步骤后得到正确的结果。易解问题:多项式时间内可解。难解问题:指数时间求解。 * 第10章 问题的复杂性 * 不可解问题 Unsoluble Problem 难解问题虽没找到多项式时间算法,但按指数时间算法的难解问题至少在理论上可以用计算机求解。 但有些问题不论耗多少时间也不能用计算机求解。 不能用计算机求解(不论耗费多少时间)的问题称为不可解问题 算法的极限 * 第10章 问题的复杂性 * 例:不可解问题典型例子:停机问题(halting problem) 算法的极限 Bool Halt(char *prog, char *input){ if(prog对输入input停止执行) return true; else return false; } Void Contrary(char *prog){ do result=Halt(prog, prog); while(result==true); } * 第10章 问题的复杂性 * 判定问题 Decision Problem 判定问题是仅仅要求回答“yes”或“no”的问题。 很多实际问题可以转化为一系列更容易研究的判定问题。举例如下: P类问题和NP类问题 * 第10章 问题的复杂性 * 例1:排序问题 排序问题的判定形式可叙述为: 给定一个整数数组,是否可以按非降序排列 例2:图着色问题 图着色问题的判定形式可叙述为: 给定无向连通图G=(V,E)和一个正整数k,是否可以用k种颜色为G中所有顶点着色,使得任何两个相邻顶点着色不同。 例3:TSP问题 TSP问题的判定形式可叙述为: P类问题和NP类问题 * 第10章 问题的复杂性 * 给定一个带权图G=(V,E)和一个正整数k,是否有一个经过所有顶点一次且仅一次再回到出发点的回路,其总距离小于k。 例4:哈密顿回路问题 哈密顿回路问题的判定形式可叙述为: 在图G=(V,E)中,是否有一个回路经过所有顶点一次且仅一次再回到出发点。 判定问题的重要特性——验证比求易 P类问题和NP类问题 * 第10章 问题的复杂性 * 即在计算上对问题求解是困难的,但在计算上判定一个待定解是否解决了该问题却是简单的。 例1:求“哈密顿回路问题”是难解问题 但验证一个给定顶点序列是不是“哈密顿回路”却很容易,即只需要检查前n个顶点是否互不相同,而最后一个顶点与第一个顶点是否相同 例2:求大整数S=49 770 428 644 836 899的因子是个难问题 但要验证a=223 092 871是不是大整数S的因子却很容易。只要将S除以这个因子,余数为0即可 P类问题和NP类问题 * 第10章 问题的复杂性 * 例3:求线性方程组的解可能很困难, 但验证一组解是否是方程组的解却很容易,只要将这组解代入方程组中,然后验证是否满足这组方程即可。 确定性算法与P类问题 定义2.1 设 A 是求解问题Π的一个算法,如果在算法的整个执行过程中,每一步只有一个确定的选择,则称算法 A 是确定性(Determinism)算法。 P类问题和NP类问题 * 第10章 问题的复杂性 * 定义2.2 如果对于某个判定问题Π,存在一个非负整数k,对于输入规模为n的实例,能够以O(nk) 的时间运行一个确定性算法,得到yes或no的答案,则该判定问题Π是一个 P 类(Polynomial)问题。 所有易解问题都是P类问题 P类问题和NP类问题 非确定性算法与NP类问题 定义2.3 设A是求解问题Π的一个算法,如果算法A以如下猜测并验证的方式工作,就称算法A是非确定性(Nondeterminism)算法: * 第10章 问题的复杂性 * 猜测阶段 在这个阶段,对问题的输入实例产生一个任意字符串y,在算法的每一次运行时,串y的值可能不同,因此,猜测以一种非确定的形式工作。 验证阶段 在这个阶段,用一个确定性算法验证

文档评论(0)

118118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档