Natural Language Processing
Master Theorem(主定理)
主定理适用于求解如下递归式算法的时间复杂度:
T ( n ) = a T ( n b ) + f ( n ) T(n)=aT(\frac{n}{b})+f(n) T(n)=aT(bn)+f(n)
其中:
- n n n 是问题规模大小
- a a a 是原问题的子问题个数
- n b \frac{n}{b} bn 是每个子问题的大小,这里假设每个子问题有相同的规模大小
- f ( n ) f(n) f(n) 是将原问题分解成子问题和将子问题的解合并成原问题的解的时间
可参考归并排序(Merge Sort)进行理解
对上式进行分析可以得到三种情况
举例
归并排序(Merge Sort)
T ( n ) = 2 T ( n 2 ) + Θ ( n ) T(n)=2T(\frac{n}{2})+\Theta(n) T(n)=2T(2n)+Θ(n)
分析得:
a
=
b
=
2
,
f
(
n
)
=
Θ
(
n
)
a=b=2,f(n)=\Theta(n)
a=b=2,f(n)=Θ(n),基准函数
Θ
(
n
l
o
g
2
2
)
=
Θ
(
n
)
\Theta(n^{log_22})=\Theta(n)
Θ(nlog22)=Θ(n),适用于case2
T
(
n
)
=
Θ
(
n
l
o
g
n
)
T(n)=\Theta(nlogn)
T(n)=Θ(nlogn)
二分查找(Binary Search)
T ( n ) = T ( n 2 ) + Θ ( 1 ) T(n)=T(\frac{n}{2})+\Theta(1) T(n)=T(2n)+Θ(1)
分析得:
a
=
1
,
b
=
2
,
f
(
n
)
=
Θ
(
1
)
a=1,b=2,f(n)=\Theta(1)
a=1,b=2,f(n)=Θ(1),基准函数
Θ
(
n
l
o
g
2
1
)
=
Θ
(
1
)
\Theta(n^{log_21})=\Theta(1)
Θ(nlog21)=Θ(1),适用于case2
T
(
n
)
=
Θ
(
n
l
o
g
n
)
T(n)=\Theta(nlogn)
T(n)=Θ(nlogn)
二叉树遍历(Binary Tree Traveral)
T ( n ) = 2 T ( n 2 ) + O ( 1 ) T(n)=2T(\frac{n}{2})+O(1) T(n)=2T(2n)+O(1)
分析得:
a
=
b
=
2
,
f
(
n
)
=
O
(
1
)
a=b=2,f(n)=O(1)
a=b=2,f(n)=O(1),基准函数
Θ
(
n
l
o
g
2
2
)
=
Θ
(
n
)
\Theta(n^{log_22})=\Theta(n)
Θ(nlog22)=Θ(n),适用于case1
T
(
n
)
=
Θ
(
n
l
o
g
b
a
)
=
Θ
(
n
)
T(n)=\Theta(n^{log_ba})=\Theta(n)
T(n)=Θ(nlogba)=Θ(n)
参考
http://people.csail.mit.edu/thies/6.046-web/master.pdf
https://zhuanlan.zhihu.com/p/113406812