常用演算法之五:分支限界法

來源:互聯網
上載者:User

分支限界法

一、基本描述

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

   (1)分支搜尋演算法

    所謂“分支”就是採用廣度優先的策略,依次搜尋E-結點的所有分支,也就是所有相鄰結點,拋棄不滿足約束條件的結點,其餘結點加入活結點表。然後從表中選擇一個結點作為下一個E-結點,繼續搜尋。

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

   1)FIFO搜尋

   2)LIFO搜尋

   3)優先隊列式搜尋

(2)分支限界搜尋演算法  二、分支限界法的一般過程

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

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

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

三、回溯法和分支限界法的一些區別

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

回溯法和分支限界法的一些區別:

   方法對解空間樹的搜尋方式      
儲存結點的常用資料結構      結點儲存特性常用應用

  回溯法深度優先搜尋堆棧活結點的所有可行子結點被遍曆後才被從棧中彈出找出滿足約束條件的所有解

  分支限界法廣度優先或最小消耗優先搜尋隊列、優先隊列每個結點只有一次成為活結點的機會找出滿足約束條件的一個解或特定意義下的最優解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.