

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第6章 分支限界法,分支限界法原理與算法框架 — 分支限界法 vs 回溯法應用范例(1)旅行商問題(2)單源最短路徑問題(3)0-1背包問題應用范例(略)(4)多段圖最短路徑(5)裝載問題(6)批處理作業(yè)調(diào)度問題,6.1分支限界法原理,與回溯法類似,一種基于解空間搜索的問題求解策略回溯法原理:1)利用某種數(shù)據(jù)結構——解向量,形式化地表示問題解 e.g. n個城市旅行商問題(TSP)
2、 解向量表示為長度為n的向量x[1:n]=2)問題的各種解組成了問題解空間——最優(yōu)解、次優(yōu)解/可行 解、錯誤/不可行解、部分解,3)問題解應滿足各種約束約束,包括: 顯約束:對解空間中分量xi的取值限定 e.g. TSP xi ∈{1,2,3,…,n} 隱約束:為滿足問題的解而對不同分量之間施加的約束 e.g. TSP,各個城市只
3、能遍歷一次4)解空間中各個解根據(jù)相互間關系 和解的構造順序,組成解空間樹,,e.g. 4個城市的旅行商問題,,1) 非葉結點對應部分解2)葉節(jié)點對應最優(yōu)解、可行解,5)對解空間中的解,引入定量指標,作為優(yōu)化依據(jù) e.g. 旅行商問題:旅游路徑總長最短6)問題求解過程——帶有回溯的深度優(yōu)先樹搜索 以深度優(yōu)先的方式,從樹根結點開始,依次擴展樹結點,直到達到葉結點——搜索過程中動態(tài)產(chǎn)生解空間
4、— 深度優(yōu)先目的:盡可能快地獲得可行解,,,,擴展過程中,碰到可行非葉結點(部分解),可進一步擴展 e.g. 結點C對應部分解 可進一步擴展為: F= G= ,碰到不可行非葉/葉結點(不可行(部分)解),需要返回到上一層結點——回溯 e.g. 對C結點,下一步的擴展有4種可能選擇:3、4、1、2,每種選擇都可以繼續(xù)擴展子樹;但只有其中2種選擇是合理的,對后2種選擇不再繼續(xù)擴展,而是返回C結點,4
5、,7)為了提高搜索效率,用剪枝函數(shù)(面向具體問題)避免無效搜索,即避免不可行解對應的子樹或結點e.g. 剪枝條件/約束1: 如果當前正在考慮的頂點j與當前路徑中的末端結點i沒有邊相連,即w[i, j]= ∞, 則不必搜索j所在分支 E.g. 當前已有的部分路徑為, ,路徑末端結點為2, 下一步可考慮將頂點3、4加入到部分路徑中。 但是,頂點2與4間無邊,w(2,4)= ∞, 因此在解空間樹中,可以不必考慮頂點4
6、所在分支,剪枝條件2:假設:已經(jīng)知道直到第i-1層的部分解 ,從第i-1層結點選擇頂點x[i],并向該分支往下搜索的界限函數(shù)為: B(i) = cw(i-1) + w(x[i-1], x[i]) 由此得到剪枝/約束條件2: 如果B(i) ≥ bestw, 則停止搜索x[i]分支及其下面的層 ,其中,bestw代表到目前為止,在前面的搜索中,從其
7、它已經(jīng)搜索過的路徑中,找到的最佳回路的權和(總長度),分支限界法(branch and bound)原理:1)按寬度優(yōu)先策略遍歷解空間樹。2)在遍歷過程中,對處理的每個結點vi,根據(jù)界限函數(shù),估計沿該結點向下搜索所可能達到的完全解的目標函數(shù)的可能取值范圍—界限bound(vi)=[downi, upi]3)從中選擇使目標函數(shù)取的極值(最大、最?。┑慕Y點優(yōu)先進行寬度優(yōu)先搜索,從而不斷調(diào)整搜索方向,盡快找到問題解關鍵:各結點的界限
8、函數(shù)bound(vi)=[downi, upi], 依據(jù)具體問題而定e.g. 4個城市的TSP搜索樹中的界限函數(shù),bound(G),bound(D),bound(E),子樹,子樹,子樹,一、與回溯法類似,解向量、解空間、解空間樹二、解空間樹中的結點分為4種類型 活結點,死結點,擴展結點,待處理結點,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,擴展結點,,未處理結點,— 活結點
9、 當前滿足約束條件、未來有可能產(chǎn)生最優(yōu)解的結點; 對應部分解, e.g. 結點G、D、E 所有活結點組成活結點表ANT (Alive Node Table),— 擴展結點 從活結點表ANT中取出來,當前準備進行擴展的結點,即當前進行處理的結點 1)評估每個活結點價值,按照價值最大化/最小化原則,從 ANT中選取擴展結點 e_node 2)e_n
10、ode擴展方式: 寬度優(yōu)先,生成e_node的全部子節(jié)點; 評估這些子節(jié)點,滿足界限約束、有可能產(chǎn)生更優(yōu)解的 結點被作為活結點,加入ANT;不滿足約束、或無法產(chǎn)生 最優(yōu)解的子節(jié)點被舍棄——剪枝 3) e_node結點被擴展后,該結點轉(zhuǎn)換為死結點,以后將不會 被再搜索 活結點?擴展結點?死結點,e.g. 如下圖
11、i) 從上圖中的3個活結點G、D、E中,選擇價值最大的結點D,作為擴展結點,ii) 生成D的全部2個子結點H、I,經(jīng)評估后,作為活結點加入 ADT表中iii) D變?yōu)樗澜Y點,B,C,F,E,L,,,,,2,3,4,4,A,,1,,4,G,,3,,,,,第1步,第2步,第3步,第4步,H,I,,,D,,,,,,,2,4,— 死結點: 1)已經(jīng)處理過(搜索過)、不再處理的結點; e.g. A, B, C, F, L 2
12、)不滿足約束條件、無法產(chǎn)生最優(yōu)解的結點. e.g. 結點G, 對應部分解, 而 w(4,3)=∞,— 未處理結點 解空間樹中位于活結點之下,還沒有被搜索/處理到、不屬于上述三類結點的其它結點 在后續(xù)的搜索過程中,通過結點擴展會逐步生成,三、解空間樹的擴展 選定擴展結點e_node,生成其全部子結點——采取寬度優(yōu)先進行擴展 e.g. 結點D對應于,考察它的2個子結點和,四、對擴展結點e_n
13、ode,生成其全部兒子結點后,判斷評估每個兒子結點: i) 是否滿足約束條件。如不滿足,則作為死結點 ii)估算沿著兒子結點向下搜索時,目標函數(shù)可能取得的“界”,即沿著兒子結點向下構造出的最終解可能取得的目標函數(shù)的范圍; -極大化目標,估計子節(jié)點目標函數(shù)上界 -極小化目標,估計子節(jié)點目標函數(shù)下界 iii)將全部活結點組織在活結點表ANT中 利用活結點的“界”值,對活結點進行價值評
14、估——是否有可能得到最優(yōu)解? 關鍵:目標函數(shù)——界限函數(shù)??!,五、擴展結點e_node選取 擴展樹時,需要從活結點表ANT中選取合適的活結點,將其轉(zhuǎn)化為擴展結點e_node 1) 對最小化問題(如TSP),選取具有最小“界”的活結點 e.g. 前圖中,部分解D的最小界:經(jīng)過D的最短路徑長度至少(下界)是多少 2) 對最大化問題(如背包問題),選取具有最大“界”的活結點,物品裝入方案的最大價值
15、 e.g. 3) 當?shù)竭_1個葉結點時,得到1個可行解,該可行解對應的最優(yōu)值bound(x1,x2,…,xn)可作為當前最優(yōu)解的1個“界”,六、結點界限函數(shù)及剪枝 進行結點/樹擴展時,利用界限函數(shù)估計每個結點可能達到的最優(yōu)解,進行剪枝 1) 估計e_node的每個兒子結點ci的“界”bound(ci) -極大化目標,估計子結點目標函數(shù)上界 -極小化目標,估計子結點目標函數(shù)下界 2)
16、 比較bound(ci)與活結點表ANT中現(xiàn)有活結點*的最優(yōu)界限值bound(*) — 對最小化問題,e.g. 最短路徑,如果bound(ci) > bound(*),沿ci搜索得到可行解不可能小于目前已經(jīng)得到的最優(yōu)解,則結點ci不應加入活結點表——剪枝,不考慮該結點,e.g. 已知 的路徑總和=20;結點G對應如果路徑1-2-4的總長=21,則結點G被舍棄— 對最大化問題, e.g. 背包問題
17、,如果bound(ci) < bound(*),沿ci搜索得到可行解不可能大于目前已經(jīng)得到的最優(yōu)解,則結點ci不應加入活結點表——剪枝,不考慮該結點,分支限界法算法框架— 以最大化問題為例,e.g. 背包問題1. 選擇根節(jié)點v0,根據(jù)限界函數(shù)bound,估計根節(jié)點的目標函數(shù)上下界bound(v0), 確定目標函數(shù)的界[down, up]2. 將活結點表ANT初始化為空3. 生成根結點v0的全部子結點-寬度優(yōu)先;對每個子
18、結點x,執(zhí)行以下操作 3.1 估算x的目標函數(shù)值(上界) bound(x) 3.2 若 (bound(x)>= down),將x加入ANT表 /* 對最大化問題,要求沿x分支搜索到的完全解的目標值(上界)估計必須大于現(xiàn)有已知的目標函數(shù)的下界down,循環(huán),直到某個葉結點的目標函數(shù)值在表ANT中最大 /* 找到1個具有最大值的完全
19、解 4.1 從表ANT中選擇bound(vi)值最大的結點vi ,擴展其子結點 /* 從活結點表中,選擇1個具有最大可能目標值的擴展結點vi 4.2 對結點vi的每個子結點c,執(zhí)行下列操作 4.2.1 估算c的目標函數(shù)值bound(c)-上界 4.2.2 如果(bound(c)>= down),將c加入ANT表
20、 /*子結點c有可能產(chǎn)生更優(yōu)的解,將其加入活結點 表,以后考慮對其進行擴展 4.2.3 如果(c是葉結點 and bound(c)在表ANT中最大), 則將結點c對應的完全解輸出,算法結束 /* 結點c對應了1個新找到的、具有最大目標
21、 函數(shù)值的完全解——最優(yōu)解,4.2.4 如果(c是葉結點 and bound(c)在表ANT中不是最 大),則: /*結點c對應了1個新找到的完全解,但該完全解的目標 函數(shù)值與已經(jīng)找到的、或未來可能找到完全解相比,并非更優(yōu)
22、 i) 令down = value(c) /*利用新找到的完全解的實際目標函數(shù),更新問題的下界 ii) 對表ANT中所有滿足bound(vj)< bound(c)的結點vj, 從表ANT中刪除該結點?。。?/* 利用新找到的完全解的目標函數(shù)bou
23、nd(c) ,進行剪枝,從ANT 表中去掉那些目標函數(shù)值不可能大于結點c的bound(c)的結點vj, 即去掉那些目標函數(shù)值小于由于當前新找到的完全解c的目標值 bound(c)的結點,分支限界法是一種高效、通用的問題求解方法。此方法發(fā)明者曾獲計算機界最高獎項圖靈獎。分支限界法
24、三個關鍵技術1. 如何確定合適的限界函數(shù) 面向具體問題而定2. 如何合理組織活結點表——決定了結點擴展順序 1)FIFO隊列:按照先進先出(FIFO)原則,選取下一個節(jié)點為擴展節(jié)點 2)優(yōu)先隊列:按照優(yōu)先隊列中規(guī)定的優(yōu)先級選取優(yōu)先級最高的節(jié)點,成為當前擴展節(jié)點。 3)堆,3. 如何確定最優(yōu)解中的各個分量 對解空間樹中的結點處理是根據(jù)結點的bound值進行的,
25、有可能是跳躍式的,回溯也不是單純沿著雙親結點一層層向上回溯。因此,當在某個葉結點上搜索到全局最優(yōu)值時,有可能無法得到組成該最優(yōu)解的各個分量。 為此,可采用下述處理方法: 1)對每個擴展結點,保存從根結點到該結點的路徑 2)在搜索過程中,構建搜索經(jīng)過的樹結構。當求得最優(yōu)解后,從葉結點回溯到根結點,得到最優(yōu)解各個分量 問題:用于存儲搜索樹的存儲空間可能會很大,增大了算法的空間復雜性,B,C,F,D,L
26、,,,,,2,3,4,4,A,,1,,4,G,,3,E,,,,,,,H,I,,,2,4,,,根據(jù)活結點表中各節(jié)點具體bound值,先處理D,后處理E,基本符合寬度優(yōu)先序序,根據(jù)活結點表中各節(jié)點具體bound值,先處理E,后處理D,不符合寬度優(yōu)先序序,分支限界法 vs 回溯法,求解目標: 回溯法的求解目標是找出解空間樹中滿足約束條件的所有(??或多個)解,而分支限界法的求解目標則是找出滿足約束條件的一個解,或是在滿足
27、約束條件的解中找出在某種意義下的最優(yōu)解。,2. 搜索方式的不同:回溯法以深度優(yōu)先的方式搜索解空間樹,而分支限界法則以廣度優(yōu)先或以最小耗費優(yōu)先的方式搜索解空間樹。,3. 解空間樹的擴展 對擴展結點e_node,生成其全部子結點——采取寬度優(yōu)先或以最小耗費(最大效益)優(yōu)先進行擴展,需要維護活結點表,因此占用的空間比回溯法大,但計算速度一般比回溯法快——以空間換時間??!,此后,從活結點表中取下一結點成為當前擴展結點,并重復上述結點擴
28、展過程。這個過程一直持續(xù)到找到所需的解或活結點表為空時為止。,在分支限界法中,每一個活結點只有一次機會成為擴展結點?;罱Y點一旦成為擴展結點,就一次性產(chǎn)生其所有兒子結點。在這些兒子結點中,導致不可行解或?qū)е路亲顑?yōu)解的兒子結點被舍棄,其余兒子結點被加入活結點表中。,6.2最短路徑問題,問題描述: 在下圖所給的有向圖G中,每一邊都有一個非負邊權。 要求:求出從源點s到目標點t之間的最短路徑。,用優(yōu)先隊列式分支限界
29、法,解空間樹:1) 樹中邊上的字母代表每一步經(jīng)過的結點間路徑2)樹節(jié)點上的數(shù)字表示從源點s到該結點所對應的當前路長3)以經(jīng)歷過的邊表示路徑e.g. 以圖中頂點表示的路徑s-1-2-5, 邊表示的路徑s —a:u:f,,,算法思想,1. 解空間樹中的結點v 對應1條從源點s到圖中某個頂點的路徑;葉節(jié)點對應1條s到目標點t的路徑; 每個結點v需要記錄本路徑從s開始、經(jīng)過的全部邊或頂點 e.g. 樹結點,當前路長14,
30、對應的路徑s —a:u:f,,各樹結點v的限界函數(shù) 1)上界up:可利用貪心法,求出1個上界 方法:每步選擇離當前結點最近的下一結點 書上沒有給出每條邊的長度?! 2) dist(v)—下界 樹結點所對應路徑的長度:從源點s至路徑中最后一個頂點的總長 e.g. 對以頂點表示的路徑s-1-2-5, 或以 邊表示的路徑s —a:u:f,對應的樹中結點?(紅色),dist(?
31、)=143. 活結點表的組織 組織為極小堆,其優(yōu)先級/目標函數(shù)是結點所對應的當前路徑長度dist,說明:教科書上的下界函數(shù)只考慮了當前部分路徑的現(xiàn)有長度,沒有考慮未來結點可能帶來的路徑長度,下界函數(shù)不準確e.g. 對部分路徑s→1 → 2 → 5, 書上給出的下界值/優(yōu)先級/目標函數(shù)只是取為當前路徑長度14; 但顯然對該部分解,不管從結點5向后如何走,下界值肯定比14大,,4. 搜索過程1)從源頂點s、空優(yōu)先隊
32、列開始,首先選擇s作為擴展結點2)結點s被擴展后,它的兒子結點被依次插入活結點表——堆中3)從堆中取出優(yōu)先級最高(即:dist(v)/目標函數(shù)/下界最?。┑臉浣Y點v,作為當前擴展結點 —v對應的路徑為s-i1-i2-…-ik — 與堆中其它結點相比,該路徑的長度dist(v)最小 e.g. 見下頁,堆中有3個活結點,對應了三條路徑s-1-2-5、s-1-5-6-9、s-2,路徑長度dist分別為14、6、3
33、 應選擇dist最小的路徑s-2,即原圖中的城市頂點2應作為擴展結點,,,,,,,,,,,,,,4) 生成擴展結點的子結點 在G (V,E)中,依次檢查與當前擴展結點相鄰的所有頂點。 e.g. 如果城市頂點2被選為擴展結點,則需要考察經(jīng)過邊f(xié)、g可到達的城市頂點5、65) 考察各子結點是否可作為活結點——是否有必要進一步擴展? 如果 i) 從當前選擇的擴展城市頂點i到它的鄰接城市頂點j有邊
34、可達,并且 ii) 從源s出發(fā),途經(jīng)城市頂點i再到頂點j的所相應的路徑的長度小于當前已經(jīng)得到的最優(yōu)路徑長度(或問題上界up), 即: dist(i) + distance(i, j) < mindist (或問題上界up),則將s到城市頂點j的路徑在解空間樹中所對應樹結點作為活結點,插入到活結點優(yōu)先隊列中,e.g. 考察下圖 假設當前得到的最優(yōu)路徑為s-2-6-9-t, mind
35、ist=8; 樹結點6(對應路徑 s-3-6,城市頂點6 )被選為擴展結點,經(jīng)過邊l、m可分別到達的城市頂點8、9,對應了樹結點11、76,在樹中分別對應左、右2個子結點:— 左子節(jié)點表示路徑s-3-6-8,對應了樹結點11 ,dist=11 > mindist=8, 被剪枝舍棄— 右子結點表示路徑s-3-6-9,dist=7 < mindist=8 因此,右子樹結點7(路徑s-3-6-9)可以作為活結點
36、加入表中,后續(xù)繼續(xù)擴展搜索;而左子樹結點11(路徑s-3-6-8 )可以舍棄,在搜索樹中變?yōu)樗澜Y點,e.g. 假設當前得到的最優(yōu)路徑為s-1-5-6-9, mindist=6,,1,2,3,4,5,6,7,8,9,,,,,,,,,,,,,,,,,,,,,,×,,6) 上述擴展過程一直繼續(xù)到活結點優(yōu)先隊列為空時為止4. 剪枝策略1 結點擴展的過程中,一旦發(fā)現(xiàn)一個結點的下界不小于當前找到的最短路長mindist,則算法剪去
37、以該結點為根的子樹e.g. 見下圖:1)當前得到的最優(yōu)路徑為s-b:g:m:p,即s-2-6-9-t, mindist=8, 在樹中對應1個葉節(jié)點. 對該葉結點左邊(先生成)的結點j,只要dist(j)>=8, 結點j就成為死結點; 只有dist(j)<8的結點才作為活結點保留下來。2)對樹中的3條路徑s-b:g:l、s-b:f、s-c:h:l,長度分別為10、12、11,均大于當前mindist=8, 因
38、此3個結點下的子樹被剪枝,e.g. 假設當前得到的最優(yōu)路徑為s-1-5-6-9, mindist=6,,1,2,3,4,5,6,7,8,9,,,,,,,,,,,,,,,,,,,,,,,,,,策略2:利用結點間的控制關系進行剪枝。 從源頂點s出發(fā),2條不同路徑到達圖G的同一頂點。由于兩條路徑的路長不同,因此可以將路長長的路徑所對應的樹中的結點為根的子樹剪去e.g. 下圖中, 2條路徑s-b:g:l、s-c:h:
39、l,長度分別為10、11,均到達城市結點8,因此可以舍棄長度=11的路徑s-c:h:l所對應的子樹,e.g. 假設當前得到的最優(yōu)路徑為s-1-5-6-9, mindist=6,,1,2,3,4,5,6,7,8,9,,,,,,,,,,,,,,,,,,,,算法代碼框架,while (true) { for (int j = 1; j N; N.i=j; N.length=dist[j];
40、 H.Insert(N);} try {H.DeleteMin(E);} // 取下一擴展結點 catch (OutOfBounds) {break;} // 優(yōu)先隊列空 }},頂點I和j間有邊,且此路徑長小于原先從原點到j的路徑長,旅行商TSP問題,本問題關鍵: 如何估計TSP最優(yōu)解的上下界,(a)5個頂點的無向圖,(b)代價矩陣C表示各城市間的距離,代價矩陣特點:每
41、條滿足要求的回路在代價矩陣中的每一行每一列有且只有1個元素與之對應(n后問題)。e.g. 回路1→3 → 5 → 4 → 2 → 1,對應于C中的 c13, c35, c54, c42, c21,,,,,,,TSP問題的上下界,1.利用貪心法計算上界 以起始城市1作為出發(fā)城市,每次從當前出發(fā)城市發(fā)出的多條邊中,選擇沒有遍歷過的最短邊連接的城市,作為下一步達到城市。
42、 即:選擇離當前出發(fā)城市最近的城市作為下一步出發(fā)城市 e.g. 從城市1出發(fā), 途徑1→3 → 5 → 4 → 2 → 1路徑長度=1+2+3+7+3=16作為上界,即最短路徑長度≤16,2. !! TSP 下界lb下界1:矩陣中每一行的最小元素相加,其路徑長度為 1 + 3 + 1 +3 + 2 = 10, 說明:最小元素代表每一步可能走的最短距離下界2(信息量更大): 1) 在一條路
43、徑上,每個城市有2條鄰接邊:進入該城市、離開該城市; 2) 將矩陣中每一行最小的2個元素相加除以2,并向上取整,就得到一個合理下界 解釋:對每一步經(jīng)過的城市j,從最近的上一個城市i來,再到下一個最近城市k去,即i→j→k,e.g. 對上圖所示TSP,其最短路徑下界 lb={(1+3) + (3+6) + (1+2) + (3+4) + (2+3)}/2 =14
44、 因此,以最短路徑長度dist作為TSP問題目標函數(shù),則dist的界為 [14, 16]. 在問題求解過程中,如果1個部分解的目標函數(shù)dist下界(e.g.18)超出此界限(上界16),則該部分解對應了死結點,可剪枝。,,部分解目標函數(shù)下界計算,對于1條正在生成的路徑/部分解,已經(jīng)確定的頂點(已經(jīng)經(jīng)過/遍歷的城市)集合為 U=(r1, r2, …, rk) , 該部分解的目標函數(shù)的下界為:,//*已經(jīng)經(jīng)過的路徑的總長
45、的2倍,//*從當前已經(jīng)走過的城市出發(fā),走向最近的1個未遍歷城市的距離和,//* 進入/離開未遍歷城市時,各未遍歷城市帶來的最小路徑成本,E.g. 假設 正在生成的路徑/部分解為1→4, U={1,4},未遍歷城市={2,3,5},該部分解下界為lb ={ 2*已經(jīng)歷過的路徑總長 + 從城市1到最近未遍歷城市的距離 + 從城市4到最近未遍歷城市的距離 + 進入/離開城市2帶來的最小成本
46、 + 進入/離開城市3帶來的最小成本 + 進入/離開城市5帶來的最小成本 } /2 = { 2*5 + 1 + 3 + (3+6) + (1+2) + (2+3) } / 2= 16 (向上取整),用分支限界求解,搜索空間樹如下圖所示:1. TSP問題完全解界限[14, 16]2. 最優(yōu)解為1→3 → 5 → 4 → 2 → 1,最短路徑長度=1+2+3+7+3=163.
47、樹結點編號對應了結點擴展順序,即搜索順序4. ×表示被丟棄的死結點,其余為活結點搜索過程:Step1. 在根結點1處,U=空, 計算本問題的可能下界 lb = { 2*已經(jīng)歷過的路徑總長 + 進入/離開城市1帶來的最小成本 + 進入/離開城市2帶來的最小成本
48、 + 進入/離開城市3帶來的最小成本 + 進入/離開城市4帶來的最小成本 + 進入/離開城市5帶來的最小成本} /2 = { 2*0 + 0 + (1+3) + (3+6) + (1+2) +
49、(3+4) + (2+3) } /2 = 14,TSP問題完全解界限[14, 16],1. 樹結點編號對應了結點搜索/生成順序2. ×表示被丟棄的死結點,Step2. 以結點1為擴展結點,依次生成樹結點2,3,4,5;Step3. 計算這4個結點的lb: lb(2)= lb(3)=14, lb(4)=16,均小于 等于問題上界16,因此結點2、3、4
50、 加入活結點表; 對結點5,已遍歷城市U={1,5} lb(5) = { 2*已經(jīng)歷過的路徑1 → 5總長 + 從城市1到最近未遍歷城市3的距離 + 從城市5到最近未遍歷城市3的距離 + 進入/離開城市2帶來的最小成本
51、 + 進入/離開城市3帶來的最小成本 + 進入/離開城市4帶來的最小成本 } /2 = { 2*8 + 1 + 2 + (3+6) + (1+2) + (3+4) } /2 = 19 lb(5)>問題上界1
52、6,樹結點5被作為死結點舍棄,Step4.從當前活結點表ANT={2,3,4}中,以lb為依據(jù),并兼顧結點生成順序,選取lb最小的結點2作為擴展結點,生成結點6、7、8; 計算這3個結點的lb, lb(6)= lb(7)=16, lb(8)=19; 舍棄結點8,將結點6、7加入活結點表, 變?yōu)锳NT={3,4, 6,7}Step5. 從ANT中,選擇 lb最小的結點3擴展,生成結點9、10、11,Step6. 按照
53、上述方法,依次擴展搜索樹,得到最優(yōu)解 1→3 → 5 → 4 → 2 → 1,最短路徑長度=1+2+3+7+3=16 TSP問題分支限界法算法描述: 數(shù)組x[1:n]存儲搜索路徑上的樹頂點,1. 采用貪心法,計算上界up; 根據(jù)目標函數(shù)公式,計算下界down2. 將活結點表ANT初始化為空3. for ( i=1; i =1) 5.1 i=k+1; 5.2
54、 x[i]=1; 5.3 while (x[i] <= n) 5.3.1 如果路徑上城市頂點不重復,則 5.3.1.1 計算x[i]的下界lb 5.3.1.2 if (lb < up), 將路徑上的頂點和lb值存入活結 點表ANT
55、 5.3.2 x[i] = x[i] + 1,5.4 如果i==n, 并且葉子結點的目標函數(shù)值在表ANT中最小, 則將該葉結點對應的最優(yōu)解輸出 5.5 否則,若i==n,則從ANT中取葉子結點的目標函數(shù)值最 小結點的lb,令up=lb,刪除ANT表中目標函數(shù)值lb超出 up的結點 5.6 k=表ANT中l(wèi)b最小的路徑上
56、的頂點個數(shù),65,0-1背包問題,問題: 4個物品,重量分別為(4,7,5,3 ),容量C=10 價值(40,42,25,12) 按照單位價值最大化排序:,66,搜索樹 二分搜索樹,依次考慮物品1、2、3、4是否放入 k=0層:對應根節(jié)點,不放入任何物品 k>1層:考慮第i個物品,左分支—放入,右分支—不放入,,,1,2,67,限界函數(shù)(最大化問題) 下界down:貪心法,
57、 第1個可裝入的、具有最大價值/重量比的物品所具 有的價值,(1,0,0,0) , down=40 上界up:背包中全部裝入第1個物品,且裝滿, up=10*10=100 問題限界[40,100]對第k層結點,代表了對物品1—i作出的選擇,假設已經(jīng)裝入的物品重量為w,獲得的價值為v該結點的限界函數(shù)ub: 已裝入背包中物品取得的價值v + 背包剩余容
58、量(C-w)*剩余物品中的最大單位重量價值,68,問題完全解界限[40, 100],,,1,1,1,2,3,,,4,5,無效死結點(w>C),,,6,7,無效死結點(w>C),9,,,8,剪枝條件: ub <40,,物品2單位價值,,物品3單位價值,物品4單位價值,,物品4單位價值,,69,說明:死結點:裝入的物品超出背包容量C=10,如結點4、82. 當結點9生成后,得到1個完全解,其價值v=65。 此時
59、,活結點表中還有結點3、7,但由于結點3、7的ub分別為60、64,均已經(jīng)小于結點9的價值v=65, 因此,結點3、7沒有必要再進一步擴展,被剪枝;活結點表為空,算法結束。,6.3多段圖最短路徑問題,問題描述: 在帶權有向連通圖G=(V,E)中,將頂點集V劃分為k個互不相交子集Vi(2≤k ≤ n, 1≤ i ≤ k),使得對E中任何一條邊(u, v),必有u∈Vi,v ∈ Vi+m ( 1≤ i ≤ k, 1≤
60、 i + m ≤ k )。 稱G為多段圖,s ∈ V1為起點,t ∈ Vk為終點。要求:求出從源點s到目標點t之間的最短路徑。,問題的上下界,1.利用貪心法計算上界 以起始城市1作為出發(fā)城市,每次從當前出發(fā)城市發(fā)出的多條邊中,選擇最短邊連接的城市,作為下一步達到城市。 即:選擇離當前出發(fā)城市最近的城市作為下一步出發(fā)城市 e.g. 從城市1出發(fā), 途徑0→2→ 5 → 8→ 9路徑長
61、度=2+7+6+3=18作為上界,即多段圖的最短路徑長度≤18,2. 問題下界 每一段最小代價相加,得到下界 2 + 4 + 5 +3 = 14,部分解目標函數(shù)下界計算,多段圖將頂點劃分為k個不相交子集,路徑也相應分為k段; 對于1條正在生成的路徑/部分解,已經(jīng)確定了i段( 1≤ i ≤ k ),即已經(jīng)經(jīng)過/遍歷i個城市,其路徑經(jīng)過的頂點/城市集合為 U=(r1, r2, …, ri , ri+1
62、) , 該部分解的目標函數(shù)的下界為:,//*已經(jīng)經(jīng)過的i段路徑的總長,//*從當前已經(jīng)走過的城市出發(fā),走向最近1個未遍歷城市,//* 進入/離開后續(xù)各未遍歷城市時,各未遍歷城市帶來的最小路徑成本,E.g. 假設 正在生成的路徑/部分解為0→1, U={0,1},后續(xù)未遍歷分為3段,對應城市分別為{4,5,6},{7,8},{9},該部分解下界為lb =已經(jīng)歷過的路徑0→1總長 + 從城市1到最近未遍歷城市5的距離
63、 + 第3段最短邊 + 第4段最短邊 = 4 + 8 + 5 + 3 = 20,多段圖的搜索樹及搜索過程,,1. 問題完全解界限[14, 18]2. 搜索過程中,利用各部分解結點的下界lb,判斷該結點lb是否>上界18 3. 如果是,則該結點被剪枝舍棄 e.g. 結點2, 對應路徑0→1 結點10, 對應路徑0→3 → 5 → 7,問題完
64、全解界限[14, 18],1. 樹結點編號對應了結點搜索/生成順序2. ×表示被丟棄的死結點,2+7+5+3=17,3+4+5+3=15,2+8+5+7=22,×,2+7+6+3=18,2+8+5+3=18,4+8+5+3=20,3+4+6+3=16,3+7+5+3=18,3+4+8+7=22,3+4+6+3=16,1. 采用貪心法,計算上界up; 根據(jù)目標函數(shù)公式,計算下界down2. 將活
65、結點表ANT初始化為空3. for ( i=1; i =1) 5.1 對頂點u的所有鄰接點v 5.1.1 計算v的目標函數(shù)lb(v) 5.1.2 if (lb , lb(v)值} 存入活結點表ANT 5.2 如果i==k-1, 即搜索到達葉節(jié)點,并且葉子結點的目標函 數(shù)值lb在表ANT中
66、最小 ,則輸出該葉結點對應的最優(yōu)解,5.3 否則,若i==k-1,并且葉子結點的目標函數(shù)值lb在 表ANT中不是最小,則 5.3.1 令up=表ANT中葉子結點所具有的最小的lb值 5.3.2 刪除ANT表中目標函數(shù)值lb超出up的結點 5.4 u =表ANT中l(wèi)b最小的結點的v值(頂點編號)
67、 //* 選取lb最小的活結點v,作為擴展結點 5.5 i =表ANT中l(wèi)b最小的結點的i值; //*擴展結點對應的段號 5.6 i++,批處理作業(yè)調(diào)度,給定n個作業(yè)的集合J={J1,J2,…,Jn},每個作業(yè)有3項任務需要在3臺機器上完成,作業(yè)Ji需要機器j的處理時間為tij(1≤i ≤ n, 1≤j≤3 )。每個作業(yè)需要依次在機器1、2、3上處理。要求:確定作業(yè)最優(yōu)處理順序
68、,使得從第1個投入執(zhí)行的作業(yè)在機器1上開始,到最后1個作業(yè)在機器3上結束為止,所需時間最短。最優(yōu)調(diào)度:機器1上無空余時間,機器2、3上的空閑/等待時間最短可以證明:對最優(yōu)調(diào)度,作業(yè)在機器1上的執(zhí)行順序與機器2、3上的執(zhí)行順序是一致的。,分支限界法的復雜性,與回溯法一樣,分支限界法屬于蠻力窮舉法。最壞情況下,需要遍歷指數(shù)階個結點的解空間樹,復雜性為指數(shù)階。與回溯法不同:優(yōu)先擴展上層結點,采用界限函數(shù),利于大范圍剪枝,縮小搜索空間;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 算法設計與分析_第6章_分支限界法
- 第6章 分支限界法
- 分支限界算法設計與應用
- 算法論文分治法和分支限界
- 實驗六_分支限界法
- 分支限界法作業(yè)答案
- 5-分支限界法
- 旅行商售貨員問題的分支限界算法
- 第八章 分支與限界
- 蠻力法、動態(tài)規(guī)劃法、回溯法和分支限界法求解01背包問題
- 實驗二分支結構程序設計
- 時間依賴網(wǎng)絡中國郵路問題的分支限界算法.pdf
- 貪心法&動態(tài)規(guī)劃法&分支限界法
- 基于分支限界法的多核系統(tǒng)實時多任務映射方法研究.pdf
- 畢業(yè)設計--基于分支限界法的連連看局域網(wǎng)對戰(zhàn)游戲的開發(fā)
- 用分支限界求解0-1背包問題
- 基于三分支非均勻分布球面機構的腰關節(jié)的分析與設計.pdf
- 1順序結構2分支結構3循環(huán)結構
- 三分支機器人運動學建模與動力學特性分析.pdf
- 一種四分支五軸串并混聯(lián)機床的機構綜合與分析.pdf
評論
0/150
提交評論