网络流——最大流增广路算法

阅读: 评论:0

网络流——最大流增广路算法

网络流——最大流增广路算法

网络流——最大流增广路算法


最大流问题

最大流问题是给定源点 s 和汇点 t ,在允许从其他点中转的情况下,询问最多有多少个物品能从源点 s 运送到汇点 t 。


增广路算法

首先提出残量这个概念,残量指的是对应边上容量与流量之差,通俗来说就是这条边再允许通过的最大物品个数

增广路的思想就是找到一条由起点到汇点的路径(这个路径就是增广路),去除这条路径上残量的最大值 delta,为路径上的所有边的流量加上 delta。通俗来说就是有 delta 个物品通过这条路由源点运送到了汇点,而选择运送 delta 件物品的原因显而易见。

思考下面这种情况

如果我们第一次找 1 - 2 - 3 这条增广路, 通过这条路径我们运送了 1 件物品。如果通过这个增广路运送物品,则我们能够得到的最大值是1。然而答案应是 2 ,方法则是分别通过 1 - 2 - 4 和 1 - 3 - 4 这两条路径。

增广路的思想正确性是显而易见的,但是相对于这个图来说,我们缺少的是一个撤销的操作。如果举出增广路的同时回溯,那复杂度将会上升到指数级别,复杂度无法接受,因此引入了一个反向边的概念。

一条边的反向边就是从它的终点指向它的起点的边,这些反向边同样也具有流量,但是这些流量初始是0反向边是相对的。

如果加上了反向边,那么图一就会变成如下情况

在图二的情况下,我们同样先从 1 - 2 - 3 - 4 的这条增广路开始,在将增广路上所有边的残量减一的同时,也要对每条边的反向边加一

就构成了下图这种情况

这时我们发现 1 - 3 - 2 - 4这条增广路又联通了。注意在走这条增广路的同时也要对对应的反向边操作

添加反向边的原因是什么呢。其实如果我们走 3 - 2 这条反向边,就会为其对应的 2 - 3 这条刚开始走的边恢复到了 1 ,相当于不经过 2 - 3 这条路径。

这就是增广路算法

本文发布于:2024-01-28 22:22:11,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170645173610699.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   大流   网络
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23