1 / 51

第二章 Divide-and-Conquer

第二章 Divide-and-Conquer. 2.1 二元搜尋法 2.2 合併搜尋法 2.3 Divide-and-conquer 技巧 2.4 快速排序法 ( 分割交換排序法 ) 2.5 strassen 的矩陣相乘演算法 2.6 大整數的計算 2.6.1 大整數的表達法:加法與其他線性時間的運算 2.6.2 大整數的乘法 2.7 決定門檻值 2.8 何時不能使用 Divide-and-Conquer. 2.1 二元搜尋法. 演算法 2.1 二元搜尋法 ( 遞迴版 ).

bobby
Download Presentation

第二章 Divide-and-Conquer

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. 第二章 Divide-and-Conquer • 2.1 二元搜尋法 • 2.2 合併搜尋法 • 2.3 Divide-and-conquer技巧 • 2.4 快速排序法(分割交換排序法) • 2.5 strassen的矩陣相乘演算法 • 2.6 大整數的計算 2.6.1大整數的表達法:加法與其他線性時間的運算 2.6.2大整數的乘法 • 2.7決定門檻值 • 2.8何時不能使用Divide-and-Conquer

  2. 2.1二元搜尋法

  3. 演算法2.1 二元搜尋法(遞迴版)

  4. 分析演算法2.1最差情況的時間複雜度(二元搜尋法,遞迴版)分析演算法2.1最差情況的時間複雜度(二元搜尋法,遞迴版) • 基本運算:x與S[mid]的比較 • 輸入大小:n,陣列中的項目數量

  5. 2.2合併排序法 • Two-way merging指的是將兩個以排序的陣列合併成一個以排序的陣列

  6. 演算法2.2 合併排序

  7. 演算法2.3合併

  8. 分析演算法2.3 最差情況的時間複雜度(合併) • 基本運算:比較U[i]與V[ j ] • 輸入大小:h與m,分別為兩輸入陣列的項目個數 W(h,m)=h+m+1

  9. 分析演算法2.2最差情況的時間複雜度(合併排序)分析演算法2.2最差情況的時間複雜度(合併排序) • 基本運算:發生在merge中的比較 • 輸入大小:n,陣列S中的項目個數

  10. 當n為2的乘冪時 • W(n)的式子成為

  11. 當輸入大小為1時,即達到終止條件,且無法再進行合併。因此,W(1)為0。當輸入大小為1時,即達到終止條件,且無法再進行合併。因此,W(1)為0。

  12. 演算法2.4 合併排序2

  13. 演算法2.5 合併2

  14. 2.3Divide-and-Conquer技巧

  15. 2.4 快速排序法(分割交換排序法)

  16. 演算法2.6 快速排序

  17. 演算法2.7 分割

  18. 分析演算法2.7 所有情況的時間複雜度(分割) • 基本運算:發生在merge中的比較 • 輸入大小:n=high-low+1,也就是在子陣列中的項目數 因為除第一個項目外,每個項目都會被比較 T(n)=n-1 因此我們使用n來代表子陣列的大小而非陣列S的大小。只有當partition在最上層被呼叫時 ,它才代表S的大小

  19. 分析演算法2.6最差情況的時間複雜度(快速排序)分析演算法2.6最差情況的時間複雜度(快速排序)

  20. 分析演算法2.6 平均情況的時間複雜度(快速排序) • 基本運算:在paritition副程式中,S[i]與pivotitem的比較 • 輸入大小:n,陣列S中的項目數

  21. 2.5 Strassen的矩陣相乘演算法

  22. 演算法2.8 Strassen

  23. 分析演算法2.8 乘法次數的所有情況的時間複雜度分析(Strassen) • 基本運算:一個基本的乘法 • 輸入大小:n,也就是這些矩陣的列數與欄數

  24. 分析演算法2.8加去/減去次數的所有情況的時間複雜度分析分析演算法2.8加去/減去次數的所有情況的時間複雜度分析 • 基本運算:一個基本的加法或減法 • 輸入大小:n,也就是這些矩陣的列數與欄數

  25. 表2.3 兩個演算法在n‧n矩陣相成的比較

  26. 2.6大整數的計算 2.6.1大整數的表達法: 加法與其他線性時間的運算

  27. 2.6.2大整數的乘法

  28. 演算法2.9 大整數乘法

  29. 分析演算法 最差情況的時間複雜度(大整數的乘法) • 基本運算:當相加、相減、或執行 時,一位數字(以十進位表示)的操作 • 輸入大小:也就是兩個大整數u、v的位數

  30. 演算法2.10 大整數乘法2

  31. 分析演算法2.10 最差情況的時間複雜度(快速排序) • 基本運算:當相加、相減、或執行 時,一位數字(以十進位表示)的操作 • 輸入大小:也就是兩個大整數u、v的位數

  32. 表2.4演算法2.10中x+y之位數範例

  33. 函式呼叫的輸入大小

  34. 令 則

  35. 2.7決定門檻值 • 最佳門檻值(optimal threshold)

  36. 表2.5

More Related