算法设计与分析之求解递归式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析
讲授内容:求解递归式 教 师:胡学钢、吴共庆
2014年11月13日
求解递归式
• 合并排序的分析需要求解一个递归式 • 求解递归式就像求解积分,微分方程一样。
。学会一些技巧
• 递归式的应用
11/13/2014
算法设计与分析-求解递归式
2
替代法
最通用的方法: 1. 猜测解的形式。 2. 通过推导验证。 3. 解出常数。
增长的慢(慢 n 倍) ).
解:T (n) (n
2.
logb a
f ( n) ( n f (n)和n
logb a
lg k n),常量k 0。
logb a
logb a
增长速度相同 lg k 1 n)
19
解:T (n) (n
11/13/2014
算法设计与分析-求解递归式
三种情况(续)
例子:
T(n) = 4T(n/2) + n • [假设 T(1) = Θ(1).] • 猜测 O(n3). (分别证明 O 和 Ω.) • 假设 T(k) ≤ ck3 对于 k< n . • 通过推导证明 T(n) ≤cn3 .
11/13/2014 算法设计与分析-求解递归式 3
替代法举例
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.
12
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
13
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
14
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
15
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
16
递归树方法举例
余项
11/13/2014
算法设计与分析-求解递归式
4
例子(续)
• 我们必须要处理初始条件,也就是说,首先要 保证推导在初始情况成立。 • 初始:当n0为适当的常量时,对于所有n< n0 T(n) = Θ(1)都成立。
• 如果我们选择足够大的c,那么对于 1 ≤ n < n0, “Θ(1)” ≤ cn3.
边界并不紧密 !
11/13/2014 算法设计与分析-求解递归式 5
更接近的上界?
我们要证明 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满足. 失败!
求解
11/13/2014
算法设计与分析-求解递归式
17
主方法
主方法适用于下面的递归形式
a 1, b 1, f为正的渐进函数
11/13/2014
算法设计与分析-求解递归式
18
三种情况
比较f (n)和n
1.
logb a
ห้องสมุดไป่ตู้
:
- ε logb a
logb a
f (n) O(n
),
0
f (n)比多项式n
≤ c1n2–c2n 如果 c2≥1.
11/13/2014
选择足够大的 c1 使初始条件成立。
算法设计与分析-求解递归式
7
递归树方法
• 递归树对算法递归执行的花费(时间)建 模 • 递归树方法可以用作替代法之前的猜想。 • 递归树方法可能不是很可靠 • 然而,递归树方法有启发的作用
11/13/2014
比较f (n)和n
3.
logb a
:
),常量 0
logb a
f (n) (n
logb a + ε
f (n)增长比多项式 n
快(快n 倍)
并且f (n)满足规定条件 af (n / b) cf (n),常量c 1。 解:T (n) ( f (n))。
11/13/2014
算法设计与分析-求解递归式
8
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
9
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
10
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
11
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
11/13/2014 算法设计与分析-求解递归式 24
主方法的思路
情况2: (k=0)在logbn层中 每层的加权基本相同
11/13/2014
算法设计与分析-求解递归式
25
主方法的思路
情况3:权重从根到叶子几何级数 递减。根在整个权重中仅仅是常量 部分
11/13/2014 算法设计与分析-求解递归式 26
算法设计与分析-求解递归式
20
举例
11/13/2014
算法设计与分析-求解递归式
21
举例
这时主方法不适用。
11/13/2014
算法设计与分析-求解递归式
22
主方法的思路
11/13/2014
算法设计与分析-求解递归式
23
主方法的思路
情况1:加权从根到叶子几何级数 增长。叶子在总的权重仅仅占常量 部分
11/13/2014
算法设计与分析-求解递归式
6
更接近的上界?
思想: 加强推导的假设.
• 减一个低阶项
推导假设:对于 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)
讲授内容:求解递归式 教 师:胡学钢、吴共庆
2014年11月13日
求解递归式
• 合并排序的分析需要求解一个递归式 • 求解递归式就像求解积分,微分方程一样。
。学会一些技巧
• 递归式的应用
11/13/2014
算法设计与分析-求解递归式
2
替代法
最通用的方法: 1. 猜测解的形式。 2. 通过推导验证。 3. 解出常数。
增长的慢(慢 n 倍) ).
解:T (n) (n
2.
logb a
f ( n) ( n f (n)和n
logb a
lg k n),常量k 0。
logb a
logb a
增长速度相同 lg k 1 n)
19
解:T (n) (n
11/13/2014
算法设计与分析-求解递归式
三种情况(续)
例子:
T(n) = 4T(n/2) + n • [假设 T(1) = Θ(1).] • 猜测 O(n3). (分别证明 O 和 Ω.) • 假设 T(k) ≤ ck3 对于 k< n . • 通过推导证明 T(n) ≤cn3 .
11/13/2014 算法设计与分析-求解递归式 3
替代法举例
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.
12
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
13
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
14
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
15
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
16
递归树方法举例
余项
11/13/2014
算法设计与分析-求解递归式
4
例子(续)
• 我们必须要处理初始条件,也就是说,首先要 保证推导在初始情况成立。 • 初始:当n0为适当的常量时,对于所有n< n0 T(n) = Θ(1)都成立。
• 如果我们选择足够大的c,那么对于 1 ≤ n < n0, “Θ(1)” ≤ cn3.
边界并不紧密 !
11/13/2014 算法设计与分析-求解递归式 5
更接近的上界?
我们要证明 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满足. 失败!
求解
11/13/2014
算法设计与分析-求解递归式
17
主方法
主方法适用于下面的递归形式
a 1, b 1, f为正的渐进函数
11/13/2014
算法设计与分析-求解递归式
18
三种情况
比较f (n)和n
1.
logb a
ห้องสมุดไป่ตู้
:
- ε logb a
logb a
f (n) O(n
),
0
f (n)比多项式n
≤ c1n2–c2n 如果 c2≥1.
11/13/2014
选择足够大的 c1 使初始条件成立。
算法设计与分析-求解递归式
7
递归树方法
• 递归树对算法递归执行的花费(时间)建 模 • 递归树方法可以用作替代法之前的猜想。 • 递归树方法可能不是很可靠 • 然而,递归树方法有启发的作用
11/13/2014
比较f (n)和n
3.
logb a
:
),常量 0
logb a
f (n) (n
logb a + ε
f (n)增长比多项式 n
快(快n 倍)
并且f (n)满足规定条件 af (n / b) cf (n),常量c 1。 解:T (n) ( f (n))。
11/13/2014
算法设计与分析-求解递归式
8
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
9
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
10
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
11
递归树方法举例
求解
11/13/2014
算法设计与分析-求解递归式
11/13/2014 算法设计与分析-求解递归式 24
主方法的思路
情况2: (k=0)在logbn层中 每层的加权基本相同
11/13/2014
算法设计与分析-求解递归式
25
主方法的思路
情况3:权重从根到叶子几何级数 递减。根在整个权重中仅仅是常量 部分
11/13/2014 算法设计与分析-求解递归式 26
算法设计与分析-求解递归式
20
举例
11/13/2014
算法设计与分析-求解递归式
21
举例
这时主方法不适用。
11/13/2014
算法设计与分析-求解递归式
22
主方法的思路
11/13/2014
算法设计与分析-求解递归式
23
主方法的思路
情况1:加权从根到叶子几何级数 增长。叶子在总的权重仅仅占常量 部分
11/13/2014
算法设计与分析-求解递归式
6
更接近的上界?
思想: 加强推导的假设.
• 减一个低阶项
推导假设:对于 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)