第2章 分治法与递归式求解.ppt

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

第二章 分治法与递归式求解;本讲主要通过以下内容讨论递归式的求解方法: 1. Merge Sort(归并排序) 2. Solving Recurrences(求解递归式) 3. The Master Theorem(主定理) 4. HeapSort(堆排序);重点:Merge Sort(归并排序)算法的思想及其时间复杂度的表示及递归式的求解方法、The Master Theorem(主定理) 、HeapSort(堆排序)算法的复杂度分析。 难点:主定理及堆排序算法的复杂度分析。;1. 理解归并排序的主要思想,掌握归并排序算法的时间复杂度表示; 2. 掌握求解递归式的几种常用方法; 3. 理解主定理的思想及应用场合; 4. 理解堆排序的主要思想及算法的复杂度分析方法。;复习: 渐近记号;其它的渐近记号;合并排序;30 10 40 20 60 50;;;;;;;;;;;;;合并排序算法分析;递归式;递归式例子;求解递归式的方法;替换法 也称为 “猜测法” 先猜测答案, 然后用归纳法进行证明 例如: T(n) = 2T(n/2) + ?(n) ? T(n) = ?(n lg n) T(n) = 2T(?n/2?) + n ? ???;T(n) = 2T(n/2) + ?(n) ? T(n) = ?(n lg n) T(n) = 2T(?n/2?) + n ? T(n) = ?(n lg n) T(n) = 2T(?n/2? + 17) + n ? ???;T(n) = 2T(n/2) + ?(n) ? T(n) = ?(n lg n) T(n) = 2T(?n/2?) + n ? T(n) = ?(n lg n) T(n) = 2T(?n/2?+ 17) + n ? ?(n lg n);迭代法 展开递归式 进行若干步代数运算 求和 例如 ;s(n) = c + s(n-1) c + c + s(n-2) 2c + s(n-2) 2c + c + s(n-3) 3c + s(n-3) … kc + s(n-k) = ck + s(n-k);对于 n = k, 可得 s(n) = ck + s(n-k) 当 k = n时, s(n) = cn + s(0) = cn; s(n) = cn;s(n) = n + s(n-1) = n + n-1 + s(n-2) = n + n-1 + n-2 + s(n-3) = n + n-1 + n-2 + n-3 + s(n-4) = … = n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k) ;s(n) = n + s(n-1) = n + n-1 + s(n-2) = n + n-1 + n-2 + s(n-3) = n + n-1 + n-2 + n-3 + s(n-4) = … = n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k) = ;对 n = k;对 n = k 当 k = n? ;对 n = k 当 k = n? ;对 n = k 当 k = n? 一般地 ;T(n) = 2T(n/2) + c 2(2T(n/2/2) + c) + c 22T(n/22) + 3c 22(2T(n/22/2) + c) + 3c 23T(n/23) + 4c + 3c 23T(n/23) + 7c 23(2T(n/23/2) + c) + 7c 24T(n/24) + 15c … 2kT(n/2k) + (2k - 1)c ;对 n 2k T(n) = 2kT(n/2k) + (2k - 1)c 如果 k = lg n? T(n) = 2lg n T(n/2lg n) + (2lg n - 1)c = n T(n/n) + (n - 1)c = n T(1) + (n-1)c = nc + (n-1)c = (2n - 1)c;另一个例子;T(n) = aT(n/b) + cn a(aT(n/b/b) + cn/b) + cn a2T(n/b2) + cna/b + cn a2T(n/b2) + cn(a/b + 1) a2(aT(n/b2/b) + cn/b2) + cn(a/b + 1) a3T(n/b3) + cn(a2/b2) + cn(a/b + 1) a3T(n/b3) + cn(a2/b2 + a/b + 1) … akT(n/bk) + cn(ak-1/bk-1 + ak-2/bk-2 + … + a2/b2 + a/b + 1);T(n) = akT(n/bk) + cn(ak

文档评论(0)

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

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

1亿VIP精品文档

相关文档