第4章 递归式
主方法:
n=1:
T(n) = Θ(1)
n>1:
T(n) = aT(n/b) + Θ(n) (a≥1, b>1)
4.1 代换法
1). 猜测解的形式
2). 用数学归纳法找出使解真正有效的常数
改变变量:
T(n) = 2T(⌊n^(1/2)⌋) + lgn
设m=lgn,则有n=2^m,可得:
T(2^m) = 2T(⌊2^(m/2)⌋) + m
令S(m) = T(2^m) = 2S(m/2) + m
上式解为O(mlgm) = O(lgn*lglgn)
练习
4.1-1 证明 T(n) = T(⌈n/2⌉) + 1的解为O(lgn)
证明:
假定T(n) ≤ clg(n-b), 则:
T(n) = T(⌈n/2⌉) + 1
≤ clg(⌈n/2 - b⌉) + 1
< clg(n/2 - b + 1) + 1
= clg((n-2b+2)/2) + 1
= clg(n-2b+2) - clg2 + 1
= clg(n-2b+2) - c + 1
≤ clg(n-b)
明显当c
主方法:
n=1:
T(n) = Θ(1)
n>1:
T(n) = aT(n/b) + Θ(n) (a≥1, b>1)
4.1 代换法
1). 猜测解的形式
2). 用数学归纳法找出使解真正有效的常数
改变变量:
T(n) = 2T(⌊n^(1/2)⌋) + lgn
设m=lgn,则有n=2^m,可得:
T(2^m) = 2T(⌊2^(m/2)⌋) + m
令S(m) = T(2^m) = 2S(m/2) + m
上式解为O(mlgm) = O(lgn*lglgn)
练习
4.1-1 证明 T(n) = T(⌈n/2⌉) + 1的解为O(lgn)
证明:
假定T(n) ≤ clg(n-b), 则:
T(n) = T(⌈n/2⌉) + 1
≤ clg(⌈n/2 - b⌉) + 1
< clg(n/2 - b + 1) + 1
= clg((n-2b+2)/2) + 1
= clg(n-2b+2) - clg2 + 1
= clg(n-2b+2) - c + 1
≤ clg(n-b)
明显当c