演算法(放課

By kumokunn

動態規劃

分治

大事化小 小事化無

  1. 大問題分成小問題
  2. 解決小問題
  3. 合併小問題的答案

栗子:merge sort

  1. 分成子問題(序列切半
  2. 解決子問題(遞迴排序子序列
  3. 合併子問題(把兩個排序過的序列合併

前兩步可能會了
第三步呢?

1 4
2 5

1

2

3

4

5

有\(log(n)\)層
每層在\(O(n)\)內完成

最終\(O(nlogn)\)

1,2,3,4,5

1,3,4

2,5

4,3

1

4

3

5

2

\(T(n)=aT(\frac {n}{b})+f(n)\)

其中 \(n\)為問題規模

\(a\)為子問題數量
\(\frac{n}{b}\)為子問題規模
\(f(n)\)為額外運算

 

\((1)若d < \log_ba ,則T(n)\in O(n^{\log_ba})\)

\((2)若d = \log_ba,則T(n)\in \Theta(n^d \log n)\)

\((3)若d > log_ba,則T(n)\in \Theta(n^d)\)

若\(f(n) \in O(n^d)\)

Made with Slides.com