主定理求解递归式的复杂度
网上的正式说法看不懂, 按照自己理解整理的,如有错误欢迎指正。
设递推式为
T
(
n
)
=
a
T
(
n
b
)
+
Θ
(
n
k
)
,
k
≥
0
T(n)=aT(\frac{n}{b})+\Theta(n^k),k\ge0
T(n)=aT(bn?)+Θ(nk),k≥0 ,其中
n
n
n 为问题规模,
a
a
a 为递推子问题的数量,
n
b
\frac{n}{b}
bn? 为每个子问题的规模(假设每个子问题的规模基本一样),则:
- 如果
log
?
b
a
<
k
\log_ba<k
logb?a<k,
T
(
n
)
=
Θ
(
n
log
?
b
a
)
T(n)=\Theta(n^{\log_ba})
T(n)=Θ(nlogb?a)
- 如果
log
?
b
a
=
k
\log_ba=k
logb?a=k,
T
(
n
)
=
Θ
(
n
log
?
b
a
log
?
n
)
T(n)=\Theta(n^{\log_ba}\log n)
T(n)=Θ(nlogb?alogn)
- 如果
log
?
b
a
>
k
\log_ba>k
logb?a>k,
T
(
n
)
=
Θ
(
n
k
)
T(n)=\Theta(n^k)
T(n)=Θ(nk)
分治范例
1.二分搜索技术
2.大整数乘法
3.Strassen矩阵乘法
4.棋盘覆盖
5.合并排序
6.快速排序
7.选择问题求第k小
8.最近点对问题
9.循环赛日程表
|