网络流算法

网络流算法
很多实际问题可以建模为流网络
• 装配线上物件的流动
• 电网中电流的流动
• 通信网络中信息的流动
• 道路交通网络中的运输活动
• ……
• 一个源节点s、一个汇点t,由源节点流向汇点
• 流量守恒
网络流
• 流网络
是一个无自环的有向图G=(V, E),
(1) 图中的每条边(u, v)E有一个非负的容量值c(u, v)0。
if (u, v)E c(u, v)=0;
(2) 有两个特殊结点s, tV,s称为源结点(source),t称为汇点
(sink)
(3) For vV, 存在一个s到t经过v的路径svt.
• 流(Flow)
设G(V,E)是一个流网络,c是容量函数,s源结点,t是汇点。
G中的流是一个实值函数f:VVR,满足下列性质:
(1) 容量约束:
(2) 流量守恒:
在这里插入图片描述
这里的流,指的即使在该网络的限制中,能够从s出发并到达t的流量的和。
例如,该图的流为19.
最大流算法,即是求该图上面的能够从s出发并到达t的流的最大值。
由于在网络内部有限制,所以求解的是在该限制下的流的最大流。
想法•:循环递进
– 初始:网络上的流为0
– 找出一条从s到t的路径p和正数a,使得p上的每一条边(u,v)
的流量增加a之后仍能够满足容量约束:f(u,v)+ac(u,v)
//将p上的每条边的流量增加a,得到一个更大的流
– 重复执行第二步,直到找不到满足约束条件的路径.
关键在于:

  1. 如何找路径p,以便得到更大的流?
  2. 如何判断循环结束的条件?
    最大流算法
    Ford-Fulkerson方法
    招路径:
    在一个关联的剩余网络(余图)中寻找一条增广路径:
    剩余网络:
    在这里插入图片描述
    增广路径
    • 增广路径
    – 剩余网络中的一条由源结点s到汇点t的一条路径p
    在这里插入图片描述
    图中红色标注的路径为一条增广路径,其剩余容量为4
    • 增广路径p的剩余容量
    – cf
    §=min{cf(u, v) : (u, v)属于路径p}
    –表示了该路径能够增加的流的最大值。
    • FF算法的核心是:通过增广路径不断增加路径上的流
    量,直到找到一个最大流为止
    • 如何判断算法终止时,确实找到了一个最大流
    最大流最小割定理:
    设f为流网络G(V,E)一个流,该流网络的源结点为s,
    汇点为t,则下面命题等价:
  3. f是G的最大流.
  4. 剩余网络Gf不包含增强路径.
  5. 对于G的某个划分(S, T), | f |=c(S, T).

割的定义在这里插入图片描述
算法
在这里插入图片描述
一些问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值