




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
圖論算法
---最大流問題
長沙市雅禮中學朱全民運輸網絡現(xiàn)在想將一些物資從S運抵T,必需經過一些中轉站。連接中轉站的是馬路,每條馬路都有最大運載量。每條弧代表一條馬路,弧上的數表示該馬路的最大運載量。最多能將多少貨物從S運抵T?4248473621STV1V2V3V4公路運輸圖基本概念這是一個典型的網絡流模型。為了解答此題,我們先了解網絡流的有關定義和概念。若有向圖G=(V,E)滿足下列條件:有且僅有一個頂點S,它的入度為零,即d-(S)=0,這個頂點S便稱為源點,或稱為發(fā)點。有且僅有一個頂點T,它的出度為零,即d+(T)=0,這個頂點T便稱為匯點,或稱為收點。每一條弧都有非負數,叫做該邊的容量。邊(vi,vj)的容量用cij表示。則稱之為網絡流圖,記為G=(V,E,C)可行流可行流 對于網絡流圖G,每一條弧(i,j)都給定一個非負數fij,這一組數滿足下列三條件時稱為這網絡的可行流,用f表示它。1.每一條弧(i,j)有fij≤Cij2.流量平衡 除源點S和匯點T以外的全部的點vi,恒有: ∑j(fij)=∑k(fjk) 該等式說明中間點vi的流量守恒,輸入與輸出量相等。3. 對于源點S和匯點T有, ∑i(fSi)=∑j(fjT)=V(f)可增廣路給定一個可行流f={fij}。若fij=Cij,稱<vi,vj>為飽和??;否則稱<vi,vj>為非飽和弧。若fij=0,稱<vi,vj>為零流?。环駝t稱<vi,vj>為非零流弧。定義一條道路P,起點是S、終點是T。把P上全部與P方向一樣的弧定義為正向弧,正向弧的全體記為P+;把P上全部與P方向相悖的弧定義為反向弧,反向弧的全體記為P-。譬如在圖中,P=(S,V1,V2,V3,V4,T),那么 P+={<S,V1>,<V1,V2>,<V2,V3>,<V4,T>} P-={<V4,V3>}給定一個可行流f,P是從S到T的一條道路,假如滿足: fij是非飽和流,并且<i,j>∈P+,fij是非零流,并且<i,j>∈P- 那么就稱P是f的一條可增廣路。之所以稱作“可增廣”,是因為可改進路上弧的流量通過確定的規(guī)則修改,可以令整個流量放大。剩余圖(殘余網絡)剩余圖G’=(V,E’)流量網絡G=(V,E)中,對于隨意一條邊(a,b),若flow(a,b)<capacity(a,b)orflow(b,a)>0則(a,b)∈E’可以沿著a--->b方向增廣剩余圖中,從源點到匯點的每一條路徑都對應一條增廣路Capacity=5Capacity=6Capacity=2Flow=2Flow=2Flow=2有向圖32224剩余圖剩余圖中,每條邊都可以沿其方向增廣剩余圖的權值代表能沿邊增廣的大小G=(V,E,C)是已知的網絡流圖,設U是V的一個子集,W=V\U,滿足S∈U,T∈W。即U、W把V分成兩個不相交的集合,且源點和匯點分屬不同的集合。對于弧尾在U,弧頭在W的弧所構成的集合稱之為割切,用(U,W)表示。把割切(U,W)中全部弧的容量之和叫做此割切的容量,記為C(U,W),即:割切割切示例上例中,令U={S,V1},則W={V2,V3,V4,T},那么,C(U,W)=<S,V2>+<V1,V2>+<V1,V3>+<V1,V4>=8+4+4+1=17流量算法的基本理論定理1:對于已知的網絡流圖,設隨意一可行流為f,隨意一割切為(U,W),必有:V(f)≤C(U,W)。定理2:可行流f是最大流的充分必要條件是:f中不存在可改進路。定理3:整流定理。 假如網絡中全部的弧的容量是整數,則存在整數值的最大流。定理4:最大流最小割定理。 最大流等于最小割,即maxV(f)=minC(U,W)。最大流算法第1步,令x=(xij)是隨意整數可行流,可能是零流,給s一個永久標號(-,∞)。第2步(找增廣路),假如全部標號都已經被檢查,轉到第4步。找到一個標號但未檢查的點i,并做如下檢查,對每一個弧(i,j),假如xij<Cij,且j未標號,則給j一個標號(+i,δ(j)),其中,δ(j)=min{Cij-xij,δ(i)}對每一個弧(j,i),假如xji>0,且j未標號,則給j一個標號(-i,δ(j)),其中,δ(j)=min{xji,δ(i)}第3步(增廣),由點t起先,運用指示標號構造一個增廣路,指示標號的正負則表示通過增加還是削減弧流量來增加還是削減弧流量來增大流量,抹去s點以外的全部標號,轉其次步接著找增廣軌。第4步(構造最小割),這時現(xiàn)行流是最大的,若把全部標號的集合記為S,全部未標號點的集合記為T,便得到最小割(S,T)。實例困難度分析設圖中弧數為m,每找一條增廣軌最多須要進行2m次弧的檢查。假如全部弧的容量為整數,則最多須要v(其中v為最大流)次增廣,因此總的計算量為O(mv)。proceduremaxflow;{最大流}vari,j,delta,x:integer;last:tline;{可改進路中的前趨}check:array[0..maxn]ofboolean;{檢查數組}beginrepeatfillchar(last,sizeof(last),0);fillchar(check,sizeof(check),false);last[1]:=maxint;repeati:=0;repeatinc(i)until(i>n)or(last[i]<>0)andnotcheck[i];{找到一個已檢查而未標號的點}ifi>nthenbreak;forj:=1tondoiflast[j]=0thenifflow[i,j]<limit[i,j]thenlast[j]:=i{正向弧}elseifflow[j,i]>0thenlast[j]:=-i;{反向弧}check[i]:=true;untillast[n]<>0;
iflast[n]=0thenbreak;delta:=maxint;i:=n;repeatj:=i;i:=abs(last[j]);iflast[j]>0thenx:=limit[i,j]-flow[i,j]elsex:=flow[j,i];ifx<deltathendelta:=x;untili=1;{求改進量}i:=n;repeatj:=i;i:=abs(last[j]);iflast[j]>0theninc(flow[i,j],delta)elsedec(flow[j,i],delta);untili=1;{放大網絡流}untilfalse;end;利用找增廣路的其他流量算法增廣路的思想在于每次從源點搜尋出一條前往匯點的增廣路,并變更路上的邊權,直到無法再進行增廣:一般增廣路方法:在剩余圖中,每次隨意找一條增廣路徑增廣。O(nmU)容量縮放增廣路方法:在剩余圖中,每次隨意找一條最大可增廣容量和的增廣路徑增廣。O(nm*logU)最短增廣路方法(MPLA):在剩余圖中,每次隨意找一條含結點數最少的增廣路徑增廣。O(nm2)連續(xù)最短增廣路方法(DINIC):在剩余圖中,每次BFS找增廣路徑增廣路徑時,記錄每個點的距離標號。在距離標號最短路圖上,不斷dfs找增廣路,即一次標號,多次增廣。O(n2m)DINIC算法演示:源點匯點422532匯點32對增廣路進行增廣,增廣后退回到源點1匯點232匯點1找到增廣路路線,(紅色路線)找到增廣路路線,(紅色路線)對增廣路進行增廣,增廣后退回到源點,再無增廣路線3用預流推動方法求網絡流預流推動算法給每一個頂點一個標號h(v),表示該點到t的最短路(在殘量網絡中)。第一步hights()過程,就是BFS出初始最短路,計算出每一個頂點的h(v)。預流推動算法的特征是運用了預流來加快運算。預流說明圖中的節(jié)點(除s,t),僅須要滿足流入量>=流出量。其中流入量>流出量的結點,我們稱之為活動節(jié)點。我們的算法就是不斷地將活動結點,變?yōu)榉腔顒咏Y點,使得預流成為可行流。預流推動算法流程算法過程prepare(),即首先將與s相連的邊設為滿流,并將這時產生的活動結點加入隊列Q。這是算法的起先。以后便重復以下過程直到Q為空:(1).選出Q的一個活動頂點u。并依次推斷殘量網絡G'中每條邊(u,v),若h(u)=h(v)+1,則順著這里條邊推流,直到Q變成非活動結點(不存在多余流量)。(Push推流過程)(2).假如u還是活動結點。則須要對u進行重新標號:h(u)=min{h(v)+1},其中邊(u,v)存在于G'中。然后再將u加入隊列。(relable過程)可以證明,通過以上算法得到的結果就是最大流。預流推動算法示例頂點u的通過量g(u):剩余圖中,找入邊權和與出邊權和的較小值增廣時,每次找一個通過量最小的點v,從點v向源點“推”大小為g(v)的流量向匯點“拉”大小為g(v)的流量盡量使剩余圖中的邊飽和34578g(u)=12用預流推動方法的一些網絡流算法預流推動的算法核心思想是以邊為單元進行推流操作:一般的預流推動算法:在剩余圖中,維護一個預流,不斷對活躍點執(zhí)行push操作,或者relable操作來重新調整這個預流,直到不能操作。O(nm2)先進先出預流推動算法:在剩余圖中,以先進先出隊列維護活躍點。O(n3)最高標號預流推動算法:在剩余圖中,每次檢查最高標號的活躍點,須要用到優(yōu)先隊列。O(n2m1/2)費用流流最重要的應用是盡可能多的分流物資,這也就是我們已經探討過的最大流問題。然而實際生活中,最大配置方案確定不止一種,一旦有了選擇的余地,費用的因素就自然參與到決策中來。右圖是一個最簡潔的例子:弧上標的兩個數字第一個是容量,其次個是費用。這里的費用是單位流量的花費,譬如fs1=4,所需花費為3*4=12。簡潔看出,此圖的最大流(流量是8)為:fs1=f1t=5,fs2=f2t=3。所以它的費用是:3*5+4*5+7*3+2*3=62。(6,3)(5,4)(3,7)(8,2)STV1V2費用流問題費用流定義設有帶費用的網絡流圖G=(V,E,C,W),每條弧<Vi,Vj>對應兩個非負整數Cij、Wij,表示該弧的容量和費用。若流f滿足:流量V(f)最大。滿足a的前提下,流的費用Cost(f)=∑<i,j>∈E(fij*Wij)最小。 就稱f是網絡流圖G的最小費用最大流。最小費用可改進路 設P是流f的可改進路,定義∑<vi,vj>∈P+Wij-∑<vi,vj>∈P-Wij為P的費用(為什么如此定義?) 假如P是關于f的可改進路中費用最小的,就稱P是f的最小費用可改進路。費用流算法求最小費用最大流的基本思想是貪心法。即:對于流f,每次選擇最小費用可改進路進行改進,直到不存在可改進路為止。這樣的得到的最大流必定是費用最小的。算法可描述為:第1步.令f為零流。第2步.若無最小費用可改進路,轉第5步;否則找到最小費用可改進路,設為P。第3步.依據P求delta(改進量)。第4步.放大f。轉第2步。第5步.算法結束。此時的f即最小費用最大流。如何求最小費用可改進路設帶費用的網絡流圖G=(V,E,C,W),它的一個可行流是f。我們構造帶權有向圖B=(V’,E’),其中:V’=V。若<Vi,Vj>∈E,fij<Cij,那么<Vi,Vj>∈E’,權為Wij。
若<Vi,Vj>∈E,fij>0,那么<Vj,Vi>∈E’,權為-Wij。明顯,B中從S到T的每一條道路都對應關于f的一條可改進路;反之,關于f的每條可改進路也能對應B中從S到T的一條路徑。即兩者存在一一映射的邏輯關系。故若B中不存在從S到T的路徑,則f必定沒有可改進路;不然,B中從S到T的最短路徑即為f的最小費用可改進路?,F(xiàn)在的問題變成:給定帶權有向圖B=(V’,E’),求從S到T的一條最短路徑。迭代法求最短路經考慮到圖中存在權值為負數的弧,不能接受Dijkstra算法;Floyd算法的效率又不盡如人意——所以,這里接受一種折衷的算法:迭代法(bellman算法)。設Short[i]表示從S到i頂點的最短路徑長度;從S到頂點i的最短路徑中,頂點i的前趨記為Last[i]。那么迭代算法描述如下:(為了便于描述,令n=|V’|,S的編號為0,T的編號為n+1)step1.令Short[i]+∞(1≤i≤n+1),Short[0]0。step2.遍歷每一條弧<Vi,Vj>。若Short[i]+<i,j><Short[j],則令Short[j]Short[i]+<i,j>,同時Last[j]i。重復做step2直到不存在任何任何弧滿足此條件為止。step3.算法結束。若Short[n+1]=+∞,則不存在從S到T的路徑;否則可以依據Last記錄的有關信息得到最短路徑。一次迭代算法的時間困難度為O(kn2),其中k是一個不大于n的變量。在費用流的求解過程中,k大部分狀況下都遠小于n。procedurecostflow;{求最小費用最大流}vari,j,x,delta:integer;best,last:tline;{best:最短路長度;last:可改進路中的前趨頂點}more:boolean;beginrepeatfillword(best,sizeof(best)shr1,maxint);fillchar(last,sizeof(last),0);last[1]:=maxint;best[1]:=0;{賦初值}repeatmore:=false;fori:=1tondoifbest[i]<>maxintthenforj:=1tondobeginif(flow[i,j]<limit[i,j])and(best[i]+cost[i,j]<best[j])thenbeginbest[j]:=best[i]+cost[i,j];last[j]:=i;more:=true;end;
if(flow[j,i]>0)and(best[i]-cost[j,i]<best[j])thenbeginbest[j]:=best[i]-cost[j,i];last[j]:=-i;more:=true;end;end;untilnotmore;{找最優(yōu)可改進路}ifbest[n]=maxintthenbreak;delta:=maxint;i:=n;repeatj:=i;i:=abs(last[j]);iflast[j]>0thenx:=limit[i,j]-flow[i,j]elsex:=flow[j,i];ifx<deltathendelta:=x;untili=1;{求改進量}i:=n;repeatj:=i;i:=abs(last[j]);iflast[j]>0theninc(flow[i,j],delta)elsedec(flow[j,i],delta);untili=1;untilfalse;{根據改進量放大流}end;思維發(fā)散與探究可改進路費用:“遞增!遞增?” 設f從零流到最大流共被改進了k次,每i次選擇的可改進路的費用為pi,那么會不會有p1≤p2≤p3≤……≤pk呢?迭代法:“當心死循環(huán)!嘿嘿……” 迭代法會出現(xiàn)死循環(huán)嗎?也就是說,構造的帶權有向圖B中會存在負回路嗎?費用:“你在乎我是負數嗎?”容量:“我管的可不僅是弧?!?網絡流圖中的“容量”都是對弧而言的,但若是給每個頂點也加上一個容量限制:即通過此頂點的流量的上限;任務仍舊是求從S到T的最小費用最大流。你能解決嗎?有上下界的最大流上面探討的網絡流都只對每條弧都限定了上界(其實其下界可以看成0),現(xiàn)在給每條弧<Vi,Vj>加上一個下界限制Aij(即必需滿足Aij≤fij)。弧上數字對第一個是上界,其次個是下界。若是撇開下界不看,此圖的最大流如圖所示,流量是6;但若是加入了下界的限制,它的最大流量就只有5了。(3,0)(3,0)(3,0)(3,0)(10,1)原問題33330(a)32231(b)增廣怎樣找可行流一種自然的想法是去掉下界,將其轉化為只含上界的網絡流圖。這種奇妙的愿望是可以實現(xiàn)的。具體方法如下:設原網絡流圖為G=(V,E,C,A),構造不含下界的網絡流圖G’=(V’,E’,C’):V’=V∪{S’,T’}對每個頂點x,令h-(x)=∑<vi,vx>∈EAiX,若h-(x)≠0,就添加一條弧<S’,x>,其上界為h-(x)。對每個頂點x,令h+(x)=∑<vx,vj>∈EAXi,若h+(x)≠0,就添加一條弧<x,T’>,其上界為h+(x)。對于任何<Vi,Vj>∈E,都有<Vi,Vj>∈E’,其上界C’ij=Cij–Aij。新增<T,S>∈E’,其上界CTS=+∞。在G’中以S’為源點、T’為匯點求得最大流f’。若f’中從S’發(fā)出的隨意一條弧是非飽和弧,則原網絡流圖沒有可行流。否則可得原圖的一個可行流f=f’+A,即全部的fij=f’ij+Aij。然后再求可改進路(反向弧<Vi,Vj>必需滿足fij≥Aij,而非fij≥0),不斷放大f,直到求出最大流。另外一種構圖方法C’(u,v)=C(u,v)-B(u,v)設假如M(i)非負,那么設一附加源S0,則可以令C’(S0,i)=M(i)。假如M(i)非負,那么設一附加匯T0,則可以令C’(S0,i)=-M(i)。在這樣一個加入附加源和附加匯的流網絡C’中,假如隨意g(S0,i)或g(i,T0)都達到滿載,那么C’中的這一個可行流g確定對應原網絡G中的一個可行流f;反之G中的隨意一個可行流f都可以對應C’中的一個g(S0,i)或g(i,T0)都滿載的流。思索?在一個容量有上下界的流網絡G中,怎樣盡快求源點s到匯點t的一個可行的最大流?在一個容量有上下界的流網絡G中,怎樣盡快求源點s到匯點t的一個可行的最小流?多源點、多匯點的最大流已知網絡流圖有n個源點S1、S2、……、Sn,m個匯點T1、T2、……、Tm,求該圖的最大流。這樣的問題稱為多源點、多匯點最大流。它的解決很簡潔:增設一個“超級源”S’,對每個源點Si,新增弧<S’,Si>,容量為無窮大。增設一個“超級匯”T’,對每個匯點Ti,新增弧<Ti,T’>,容量為無窮大。以S’為源點、T’為匯點求最大流f。將f中的S’和T’去掉,即為原圖的最大流。頂點有容量限制的最大流對除源點和匯點之外的每個頂點i拆分成兩個頂點i’和i’’。新增一條弧<i’,i’’>,其容量為點i的流量限制。對于原圖中的弧<i,j>,我們將其變換成<i’’,j’>。對變換后的圖求最大流即可。這里我們運用到了化歸的思想:將未知的“點限制”問題轉化為已知的“邊限制”問題。網絡流與二部圖的匹配設二部圖為G=(X,Y,E)。增設點S’,對于全部i∈X,新增弧<S’,Xi>,容量為1;增設點T’,對于全部i∈Y,新增一條弧<Yi,T’>,容量也為1。原圖中全部的弧予以保留,容量均為+∞。對新構造出來的網絡流圖以S’為源點、T’為匯點求最大流:流量即為最大匹配數;若弧<Xi,Yj>(i∈X,j∈Y)的流量非零,它就是一條匹配邊。二部圖最大匹配問題解決。那么二部圖的最佳匹配問題又如何?仍舊依據上述方法構圖。同時令原圖中弧的費用保持不變;新增弧的費用置為0。然后以S’為源點、T’為匯點求最小費用最大流即可。最大流的費用即為原二部圖最佳匹配的費用。思索題1:餐巾問題某軟件公司正在規(guī)劃一項n天的軟件開發(fā)支配,依據開發(fā)支配第i天須要ni個軟件開發(fā)人員,為了提高工作效率,公司給軟件人員供應了很多的服務,其中一項服務就是要為每個開發(fā)人員每天供應一塊消毒毛巾,這種毛巾運用一天后必需再做消毒處理后才能運用。消毒方式有兩種,A種方式的消毒時間須要a天時間,B中方式的消毒須要b天時間(b>a),A種消毒方式的費用為每塊毛巾fA,B種消毒方式的費用為每塊毛巾fB,而買一塊新毛巾的費用為f(新毛巾是已消毒的,當天可以運用);而且f>fA>fB。公司經理正在規(guī)劃在這n天中,每天買多少塊新毛巾、每天送多少塊毛巾進行A種消毒和每天送多少塊毛巾進行B種消毒。當然,公司經理希望費用最低。 你的任務就是:求出供應毛巾服務的最低總費用。輸入文件:第1行為n,a,b,f,fA,fB.
第2行為n1,n2,…,nn(注:1≤f,fA,fB≤60,1≤n≤1000)輸出文件:最少費用 input.txtoutput.txt 412321388216分析公司第i天須要ni塊毛巾,可以把這ni塊毛巾的來源列舉如下:新買的毛巾。第i–a–1天之前通過A種方式消毒的毛巾。第i–b–1天之前通過B種方式消毒的毛巾。我們構造帶費用的網絡流圖G=(V,E,C)。V={S,V1,V2,…,Vn,V1’,V2’,…,Vn’,T},其中S是源點、T是匯點。E中包含如下幾類?。?lt;S,Vi>(1≤i≤n),容量為ni,費用為0。表示第i天須要ni塊毛巾。<Vi,T>(1≤i≤n),容量為正無窮大,費用為f。該弧的流量表示第i天通過方式a得到的毛巾數量。<Vi,Vi-a-1’>(a+2≤i≤n),容量為正無窮大,費用為fA。該弧的流量表示第i天通過方式b得到的毛巾數量。<Vi,Vi-b-1’>(b+2≤i≤n),容量為正無窮大,費用為fB。該弧的流量表示第i天通過方式c得到的毛巾數量。<Vi’,Vi-1’>(2≤i≤n),容量為正無窮大,費用為0。由于題目中沒有說消毒完的毛巾要立刻運用,所以第3天就消毒好的毛巾可以暫且留著,到第7天、第8天再運用也可以。因此這里增設此弧。<Vi’,T>(1≤i≤n),容量為ni,費用為0。然后對這個網絡流圖以S為源點、T為匯點的求最小費用最大流即可。求得的最大流費用就是原問題的答案。思索題2:Agent有n名雙重間諜潛藏在敵軍內部,分別編號為1,2,3,…,n。在給定的時間內,隨意兩人之間至多只進行一次點對點的雙人聯(lián)系。數據將給你一份表格,表格中將供應隨意兩位間諜i和j之間進行聯(lián)系的平安程度,用一個[0,1]的實數Sij表示;以及他們聯(lián)系時,能夠相互傳遞的消息的最大數目,用一個正整數表示Mij。(假如在表格中沒有被提及,那么間諜i和j之間不進行干脆聯(lián)系)。假消息從盟軍總部傳遞到每個間諜手里的渠道也不是確定平安的,我們用[0,1]的實數ASj表示總部與間諜j之間進行聯(lián)系的平安程度,AMj則表示總部和間諜j之間進行聯(lián)系時傳遞的消息的最大數目。對于不和總部干脆聯(lián)系的間諜,他的AMj=0(而表格中給出的他的ASj是沒有意義的)。當然,假消息從間諜手中交到敵軍的情報部官員的辦公桌上的過程是確定平安的,也就是說,間諜與敵軍情報部門之間要么不進行聯(lián)系,要么其聯(lián)系的平安程度是1(即完全牢靠)?,F(xiàn)在我軍司令部想利用這些間諜將k條假消息發(fā)布到敵軍情報機關的負責人。消息先由總部一次性發(fā)給n名間諜中的一些人,再通過它們之間的情報網傳播,最終由這n名間諜中某些人將情報送到敵軍手中。對于一條消息,只有平安的通過了全部的中轉過程到達敵軍情報部,這個傳遞消息的過程才算平安的;因此依據乘法原理,它的平安程度P就是從總部動身,經多次傳遞直到到達敵軍那里,每一次傳遞該消息的平安程度的乘積。而對于整個支配而言,只有當k條消息都平安的通過情報網到達敵軍手中,沒有一條引起懷疑時,才算是成功的。所以支配的牢靠程度是全部消息的平安程度的乘積。明顯,支配的牢靠性取決于這些消息在情報網中的傳遞方法。你的任務是:擬定一個方案,確定消息應當從那些人手中傳遞到那些人手中,使得最終支配的牢靠性最大。輸入文件: 第一行:兩個整數N和K,分別是間諜的總人數和支配包含的消息總數。 其次行:2n個數,前n個數實數AS1,AS2,…,ASn(范圍在[0,1]以內);后n個數是整數AM1,AM2,…,AMn。 第三行:n個整數,其中第i(i=1,2,…,n)個整數假如為0表示間諜i與敵軍情報部不進行聯(lián)系,假如為1則表示間諜與敵軍情報部進行聯(lián)系。 第四行起先,每行包括4個數,依次分別是:代表間諜編號的正整數i和j,間諜i和j聯(lián)系的平安性參數Sij([0,1]范圍內的實數),以及i、j之間傳遞的最大消息數Mij(每以行的i均小于j)。 最終一行包含兩個整數-1–1,表示輸入數據的結束。 0<n<300,0<k<300。輸出文件: 輸出文件中只有一行。這一行中包含一個實數P,給出的是整個支配的牢靠程度P,保留5位有效數字(四舍五入)。 假如情報根本不能將K條消息傳到敵軍手中,那么支配的牢靠性為0。(你可以假定,假如支配存在,那么它的牢靠性大于1e-12)輸入輸出樣例Agent.inAgent.out6130.000211840.90.70.8000268000000101140.52230.95250.82260.87350.82560.84-1-1分析題目中的“總部”、“敵軍情報部”與“間諜”的地位是完全相等的,為了便利敘述可以將兩者亦看作是間諜:“總部”編號為0、“敵軍情報部”編號為n+1。那么S0i=ASi,M0i=AMi;若間諜i可以與敵軍司令部干脆聯(lián)系Si,n+1=1,Mi,n+1=+∞,否則Si,n+1=0,Mi,n+1=0。我們構造帶費用的網絡流圖G=(V,E,M,S’)。(M為容量,S’位費用)第i個間諜抽象成頂點i,另外增加匯點T。全部頂點構成的集合記為V。若Mij≠0,則存在弧<i,j>和<j,i>:其容量皆為Mij;費用Sji’=Sij’=ln(Sij)。增設弧<n+1,T>,其容量為k,費用為0。然后以V0為源點、T為匯點求最大費用最大流。若流量小于k,則不存在可行方案不然則最大牢靠性為:證明設最大費用最大流的費用為Cost,那么:因為Cost達到最大,所以牢靠性也達到最大。證畢。思索題3:Plan問題某軟件公司有n個可選的程序項目,其中第i個項目須要耗費資金ai元,開發(fā)成功后可獲收益bi元。當然,程序項目之間不是獨立的:開發(fā)第i個項目前,必需先開發(fā)出一些其他的項目(正如開發(fā)Office前必需開發(fā)Windows)。這些項目就稱為第i個項目的“前趨項目”?,F(xiàn)在給出全部項目的ai、bi,以及前趨項目。你的任務是:幫助該公司從這n個程序項目中選擇若干個進行開發(fā),使得總收益最大。輸入文件:輸入文件有n+3行。第1行包含一個整數n(1≤n≤200)。第2行有n個正整數a1,a2,…,an。第3行有n個正整數b1,b2,…,bn。第i+3行(1≤i≤n)包含若干正整數:ri,k1,k2,…,kri。第一個數ri表示第i個項目共有多少前趨項目;接下來有ri個正整數k1,k2,…,kri,分別表示每個前趨項目的編號。輸出文件:輸出文件只有一個整數max,表示最大收益。分析令di=bi–ai,A={i|di≥0},B={i|di<0}。則di就是第i個項目的純收益,A是全部可以獲得利潤的項目集合,B是全部會導致虧損的項目集合。構造網絡流圖G=(V,E,C)。V中包含兩類頂點:源點S,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年煙臺市萊陽市事業(yè)單位招聘工作人員考試真題
- 2025至2030年中國水流分配器數據監(jiān)測研究報告
- 商品寄賣保證金協(xié)議
- 物理學經典理論與智能家居的融合
- 2025至2030年中國武術棒數據監(jiān)測研究報告
- 2024年青島平度市事業(yè)單位招聘考試真題
- 2025至2030年中國氧化用整流器數據監(jiān)測研究報告
- 小額物資合同范本
- 2024年東莞市莞城個體私營企業(yè)協(xié)會招聘專職聘員筆試真題
- 2024年北京十一中關村科學城學校全學科教師招聘筆試真題
- 2020 ACLS-PC-SA課前自我測試試題及答案
- 流體輸送實訓裝置操作規(guī)程
- BIM技術應用管理辦法
- 信息論與編碼第4章信息率失真函數
- extreme-sports 極限運動 英文 ppt
- 國際注冊建造師與項目管理師雙資格認證
- 面癱護理查房
- 空間幾何向量法之點到平面的距離
- 反激式變壓器計算表格
- 精品資料(2021-2022年收藏)建筑立面裝飾設計技術導則
- ISO9001質量管理體系目錄結構
評論
0/150
提交評論