程式設計思想 - 五大常用演算法詳解
阿新 • • 發佈:2018-11-04
https://www.cnblogs.com/brucemengbm/p/6875340.html
https://blog.csdn.net/changyuanchn/article/details/51476281
https://www.cnblogs.com/chuninggao/p/7295793.html
分治法
- 基本思想
- 將一個問題,分解為多個子問題,遞迴的去解決子問題,最終合併為問題的解
- 適用情況
- 問題分解為小問題後容易解決
- 問題可以分解為小問題,即最優子結構
- 分解後的小問題解可以合併為原問題的解
- 小問題之間互相獨立
- 例項
- 二分查詢
- 快速排序
- 合併排序
- 大整數乘法
- 迴圈賽日程表
- 基本思想
- 將問題分解為多個子問題(階段),按順序求解,前一個問題的解為後一個問題提供資訊
- 適用情況
- 最優化原理:問題的最優解所包含的子問題的解也是最優的,即最優子結構
- 無後效性:某個狀態一旦確定,就不受以後決策的影響
- 有重疊子問題
- 說明
- 遞推關係是從次小的問題開始到較大問題的轉化,往往可以用遞迴來實現,可以利用之前產生的子問題的解來減少重複的計算
- 基本思想
- 選優搜尋法,走不通就退回重選,按照深度優先搜尋的策略,從根節點出發,深度搜索解空間
- 步驟
- 確定解空間
- 確定節點的擴充套件搜尋規則
- 深度優先方式搜尋解空間,用剪枝法避免無效搜尋
- 基本思想
- 與回溯法類似,也是在解空間裡搜尋解得演算法,不同點是,回溯法尋找所有解,分支界限法搜尋一個解或者最優解
- 分支:廣度優先策略或者最小耗費(最大效益)優先
- 分支搜尋方式:FIFO、LIFO、優先佇列式、分支界限搜尋演算法
- 基本思想
- 不從總體最優考慮,僅考慮區域性最優解,問題必須具備後無效性
- 步驟
- 將問題分解為多個子問題
- 得到問題的區域性最優解
- 合併子問題的區域性最優解
- 適用情況
- 區域性最優策略能導致全域性最優解
- 子問題後無效性
參照:
https://blog.csdn.net/beyond59241/article/details/50728614