1 / 31

算法导论

算法导论. 第二课 Erik Demaine 教授. 求解递归. 讲稿 1 中合并排序的分析需要求解一个递归 求解递归就像求解积分,微分方程一样。 学会一些技巧 讲稿 3 :递归的应用. 第三天 算法导论 L2. 2. 替代法. 最通用的方法: 猜测 解的形式。 通过推导 验证。 解 出常数。. 例子 :. T ( n ) = 4 T ( n /2) + n. [ 假设 T(1) = Θ(1) .] 猜测 O(n 3 ) . ( 分别证明 O 和 Ω .) 假设 T(k) ≤ ck 3 对于 k< n .

diamond
Télécharger la présentation

算法导论

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 算法导论 第二课 Erik Demaine 教授

  2. 求解递归 • 讲稿 1中合并排序的分析需要求解一个递归 • 求解递归就像求解积分,微分方程一样。 • 学会一些技巧 • 讲稿 3 :递归的应用 第三天 算法导论L2.2

  3. 替代法 最通用的方法: • 猜测解的形式。 • 通过推导验证。 • 解出常数。 例子: T(n) = 4T(n/2) + n • [假设T(1) = Θ(1).] • 猜测O(n3). (分别证明O 和Ω.) • 假设T(k) ≤ ck3对于k< n. • 通过推导证明T(n) ≤cn3. 第三天 算法导论L2.3

  4. 替代法举例 T(n) = 4T(n/2) + n ≤ 4c(n/2)3 + n = (c/2)n3 + n = cn3 –((c/2)n3 – n)←期望– 余项 ≤ cn3←期望 (c/2)n3 – n ≥ 0, 例如,如果c ≥ 2 且n ≥ 1. 余项 第三天 算法导论L2.4

  5. 例子(续) • 我们必须要处理初始条件,也就是说,首先要保证推导在初始情况成立。 • 初始:当n0为适当的常量时,对于所有n< n0T(n) = Θ(1)都成立。 • 如果我们选择足够大的c,那么对于1 ≤ n < n0, “Θ(1)” ≤ cn3. 边界并不紧密 ! 第三天 算法导论L2.5

  6. 更接近的上界? 我们要证明T(n) = O(n2). 假设对于k < n:T(k) ≤ ck2 T(n)= 4T(n/2) + n ≤ 4c(n/2)2 + n = cn2 + n = O (n2) = cn2 – (- n) [ 期望 – 余项] ≤ cn2没有任何c > 0满足. 失败! 错误!我们必须证明 I.H. 第三天 算法导论L2.6

  7. 更接近的上界! 思想:加强推导的假设. • 减一个低阶项 推导假设:对于k < n, T(k) ≤ c1k2 – c2k. T(n)= 4T(n/2) + n = 4(c1(n/2)2–c2(n/2))+ n = c1n2–2c2n+ n = c1n2–c2n–(c2n–n) ≤ c1n2–c2n如果c2≥1. 选择足够大的c1 使初始条件成立。 第三天 算法导论L2.7

  8. 递归树方法 • 递归树对算法递归执行的花费(时间)建模 • 递归树方法可以用作替代法之前的猜想。 • 递归树方法可能不是很可靠,就像任何使用椭圆的方法一样 • 然而,递归树方法有启发的作用 第三天 算法导论L2.8

  9. 递归树方法举例 第三天 算法导论L2.9

  10. 递归树方法举例 第三天 算法导论L2.10

  11. 递归树方法举例 第三天 算法导论L2.11

  12. 递归树方法举例 第三天 算法导论L2.12

  13. 递归树方法举例 第三天 算法导论L2.13

  14. 递归树方法举例 第三天 算法导论L2.14

  15. 递归树方法举例 第三天 算法导论L2.15

  16. 递归树方法举例 第三天 算法导论L2.16

  17. 递归树方法举例 第三天 算法导论L2.17

  18. 递归树方法举例 第三天 算法导论L2.18

  19. 递归树方法举例 第三天 算法导论L2.19

  20. 大师法 大师法适用于下面的递归形式 第三天 算法导论L2.20

  21. 三种情况 第三天 算法导论L2.21

  22. 三种情况(续) 第三天 算法导论L2.22

  23. 举例 第三天 算法导论L2.23

  24. 举例 这时大师法不适用。特别是,对任意常数 我们有 第三天 算法导论L2.24

  25. 通用方法(Akra-Bazzi) 只要用 代替 ,结果和大师法相同。 (Akra 和Bazzi证明了更加通用的结果。) 令p为下列方程的唯一解 第三天 算法导论L2.25

  26. 大师法的思路 第三天 算法导论L2.26

  27. 大师法的思路 情况1:加权从根到叶子几何级数 增长。叶子在总的权重仅仅占常量 部分 第三天 算法导论L2.27

  28. 大师法的思路 情况2: (k=0)在logbn层中 每层的加权基本相同 第三天 算法导论L2.28

  29. 大师法的思路 情况3:权重从根到叶子几何级数 递减。根在整个权重中仅仅是常量 部分 第三天 算法导论L2.29

  30. 结论 • 下次: 应用大师法 • 大师法理论的证明,参考CLRS 第三天 算法导论L2.30

  31. 附录:几何序列 第三天 算法导论L2.31

More Related