分枝界限法是由三棲學者查理德·卡普(richard m.karp)在20世紀60年代發明,成功求解含有65個城市的旅行商問題,創當時的記錄。「分枝界限法」把問題的可行解展開如樹的分枝,再經由各個分枝中尋找最佳解。
1. 基本概念
描述:採用廣度優先產生狀態空間樹的結點,並使用剪枝函式的方法稱為分枝限界法。
所謂「分支」是採用廣度優先的策略,依次生成擴充套件結點的所有分支(即:兒子結點)。
所謂「限界」是在結點擴充套件過程中,計算結點的上界(或下界),邊搜尋邊減掉搜尋樹的某些分支,從而提高搜尋效率。
2. 演算法的步驟
步驟一:如果問題的目標為最小化,則設定目前最優解的值z=∞
步驟三:計算每乙個新分枝出來的節點的下限值(lower bound,lb)
步驟四:對每一節點進行洞悉條件測試,若節點滿足以下任意乙個條件,則此節點可洞悉而不再被考慮:
此節點的下限值大於等於z值。
已找到在此節點中,具最小下限值的可行解;若此條件成立,則需比較此可行解與z值,若前者較小,則需更新z值,以此為可行解的值。
此節點不可能包含可行解。
步驟五:判斷是否仍有尚未被洞悉的節點,如果有,則進行步驟二,如果已無尚未被洞悉的節點,則演算停止,並得到最優解。
3. 分支限界法與回溯法
回溯法深度優先搜尋堆疊活結點的所有可行子結點被遍歷後才被從棧中彈出找出滿足約束條件的所有解。
分支限界法廣度優先或最小消耗優先搜尋佇列、優先佇列每個結點只有一次成為活結點的機會找出滿足約束條件的乙個解或特定意義下的最優解。
(1)求解目標:回溯法的求解目標是找出解空間樹中滿足約束條件的所有解,而分支限界法的求解目標則是找出滿足約束條件的乙個解,或是在滿足約束條件的解中找出在某種意義下的最優解。
(2)搜尋方式的不同:回溯法以深度優先的方式搜尋解空間樹,而分支限界法則以廣度優先或以最小耗費優先的方式搜尋解空間樹。
4. 典型問題
(1)貨郎擔問題
(2)旅行推銷員問題
更多:
五大常用演算法之五 分支限界法
分支限界法 類似於回溯法,也是一種在問題的解空間樹t上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法 的求解目標是找出t中滿足約束條件的 所有解,而分支限界法的求解目標則是找出滿足約束條件的乙個解,或是在滿足約束條件的解中找出使某一目標函式值達到極大或極小的解,即在某種...
五大常用演算法之五 分支限界法
分支限界法 類似於回溯法,也是一種在問題的解空間樹t上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法 的求解目標是找出t中滿足約束條件的 所有解,而分支限界法的求解目標則是找出滿足約束條件的乙個解,或是在滿足約束條件的解中找出使某一目標函式值達到極大或極小的解,即在某種...
五大常用演算法之五 分支限界法
類似於回溯法,也是一種在問題的解空間樹t上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法 的求解目標是找出t中滿足約束條件的 所有解,而分支限界法的求解目標則是找出滿足約束條件的乙個解,或是在滿足約束條件的解中找出使某一目標函式值達到極大或極小的解,即在某種意義下的最優...