什麽是算法?從枚舉到貪心再到啟發式(上)
目標 :要優化的東西
決策 :根據目標做出的決策
約束 :進行決策時必須遵循的條件
算例 :問題參數的具體化
枚舉法 :將問題所有的解壹壹枚舉出來,挨個去評價,選出最好的那個
1.枚舉法能夠找到問題的最優解
2.枚舉法求解時間隨問題規模增長而呈爆炸式增長
貪心法 :利用“構造”的方式生成解,速度相對而言會非常快,同時不會隨著問題規模的增長而大幅度增加,是平緩的線性增長
什麽是算法?從枚舉到貪心再到啟發式(下)
啟發式算法 :在壹個合理的求解資源範圍內(合理的時間,合理的內存開銷等)求得壹個較為滿意的解。目前主要包括鄰域搜索和群體仿生兩大類。
解空間 :所有該問題的解的集合,包括可行解和不可行解
局部搜索 :不完全遍歷解空間,只選擇壹部分進行遍歷,進而大大降低搜索需要的資源。為了提高局部搜索的質量,大部分局部搜索算法都會在搜索的時候不斷地抓取多個區域進行搜索,直到滿足算法終止條件。
鄰域 :在鄰域結構定義下的解的集合,它是壹個相對的概念,即鄰域肯定是基於某個解產生的
鄰居解 :鄰域內某個解的稱呼
鄰域結構 :定義了壹個解的鄰域
鄰域結構的設計在啟發式算法中非常重要,它直接決定了搜索的範圍,對最終的搜索結構有著重要的影響,直接決定了最終結果質量的好壞
搜索過程
不斷重復步驟2-步驟5,直到滿足終止條件,最後輸出全局最優解
所有的啟發式找到的都是滿意解,不能說是最優解(即便真的是),因為它遍歷的是解空間的局部。
壹般情況下,啟發式算法的時間是隨著問題規模增長而呈線性增長的
幹貨 | 想學習優化算法,不知從何學起?
鄰域搜索類
叠代局部搜索算法
模擬退火算法
變鄰域搜索算法
禁忌搜索
自適應大鄰域搜索
群體仿生類
遺傳算法
蟻群算法
粒子群算法
人工魚群算法
算法應用
禁忌搜索算法求解帶時間窗的車輛路徑問題
基於樹表示法的變鄰域搜索算法求解考慮後進先出的取派貨旅行商問題
變鄰域搜索算法求解Max-Mean dispersion problem
遺傳算法求解混合流水車間調度問題