最大流算法小結(jié)_第1頁
最大流算法小結(jié)_第2頁
最大流算法小結(jié)_第3頁
最大流算法小結(jié)_第4頁
最大流算法小結(jié)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、8/8流的算法網(wǎng)絡(luò)最大流的算法分類:一、Fordero增廣路方法 1、 Fo-Fkerson標(biāo)號算法(最簡單的實現(xiàn))分別記錄這一輪擴展過程中的每個點的前驅(qū)與到該節(jié)點的增廣最大流量,從源點開始擴展,每次選擇一個點(必須保證已經(jīng)擴展到這個點),檢查與它連接的所有邊,并進(jìn)行擴展,直到擴展到2、最大容量增廣路算法每次找一條容量最大的增廣路來增廣,找的過程類似Distr,實現(xiàn)起來相當(dāng)簡單3、dmnKarp,最短路增廣算法的BF實現(xiàn) 每次找一條最短的增廣路,BFS是一個可以很方便的實現(xiàn)思想、距離標(biāo)號算法最短路增廣的O()尋找實現(xiàn),使用距離函數(shù)d:dt=;to 找一條最短的增廣路徑 deta minrj:(

2、i,j)屬于 P 沿 P增廣 dlta 大小的流量 更新殘量網(wǎng)絡(luò) Gx retrn x在無權(quán)邊的有向圖中尋找最短路,最簡單的方法就是廣度優(yōu)先搜索 (FS),E-K 算法就直接來源于此.每次用一遍 尋找從源點 到終點 t 的最短路作為增廣路徑,然后增廣流量 f 并修改殘量網(wǎng)絡(luò),直到不存在新的增廣路徑。E- 算法的時間復(fù)雜度為 O(*2),由于 要搜索全部小于最短距離的分支路徑之后才能找到終點,因此可以想象頻繁的 B 效率是比較低的。實踐中此算法使用的機會較少.代碼如下:#defie VMAX 01t , m; /分別表示圖的邊數(shù)和頂點數(shù)in cVMXVMAX; /容量inEdmods_arp(n

3、ts, t t ) /輸入源點和匯點 int ,q, queVMA, , v, prVMAX,fow= 0, ug;whie(ue) mst(r,1,izf(re); /記錄父節(jié)點 for( ueuep=q=0=s;q; p+ ) /廣度優(yōu)先搜索 u= qeep; f( v=0; v&pr0; v+ ) i( cuv prv )rv=u, qee+q=v; ( pt0) bra; f( pret ) brek; /不存在增廣路 ug7ff; /記錄最小殘留容量 fr( uev=t; v!=s; v=,u=preu ) (cvug) u=u; for( =prvt; v!=s; =u,u=reu

4、 ) uag,cvu+=aug; ow+= au; retur flow; /至 n1二、ordFukeso方法 每次找增廣路,把這條路上的所有點的流量加上這條路上的殘余容量,再找新的增廣路,直到找不到為止,它有很多種實現(xiàn)方法,下面給出算法導(dǎo)論上的偽代碼.Fr_Fulron(G, s, ) fea ede( u, )EG fu, 0 fv,= 0 whl ther ess a path pfro o in thersidua etwrk Gf Cf(p)=in Cf(u,) |(u,v)s i p for eah edge(u,v)np do fu,+= f(p) fv,=-,vFord_Fu

5、erso 算法求解PKU 73代碼:#incue ; meet(isited, , siof(i)); ese(father,z(fater)); t now; ised0 =true; 。ph(0); whe(!。epy()/廣度優(yōu)先 n .rn(); qp(); if(now =M-) break; fo(it i;iM; i+) /每次父親節(jié)點都要更新,權(quán)值減為0的邊就不算了。 if(geow!visitedi) fathei = n; visitedi =rue; q.pus(i); /可能的增廣路不存在了 (!visitedM1) bak; t , mi 0 xFFFF; for(u

6、M; u; u=ftru)/找出權(quán)值最小的邊 i(egefaheu min) min = dgefatheru; /減去最小權(quán)值 for(u=M-1; u;uahu) edgefatheruu min; 前向弧減去 /后向弧加上 /存在圓環(huán),這句話關(guān)鍵 eufah =mi; ns=in; 當(dāng)前增廣路徑增加的流 i ma() in , e, ; hile(cin NM) as=0; emet(e, , sieo(ede)); for(int ; i; i+) isew; edges-1e-1+=; FodFulso(); cout a endl; retun 0; Ford_Fuler 算法求解

7、PK 1273 代碼:#iclud iostra#ncd usng aepae sd; intm,n,a,b,ost20121; it re201,M21,M=10000; boisit; it Bs() uent q; int tmp; vst1=rue; =0; in1=; q。push(1); we(!。empt() temp=q.front(); .(); f(tem=m)bek; f(it 1;=m;+) i(!viiti&costtempi) Mii=(Minemposempi) ? Minemp : cotepi; Preitemp; visiir;qpuh(i); if(!vi

8、sim) eun1; lse retrn inm; id Frd_Flkrn() int ,a_Fow=0; hile(=Bs())!=1) int te; Max_Flow=f; memse(sit,fse,szef(vist)); wile(temp!=1) int=Pm; cosrtf; ostpr+=f; ep=; rtf(”%d”,Max_Flo); in ain() whil(scnf(%d”,&n,m)!=E) mst(co,0,eof(ost)); (int =1;n;i+) scanf(”%ddd,&,&,c); costab+=c; od_Fulkerson(); etr

9、0; Frd_Fuksn()算法求解KU1273 代碼inlueiosrm#cldeuing namespe td;defie A_N x7ffffff#dineMN(a, ) (a) (b) ? () : () N,M, p210, re210,ndemin210, patmn210;deqe N M) mem(map,0, izof(map)); fo (i=0 ; i i ei ci; apsi = c; a max_flw(1, M); out ma ed; 三、Dini 算法F 尋找終點太慢,而F 又不能保證找到最短路徑。1970年 Dnic 提出一合了 B 與 DFS的優(yōu)勢,采用構(gòu)

10、造分層網(wǎng)絡(luò)的方法可以較快找到最短增廣路,此算法又稱為阻塞流算法。四、SAP算法ISAP GP BFS 的非遞歸版本代碼,網(wǎng)絡(luò)采用鄰接表開指針:#inceso#iudeusingaese std;cnt in manod =24;nst itifiiy 2100000000;struct ede int vr; /vete it ca; /cpacity ntflo; /rrentflow in s arc ed *e;/nxt arc ee *ev;/ reverse arc ede() ed(nt rte, inCacity, eg Nt) :ver(rte), cp(apaity), fl

11、w(),nxt(ex),rev(eg*)NLL) vi oratorne(sz_, vod p) reurn p; Netmxde;itdtmaxnoe= 0,numbsmxnoe =0, rc, es, n;oid re_FS() n Qmaxod, ha 0, al ; fo(int; i=; +i) dsti = max; nubsi= 0; tl+ =de; tdes =; numbs= 1; le(he != al) int Qad+; for(dee = tv; ; = enet) (e-rvcap = 0 diseexnde)cninue; dstever=dist + 1; +

12、mdite-vr; ai+ = -ve; afo() int , otalfw 0; ge CurEgexne,athxnde; or(i i=1; iap =afow; rdgeirev-cp += auflo; Cdgow += ugfo; Erevfl= augflow; toaflw += agflo; u =rc; edge; fr(e = urEg;e; = next) if(ecp & t=s-ve + 1)break; f(e) / indaamissile rc, n Adce uEge e; revptver rev; = eer; ese / no adiibe c,te

13、 labelhivetex i(0 = (numbdistu)bk; / A cu, Imprtnt! CurEdeu=t; i minist =; for(edge e = Netu;te; tenext) f(cap 0)idis = i(mdist, dit-er); dst = minist ; numsdistu; i(u!= sr) u = evphu-er; Baktck rtrtfw;nt an() nt m, , v, w; freen(ditcin, ”, tdin); fn(”ditch.out, ”w”, ot); wile(sa(”%d”, m, ) !=EOF) /PO 1273eed ti whe l gebuffer n dgm

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論