s-第6章_heaven-14_第1頁
s-第6章_heaven-14_第2頁
s-第6章_heaven-14_第3頁
s-第6章_heaven-14_第4頁
s-第6章_heaven-14_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、智能信息處理研究中心(RCIIP)Pan1第第6 6章章 分支限界法分支限界法潘海為潘海為Birds of a feather flock together物以類聚、一丘之貉物以類聚、一丘之貉http:/http:/智能信息處理研究中心(RCIIP)PanPan2 理解分支限界法的剪枝搜索策略理解分支限界法的剪枝搜索策略 掌握分支限界法的算法框架掌握分支限界法的算法框架 隊列式隊列式(FIFO)分支限界法分支限界法 優(yōu)先隊列式分支限界法優(yōu)先隊列式分支限界法 通過應(yīng)用范例學(xué)習(xí)分支限界法的設(shè)計策略通過應(yīng)用范例學(xué)習(xí)分支限界法的設(shè)計策略 單源最短路徑問題單源最短路徑問題 裝載問題;裝載問題; 0-1背

2、包問題;背包問題; 最大團(tuán)問題;最大團(tuán)問題; 旅行售貨員問題旅行售貨員問題 批處理作業(yè)調(diào)度問題批處理作業(yè)調(diào)度問題智能信息處理研究中心(RCIIP)Pan3分支限界法的背景分支限界法的背景理查德理查德.卡普卡普在在IBMIBM期間,深入研究了與實際應(yīng)用有密切聯(lián)系的一系列數(shù)學(xué)問題,如期間,深入研究了與實際應(yīng)用有密切聯(lián)系的一系列數(shù)學(xué)問題,如路徑問題路徑問題、背包問題背包問題、覆蓋問題覆蓋問題、匹配問題匹配問題、分區(qū)問題分區(qū)問題、調(diào)度問題調(diào)度問題等,取得了許多出色的成等,取得了許多出色的成果。這些問題有一個共同的特點,即如果用圖來表示問題,那么當(dāng)圖中增加一個果。這些問題有一個共同的特點,即如果用圖來表

3、示問題,那么當(dāng)圖中增加一個結(jié)點時,需要考察的可能的解的數(shù)目就急劇增加,形成所謂結(jié)點時,需要考察的可能的解的數(shù)目就急劇增加,形成所謂“組合爆炸組合爆炸” (combinatorial explosion)(combinatorial explosion),使計算機的計算工作量大大增加,到一定程度就,使計算機的計算工作量大大增加,到一定程度就根本無法實現(xiàn)。根本無法實現(xiàn)。以路徑問題中最著名的以路徑問題中最著名的旅行商問題為例旅行商問題為例,在卡普以前,最好的結(jié)果是,在卡普以前,最好的結(jié)果是RandRand公司的公司的丹齊格丹齊格(George Benard Dantzig)(George Benar

4、d Dantzig)、福格森、福格森(R(RFulkerson)Fulkerson)和約翰遜和約翰遜(S(SJohnson)Johnson)用手工和計算機相結(jié)合的辦法,求出了包含用手工和計算機相結(jié)合的辦法,求出了包含4949個城市個城市的旅行商的最佳路線??ㄆ盏穆眯猩痰淖罴崖肪€??ㄆ蘸退耐潞柼睾退耐潞柼?M(MHeld)Held)經(jīng)過反復(fù)研究,終于提出了一種稱為經(jīng)過反復(fù)研究,終于提出了一種稱為“分支限界分支限界法法”(branch(branchandandbound method)bound method)的新方法,用這種新方法實現(xiàn)的算法使旅行的新方法,用這種新方法實現(xiàn)的算法使旅行

5、推銷員能周游的城市數(shù)達(dá)到推銷員能周游的城市數(shù)達(dá)到6565個個,從而打破了由,從而打破了由RandRand公司保持的記錄。公司保持的記錄。 1955 1955年年文學(xué)學(xué)士學(xué)位文學(xué)學(xué)士學(xué)位 19561956年年理科碩士學(xué)位理科碩士學(xué)位 19591959年年應(yīng)用數(shù)學(xué)博士學(xué)位應(yīng)用數(shù)學(xué)博士學(xué)位( (哈佛大學(xué)哈佛大學(xué)) ) Yorktown Heights Yorktown Heights的的IBMIBM沃森研究中心沃森研究中心 1985年獲得年獲得ACM的圖靈獎的圖靈獎智能信息處理研究中心(RCIIP)Pan4 分支限界法常以分支限界法常以廣度優(yōu)先廣度優(yōu)先或以最小耗費(最大效益)優(yōu)或以最小耗費(最大效益

6、)優(yōu)先的方式搜索問題的解空間樹。先的方式搜索問題的解空間樹。分支限界法的基本思想分支限界法的基本思想智能信息處理研究中心(RCIIP)Pan5 分支限界法常以分支限界法常以廣度優(yōu)先廣度優(yōu)先或以最小耗費(最大效益)優(yōu)或以最小耗費(最大效益)優(yōu)先的方式搜索問題的解空間樹。先的方式搜索問題的解空間樹。 在分支限界法中,每一個活結(jié)點在分支限界法中,每一個活結(jié)點只有一次機會只有一次機會成為擴展成為擴展結(jié)點?;罱Y(jié)點一旦成為擴展結(jié)點,就一次性產(chǎn)生其所有兒結(jié)點?;罱Y(jié)點一旦成為擴展結(jié)點,就一次性產(chǎn)生其所有兒子結(jié)點。在這些兒子結(jié)點中,導(dǎo)致不可行解或?qū)е路亲顑?yōu)子結(jié)點。在這些兒子結(jié)點中,導(dǎo)致不可行解或?qū)е路亲顑?yōu)解的兒

7、子結(jié)點被舍棄,其余兒子結(jié)點被加入活結(jié)點表中。解的兒子結(jié)點被舍棄,其余兒子結(jié)點被加入活結(jié)點表中。此后,從活結(jié)點表中取下一結(jié)點成為當(dāng)前擴展結(jié)點,并重此后,從活結(jié)點表中取下一結(jié)點成為當(dāng)前擴展結(jié)點,并重復(fù)上述結(jié)點擴展過程。這個過程一直持續(xù)到找到所需的解復(fù)上述結(jié)點擴展過程。這個過程一直持續(xù)到找到所需的解或活結(jié)點表為空時為止?;蚧罱Y(jié)點表為空時為止。 分支限界法的基本思想分支限界法的基本思想智能信息處理研究中心(RCIIP)Pan6 分支限界法常以分支限界法常以廣度優(yōu)先廣度優(yōu)先或以最小耗費(最大效益)優(yōu)或以最小耗費(最大效益)優(yōu)先的方式搜索問題的解空間樹。先的方式搜索問題的解空間樹。 在分支限界法中,每一個

8、活結(jié)點在分支限界法中,每一個活結(jié)點只有一次機會只有一次機會成為擴展成為擴展結(jié)點?;罱Y(jié)點一旦成為擴展結(jié)點,就一次性產(chǎn)生其所有兒結(jié)點?;罱Y(jié)點一旦成為擴展結(jié)點,就一次性產(chǎn)生其所有兒子結(jié)點。在這些兒子結(jié)點中,導(dǎo)致不可行解或?qū)е路亲顑?yōu)子結(jié)點。在這些兒子結(jié)點中,導(dǎo)致不可行解或?qū)е路亲顑?yōu)解的兒子結(jié)點被舍棄,其余兒子結(jié)點被加入活結(jié)點表中。解的兒子結(jié)點被舍棄,其余兒子結(jié)點被加入活結(jié)點表中。此后,從活結(jié)點表中取下一結(jié)點成為當(dāng)前擴展結(jié)點,并重此后,從活結(jié)點表中取下一結(jié)點成為當(dāng)前擴展結(jié)點,并重復(fù)上述結(jié)點擴展過程。這個過程一直持續(xù)到找到所需的解復(fù)上述結(jié)點擴展過程。這個過程一直持續(xù)到找到所需的解或活結(jié)點表為空時為止?;蚧?/p>

9、結(jié)點表為空時為止。 分支限界法的基本思想分支限界法的基本思想分支限界方法找最優(yōu)解的效率比回朔法高。分支限界方法找最優(yōu)解的效率比回朔法高。原因在于原因在于它采用了它采用了最小代價估值函數(shù)最小代價估值函數(shù)指導(dǎo)搜索,在活節(jié)點指導(dǎo)搜索,在活節(jié)點表中,選擇有最小代價估值的節(jié)點作為擴展節(jié)點。即總是表中,選擇有最小代價估值的節(jié)點作為擴展節(jié)點。即總是像最有可能獲得最優(yōu)解的子樹上擴展。并且采用限界函數(shù)像最有可能獲得最優(yōu)解的子樹上擴展。并且采用限界函數(shù)U U殺死活節(jié)點表中不可能成為最優(yōu)解的節(jié)點,提高算法的效殺死活節(jié)點表中不可能成為最優(yōu)解的節(jié)點,提高算法的效率。率。智能信息處理研究中心(RCIIP)Pan7 常見的

10、兩種分支限界法常見的兩種分支限界法(1 1)隊列式分支限界法)隊列式分支限界法 按照隊列先進(jìn)先出(按照隊列先進(jìn)先出(FIFOFIFO)或者后進(jìn)先出()或者后進(jìn)先出(LIFOLIFO)原則選取下一個結(jié)點為擴展結(jié)點。原則選取下一個結(jié)點為擴展結(jié)點。 (2 2)優(yōu)先隊列式分支限界法)優(yōu)先隊列式分支限界法 隊列式分支限界法隊列式分支限界法對結(jié)點的選擇規(guī)則相當(dāng)死板,具對結(jié)點的選擇規(guī)則相當(dāng)死板,具有一定的有一定的 “ “盲目盲目”性。這種選擇規(guī)則不利于快速檢索到性。這種選擇規(guī)則不利于快速檢索到一個能夠到達(dá)答案的結(jié)點。一個能夠到達(dá)答案的結(jié)點。 對活結(jié)點使用一個對活結(jié)點使用一個“有智能有智能”的的排序函數(shù)排序函

11、數(shù)C()C()來選取下來選取下一個結(jié)點,往往可以加快獲取答案的速度。一個結(jié)點,往往可以加快獲取答案的速度。 按照優(yōu)先隊列中規(guī)定的優(yōu)先級選取優(yōu)先級最高的結(jié)點按照優(yōu)先隊列中規(guī)定的優(yōu)先級選取優(yōu)先級最高的結(jié)點成為當(dāng)前擴展結(jié)點。常用方法是成為當(dāng)前擴展結(jié)點。常用方法是LC(Least Cost)LC(Least Cost)方法方法。分支限界法的基本思想分支限界法的基本思想智能信息處理研究中心(RCIIP)Pan8 實例8-拼塊游戲問題輸入輸入: 具有具有8 個編號小方塊的魔方個編號小方塊的魔方輸出輸出: 移動系列移動系列, 經(jīng)過這些移動經(jīng)過這些移動, 魔方達(dá)到目標(biāo)狀態(tài)魔方達(dá)到目標(biāo)狀態(tài)分支限界法的基本思想分

12、支限界法的基本思想28316475初始狀態(tài)12384765目標(biāo)狀態(tài)智能信息處理研究中心(RCIIP)Pan9 FIFO隊列式分支限界法分支限界法的基本思想分支限界法的基本思想. 2 31 8 476512384765目標(biāo)狀態(tài)2 . 31 8 47651 2 3. 8 47652 3 .1 8 47652 8 31 . 47651 2 37 8 4.651 2 38 . 4765智能信息處理研究中心(RCIIP)Pan10 優(yōu)先隊列式分支限界法優(yōu)先隊列式分支限界法 “有智能有智能”的排序函數(shù)的排序函數(shù)C()C()最小代價估計函數(shù):最小代價估計函數(shù):C C(X)(X)從初始狀態(tài)到從初始狀態(tài)到X X

13、所移動的次數(shù)還未到位的數(shù)字方塊數(shù)。所移動的次數(shù)還未到位的數(shù)字方塊數(shù)。從初始狀態(tài)到從初始狀態(tài)到X X所移動的次數(shù)是實際耗費的代價,還未到位的數(shù)字方所移動的次數(shù)是實際耗費的代價,還未到位的數(shù)字方塊數(shù)表示至少還要移動的次數(shù)。塊數(shù)表示至少還要移動的次數(shù)。分支限界法的基本思想分支限界法的基本思想28316475初始狀態(tài)12384765目標(biāo)狀態(tài)C(X)=C(1)=0+4=4C(X)=s+0=s智能信息處理研究中心(RCIIP)Pan11283164751238476514263446556576869710511712513C(X)= C(13) =5+0=528316475283147652831647

14、52831476523184765283147658321476528371465231847652318476512384765L=(3,2,4)L=(5,6,2,4,7)L=(6,2,4,7,8,9)L=(10,2,4,7,8,9,11)L=(12,2,4,7,8,9,11)L=(2,4,7,8,9,11)優(yōu)先隊列優(yōu)先隊列L=(1)1 2 3847 6 5智能信息處理研究中心(RCIIP)Pan12 分支限界法與回溯法比較(1 1)求解目標(biāo))求解目標(biāo)回溯法的求解目標(biāo)是找出解空間樹中滿足約束條件的所回溯法的求解目標(biāo)是找出解空間樹中滿足約束條件的所有解,而分支限界法的求解目標(biāo)則是找出滿足約束條

15、件有解,而分支限界法的求解目標(biāo)則是找出滿足約束條件的一個解,或是在滿足約束條件的解中找出在某種意義的一個解,或是在滿足約束條件的解中找出在某種意義下的最優(yōu)解。下的最優(yōu)解。 (2 2)搜索方式的不同)搜索方式的不同回溯法以深度優(yōu)先的方式搜索解空間樹,而分支限界法回溯法以深度優(yōu)先的方式搜索解空間樹,而分支限界法則以廣度優(yōu)先或以最小耗費優(yōu)先的方式搜索解空間樹。則以廣度優(yōu)先或以最小耗費優(yōu)先的方式搜索解空間樹。 分支限界法的基本思想分支限界法的基本思想智能信息處理研究中心(RCIIP)Pan13 問題描述問題描述下面以一個例子來說明單源最短路徑問題:在下圖所給下面以一個例子來說明單源最短路徑問題:在下圖

16、所給的有向圖的有向圖G G中,每一邊都有一個非負(fù)邊權(quán)。要求圖中,每一邊都有一個非負(fù)邊權(quán)。要求圖G G的從的從源頂點源頂點s s到目標(biāo)頂點到目標(biāo)頂點t t之間的最短路徑。之間的最短路徑。 單源最短路徑問題單源最短路徑問題智能信息處理研究中心(RCIIP)Pan14 單源最短路徑問題單源最短路徑問題 問題描述問題描述下圖是用優(yōu)先隊列式分支限界法解有向圖下圖是用優(yōu)先隊列式分支限界法解有向圖G G的單源最短路徑問題產(chǎn)生的解的單源最短路徑問題產(chǎn)生的解空間樹。其中,每一個結(jié)點旁邊的數(shù)字表示該結(jié)點所對應(yīng)的當(dāng)前路長??臻g樹。其中,每一個結(jié)點旁邊的數(shù)字表示該結(jié)點所對應(yīng)的當(dāng)前路長。AB智能信息處理研究中心(RCI

17、IP)Pan15 單源最短路徑問題單源最短路徑問題 問題描述下圖是用優(yōu)先隊列式分支限界法解有向圖G的單源最短路徑問題產(chǎn)生的解空間樹。其中,每一個結(jié)點旁邊的數(shù)字表示該結(jié)點所對應(yīng)的當(dāng)前路長。AB智能信息處理研究中心(RCIIP)Pan16 單源最短路徑問題單源最短路徑問題 結(jié)點結(jié)點A控制結(jié)點控制結(jié)點B如果解空間樹中以結(jié)點如果解空間樹中以結(jié)點A A為根的子樹中所含的解優(yōu)于以結(jié)點為根的子樹中所含的解優(yōu)于以結(jié)點B B為根的子樹為根的子樹中所含的解,則稱中所含的解,則稱結(jié)點結(jié)點A A控制結(jié)點控制結(jié)點B B,以結(jié)點,以結(jié)點B B為根的子樹可以剪去。為根的子樹可以剪去。AB智能信息處理研究中心(RCIIP)P

18、an17 算法思想算法思想 解此問題的優(yōu)先隊列式分支限界法用一解此問題的優(yōu)先隊列式分支限界法用一極小堆極小堆來存儲來存儲活結(jié)點表。其優(yōu)先級是結(jié)點所對應(yīng)的當(dāng)前路長?;罱Y(jié)點表。其優(yōu)先級是結(jié)點所對應(yīng)的當(dāng)前路長。 算法從圖算法從圖G G的源頂點的源頂點s s和空優(yōu)先隊列開始。結(jié)點和空優(yōu)先隊列開始。結(jié)點s s被擴被擴展后,它的兒子結(jié)點被依次插入堆中。此后,算法從展后,它的兒子結(jié)點被依次插入堆中。此后,算法從堆中取出具有最小當(dāng)前路長的結(jié)點作為當(dāng)前擴展結(jié)點,堆中取出具有最小當(dāng)前路長的結(jié)點作為當(dāng)前擴展結(jié)點,并依次檢查與當(dāng)前擴展結(jié)點相鄰的所有頂點。如果從并依次檢查與當(dāng)前擴展結(jié)點相鄰的所有頂點。如果從當(dāng)前擴展結(jié)點

19、當(dāng)前擴展結(jié)點i i到頂點到頂點j j有邊可達(dá),且從源出發(fā),途經(jīng)有邊可達(dá),且從源出發(fā),途經(jīng)頂點頂點i i再到頂點再到頂點j j的所相應(yīng)的路徑的長度小于當(dāng)前最優(yōu)的所相應(yīng)的路徑的長度小于當(dāng)前最優(yōu)路徑長度,則將該頂點作為活結(jié)點插入到活結(jié)點優(yōu)先路徑長度,則將該頂點作為活結(jié)點插入到活結(jié)點優(yōu)先隊列中。這個結(jié)點的擴展過程一直繼續(xù)到活結(jié)點優(yōu)先隊列中。這個結(jié)點的擴展過程一直繼續(xù)到活結(jié)點優(yōu)先隊列為空時為止。隊列為空時為止。 單源最短路徑問題單源最短路徑問題智能信息處理研究中心(RCIIP)Pan18 剪枝策略剪枝策略在算法擴展結(jié)點的過程中,一旦發(fā)現(xiàn)一個結(jié)點的在算法擴展結(jié)點的過程中,一旦發(fā)現(xiàn)一個結(jié)點的下界不小于當(dāng)前找

20、到的最短路長,則算法剪去以下界不小于當(dāng)前找到的最短路長,則算法剪去以該結(jié)點為根的子樹。該結(jié)點為根的子樹。在算法中,利用結(jié)點間的控制關(guān)系進(jìn)行剪枝。從在算法中,利用結(jié)點間的控制關(guān)系進(jìn)行剪枝。從源頂點源頂點s s出發(fā),出發(fā),2 2條不同路徑到達(dá)圖條不同路徑到達(dá)圖G G的同一頂點。的同一頂點。由于兩條路徑的路長不同,因此可以將路長長的由于兩條路徑的路長不同,因此可以將路長長的路徑所對應(yīng)的樹中的結(jié)點為根的子樹剪去。路徑所對應(yīng)的樹中的結(jié)點為根的子樹剪去。 單源最短路徑問題單源最短路徑問題智能信息處理研究中心(RCIIP)Pan19 0-1背包問題背包問題 給定給定n n種物品和一背包。物品種物品和一背包。

21、物品i i的重量是的重量是w wi i,其價值為,其價值為v vi i,背包的容量為背包的容量為C C。問應(yīng)如何選擇裝入背包的物品,使得裝。問應(yīng)如何選擇裝入背包的物品,使得裝入背包中物品的總價值最大入背包中物品的總價值最大? ? 輸入:輸入:C0, wi0, vi0, 1 in 輸出:輸出:(x1, x2, , xn), xi0, 1, 滿足滿足智能信息處理研究中心(RCIIP)Pan20 0-1背包問題背包問題 FIFO隊列式分支限界法的基本思想 實例實例 n=3n=3,C=30C=30,w=16w=16,1515,1515,p=45p=45,2525,2525可行性約束函數(shù):可行性約束函數(shù)

22、:P=45P=45 P=50P=50P=25P=25 P=25P=25P=0P=0AB,CE,F,GFIFO隊列隊列K,L,M,N,O智能信息處理研究中心(RCIIP)Pan21結(jié)點的優(yōu)先級結(jié)點的優(yōu)先級由已裝袋的物品價值加上剩下的最大單由已裝袋的物品價值加上剩下的最大單位重量價值的物品裝滿剩余容量的價值和。位重量價值的物品裝滿剩余容量的價值和。算法首先檢查當(dāng)前擴展結(jié)點的左兒子結(jié)點的算法首先檢查當(dāng)前擴展結(jié)點的左兒子結(jié)點的可行性可行性。如果該左兒子結(jié)點是可行結(jié)點如果該左兒子結(jié)點是可行結(jié)點,則將它加入到子集樹和,則將它加入到子集樹和活結(jié)點優(yōu)先隊列中?;罱Y(jié)點優(yōu)先隊列中。當(dāng)前擴展結(jié)點的右兒子結(jié)點一定是可

23、行結(jié)點當(dāng)前擴展結(jié)點的右兒子結(jié)點一定是可行結(jié)點,僅當(dāng)右兒,僅當(dāng)右兒子結(jié)點滿足上界約束時才將它加入子集樹和活結(jié)點優(yōu)先子結(jié)點滿足上界約束時才將它加入子集樹和活結(jié)點優(yōu)先隊列。當(dāng)擴展到葉節(jié)點時為問題的最優(yōu)值。隊列。當(dāng)擴展到葉節(jié)點時為問題的最優(yōu)值。 0-1背包問題背包問題 優(yōu)先隊列式分支限界法的基本思想優(yōu)先隊列式分支限界法的基本思想首先,要對輸入數(shù)據(jù)進(jìn)行預(yù)處理,將各物品依其單位首先,要對輸入數(shù)據(jù)進(jìn)行預(yù)處理,將各物品依其單位重量價值從大到小進(jìn)行排列。重量價值從大到小進(jìn)行排列。智能信息處理研究中心(RCIIP)Pan22 0-1背包問題背包問題 優(yōu)先隊列式分支限界法的基本思想 實例實例 n=3n=3,C=30

24、C=30,w=16w=16,1515,1515,p=45p=45,2525,2525 使用最大堆使用最大堆 上界上界 up = 68.38 Bound(int i)實現(xiàn)實現(xiàn)下界下界 L = 45 貪心算法實現(xiàn)貪心算法實現(xiàn) bestp為當(dāng)前最優(yōu)值,則為當(dāng)前最優(yōu)值,則 L=45 bestp up=68.38智能信息處理研究中心(RCIIP)Pan23 0-1背包問題背包問題 優(yōu)先隊列式分支限界法的基本思想優(yōu)先隊列優(yōu)先隊列 實例實例 n=3n=3,C=30C=30,w=16w=16,1515,1515,p=45p=45,2525,2525P=45P=45 P=50P=50A, level=1K, l

25、evel=450,4568.38,4568.38,4550,45B, level=2C, level=2C, level=2E, level=3F, level=3K, level=4L, level=4智能信息處理研究中心(RCIIP)Pan24 while (i != n+1) / 非葉結(jié)點非葉結(jié)點 / 檢查當(dāng)前擴展結(jié)點的左兒子結(jié)點檢查當(dāng)前擴展結(jié)點的左兒子結(jié)點 Typew wt = cw + wi; if (wt bestp) bestp = cp+pi; AddLiveNode(up, cp+pi, cw+wi, true, i+1); up = Bound(i+1); / 檢查當(dāng)前擴展

26、結(jié)點的右兒子結(jié)點檢查當(dāng)前擴展結(jié)點的右兒子結(jié)點 if (up = bestp) / 右子樹可能含最優(yōu)解右子樹可能含最優(yōu)解 AddLiveNode(up, cp, cw, false, i+1); / 取下一個擴展節(jié)點(略)取下一個擴展節(jié)點(略) 0-1背包問題背包問題 分支限界搜索過程分支限界搜索過程智能信息處理研究中心(RCIIP)Pan25 0-1背包問題背包問題 分支限界搜索過程分支限界搜索過程 實例實例 (1)(1)物品個數(shù)為物品個數(shù)為 n=4n=4 (2)(2)背包的容量為背包的容量為 C=7C=7 (3)(3)物品的重量分別為物品的重量分別為 w=3w=3,5 5,2 2,11 (4

27、)(4)物品的價值分別為物品的價值分別為 p=9p=9,1010,7 7,44智能信息處理研究中心(RCIIP)Pan26 裝載問題裝載問題有一批共有一批共n n個集裝箱要裝上個集裝箱要裝上2 2艘載重量分別為艘載重量分別為c c1 1和和c c2 2的輪船,的輪船,其中集裝箱其中集裝箱i i的重量為的重量為w wi i,且,且裝載問題裝載問題確定是否有一個合理的裝載方案可將這確定是否有一個合理的裝載方案可將這n n個集裝箱裝上這個集裝箱裝上這2 2艘艘輪船。如果有,找出一種裝載方案。輪船。如果有,找出一種裝載方案。容易證明,如果一個給定裝載問題有解,則采用下面的策略容易證明,如果一個給定裝載

28、問題有解,則采用下面的策略可得到最優(yōu)裝載方案??傻玫阶顑?yōu)裝載方案。(1)(1)首先將第一艘輪船盡可能裝滿;首先將第一艘輪船盡可能裝滿;(2)(2)將剩余的集裝箱裝上第二艘輪船。將剩余的集裝箱裝上第二艘輪船。智能信息處理研究中心(RCIIP)Pan27 隊列式分支限界法隊列式分支限界法 在算法的在算法的whilewhile循環(huán)中,首先檢測當(dāng)前擴展結(jié)點的左兒子循環(huán)中,首先檢測當(dāng)前擴展結(jié)點的左兒子結(jié)點是否為可行結(jié)點。如果是則將其加入到活結(jié)點隊列結(jié)點是否為可行結(jié)點。如果是則將其加入到活結(jié)點隊列中。然后將其右兒子結(jié)點加入到活結(jié)點隊列中中。然后將其右兒子結(jié)點加入到活結(jié)點隊列中( (右兒子結(jié)右兒子結(jié)點一定是

29、可行結(jié)點點一定是可行結(jié)點) )。2 2個兒子結(jié)點都產(chǎn)生后,當(dāng)前擴展個兒子結(jié)點都產(chǎn)生后,當(dāng)前擴展結(jié)點被舍棄。結(jié)點被舍棄。 裝載問題裝載問題智能信息處理研究中心(RCIIP)Pan28while (true) / 檢查左兒子結(jié)點檢查左兒子結(jié)點 if (Ew + wi = c) / xi = 1 EnQueue(Q, Ew + wi, bestw, i, n); / 右兒子結(jié)點總是可行的右兒子結(jié)點總是可行的 EnQueue(Q, Ew, bestw, i, n); / xi = 0 Q.Delete(Ew); / 取下一擴展結(jié)點取下一擴展結(jié)點 裝載問題裝載問題 隊列式分支限界法智能信息處理研究中心(

30、RCIIP)Pan29 裝載問題裝載問題 算法的改進(jìn)算法的改進(jìn) 節(jié)點的左子樹表示將此集裝箱裝上船,右子樹表示不將節(jié)點的左子樹表示將此集裝箱裝上船,右子樹表示不將此集裝箱裝上船。此集裝箱裝上船。設(shè)設(shè)bestwbestw是當(dāng)前最優(yōu)解;是當(dāng)前最優(yōu)解;ewew是當(dāng)前擴展結(jié)點所相應(yīng)的重量;是當(dāng)前擴展結(jié)點所相應(yīng)的重量;r r是剩余集裝箱的重量。則當(dāng)是剩余集裝箱的重量。則當(dāng)ew+rew+r bestwbestw時,可將其右子時,可將其右子樹剪去,因為此時若要船裝最多集裝箱,就應(yīng)該把此箱樹剪去,因為此時若要船裝最多集裝箱,就應(yīng)該把此箱裝上船。裝上船。 另外,為了確保右子樹成功剪枝,應(yīng)該在算法每一次進(jìn)另外,為了

31、確保右子樹成功剪枝,應(yīng)該在算法每一次進(jìn)入左子樹的時候更新入左子樹的時候更新bestwbestw的值。的值。智能信息處理研究中心(RCIIP)Pan30/ 檢查左兒子結(jié)點檢查左兒子結(jié)點 Type wt = Ew + wi; / 左兒子結(jié)點的重量左兒子結(jié)點的重量 if (wt bestw) bestw = wt; / 加入活結(jié)點隊列加入活結(jié)點隊列 if (i bestw & i n) Q.Add(Ew); / 可能含最優(yōu)解可能含最優(yōu)解 Q.Delete(Ew); / 取下一擴展結(jié)點取下一擴展結(jié)點右兒子剪枝右兒子剪枝 裝載問題裝載問題 算法的改進(jìn)智能信息處理研究中心(RCIIP)Pan31

32、裝載問題裝載問題 構(gòu)造最優(yōu)解構(gòu)造最優(yōu)解為了在算法結(jié)束后能方便地構(gòu)造出與最優(yōu)值相應(yīng)的最為了在算法結(jié)束后能方便地構(gòu)造出與最優(yōu)值相應(yīng)的最優(yōu)解,算法必須存儲相應(yīng)子集樹中從活結(jié)點到根結(jié)點優(yōu)解,算法必須存儲相應(yīng)子集樹中從活結(jié)點到根結(jié)點的路徑。為此目的,可在每個結(jié)點處設(shè)置指向其父結(jié)的路徑。為此目的,可在每個結(jié)點處設(shè)置指向其父結(jié)點的指針,并設(shè)置左、右兒子標(biāo)志。點的指針,并設(shè)置左、右兒子標(biāo)志。找到最優(yōu)值后,可以根據(jù)找到最優(yōu)值后,可以根據(jù)parentparent回溯到根節(jié)點,找到回溯到根節(jié)點,找到最優(yōu)解。最優(yōu)解。 智能信息處理研究中心(RCIIP)Pan32 裝載問題裝載問題 優(yōu)先隊列式分支限界法優(yōu)先隊列式分支限

33、界法解裝載問題的優(yōu)先隊列式分支限界法用最大優(yōu)先隊列解裝載問題的優(yōu)先隊列式分支限界法用最大優(yōu)先隊列存儲活結(jié)點表?;罱Y(jié)點存儲活結(jié)點表?;罱Y(jié)點x x在優(yōu)先隊列中的優(yōu)先級定義在優(yōu)先隊列中的優(yōu)先級定義為從根結(jié)點到結(jié)點為從根結(jié)點到結(jié)點x x的路徑所相應(yīng)的載重量再加上剩的路徑所相應(yīng)的載重量再加上剩余集裝箱的重量之和。余集裝箱的重量之和。優(yōu)先隊列中優(yōu)先級最大的活結(jié)點成為下一個擴展結(jié)點。優(yōu)先隊列中優(yōu)先級最大的活結(jié)點成為下一個擴展結(jié)點。以結(jié)點以結(jié)點x x為根的子樹中所有結(jié)點相應(yīng)的路徑的載重量為根的子樹中所有結(jié)點相應(yīng)的路徑的載重量不超過它的優(yōu)先級。不超過它的優(yōu)先級。在優(yōu)先隊列式分支限界法中,一旦有一個葉結(jié)點成為在優(yōu)

34、先隊列式分支限界法中,一旦有一個葉結(jié)點成為當(dāng)前擴展結(jié)點,則可以斷言該葉結(jié)點所相應(yīng)的解即為當(dāng)前擴展結(jié)點,則可以斷言該葉結(jié)點所相應(yīng)的解即為最優(yōu)解。此時可終止算法。最優(yōu)解。此時可終止算法。 智能信息處理研究中心(RCIIP)Pan33 旅行售貨員問題旅行售貨員問題 問題描述問題描述給定給定n n個頂點的帶權(quán)圖個頂點的帶權(quán)圖G=(V, E),G=(V, E),圖中各邊的權(quán)為正數(shù),圖圖中各邊的權(quán)為正數(shù),圖中的中的一條周游路線一條周游路線是包括是包括V V中的每個頂點在內(nèi)的一條回路,中的每個頂點在內(nèi)的一條回路,一條周游路線的費用一條周游路線的費用是這條路線上所有邊的權(quán)之和。是這條路線上所有邊的權(quán)之和。 旅

35、行商問題旅行商問題( (Traveling Salesperson) )是要在圖是要在圖G G中找出一中找出一條有最小費用的周游路線。此問題是條有最小費用的周游路線。此問題是NPNP完全問題。完全問題。智能信息處理研究中心(RCIIP)Pan34 旅行售貨員問題旅行售貨員問題 實例FIFO隊列式AB1C2F3L4G4M3DH2N4I4O2EJ2P3K3Q2341342306105420C,D,EC,D,EF,G,H,I,J,KF,G,H,I,J,KB BL,M,N,P,QL,M,N,P,Q5959666625252626智能信息處理研究中心(RCIIP)Pan35 旅行售貨員問題旅行售貨員問題 實例優(yōu)先隊列式(1)AB1C2DH2N4EJ2K3341342306105420E E,D,C,D,CB B2525J J,K,K,N N,I,C,I,CK K, ,N N,I,C,I,CN N,I,C,I,CI4D D,J,K,J,K,CH H,J,K,I,C,J,K,I,C智能信息處理研究中心(RCIIP)Pan36 旅行售貨員問題旅行售貨員問題 實例優(yōu)先隊列式(2)1342306105420AB1C2DH2N4EJ2P3K33425252525I4智能信息處理研究中心(RCIIP)Pan37 旅行售

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論