计算理论导引--时间复杂性.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算理论导引--时间复杂性

朴秀峰 xfpiao@126.com 引言 Church-Turing论题:能够用总停机的Turing机计算的函数和识别的语言是可计算的(可判定的);理论可计算 计算复杂性理论研究计算模型在各种资源(主要是时间、空间等)限制下的计算能力; 实际可计算 一个可以计算的问题 需要多少时间和空间? 64层次梵塔,1秒钟移动1000片(计算机作),要多少时间? ( 264-1) / 1000=5.846 亿年 引言 复杂度和时间 :每秒作106的基本运算需要的时间 引言 设G有n个顶点,由于回路没有始点和终点,可以任意定一个顶点作为排列的第一个顶点,共有(n-1)!个排列。当n=25时,24!=6.2*1023.假设用一台超级计算机计算,每秒可以检查1亿个排列。每年有3.15*107秒,不停地工作,每年可以检查3.15*1015个排列。检查完所有的排列需要1.97*108年,即1亿9千7百年! 计算复杂性理论就是要研究计算模型在各种资源限制下的计算能力。将问题划分成Hard and Easy 两大类。 引言 主要内容 7.1 度量复杂性 大 O 和小 o 记法、分析算法、模型间的复杂性关系 7.2 P类 多项式时间、P 中的问题举例 7.3 NP类 NP中的问题举例、P 与 NP 问题 7.4 NP完全性 多项式时间可归约性、NP 完全性的定义、库克-列文定理 7.5 几个NP完全问题 顶点覆盖问题、哈密顿路径问题、子集和问题 度量复杂性 考察下列例子: 语言 A = { 0k1k | k ≥0 },显然 A 是一个可判定的语言。 考察下面判定A的单带 TM M1 M1=“对于输入串 w: 1) 扫描带子,如果在 1 的右边发现 0,就拒绝。 2) 如果带上既有 0 也有 1,就重复下一步。 3) 扫描带子,删除一个 0 和一个 1。 4) 如果所有 1 都被删除以后还有 0,或者所有 0 都被删除以后还有 1,就拒绝。否则,如果在带上既没有剩下0也没有剩下 1,就接受。 考察判定 A 的图灵机 M1 的算法所需的时间。 度量复杂性 把算法的运行时间纯粹作为表示输入字符串的长度来计算,而不考虑其它参数。 最坏情况分析(worst-case analysis):考虑在某特定长度的所有输入上的最长运行时间。 平均情况分析(average-case analysis):考虑在某特定长度的所有输入上的运行时间的平均值。 度量复杂性 渐进分析 因为算法的精确运行时间通常是一个复杂的表达式,所以一般是估计它的趋势和级别。 通过一种称为渐进分析 (asymptotic analysis) 的方便的估计形式,可以试图了解算法在长输入上的运行时间。 只考虑算法运行时间的表达式的最高项,而忽略该项的系数和其它低次项,因为在在长输入上,最高次项的影响相比其它项占据主导地位。 例如,函数 f (n) = 6n3+2n2+20n+45 称 f 渐进地不大于 n3,表达这种关系的渐进记法或大 O 记法是 f (n) = O(n3)。 大 O 和小 o记法 大 O 和小 o 记法 大 O 和小 o 记法 大 O 和小 o 记法 令 f2(n) 是函数 3nlog2n+5nlog2log2n+2。 此时 f2(n) =O(nlogn),因为 logn 比 log logn更占支配位置。 f(n) =O(n2)+ O(n) 等价于 f(n) =O(n2) 当 O 出现在指数位置,如 f(n) =2O(n),代表着 2cn 的一个上界。 f(n) =2O(logn),代表 nc。(由 n = 2log n 得 nc = 2c log 2n) 2O(1) 代表了同样的界,因为表达式 O(1) 代表不超过某个固定常数的上界。 大O 和小o 记法 我们经常导出 nc 的界,c 是大于 0 的常数。这种界称为多项式界 (polynamial bound)。形如 的界,当 ? 是大于 0的实数时,称为指数界(exponential bound)。 大 O 记法指一个函数渐近地不大于另一个函数。 小 o 记法是渐进的小于另一个函数。 大O记法与小o记法的区别类似于≤和<之间的区别。 大O 和小o 记法 大O 和小o 记法 分析算法 分析语言 A = { 0k1k | k ≥0 }对应的图灵机算法。 M1 = “对于输入串 w: 1) 扫描带子,如果在 1 的右边发现 0,就拒绝。 2) 如果带上既有 0 也有 1,就重复下一步。 3) 扫描带子,删除一个 0 和一个 1。 4) 如果所有 1 都被删除以后还有 0,或者所有 0 都被删除以后还有 1,就拒绝。否则,如果在带上既

文档评论(0)

woai118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档