算法設計與分析【2】分治算法

基本思想

分治法的基本思想是將一個規模爲n的問題分解爲k個規模較小的子問題,這些子問題互相獨立與原問題相同,遞歸或迭代地解這些子問題,然後將各子問題的解綜合得到原問題的解。

影響算法複雜度的因素

  • 子問題的個數
  • 子問題合併的工作量

改進分治算法有兩個途徑:

  • 減少子問題的個數
  • 增加預處理

經典案例

1 二分檢索

設計思想

在這裏插入圖片描述

僞碼

在這裏插入圖片描述

2 二分歸併

設計思想

在這裏插入圖片描述

僞碼

在這裏插入圖片描述

3 漢諾塔

設計思想

在這裏插入圖片描述

僞碼

在這裏插入圖片描述

4 快速排序

設計思想

在這裏插入圖片描述

僞碼

在這裏插入圖片描述
在這裏插入圖片描述

實例

在這裏插入圖片描述

5 快速傅里葉變換(信號平滑處理)

問題描述

在卷積計算中有多項式求值的問題,使用FFT(快速傅里葉算法,提高其效率)
在這裏插入圖片描述
關於卷積:
在這裏插入圖片描述
在這裏插入圖片描述

設計&分析

在這裏插入圖片描述
在這裏插入圖片描述

減少子問題個數案例:大數相乘

設計思想

在這裏插入圖片描述
在這裏插入圖片描述

參考材料

mooc算法分析與設計

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章