1)分治法
對于一個規(guī)模為n的問題,若該問題可以容易地解決(比如說規(guī)模n較?。?,則直接解決;否則將其分解為k個規(guī)模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞歸地解這些子問題,然后將各子問題的解合并得到原問題的解。
2)回溯法(深度優(yōu)先)
回溯法是一種選優(yōu)搜索法,按選優(yōu)條件向前搜索,以達到目標。但當搜索到某一步時,發(fā)現(xiàn)原先選擇并不優(yōu)或達不到目標,就退回一步重新選擇。這種走不通就退回再走的技術就是回溯法。
3)貪心法
總是做出在當前來說是最好的選擇,而并不從整體上加以考慮,它所做的每步選擇只是當前步驟的局部最優(yōu)選擇,但從整體來說不一定是最優(yōu)的選擇。由于它不必為了尋找最優(yōu)解而窮盡所有可能解,因此其耗費時間少,一般可以快速得到滿意的解,但得不到最優(yōu)解。
4)動態(tài)規(guī)劃法
在求解問題中,對于每一步?jīng)Q策,列出各種可能的局部解,再依據(jù)某種判定條件,舍棄哪些肯定不能得到最優(yōu)解的局部解,在每一步都經(jīng)過篩選,以每一步都是最優(yōu)解來保證全局是最優(yōu)解。
5)分支限界法(廣度優(yōu)先)
分治算法求出的子問題是互相獨立的。
動態(tài)規(guī)劃算法具有最優(yōu)子結(jié)構(gòu)性質(zhì)和重疊子問題性質(zhì)。
貪心算法不追求最優(yōu)解,只求可行解,因此不具備最優(yōu)子結(jié)構(gòu)的特性。
回溯算法把問題的解空間轉(zhuǎn)化成圖或者樹結(jié)構(gòu),然后使用深度優(yōu)先搜索策略進行遍歷,遍歷的過程中記錄和尋找所有可行解或者最優(yōu)解。
分支限界算法類似于回溯算法,它以廣度優(yōu)先方式搜索解空間樹。