无法证明T(n) cn.PPT

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

* 有時候遞迴式子直接分析不容易 透過變換變數,式子有可能會變得比較容易分析。 * 一直不斷地將遞迴式子帶入,最後就會得到一長串式子 分析該式子即可得到最後的結果。 * 將遞迴式子畫成Recursion Tree,可以方便分析 * 畫成樹狀表示 然後將每一層所花的時間加起來就是全部所需要的時間。 * 在某些情況下,我們不需要大費周章的分析遞迴式 本小節提供了一些公式,只要符合提到的條件,就可以用公式直接求解。 要注意的是,Master Theorem所提供的這些公式仍有不能解決的遞迴式子。 * T(n) = 9T(n/3) + n = a = 9, b = 3 T(n) = T(2n/3) + n = a = 1, b = 3/2 T(n) = 3T(n/4) + n = a = 3, b = 4 * * * * * Lecture 4 Recurrences Recurrences * 4.1 The substitution method The substitution method: (i)猜一個答案 (ii)用歸納法證明 (for both upper and lower bounds) Recurrences * 範例: 找到 T(n) = 2T(?n/2?) + n 的 upper bound (T(1) = 1) 猜測 T(n) = O(nlg n) 試著證明存在著常數 c 和 n0 使得 T(n) ? cn lg n 對於所有的 n ? n0 都成立。 Recurrences * Basis: (n=n0) 在 n=1 時,沒有常數 c 能夠滿足 T(1) ? cn lg n=0。 在 n=2 時,任何大於等於 T(n)/(n lg n) 的常數 c 都會滿足 T(n) ? cn lg n。所以我們可以選擇 n0 ? 2 且 c ? T(n0)/(n0 lg n0) ………(1) Recurrences * Induction: (nn0) 假設 T(n) ? cn lg n 這個式子對於所有介在 n0 和 n-1 之間的 n 都成立。我們可以得到 T(n) ? 2(c?n/2? lg ?n/2?) + n (Substitution) ? cn lg (n/2) + n = cn lg n – cn lg 2 + n = cn lg n – cn + n cn lg n, 其中最後一步在 c ? 1 的時候成立………(2) 根據(1)(2),我們可以選擇 n0 = 2 以及 c = max{1, T(2)/(2 lg 2)} = 2 讓 basis 及 induction 都成立。 Recurrences * Substitution Method 步驟 1. 猜測 T(n) = O(g(n)) 步驟 2. 透過歸納法證明 T(n) = O(g(n)) ? 證明存在 c 和 n0 使得 T(n) ? cg(n) 對於全部的 n?n0 都成立……(1) Recurrences * ? 如果我們已知 c 和 n0,那麼我們就可以用歸 納法證明(1) (a) Basis step: (1) 在 n = n0 時成立 (b) Induction step: (1) 在 n n0 時成立 ? 如何找到 c 和 n0 符合歸納法中的證明? (i) 找到符合 basis step 的 c 和 n0 的條件 (ii) 找到符合 induction step 的 c 和 n0 的條件 (iii) 綜合 (i) 和 (ii) 的條件 Recurrences * Subtleties: (修改假設:減一個低次方項) 範例: T(n) = T(?n/2?)+T(?n/2?)+1 (T(1) = 1) 猜測 T(n) = O(n) Recurrences * 試著證明 T(n) ? cn Basis: ok! Induction: T(n) = T(?n/2?) + T(?n/2?) + 1 ? c(?n/2? + ?n/2?) + 1 = cn + 1 無法證明 T(n)?cn !!!! 試著證明 T(n) ? cn – b Induction: T(n) ? (c?n/2?-b) + (c?n/2?-b) + 1 = cn – 2b + 1 ? cn – b, 最後一步對於任意大於等於 1 的常數 b 都成立 Recurrences * Avoiding pitfalls: T(n) = 2T(?n/2?) + n 猜測 T(n) = O(n)。 試著證明 T(n)?cn。

文档评论(0)

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

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

1亿VIP精品文档

相关文档