MASTER THEOREM
求解有特定格式的递归函数的上界 O ( g ( n ) ) O(g(n)) O(g(n))
适用的递归式如下
T ( n ) = a T ( n / b ) + f ( n ) , w h e r e a ≥ 1 , b > 1 , a n d f ( n ) i s a s y m p t o t i c a l l y f u n c t i o n s u c h a s n , n 2 . . . . ( a ≥ 1 , b > 1 , 且 f ( n ) 是 一 个 渐 进 函 数 , 如 n , n 2 . . . ) T(n) = aT(n/b) + f(n), \\ where\ a \geq 1,b>1,\ and\ f(n)\ is\ asymptotically\ function\ such\ as\ n, n^2.... \\ (a \geq 1, b>1, 且f(n)是一个渐进函数,如n, n^2...) T(n)=aT(n/b)+f(n),where a≥1,b>1, and f(n) is asymptotically function such as n,n2....(a≥1,b>1,且f(n)是一个渐进函数,如n,n2...)
将 f ( n ) f(n) f(n)与 n l o g b a n^{ log _b a} nlogba进行比较
- 对于某个常数
ε
>
0
\varepsilon>0
ε>0,有
f
(
n
)
=
O
(
n
l
o
g
b
a
−
ε
)
f(n)=O(n^{log_ba-\varepsilon})
f(n)=O(nlogba−ε),即
f
(
n
)
f(n)
f(n)增长速率比
n
l
o
g
b
a
n^{ log _b a}
nlogba小
则有:
T ( n ) = Θ ( n l o g b a ) T(n)=\Theta(n^{ log _b a}) T(n)=Θ(nlogba)
-
对于某个常数 k ≥ 0 k\geq0 k≥0,有 f ( n ) = O ( n l o g b a ⋅ l g k n ) f(n)=O(n^{log_ba} \cdot lg^kn) f(n)=O(nlogba⋅lgkn),即 f ( n ) f(n) f(n)增长速率与 n l o g b a n^{ log _b a} nlogba相当
则有:
T ( n ) = Θ ( n l o g b a ⋅ l g k + 1 n ) T(n)=\Theta(n^{ log _b a} \cdot lg^{k+1} n) T(n)=Θ(nlogba⋅lgk+1n) -
对于某个常数 ε > 0 \varepsilon>0 ε>0,有 f ( n ) = O ( n l o g b a + ε ) f(n)=O(n^{log_ba + \varepsilon}) f(n)=O(nlogba+ε),即 f ( n ) f(n) f(n)增长速率比 n l o g b a n^{ log _b a} nlogba大
则有:
T ( n ) = O ( f ( n ) ) T(n)=O(f(n)) T(n)=O(f(n))
DFS
可以应用于表示图的数据结构
邻接矩阵:
Θ
(
∣
V
∣
2
)
\Theta(|V|^2)
Θ(∣V∣2)
邻接链表:
Θ
(
∣
V
∣
+
∣
E
∣
)
\Theta(|V|+|E|)
Θ(∣V∣+∣E∣)
其他 … …
应用
检查图的连通性
找最大连通子图
判断图是否有环
找强连通子图
其他 … …