算法分析与设计(一)

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 a1,b>1, and f(n) is asymptotically function such as n,n2....(a1,b>1,f(n)n,n2...)

f ( n ) f(n) f(n) n l o g b a n^{ log _b a} nlogba进行比较

  1. 对于某个常数 ε > 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)

  1. 对于某个常数 k ≥ 0 k\geq0 k0,有 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(nlogbalgkn),即 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)=Θ(nlogbalgk+1n)

  2. 对于某个常数 ε > 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) Θ(V2)
邻接链表: Θ ( ∣ V ∣ + ∣ E ∣ ) \Theta(|V|+|E|) Θ(V+E)
其他 … …

应用

检查图的连通性
找最大连通子图
判断图是否有环
找强连通子图
其他 … …

你可能感兴趣的:(算法)