適用於解一些組合數相當大的問題
策略:
深度優先策略其含義為:所有可能解組成的空間
問題的解向量:乙個n元式(x1,x2,x3…xn)的形式
顯約束:對分量xi的取值進行限定,可以控制解空間的大小
隱約束:為滿足問題的解而對不同分量之間施加的約束
·對能否得到問題的可行解或最優解做出的約束
·若不滿足隱約束,說明得不到問題的可行解或最優解,就沒必要 再沿該節點的分支進行搜尋了,相當於把這個分支剪掉了
·也稱為剪枝函式
解空間:對於問題的乙個例項,解向量滿足顯式約束條 件的所有多元組,構成了該例項的乙個解空間
解空間越小,搜尋效率越高
應至少包含問題的乙個(最優)解
解空間多樣性:同乙個問題可以有多種表示,有些表示方法更簡 單,所需表示的狀態空間更小(儲存量少,搜尋方法簡單)
解空間樹:用一定的組織結構搜尋最優解,並用樹的形式表達出來,根據解空間樹的不同,可分為子集樹,排列數,m叉樹等
基本步驟:
1.針對問題,定義問題的解空間
2.確定易於搜尋的解空間結構
3.以深度優先方式搜尋解空間,搜尋中用剪枝函式避免無效搜尋
剪枝函式:提高搜尋效率
用約束函式在擴充套件結點處剪去不滿足約束的子樹
(能否得到問題的可行解的約束)
用限界函式剪去得不到最優解的子樹
(能否得到最優解的約束)
複雜性
最長路徑的長度為h(n),回溯法所需的空間為o(h(n))
以旅行商問題示例:
右下角即為解空間樹
遞迴體內:
1.先判斷是否到達葉結點:
再判斷是否為更優的解
①如果是,則更新路徑,優值等資訊
②如果不是,不作處理
2.搜尋下乙個滿足條件的結點
①搜尋到後,將本層結點儲存
②遞迴尋找
子集樹:當所給的問題是從n個元素的集合s中找出滿足某種性質的子集時,相應的解空間
即從集合中選出滿足條件的元素的集合,如揹包問題:每個物品都存在選與不選的選擇
排列數:當所給問題是確定n個元素滿足某種性質的排列時,相應的解空間樹
即將所有元素進行排序,集合中所有元素都使用,如全排列
演算法相關概念解釋
演算法 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法的特性 有窮性,確定性,可行性,輸入,輸出。演算法的設計要求 正確性,可讀性,健壯性,高效率和低儲存。演算法的度量方法 事後統計法 不科學,不準確 事前分析估計法。輸入輸出 演算法有零個...
進化演算法相關概念
進化演算法是為了克服傳統優化方法的缺點而設計的一類演算法。為了解決目標函式的導數不存在或無法求得,但又要求函式的全域性最優解的問題。進化演算法是模擬生物進化或遺傳原理而設計的一類隨機搜尋的優化演算法,屬於不確定優化方法。進化演算法是以達爾文的演化論為基礎,模仿自然界 優勝劣汰 適者生存 的優化過程對...
排序演算法相關
1.1氣泡排序 氣泡排序的基本原理是 依次比較相鄰的兩個數,將大數放在前面,小數放在後面,也即首先比較第乙個和第二個數,將大數放在前面,小數放在後面。然後比較第2個數和第3個數,將大數放前,小數方後,依次直至比較最後兩個數。如此在第一輪最後的數必定是所有數中最小的,然後重複以上過程將所有小數放在最後...