中已經提到過,回溯法的思想是深度優先搜尋加剪枝,與之相對,分支限界法的思想是廣度優先搜尋加剪枝。
1. 分支限界法
–廣度優先搜素
1. 簡單概述
分支限界法思路的簡單描述是:把問題的解空間轉化成了圖或者樹的結構表示,然後使用廣度優先搜尋策略進行遍歷,遍歷的過程中記錄和尋找所有可行解或者最優解。
基本思想類同於:
圖的廣度優先遍歷
二叉樹的層序遍歷
也就是:對於當前節點,一次性擴充套件其所有可行的子節點。
對照圖的廣度優先遍歷就很容易理解。
2. 詳細描述
詳細的描述則為:
1) 首先將問題的解空間轉化成圖或者樹的結構表示,然後維護一張活節點表。
2) 初始時,將根節點加入活節點表
3) 當活節點表不空,從活節點表中取出乙個節點,成為當前擴充套件節點。如果表為空,跳轉至步驟
6結束。
4) 判斷當前擴充套件節點是否得到了乙個可行解或更優解,如果是,記錄或更新問題的解。
5)將當前擴充套件節點的所有可行子節點一次性全部生成,加入到活節點表中。跳轉到步驟3
6)演算法結束
活節點表的資料結構可以是fifo
佇列或者優先權佇列。
3. 回溯法應用
分支限界法通常用於求解問題的乙個可行解或者最優解。
2. 經典問題 (1
)裝載問題 (2
)0-1
揹包問題 (3
)旅行售貨員問題 (4
)八皇后問題 (5
)迷宮問題 (6
)圖的m
著色問題
分支限界法和回溯法很相似,只是在空間樹的搜尋方式上不同(乙個深度優化,乙個廣度優先)。
分支限界法----旅行售貨員問題
作者 :jarvischu
出處:
演算法入門(5) 分支限界法
一 基本描述 類似於回溯法,也是一種在問題的解空間樹t上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法的求解目標是找出t中滿足約束條件的所有解,而分支限界法的求解目標則是找出滿足約束條件的乙個解,或是在滿足約束條件的解中找出使某一目標函式值達到極大或極小的解,即在某種意...
演算法入門 分支限界法
用淺顯的話說就是一開始就大致性地找好方向 拿本人來說,專業選擇的軟體工程 然後從軟體工程細分到移動開發 然後又分到遊戲開發 然後又分到前端遊戲開發。或者也可以這樣,當你需要在乙個學生管理系統的資料夾手動查詢id為1208的學生資訊,這時候,你就要提前為每個資料夾寫好相關的策略 比如我要查詢學生的相關...
演算法 分支限界法
在當前節點 擴充套件節點 處,先生成其所有的兒子節點 分支 然後再從當前的活節點 當前節點的子節點 表中選擇下乙個擴充套件節點。為了有效地選擇下乙個擴充套件節點,加速搜尋的程序,在每乙個活節點處,計算乙個函式值 限界 並根據函式值,從當前活節點表中選擇乙個最有利的節點作為擴充套件節點,使搜尋朝著解空...