演算法設計之 常用演算法之 分支界定法

2021-06-26 08:01:47 字數 1636 閱讀 5533

在進行機器學習特診選擇的時候,一種不需要進行遍歷仍能取得最優解的方法為分支定界(branch and bound)法。這是一種自頂向下的方法,即從包含所有候選特徵開始,逐步去掉不被選擇的特徵。此種方法具有回溯的過程,能夠考慮所有可能的特徵組合。

分支定界法:

原理:分支界定法就是帶剪枝技巧的搜尋策略,通過預判和估算,一旦發現某個子解空間已經不可能存在可行解時,立即停止對此子解空間的搜尋。

類似於回溯法,也是一種在問題的解空間樹t上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法

的求解目標是找出t中滿足約束條件的

所有解,而分支限界法的求解目標則是找出滿足約束條件的乙個解,或是在滿足約束條件的解中找出使某一目標函式值達到極大或極小的解,即在某種意義下的最優解

分析:分支界定法通常

不能降低搜尋解空間的數量級

,但通過合理的選擇估算函式和分布策略,往往能極高地提高搜尋效率。

演算法的技巧性很強,不通型別的問題的解法也不相同。

選擇下乙個e-結點的方式不同,則會有幾種不同的分支搜尋方式。

1)fifo搜尋

2)lifo搜尋

3)優先佇列式搜尋

與回朔法的方法區別:

由於求解目標不同,導致分支限界法與回溯法在解空間樹t上的搜尋方式也不相同。回溯法以深度優先的方式搜尋解空間樹t,而分支限界法則以廣度優先或以最小耗費優先的方式搜尋解空間樹t

分支限界法的搜尋策略是:在擴充套件結點處,先生成其所有的兒子結點(分支),然後再從當前的活結點表中選擇下乙個擴充套件對點。為了有效地選擇下一擴充套件結點,以加速搜尋的程序,在每一活結點處,計算乙個函式值(限界),並根據這些已計算出的函式值,從當前活結點表中選擇乙個最有利的結點作為擴充套件結點,使搜尋朝著解空間樹上有最優解的分支推進,以便盡快地找出乙個最優解。

分支限界法常以廣度優先或以最小耗費(最大效益)優先的方式搜尋問題的解空間樹。問題的解空間樹是表示問題解空間的一棵有序樹,常見的有子集樹和排列樹。在搜尋問題的解空間樹時,分支限界法與回溯法對當前擴充套件結點所使用的擴充套件方式不同。在分支限界法中,每乙個活結點只有一次機會成為擴充套件結點。活結點一旦成為擴充套件結點,就一次性產生其所有子結點。在這些子結點中,那些導致不可行解或導致非最優解的子結點被捨棄,其餘子結點被子加入活結點表中。此後,從活結點表中取下一結點成為當前擴充套件結點,並重複上述結點擴充套件過程。這個過程一直持續到找到所求的解或活結點表為空時為止。

兩種方法的取捨:

有一些問題其實無論用回溯法還是分支限界法都可以得到很好的解決,但是另外一些則不然。也許我們需要具體一些的分析——到底何時使用分支限界而何時使用回溯呢?

回溯法和分支限界法的一些區別: 方法對解空間樹的搜尋方式     ;  儲存結點的常用資料結構 ;     結點儲存特性常用應用。

回溯法深度優先搜尋堆疊活結點的所有可行子結點被遍歷後才被從棧中彈出找出滿足約束條件的所有解; 分支限界法廣度優先或最小。

演算法設計之 常用演算法之 分支界定法

分支定界法 原理 分支界定法就是帶剪枝技巧的搜尋策略,通過預判和估算,一旦發現某個子解空間已經不可能存在可行解時,立即停止對此子解空間的搜尋。類似於回溯法,也是一種在問題的解空間樹t上搜尋問題解的演算法。但在一般情況下,分支限界法與回溯法的求解目標不同。回溯法 的求解目標是找出t中滿足約束條件的 所...

fifo演算法 常用演算法之分支限界法

分支限界演算法類似於回溯法,是一種在問題的解空間樹t上搜尋問題解的演算法。但一般情況下,分支限界法與回溯法的求解目標不同。回溯法的求解目標是找出t中滿足約束條件的所有解,而分支限界法的求解目標則是找出滿足約束條件的乙個解,或是在滿足約束條件的解中找出使某一目標函式值達到極大或極小的解,即在某種意義下...

演算法四 回溯和分支界定

演算法四 回溯和分支界定 回溯 尋找問題的解的一種可靠的方法是首先列出所有候選解,然後依次檢查每乙個,在檢查完 所有或部分候選解後,即可找到所需要的解。理論上,當候選解數量有限並且通過檢查所有或 部分候選解能夠得到所需解時,上述方法是可行的。不過,在實際應用中,很少使用這種方法,因為候選解的數量通常...