![朱全民專題網(wǎng)絡(luò)流算法_第1頁](http://file4.renrendoc.com/view/fd9c0e0e2f350909999fda4d3d055edd/fd9c0e0e2f350909999fda4d3d055edd1.gif)
![朱全民專題網(wǎng)絡(luò)流算法_第2頁](http://file4.renrendoc.com/view/fd9c0e0e2f350909999fda4d3d055edd/fd9c0e0e2f350909999fda4d3d055edd2.gif)
![朱全民專題網(wǎng)絡(luò)流算法_第3頁](http://file4.renrendoc.com/view/fd9c0e0e2f350909999fda4d3d055edd/fd9c0e0e2f350909999fda4d3d055edd3.gif)
![朱全民專題網(wǎng)絡(luò)流算法_第4頁](http://file4.renrendoc.com/view/fd9c0e0e2f350909999fda4d3d055edd/fd9c0e0e2f350909999fda4d3d055edd4.gif)
![朱全民專題網(wǎng)絡(luò)流算法_第5頁](http://file4.renrendoc.com/view/fd9c0e0e2f350909999fda4d3d055edd/fd9c0e0e2f350909999fda4d3d055edd5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖論算法 -最大流問題長(zhǎng)沙市雅禮中學(xué)朱 全 民 運(yùn)輸網(wǎng)絡(luò)現(xiàn)在想將一些物資從S運(yùn)抵T,必須經(jīng)過一些中轉(zhuǎn)站。連接中轉(zhuǎn)站的是公路,每條公路都有最大運(yùn)載量。 每條弧代表一條公路,弧上的數(shù)表示該公路的最大運(yùn)載量。最多能將多少貨物從S運(yùn)抵T? 4248473 621STV1V2V3V4公路運(yùn)輸圖基本概念這是一個(gè)典型的網(wǎng)絡(luò)流模型。為了解答此題,我們先了解網(wǎng)絡(luò)流的有關(guān)定義和概念。若有向圖G=(V,E)滿足下列條件: 有且僅有一個(gè)頂點(diǎn)S,它的入度為零,即d-(S) = 0,這個(gè)頂點(diǎn)S便稱為源點(diǎn),或稱為發(fā)點(diǎn)。有且僅有一個(gè)頂點(diǎn)T,它的出度為零,即d+(T) = 0,這個(gè)頂點(diǎn)T便稱為匯點(diǎn),或稱為收點(diǎn)。每一條弧都有非負(fù)
2、數(shù),叫做該邊的容量。邊(vi, vj)的容量用cij表示。則稱之為網(wǎng)絡(luò)流圖,記為G = (V, E, C)可行流可行流對(duì)于網(wǎng)絡(luò)流圖G,每一條弧(i,j)都給定一個(gè)非負(fù)數(shù)fij,這一組數(shù)滿足下列三條件時(shí)稱為這網(wǎng)絡(luò)的可行流,用f表示它。1. 每一條弧(i,j)有fijCij2. 流量平衡除源點(diǎn)S和匯點(diǎn)T以外的所有的點(diǎn)vi,恒有: j(fij)= k(fjk)該等式說明中間點(diǎn)vi的流量守恒,輸入與輸出量相等。3.對(duì)于源點(diǎn)S和匯點(diǎn)T有 ,i(fSi)= j(fjT)= V(f)可改進(jìn)路 給定一個(gè)可行流f=fij。若fij = Cij,稱為飽和??;否則稱為非飽和弧。若fij = 0,稱為零流??;否則稱為
3、非零流弧。定義一條道路P,起點(diǎn)是S、終點(diǎn)是T。把P上所有與P方向一致的弧定義為正向弧,正向弧的全體記為P+;把P上所有與P方向相悖的弧定義為反向弧,反向弧的全體記為P-。譬如在圖中,P = (S, V1, V2, V3, V4, T),那么P+ = , , , P- = 給定一個(gè)可行流f,P是從S到T的一條道路,如果滿足:對(duì)于任意,fij是非飽和流,并且 P+ 或 fij是非零流,并且 P-那么就稱P是f的一條可改進(jìn)路。(有些書上又稱:可增廣軌)之所以稱作“可改進(jìn)”,是因?yàn)榭筛倪M(jìn)路上弧的流量通過一定的規(guī)則修改,可以令整個(gè)流量放大。 割切 G = (V, E, C)是已知的網(wǎng)絡(luò)流圖,設(shè)U是V的一
4、個(gè)子集,W = VU,滿足SU,TW。即U、W把V分成兩個(gè)不相交的集合,且源點(diǎn)和匯點(diǎn)分屬不同的集合。對(duì)于弧尾在U,弧頭在W的弧所構(gòu)成的集合稱之為割切,用(U,W)表示。把割切(U,W)中所有弧的容量之和叫做此割切的容量,記為C(U,W),即:上例中,令U = S, V1,則W = V2, V3, V4, T,那么C(U, W) = + + + =8+4+4+1=17割切上例中,令U = S, V1,則W = V2, V3, V4, T,那么,C(U, W) = + + + =8+4+4+1=17流量算法的基本理論定理1:對(duì)于已知的網(wǎng)絡(luò)流圖,設(shè)任意一可行流為f,任意一割切為(U, W),必有:V
5、(f) C(U, W)。/切割將網(wǎng)絡(luò)流圖分為兩部分,所以最大流不可能大于這兩部分的連接值即C(U,W)定理2:可行流f是最大流的充分必要條件是:f中不存在可改進(jìn)路。定理3:整流定理。如果網(wǎng)絡(luò)中所有的弧的容量是整數(shù),則存在整數(shù)值的最大流。定理4:最大流最小割定理。最大流等于最小割,即max V(f) = min C(U, W)。 最大流算法第1步,令x=(xij)是任意整數(shù)可行流,可能是零流,給s一個(gè)永久標(biāo)號(hào)(-, )。第2步(找增廣軌),如果所有標(biāo)號(hào)都已經(jīng)被檢查,轉(zhuǎn)到第4步。 找到一個(gè)標(biāo)號(hào)但未檢查的點(diǎn)i, 并做如下檢查,對(duì)每一個(gè)弧(i,j),如果xij0,且j未標(biāo)號(hào),則給j一個(gè)標(biāo)號(hào)(-i, (
6、j) ),其中, (j)=minxji , (i) 第三步(增廣),由點(diǎn)t開始,使用指示標(biāo)號(hào)構(gòu)造一個(gè)增廣路,指示標(biāo)號(hào)的正負(fù)則表示通過增加還是減少弧流量來增加還是減少弧流量來增大流量,抹去s點(diǎn)以外的所有標(biāo)號(hào),轉(zhuǎn)第二步繼續(xù)找增廣軌。第四步(構(gòu)造最小割),這時(shí)現(xiàn)行流是最大的,若把所有標(biāo)號(hào)的集合記為S,所有未標(biāo)號(hào)點(diǎn)的集合記為T,便得到最小容量割(S,T)。實(shí)例復(fù)雜度分析設(shè)圖中弧數(shù)為m,每找一條增廣軌最多需要進(jìn)行2m次弧的檢查。如果所有弧的容量為整數(shù),則最多需要v(其中v為最大流)次增廣,因此總的計(jì)算量為O(mv)。procedure maxflow; 最大流var i, j, delta, x : i
7、nteger; last : tline; 可改進(jìn)路中的前趨 check : array0 . maxn of boolean; 檢查數(shù)組begin repeat fillchar(last, sizeof(last), 0); fillchar(check, sizeof(check), false); last1 := maxint; repeat i := 0; repeat inc(i) until (i n) or (lasti 0) and not checki; 找到一個(gè)已檢查而未標(biāo)號(hào)的點(diǎn) if i n then break; for j := 1 to n do if last
8、j = 0 then if flowi, j 0 then lastj := -i; 反向弧 checki := true; until lastn 0; if lastn = 0 then break; delta := maxint; i := n; repeat j := i; i := abs(lastj); if lastj 0 then x := limiti, j - flowi, j else x := flowj, i; if x 0 then inc(flowi, j, delta) else dec(flowj, i, delta); until i = 1; 放大網(wǎng)絡(luò)流
9、 until false;end;費(fèi)用流流最重要的應(yīng)用是盡可能多的分流物資,這也就是我們已經(jīng)研究過的最大流問題。然而實(shí)際生活中,最大配置方案肯定不止一種,一旦有了選擇的余地,費(fèi)用的因素就自然參與到?jīng)Q策中來。右圖是一個(gè)最簡(jiǎn)單的例子:弧上標(biāo)的兩個(gè)數(shù)字第一個(gè)是容量,第二個(gè)是費(fèi)用。這里的費(fèi)用是單位流量的花費(fèi),譬如fs1=4,所需花費(fèi)為3*4=12。容易看出,此圖的最大流(流量是8)為:fs1 = f1t = 5, fs2 = f2t = 3。所以它的費(fèi)用是:5*3+5*4+3*7+3*2 = 62。(6,3)(5,4)(3,7)(8,2)STV1V2費(fèi)用流問題費(fèi)用流定義設(shè)有帶費(fèi)用的網(wǎng)絡(luò)流圖G = (V
10、, E, C, W),每條弧對(duì)應(yīng)兩個(gè)非負(fù)整數(shù)Cij、Wij,表示該弧的容量和費(fèi)用。若流f滿足:流量V(f)最大。滿足a的前提下,流的費(fèi)用Cost(f) =E (fij * Wij)最小。就稱f是網(wǎng)絡(luò)流圖G的最小費(fèi)用最大流。最小費(fèi)用可改進(jìn)路設(shè)P是流f的可改進(jìn)路,定義P+ Wij - P- Wij 為P的費(fèi)用(為什么如此定義?)如果P是關(guān)于f的可改進(jìn)路中費(fèi)用最小的,就稱P是f的最小費(fèi)用可改進(jìn)路。 算法求最小費(fèi)用最大流的基本思想是貪心法。即:對(duì)于流f,每次選擇最小費(fèi)用可改進(jìn)路進(jìn)行改進(jìn),直到不存在可改進(jìn)路為止。這樣的得到的最大流必然是費(fèi)用最小的。算法可描述為:第1步. 令f為零流。第2步. 若無最小費(fèi)
11、用可改進(jìn)路,轉(zhuǎn)第5步;否則找到最小費(fèi)用可改進(jìn)路,設(shè)為P。第3步. 根據(jù)P求delta(改進(jìn)量)。第4步. 放大f。轉(zhuǎn)第2步。第5步. 算法結(jié)束。此時(shí)的f即最小費(fèi)用最大流。 如何求最小費(fèi)用可改進(jìn)路 設(shè)帶費(fèi)用的網(wǎng)絡(luò)流圖G = (V, E, C, W),它的一個(gè)可行流是f。我們構(gòu)造帶權(quán)有向圖B = (V, E),其中:V = V。若E,fijCij,那么E,權(quán)為Wij。若E,fij0,那么E,權(quán)為-Wij。顯然,B中從S到T的每一條道路都對(duì)應(yīng)關(guān)于f的一條可改進(jìn)路;反之,關(guān)于f的每條可改進(jìn)路也能對(duì)應(yīng)B中從S到T的一條路徑。即兩者存在一一映射的邏輯關(guān)系。故若B中不存在從S到T的路徑,則f必然沒有可改進(jìn)路
12、;不然,B中從S到T的最短路徑即為f的最小費(fèi)用可改進(jìn)路?,F(xiàn)在的問題變成:給定帶權(quán)有向圖B = (V, E),求從S到T的一條最短路徑。迭代法求最短路經(jīng)考慮到圖中存在權(quán)值為負(fù)數(shù)的弧,不能采用Dijkstra算法;Floyd算法的效率又不盡如人意所以,這里采用一種折衷的算法:迭代法。設(shè)Shorti表示從S到i頂點(diǎn)的最短路徑長(zhǎng)度;從S到頂點(diǎn)i的最短路徑中,頂點(diǎn)i的前趨記為L(zhǎng)asti。那么迭代算法描述如下:(為了便于描述,令n = |V|,S的編號(hào)為0,T的編號(hào)為n+1)step 1. 令Shorti +(1in+1),Short0 0。step 2. 遍歷每一條弧。若Shorti + Shortj,
13、則令Shortj Shorti + ,同時(shí)Lastj i。重復(fù)做step 2直到不存在任何任何弧滿足此條件為止。step 3. 算法結(jié)束。若Shortn + 1= +,則不存在從S到T的路徑;否則可以根據(jù)Last記錄的有關(guān)信息得到最短路徑。一次迭代算法的時(shí)間復(fù)雜度為O(kn2),其中k是一個(gè)不大于n的變量。在費(fèi)用流的求解過程中,k大部分情況下都遠(yuǎn)小于n。procedure costflow; 求最小費(fèi)用最大流var i, j, x, delta : integer; best, last : tline; best:最短路長(zhǎng)度;last:可改進(jìn)路中的前趨頂點(diǎn) more : boolean;be
14、gin repeat fillword(best, sizeof(best) shr 1, maxint); fillchar(last, sizeof(last), 0); last1 := maxint; best1 := 0; 賦初值 repeat more := false; for i := 1 to n do if besti maxint then for j := 1 to n do begin if (flowi, j limiti, j) and (besti + costi, j 0) and (besti - costj, i 0 then x := limiti, j
15、 - flowi, j else x := flowj, i; if x 0 then inc(flowi, j, delta) else dec(flowj, i, delta); until i = 1; until false; 根據(jù)改進(jìn)量放大流end; 思維發(fā)散與探索 可改進(jìn)路費(fèi)用:“遞增!遞增?”設(shè)f從零流到最大流共被改進(jìn)了k次,每i次選擇的可改進(jìn)路的費(fèi)用為pi,那么會(huì)不會(huì)有p1p2p3pk呢?迭代法:“小心死循環(huán)!嘿嘿”迭代法會(huì)出現(xiàn)死循環(huán)嗎?也就是說,構(gòu)造的帶權(quán)有向圖B中會(huì)存在負(fù)回路嗎?費(fèi)用:“你在乎我是負(fù)數(shù)嗎?”容量:“我管的可不僅是弧?!本W(wǎng)絡(luò)流圖中的“容量”都是對(duì)弧而言的,但若
16、是給每個(gè)頂點(diǎn)也加上一個(gè)容量限制:即通過此頂點(diǎn)的流量的上限;任務(wù)仍然是求從S到T的最小費(fèi)用最大流。你能解決嗎?有上下界的最大流 上面討論的網(wǎng)絡(luò)流都只對(duì)每條弧都限定了上界(其實(shí)其下界可以看成0),現(xiàn)在給每條弧加上一個(gè)下界限制Aij (即必須滿足Aijfij)?;∩蠑?shù)字對(duì)第一個(gè)是上界,第二個(gè)是下界。若是撇開下界不看,此圖的最大流如圖所示,流量是6;但若是加入了下界的限制,它的最大流量就只有5了。 (3,0)(3,0)(3,0)(3,0)(10,1)原問題33330(a)32231(b)增廣怎樣找可行流一種自然的想法是去掉下界,將其轉(zhuǎn)化為只含上界的網(wǎng)絡(luò)流圖。這種美好的愿望是可以實(shí)現(xiàn)的。具體方法如下:設(shè)
17、原網(wǎng)絡(luò)流圖為G = (V, E, C, A),構(gòu)造不含下界的網(wǎng)絡(luò)流圖G = (V, E, C):V = VS, T對(duì)每個(gè)頂點(diǎn)x,令h-(x)= E AiX ,若h-(x)0,就添加一條弧,其上界為h-(x) 。對(duì)每個(gè)頂點(diǎn)x,令h+(x)= E AXi ,若h+(x)0,就添加一條弧,其上界為h+(x) 。對(duì)于任何E,都有E,其上界Cij = Cij Aij。新增E,其上界CTS = +。在G中以S為源點(diǎn)、T為匯點(diǎn)求得最大流f。若f中從S發(fā)出的任意一條弧是非飽和弧,則原網(wǎng)絡(luò)流圖沒有可行流。否則可得原圖的一個(gè)可行流f = f + A,即所有的fij = f ij + Aij 。然后再求可改進(jìn)路(反
18、向弧必須滿足fijAij,而非fij0),不斷放大f,直到求出最大流。多源點(diǎn)、多匯點(diǎn)的最大流已知網(wǎng)絡(luò)流圖有n個(gè)源點(diǎn)S1、S2、Sn,m個(gè)匯點(diǎn)T1、T2、Tm,求該圖的最大流。這樣的問題稱為多源點(diǎn)、多匯點(diǎn)最大流。它的解決很簡(jiǎn)單:增設(shè)一個(gè)“超級(jí)源”S,對(duì)每個(gè)源點(diǎn)Si,新增弧,容量為無窮大。增設(shè)一個(gè)“超級(jí)匯”T,對(duì)每個(gè)匯點(diǎn)Ti,新增弧,容量為無窮大。以S為源點(diǎn)、T為匯點(diǎn)求最大流f。將f中的S和T去掉,即為原圖的最大流。頂點(diǎn)有容量限制的最大流對(duì)除源點(diǎn)和匯點(diǎn)之外的每個(gè)頂點(diǎn)i拆分成兩個(gè)頂點(diǎn)i和i。新增一條弧,其容量為點(diǎn)i的流量限制。對(duì)于原圖中的弧,我們將其變換成。對(duì)變換后的圖求最大流即可。這里我們運(yùn)用到了
19、化歸的思想:將未知的“點(diǎn)限制”問題轉(zhuǎn)化為已知的“邊限制”問題 網(wǎng)絡(luò)流與二部圖的匹配設(shè)二部圖為G = (X, Y, E)。增設(shè)點(diǎn)S,對(duì)于所有iX,新增弧,容量為1;增設(shè)點(diǎn)T,對(duì)于所有iY,新增一條弧,容量也為1。原圖中所有的弧予以保留,容量均為+。對(duì)新構(gòu)造出來的網(wǎng)絡(luò)流圖以S為源點(diǎn)、T為匯點(diǎn)求最大流:流量即為最大匹配數(shù);若弧(iX,jY)的流量非零,它就是一條匹配邊。二部圖最大匹配問題解決。那么二部圖的最佳匹配問題又如何?仍然按照上述方法構(gòu)圖。同時(shí)令原圖中弧的費(fèi)用保持不變;新增弧的費(fèi)用置為0。然后以S為源點(diǎn)、T為匯點(diǎn)求最小費(fèi)用最大流即可。最大流的費(fèi)用即為原二部圖最佳匹配的費(fèi)用。 餐巾問題(HNOI
20、2001XB)某軟件公司正在規(guī)劃一項(xiàng)n天的軟件開發(fā)計(jì)劃,根據(jù)開發(fā)計(jì)劃第i天需要ni個(gè)軟件開發(fā)人員,為了提高工作效率,公司給軟件人員提供了很多的服務(wù),其中一項(xiàng)服務(wù)就是要為每個(gè)開發(fā)人員每天提供一塊消毒毛巾,這種毛巾使用一天后必須再做消毒處理后才能使用。消毒方式有兩種,A種方式的消毒時(shí)間需要a天時(shí)間,B中方式的消毒需要b天時(shí)間(ba),A種消毒方式的費(fèi)用為每塊毛巾fA,B種消毒方式的費(fèi)用為每塊毛巾fB,而買一塊新毛巾的費(fèi)用為f(新毛巾是已消毒的,當(dāng)天可以使用);而且ffAfB。公司經(jīng)理正在規(guī)劃在這n天中,每天買多少塊新毛巾、每天送多少塊毛巾進(jìn)行A種消毒和每天送多少塊毛巾進(jìn)行B種消毒。當(dāng)然,公司經(jīng)理希
21、望費(fèi)用最低。你的任務(wù)就是:求出提供毛巾服務(wù)的最低總費(fèi)用。輸入文件:第1行為n, a, b, f, fA, fB. 第2行為n1, n2, , nn(注:1f, fA, fB60, 1n1000)輸出文件:最少費(fèi)用輸入輸出示例:input.txt output.txt4 1 2 3 2 1 388 2 1 6分析公司第i天需要ni 塊毛巾,可以把這ni 塊毛巾的來源列舉如下:新買的毛巾。第i a 1天之前通過A種方式消毒的毛巾。第i b 1天之前通過B種方式消毒的毛巾。我們構(gòu)造帶費(fèi)用的網(wǎng)絡(luò)流圖G = (V, E, C)。V = S, V1, V2, , Vn, V1, V2, , Vn, T,其
22、中S是源點(diǎn)、T是匯點(diǎn)。E中包含如下幾類弧:(1in),容量為ni,費(fèi)用為0。表示第i天需要ni塊毛巾。(1in),容量為正無窮大,費(fèi)用為f。該弧的流量表示第i天通過方式a得到的毛巾數(shù)量。(a+2in),容量為正無窮大,費(fèi)用為fA。該弧的流量表示第i天通過方式b得到的毛巾數(shù)量。(b+2in),容量為正無窮大,費(fèi)用為fB。該弧的流量表示第i天通過方式c得到的毛巾數(shù)量。(2in),容量為正無窮大,費(fèi)用為0。由于題目中沒有說消毒完的毛巾要馬上使用,所以第3天就消毒好的毛巾可以暫且留著,到第7天、第8天再使用也可以。因此這里增設(shè)此弧。(1in),容量為ni,費(fèi)用為0。然后對(duì)這個(gè)網(wǎng)絡(luò)流圖以S為源點(diǎn)、T為匯
23、點(diǎn)的求最小費(fèi)用最大流即可。求得的最大流費(fèi)用就是原問題的答案。 Agent問題 (ctsc2001)有n名雙重間諜潛伏在敵軍內(nèi)部,分別編號(hào)為1, 2, 3, , n。在給定的時(shí)間內(nèi),任意兩人之間至多只進(jìn)行一次點(diǎn)對(duì)點(diǎn)的雙人聯(lián)系。數(shù)據(jù)將給你一份表格,表格中將提供任意兩位間諜i和j之間進(jìn)行聯(lián)系的安全程度,用一個(gè)0,1的實(shí)數(shù)Sij表示;以及他們聯(lián)系時(shí),能夠互相傳遞的消息的最大數(shù)目,用一個(gè)正整數(shù)表示Mij。(如果在表格中沒有被提及,那么間諜i和j之間不進(jìn)行直接聯(lián)系)。假消息從盟軍總部傳遞到每個(gè)間諜手里的渠道也不是絕對(duì)安全的,我們用0,1的實(shí)數(shù)ASj表示總部與間諜j之間進(jìn)行聯(lián)系的安全程度,AMj則表示總部和
24、間諜j之間進(jìn)行聯(lián)系時(shí)傳遞的消息的最大數(shù)目。對(duì)于不和總部直接聯(lián)系的間諜,他的AMj=0(而表格中給出的他的ASj是沒有意義的)。當(dāng)然,假消息從間諜手中交到敵軍的情報(bào)部官員的辦公桌上的過程是絕對(duì)安全的,也就是說,間諜與敵軍情報(bào)部門之間要么不進(jìn)行聯(lián)系,要么其聯(lián)系的安全程度是1(即完全可靠)?,F(xiàn)在我軍司令部想利用這些間諜將k條假消息發(fā)布到敵軍情報(bào)機(jī)關(guān)的負(fù)責(zé)人。消息先由總部一次性發(fā)給n名間諜中的一些人,再通過它們之間的情報(bào)網(wǎng)傳播,最終由這n名間諜中某些人將情報(bào)送到敵軍手中。對(duì)于一條消息,只有安全的通過了所有的中轉(zhuǎn)過程到達(dá)敵軍情報(bào)部,這個(gè)傳遞消息的過程才算安全的;因此根據(jù)乘法原理,它的安全程度P就是從總部
25、出發(fā),經(jīng)多次傳遞直到到達(dá)敵軍那里,每一次傳遞該消息的安全程度的乘積。而對(duì)于整個(gè)計(jì)劃而言,只有當(dāng)k條消息都安全的通過情報(bào)網(wǎng)到達(dá)敵軍手中,沒有一條引起懷疑時(shí),才算是成功的。所以計(jì)劃的可靠程度是所有消息的安全程度的乘積。顯然,計(jì)劃的可靠性取決于這些消息在情報(bào)網(wǎng)中的傳遞方法。你的任務(wù)是:擬定一個(gè)方案,確定消息應(yīng)該從哪些人手中傳遞到哪些人手中,使得最終計(jì)劃的可靠性最大。輸入文件:第一行包括兩個(gè)整數(shù)N和K,分別是間諜的總?cè)藬?shù)和計(jì)劃包含的消息總數(shù)。第二行包括2n個(gè)數(shù),前n個(gè)數(shù)實(shí)數(shù)AS1, AS2, , ASn(范圍在0, 1以內(nèi));后n個(gè)數(shù)是整數(shù)AM1, AM2, , AMn。第三行包含了n個(gè)整數(shù),其中第i
26、(i = 1, 2, , n)個(gè)整數(shù)如果為0表示間諜i與敵軍情報(bào)部不進(jìn)行聯(lián)系,如果為1則表示間諜與敵軍情報(bào)部進(jìn)行聯(lián)系。第四行開始,每行包括4個(gè)數(shù),依次分別是:代表間諜編號(hào)的正整數(shù)i和j,間諜i和j聯(lián)系的安全性參數(shù)Sij(0, 1范圍內(nèi)的實(shí)數(shù)),以及i、j之間傳遞的最大消息數(shù)Mij(每以行的i均小于j)。最后一行包含兩個(gè)整數(shù)-1 1,表示輸入數(shù)據(jù)的結(jié)束。0 n 300, 0 k 300。輸出文件:輸出文件中只有一行。這一行中包含一個(gè)實(shí)數(shù)P,給出的是整個(gè)計(jì)劃的可靠程度P,保留5位有效數(shù)字(四舍五入)。如果情報(bào)根本不能將K條消息傳到敵軍手中,那么計(jì)劃的可靠性為0。(你可以假定,如果計(jì)劃存在,那么它的
27、可靠性大于1e-12)輸入輸出樣例Agent.in Agent.out6 13 0.000211840.9 0.7 0.8 0 0 0 2 6 8 0 0 00 0 0 1 0 11 4 0.5 22 3 0.9 52 5 0.8 22 6 0.8 73 5 0.8 25 6 0.8 4-1 -1 分析題目中的“總部”、“敵軍情報(bào)部”與“間諜”的地位是完全相等的,為了方便敘述可以將兩者亦看作是間諜:“總部”編號(hào)為0、“敵軍情報(bào)部”編號(hào)為n+1。那么S0i = ASi,M0i = AMi;若間諜i可以與敵軍司令部直接聯(lián)系Si,n+1=1, Mi,n+1=+,否則Si,n+1=0, Mi,n+1=
28、0。我們構(gòu)造帶費(fèi)用的網(wǎng)絡(luò)流圖G = (V, E, M, S)。(M為容量,S位費(fèi)用)第i個(gè)間諜抽象成頂點(diǎn)i,另外增加匯點(diǎn)T。所有頂點(diǎn)構(gòu)成的集合記為V。若Mij0,則存在弧和:其容量皆為Mij;費(fèi)用Sji =Sij = ln(Sij)。增設(shè)弧,其容量為k,費(fèi)用為0。然后以V0為源點(diǎn)、T為匯點(diǎn)求最大費(fèi)用最大流。若流量小于k,則不存在可行方案 不然則最大可靠性為:證明設(shè)最大費(fèi)用最大流的費(fèi)用為Cost,那么:因?yàn)镃ost達(dá)到最大,所以可靠性也達(dá)到最大。證畢。Plan問題 某軟件公司有n個(gè)可選的程序項(xiàng)目,其中第i個(gè)項(xiàng)目需要耗費(fèi)資金ai元,開發(fā)成功后可獲收益bi元。當(dāng)然,程序項(xiàng)目之間不是獨(dú)立的:開發(fā)第i個(gè)
29、項(xiàng)目前,必須先開發(fā)出一些其他的項(xiàng)目(正如開發(fā)Office前必須開發(fā)Windows)。這些項(xiàng)目就稱為第i個(gè)項(xiàng)目的“前趨項(xiàng)目”?,F(xiàn)在給出所有項(xiàng)目的ai、bi,以及前趨項(xiàng)目。你的任務(wù)是:幫助該公司從這n個(gè)程序項(xiàng)目中選擇若干個(gè)進(jìn)行開發(fā),使得總收益最大。輸入文件:輸入文件有n + 3行。第1行包含一個(gè)整數(shù)n(1n200)。第2行有n個(gè)正整數(shù)a1, a2, , an。第3行有n個(gè)正整數(shù)b1, b2, , bn。第i + 3行(1in)包含若干正整數(shù):ri, k1, k2, , kri。第一個(gè)數(shù)ri表示第i個(gè)項(xiàng)目共有多少前趨項(xiàng)目;接下來有ri個(gè)正整數(shù)k1, k2, , kri,分別表示每個(gè)前趨項(xiàng)目的編號(hào)。輸出文件:輸出文件只有一個(gè)整數(shù)max,表示最大收益。分析令di = bi ai,A = i | di 0,B = i | di 0。則di就是第i個(gè)項(xiàng)目的純收益,A是所有可以獲得利潤(rùn)的項(xiàng)目集合,B是所有會(huì)導(dǎo)致虧損的項(xiàng)目集合。構(gòu)造網(wǎng)絡(luò)流圖G = (V, E, C)。V中包含兩類頂點(diǎn):源點(diǎn)S,匯點(diǎn)T。將第i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新人教版七年級(jí)數(shù)學(xué)上冊(cè) 3.3 《解一元一次方程》聽評(píng)課記錄1
- 人教版歷史七年級(jí)上冊(cè)第14課《溝通中外文明的“絲綢之路”》聽課評(píng)課記錄
- 現(xiàn)場(chǎng)電力服務(wù)合同(2篇)
- 生活設(shè)施租賃協(xié)議書(2篇)
- 新版湘教版秋八年級(jí)數(shù)學(xué)上冊(cè)第二章三角形課題已知邊角作三角形聽評(píng)課記錄
- 新版華東師大版八年級(jí)數(shù)學(xué)下冊(cè)《18.2平行四邊形的判定》聽評(píng)課記錄
- 湘教版數(shù)學(xué)八年級(jí)下冊(cè)4.3《一次函數(shù)的圖象》聽評(píng)課記錄1
- 魯人版道德與法治七年級(jí)下冊(cè)13.3《正視壓力 輕松前行》聽課評(píng)課記錄
- 2022年新課標(biāo)八年級(jí)上冊(cè)歷史第3課太平天國(guó)運(yùn)動(dòng)聽課評(píng)課記錄
- 人教版九年級(jí)數(shù)學(xué)上冊(cè)22.2.1《二次函數(shù)與一元二次方程》聽評(píng)課記錄
- 裝修工程延期協(xié)議
- 《梅大高速茶陽路段“5·1”塌方災(zāi)害調(diào)查評(píng)估報(bào)告》專題警示學(xué)習(xí)
- 2024年09月北京中信銀行北京分行社會(huì)招考(917)筆試歷年參考題庫附帶答案詳解
- 《大健康解讀》課件
- 2025年度交通運(yùn)輸規(guī)劃外聘專家咨詢協(xié)議3篇
- 2024年04月北京中信銀行北京分行社會(huì)招考(429)筆試歷年參考題庫附帶答案詳解
- 專項(xiàng)債券培訓(xùn)課件
- 《會(huì)務(wù)的組織和管理》課件
- 2024年公司領(lǐng)導(dǎo)在新年動(dòng)員會(huì)上的講話樣本(3篇)
- 《倒虹吸管安全評(píng)價(jià)導(dǎo)則》
- 2025年中國(guó)濕度傳感器行業(yè)深度分析、投資前景、趨勢(shì)預(yù)測(cè)報(bào)告(智研咨詢)
評(píng)論
0/150
提交評(píng)論