最大流算法ppt课件
- 格式:ppt
- 大小:299.00 KB
- 文档页数:32
福特-福尔克森最大流算法Ford-Fulkerson Algorithm定理假设f是网络G=(V, E, s, t, c) 的一个流,则以下陈述等价:(a)f 是一个最大流(b) 当前f的剩余图中不存在可增广道路(c) 存在G的一个s-t割(S, T)使得| f | = cap( S, T )由(a)和(b)的等价性可以给出最大流的构造算法——福特-福尔克森最大流算法(Ford-Fulkerson,1956):最大流算法Ford-Fulkerson (G)输入:网络G = ( V, E, s, t, c )输出:G的一个最大流f1.初始流量选为0流量,即对所有边uv,f uv ← 02.构造G关于f的剩余图G f3.若G f中存在增广道路P,则按照前述方法由增广道路P构造G的一个新的流f ’,f←f ’,转到步骤2;否则输出fs234 5t10 1098 410106 2 0 0 0 0 0 0 0 0 G:0 流 容量Flow value = 0s23 4 5t101098 4101062G f :8 0 0 0 0 8 8 0 0s2345t1029842 1062G f :8 8Flow value = 8s234 5t1010 98 41010 6 2 8 0 0 0 0 8 8 00 G:s2345 t 1010984101062100 2 1082G: 0s2345 t 1010784101062G f:2Flow value = 10s2345 t 10109841010621066 8 1082G: 6s2345 t 41018410462G f:866Flow value = 16s2345 t 101098410106210288 8 108G: 6s2345 t 21018210262G f:88 82Flow value = 18s2345 t 101098410106210399 9 107G: 6s2345 t 11097110162G f: 19 93Flow value = 19s2 3 4 5 t 10 10 9 8410 10 6 2 10 39 991070 G: 6如果各边的容量都是整数,则每次“f ←f ’”的更新都使得流的值至少增加1,因此算法至多在 次后结束()sv v succ s c ∈∑E nd。
⽹络流(最⼤流-Dinic算法)⽹络流定义 在图论中,⽹络流(Network flow)是指在⼀个每条边都有容量(Capacity)的有向图分配流,使⼀条边的流量不会超过它的容量。
通常在运筹学中,有向图称为⽹络。
顶点称为节点(Node)⽽边称为弧(Arc)。
⼀道流必须匹配⼀个结点的进出的流量相同的限制,除⾮这是⼀个源点(Source)──有较多向外的流,或是⼀个汇点(Sink)──有较多向内的流。
⼀个⽹络可以⽤来模拟道路系统的交通量、管中的液体、电路中的电流或类似⼀些东西在⼀个结点的⽹络中游动的任何事物。
————维基百科 最⼤流 正如可以通过将道路交通图模型化为有向图来找到从⼀个城市到另⼀个城市之间的最短路径,我们也可以将⼀个有向图看做是⼀个“流⽹络”并使⽤它来回答关于物料流动⽅⾯的问题。
设想⼀种物料从产⽣它的源结点经过⼀个系统,流向消耗该物料的汇点这样⼀个过程。
源结点以某种稳定的速率⽣成物料,汇点则以同样的速率消耗物料。
从直观上看,物料在系统中任何⼀个点上的“流量”就是物料移动的速率。
这种流⽹络可以⽤来建模很多实际问题,包括液体在管道中的流动、装配线上部件的流动、电⽹中电流的流动和通信⽹络中信息的流动。
我们可以把流⽹络中每条有向边看做是物料的⼀个流通通道。
每条通道有限定的容量,是物料流经该通道时的最⼤速率,如⼀条管道每⼩时可以流过200加仑的液体。
流⽹络中的结点则是通道的连接点。
除了源结点和终结点外,物料在其他结点上只是流过,并不积累或聚集。
换句话说,物料进⼊⼀个结点速率必须与其离开该结点的速率相等。
这个性质称为“流量守恒”,这⾥的流量守恒与Kirchhoff电流定律等价。
在最⼤流问题中,我们希望在不违反任何容量限制的情况下,计算出从源结点运送物料到汇点的最⼤速率。
这是与流⽹络有关的所有问题中最简单的问题之⼀().,这个问题可以由⾼效的算法解决。
⽽且,最⼤流算法中的⼀些基本技巧可以⽤来解决其他⽹络流问题。