最大流问题之FF算法与EK算法

本文详细介绍了最大流问题中的两种算法:EK算法和FF算法。EK算法通过BFS寻找最短增广路径,直到无最短路径为止,最大流等于路径流量之和。FF算法则寻找随机路径,可能导致较多的BFS调用,效率低于EK算法。文章通过实例解释了算法原理,证明了最大流最小割定理,并分析了时间复杂度。
摘要由CSDN通过智能技术生成

目录

问题描述:

EK算法:

算法描述:

伪代码:

例子:

控制台对应输出为:

关键定理证明:

最大流最小割定理:

1推2:

2推3:

3推1:

时间复杂度分析

分析

关键边定义:

时间复杂度计算:

FF算法:

FF算法介绍

FF算法缺陷分析:


问题描述:

G=(V,E)是一个有向图,其中每条边(u,v)有一个非负的容量值c(u,v),而且如果E中包含一条边(u,v),那么图中就不存在它的反向边。在流网络中有两个特殊的结点,源结点s和汇点t,源结点s只会流出不会流进,汇点只会流进不会流出,我们要求的就是从源结点流到汇结点的路径的值之和的最大值

EK算法:

算法描述:

每次从残留网络中找出一条从源结点到汇结点的最短路径,流选为路径中的残存容量,依据流更新残存网络(将每条边的残存容量改为当前容量减去流的大小,并添加对应的反向边,边的容量为流的大小)

重复选最短路径,更新残存网络,直到没有最短路径为止

此时的流累加和即为最大流

 

由于每次要找的是最短路径,所以需要用BFS找路径

伪代码

例子:

初始图:

第一次路径1->2->4->6,流大小:12

更新后图为:

第二次路径为1->3->5->6,流大小:4

更新后图为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值