最大流--Ford-Fulkerson algorithm

笔记素材来源国科大卜东波老师

最大流其中一种解法是将其写成线性规化最后跑内点法便可以求出
在这里插入图片描述

先找初始解,然后进行改进,如果足够好,停止改进
初始解:设为零值流
在这里插入图片描述
那么如何改进呢,先找一个零值流,然后循坏找一条可行路径,并对其增流。
在这里插入图片描述
如左图,便是上述算法的执行结果,但失败地没有找到最大流,如何解决?
在这里插入图片描述
如图红色线所示出现错误的原因是,红色线不应该运(初始路径p不合适),那么就让红色的退回去1个单位流即可
为了实现退货这一功能,则要求加一相反的边(如下所示)
在这里插入图片描述
加了新的退货边,形成新的图就成为了所谓的剩余图。
在这里插入图片描述
那么什么是剩余图呢?它表征了原来的铁路在安排一个流后还能运输多少,即表征剩余运输能力,其次表示在当前流中还可以退回去多少,即反向边。

回到初始问题:如何通过剩余图来改善当前的流呢,答案是当前流加少构建的剩余图中的一条退贷边的路径,就得得改进后的新的流。如下图所示。在这里插入图片描述
核 心思想是在剩余图中找到一条路,如以下伪代码所示。
这便是Ford-fulkerson 算法
在这里插入图片描述
Demo 演示:
在这里插入图片描述
画出零值流对应的剩余图
在这里插入图片描述
找剩余图中中的一条路
在这里插入图片描述
可以最大增加8个单位的流
在这里插入图片描述
画出剩余图
在这里插入图片描述
在剩余图中找到新的路,新的路最多增加2个单位的流
在这里插入图片描述
新增两个单位的流
在这里插入图片描述
求出增流后的剩余图
在这里插入图片描述在剩余图中找到新的增广路,并增加最大6个单位的流
在这里插入图片描述

重复这样的操作,直至剩余图中再也找不到所谓从源点到汇点的增广路。
当然在新增流过程中,有可能操出原图的容量,此时做退货操作,如下图演示。
在这里插入图片描述
可以新增1个单位的流,但是要在超出容量的路径中反向退一个单位的流量
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值