五大常用算法详解
分治法
- 基本思想
- 將一個問題,分解為多個子問題,遞歸的去解決子問題,最終合并為問題的解
- 適用情況
- 問題分解為小問題后容易解決
- 問題可以分解為小問題,即最優子結構
- 分解后的小問題解可以合并為原問題的解
- 小問題之間互相獨立
- 實例
- 二分查找
- 快速排序
- 合并排序
- 大整數乘法
- 循環賽日程表
- 基本思想
- 將問題分解為多個子問題(階段),按順序求解,前一個問題的解為后一個問題提供信息
- 適用情況
- 最優化原理:問題的最優解所包含的子問題的解也是最優的,即最優子結構
- 無后效性:某個狀態一旦確定,就不受以后決策的影響
- 有重疊子問題
- 說明
- 遞推關系是從次小的問題開始到較大問題的轉化,往往可以用遞歸來實現,可以利用之前產生的子問題的解來減少重復的計算
- 基本思想
- 選優搜索法,走不通就退回重選,按照深度優先搜索的策略,從根節點出發,深度搜索解空間
- 步驟
- 確定解空間
- 確定節點的擴展搜索規則
- 深度優先方式搜索解空間,用剪枝法避免無效搜索
- 基本思想
- 與回溯法類似,也是在解空間里搜索解得算法,不同點是,回溯法尋找所有解,分支界限法搜索一個解或者最優解
- 分支:廣度優先策略或者最小耗費(最大效益)優先
- 分支搜索方式:FIFO、LIFO、優先隊列式、分支界限搜索算法
- 基本思想
- 不從總體最優考慮,僅考慮局部最優解,問題必須具備后無效性
- 步驟
- 將問題分解為多個子問題
- 得到問題的局部最優解
- 合并子問題的局部最優解
- 適用情況
- 局部最優策略能導致全局最優解
- 子問題后無效性
總結
- 上一篇: MOSSE算法推导
- 下一篇: java 8 方法引用(method r