第九章 图与网络分析 下载本文

?0783?????123?70?23????120????8?05?4???103,???D1?W??3250224?P1??123??3?20?6??020?????42?09???003????4690??000????0783?????078?70?23????70?????8?05?4???8?0???D2?D1*D1??3250224?*?325??3?20?6???3??????42?09?????4????4690?????????0?5??8 ???3?5??5?7??0?5??8?D3?D2*D2??3?5??5?7??0?5??8 ???3?5??5?7?4000?4500??4060??;

4567?4507??4067?4567??3????23????5?4???

0224?20?6??2?09?4690??4444?4544??4464??;

4567?4547??4464?4547??583557??143?424072346?????143705749?,?P2??123250224??424372046???442406??443?444694660???583557??0?072346???5705749??8??250224?*?3372046??5??442406??5?694660???7583557?072346??705749??

250224?372046??442406?694660??4444?4544??4464??

4567?4547??4464?4547??583557??143?424072346????143705749???250224??D2,P3??123?424372046???442406??443?444694660???由于D3?D2,结束运算,求得各村之间的最短距离矩阵为D3,最短路径矩阵为P3。

17

题型III 求网络的最大流问题

求最大流的有效算法通常使用标号算法,从一个可行流f开始,寻找一条从

vS到vT的可增广链,直到找不到可增广链为止,最后的流量即为最大流。标号算法一般分为两个过程:第一是标号过程,通过标号来寻找可增广链,第二是调整过程,沿可增广链调整流以增加流量。标号算法的基本步骤:

步骤1:标号过程

(1)对于源vS,标号为(—,??);

(2)选择每个已经标号的顶点vi,对于vi的所有未给标号的邻接点vj,作如下处理:

① 若(vj,vi)?E,且fji?0,则令?j?min(fji,?i),并且将vj标号为(?vi,?j)。

?vi表示vi是vj的后续点。

②若(vi,vj)?E,且fij?cij,则令?j?min(cij?fij,?i),并且将vj标号为

(?vi,?j)。?vi表示vi是vj的前列点。

(3)重复步骤(2),直到汇vT被标号不再有顶点可被标号。若vT被标号,则得到一条可增广链,继续调整过程。若根据(2),vT`不能获得标号,则说明f已经是最大流。

步骤2:调整过程

调整一般反向进行,重新计算各条弧的流量。用fij?表示调整后的弧(vi,vj)的流量,令

?fij??t?fij???fij??t?f?ij(vi,vj)为可增广链上的前向弧时(vi,vj)为可增广链上的后向弧时 (vi,vj)不在可增广链上 将调整后的流f?的标号全部去除,并重复步骤1和步骤2的标号和调整过程,对f?重新进行标号,直到不能再进行标号为止。

例9-7 计算如图9-9所示的网络从vS到vT的最小割集和最大流。弧上记号

18

表示相应弧的最大流容量cij。

v11416v61322v1(14,0)(16,0)(3,0)v6(13,0)3(22,0)vS915v2612v567vT19vS(15,0)v2(6,0)(12,0)v5(6,0)(7,0)vT(19,0)5(9,0)(5,0)v34v4

v3(4,0)v4

图9-9 图9-10

解:在图9-9中,弧上记号只有最大流容量,没有给出已知的可行流,为了采用标号法计算最大流,将可行流的所有流量计算为0,如图9-10所示,然后采取标号法计算最大流。

步骤1:第一次标号过程 将vS标号为(—,??),?S???;

检查vS的邻接点v1,v1满足(vS,v1)?E,fS1?cS1,令?1?min(cS1?fS1,?S)

?min(14?0,??)?14,将v1标号为(?vS,14)。

检查v1的邻接点v6,v6满足(v1,v6)?E,f16?c16,令?6?min(c16?f16,?1)

?min(16?0,14)?14,将v6标号为(?v1,14)。

检查v6的邻接点vT,vT满足(v6,vT)?E,f6T?c6T,令

22?0,14)?14,将vT标号为(?v6,14)。 ?T?min(c6T?f6T,?6) ?min(得到可增广链vS?v1?v6?vT,?T?14。 步骤2:第一次调整过程 由fij??fij??T,得到

f6?T?f6T??T?0?14?14 ??f16??T?0?14?14 f16?1?fS1??T?0?14?14 fS第一次标号、调整的结果如图9-11(a)所示。依此类推,可以继续标号、调整过程,结果见图9-11中各图所示。

19

(?vS,14)v1(?v1,14)(16,14)(3,0)v6(14,14)(13,0)(22,14)(?,??)vS(15,0)v2(6,0)(12,0)v5(6,0)(?v6,14)(7,0)vT(9,0)(5,0)(19,0)v3(4,0)v4

(a) 第一次标号、调整(vSv1v6vT,?T?14)

v1(14,14)(?v5,12)(16,14)(3,0)v6(?,??)(?vS,15)(15,8)(13,8)(22,22)vSv2(12,8)(?v2,12)v5(?v6,8)(7,0)vT(9,0)(6,0)(5,0)(6,0)(19,0)v3(4,0)v4

(b) 第二次标号、调整(vSv2v5v6vT,?T?8)

v1(14,14)(16,14)(3,0)v6(13,8)(22,22)(?,??)vS(15,8)v2(6,0)(12,8)v5(6,0)(?v4,4)(7,0)vT(9,4)(5,0)(19,4)v3(?vS,9)(4,4)(?v3,4)v4

(c)第三次标号、调整(vSv3v4vT,?T?4)

20