1 / 23

Ch 2

Ch 2. Divide and Conquer ( 各個擊破 ). Divide and Conquer. 將問題切成 (Divide) 兩個或以上較小的問題來獲得解答 (Conquer) 當中有可能牽涉到合併 (Binary search 沒有 ) 較小的問題通常是原問題的實例 需使用遞迴 (recursive). Binary Search. 將原陣列分割 (Divide) 成約一半的大小 判斷 x 屬於哪個子陣列來決定是否繼續 (Conquer) 由子陣列的解答得到整體的解答. Binary Search(recursive). 演算法 2.1.

oralee
Download Presentation

Ch 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ch 2 Divide and Conquer (各個擊破)

  2. Divide and Conquer • 將問題切成(Divide)兩個或以上較小的問題來獲得解答(Conquer) • 當中有可能牽涉到合併(Binary search沒有) • 較小的問題通常是原問題的實例 • 需使用遞迴(recursive)

  3. Binary Search • 將原陣列分割(Divide)成約一半的大小 • 判斷x屬於哪個子陣列來決定是否繼續(Conquer) • 由子陣列的解答得到整體的解答

  4. Binary Search(recursive) • 演算法2.1

  5. Binary Search(recursive) W(n)=W(n/2)+1 W(1)=1 • 如果n為2的乘冪 利用數學歸納法可以證明 W(n)=lgn+1 (p.B-4) • 如果n不為2的乘冪 W(n)=lgn+1 • (lgn) 分割到最小就可以得到解答 不需要再做合併的動作

  6. 合併排序Merge Search • 將原陣列分割(Divide)成較小的陣列 • 將子陣列排序後再合併就可以得到完整排序的陣列 • 由子陣列的解答得到整體的解答

  7. 合併排序Merge Search • P2-10

  8. 合併排序Merge Search • 演算法p2-9 • Mergesort遞迴 • Merge合併

  9. 合併排序Merge Search • p2-12

  10. 合併排序Merge Search • 演算法p2-11

  11. Merge時間複雜度 • 先分析合併複雜度 • 只考慮比較指令時 • W(h,m)=h+m-1

  12. MergeSort時間複雜度 • W(n)=W(h)+W(m)+(h+m-1) W(n)=2W(n/2)+n-1 W(1)=0 • W(n)=nlgn-(n-1) (nlgn) • 空間複雜度=2n • 使用演算法2.4可以維持空間複雜度= n

  13. MergeSort2 & Merge2 • 演算法2.4

  14. MergeSort2 & Merge2 • 演算法2.5

  15. Divide and Conquer Skill • 分割(Divide)一個較大問題實例成為一個或多個較小的實例 • 解出每個較小實例的答案(Conquer),除非實例已經分割到足夠小,否則使用遞迴(Recursive)來解 • 必要的話,將兩個較小實例的解答合併(Combine)以獲得原始問題的解答

  16. 快速排序Quick Search • Hoare,1962 • 利用樞紐值(pivot)切割 • 排序子陣列

  17. 快速排序Quick Search • P2-18

  18. 快速排序Quick Search • P2-19 quicksort

  19. 快速排序Quick Search • P2-20 partition

  20. 快速排序Quick Search • P2-21

  21. Partition複雜度 • 所有情況時間複雜度 • 計算比較運算 • T(n)=n-1

  22. Quick Search時間複雜度 • 最差情況是碰到一個已經排序好的陣列 T(n)=T(0)+T(n-1)+(n-1) T(0)=0 • T(n)=n(n-1)/2 (n2) • 不會比交換排序法快 (n2)

  23. Quick Search時間複雜度 • 平均情況時間複雜度

More Related