网站大量收购闲置独家精品文档,联系QQ:2885784924

朱全民专题网络流算法.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
朱全民专题网络流算法

图论算法 ---最大流问题 长沙市雅礼中学 朱 全 民 运输网络 现在想将一些物资从S运抵T,必须经过一些中转站。连接中转站的是公路,每条公路都有最大运载量。 每条弧代表一条公路,弧上的数表示该公路的最大运载量。最多能将多少货物从S运抵T? 基本概念 这是一个典型的网络流模型。为了解答此题,我们先了解网络流的有关定义和概念。 若有向图G=(V,E)满足下列条件: 有且仅有一个顶点S,它的入度为零,即d-(S) = 0,这个顶点S便称为源点,或称为发点。 有且仅有一个顶点T,它的出度为零,即d+(T) = 0,这个顶点T便称为汇点,或称为收点。 每一条弧都有非负数,叫做该边的容量。边(vi, vj)的容量用cij表示。 则称之为网络流图,记为G = (V, E, C) 可行流 可行流 对于网络流图G,每一条弧(i,j)都给定一个非负数fij,这一组数满足下列三条件时称为这网络的可行流,用f表示它。 1. 每一条弧(i,j)有fij≤Cij 2. 流量平衡 除源点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为零流弧;否则称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的一条道路,如果满足: 对于任意,I,jfij是非饱和流,并且i,j∈ P+ 或 fij是非零流,并且i,j∈ P- 那么就称P是f的一条可改进路。(有些书上又称:可增广轨)之所以称作“可改进”,是因为可改进路上弧的流量通过一定的规则修改,可以令整个流量放大。 割切 G = (V, E, C)是已知的网络流图,设U是V的一个子集,W = V\U,满足SU,TW。即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)。 //切割将网络流图分为两部分,所以最大流不可能大于这两部分的连接值即C(U,W) 定理2:可行流f是最大流的充分必要条件是:f中不存在可改进路。 定理3:整流定理。 如果网络中所有的弧的容量是整数,则存在整数值的最大流。 定理4:最大流最小割定理。 最大流等于最小割,即max V(f) = min C(U, W)。 最大流算法 第1步,令x=(xij)是任意整数可行流,可能是零流,给s一个永久标号(-, ∞)。 第2步(找增广轨),如果所有标号都已经被检查,转到第4步。 找到一个标号但未检查的点i, 并做如下检查, 对每一个弧(i,j),如果xijCij, 且j未标号,则给j一个标号(+i, δ(j) ),其中, δ(j)=min{Cij-xij , δ(i) } 对每一个弧(j, i),如果xji0,且j未标号,则给j一个标号(-i, δ(j) ),其中, δ(j)=min{xji , δ(i) } 第三步(增广),由点t开始,使用指示标号构造一个增广路,指示标号的正负则表示通过增加还是减少弧流量来增加还是减少弧流量来增大流量,抹去s点以外的所有标号,转第二步继续找增广轨。 第四步(构造最小割),这时现行流是最大的,若把所有标号的集合记为S,所有未标号点的集合记为T,便得到最小容量割(S,T)。 实例 复杂度分析 设图中弧数为m,每找一条增广轨最多需要进行2m次弧的检查。如果所有弧的容量为整数,则最多需要v(其中v为最大流)次增广,因此总的计算量为O(mv)。 费用流 流最重要的应用是尽可能多的分流物资,这也就是我们已经研究过的最大流问题。然而实际生活中,最大配置方案肯定不

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档