求解网络流涉及的几个主要概念

本文深入探讨了网络流问题,包括容量网络、残留网络、增广路等核心概念。介绍了多种求解最大流的方法,如一般增广路、最短增广路、Dinic算法等,以及最小割的枚举和深度优先搜索求解策略。同时,讨论了流量有上下界的网络最大流和最小流的计算,并提到了最小费用最大流的求解策略,如二分法和最短路径增值算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 容量网络、残留网络、层次网络;

2、 增广路、前向弧、后向弧、网络流、割;

3、 弧的容量、流量;

4、 距离标号、活跃顶点、盈余、推进;

5、 可行流、预流、最大流、可改进量、最小割。

6、 拆点、路径压缩、最短路、DFS、BFS、二分搜索。

一、网络最大流

1、 一般增广路算法(Generic Augmenting Path)

2、 最短增广路算法(Shortest Augmenting Path)

3、 连续最短增广路算法——Dinic算法(Successive Shortest Augmenting Path Algorithm)

4、 一般预流推进算法(Generic Preflow-Push Algorithm)

5、 最高标号预流推进算法(Highest-Label Preflow-Push Algorithm)

6、 SAP算法

二、最小割的求解

1、 先求得最大流,然后依次枚举。

枚举思路:

1) 枚举一条边,并计算没有这条边的最大流,如最大流减少,则删去此边,记下此时的最大流,否则,不删边,枚举下一条边;这样反复枚举,计算,记录,直到最后最大流变为0.枚举结束,求得最小割的边。

2) 枚举一个点,并计算失去这个点的最大流,如最大流减少,则删去此点,并记下次时的最大流,否则,不删点,枚举下一个点;这样反复枚举,直至最大流为0.枚举结束,求得最少删去的点数。

这种思路简单,但要多次求最大流,容易超时。

2、 先求得最大流,然后DFS优先搜索历遍。

深搜思路:

在残余网络中从原点Vs出发进行DFS,历遍到的顶点做标记(条件为该边的残留容量不为0),这些点构成集合S,其余顶点构成顶点T。然后连接SàT的所有前向弧(后向弧也是饱和的,这不过它的正流量为0,所以不统计),这些弧的残留为0,也就是说这些弧是饱和的。

这种方法使用DFS完成,也可改用BFS,来求得最小割边集合,所用的时间相对较少。

三、流量有上下界的网络最大流和最小流

1、  网络:原始网络(Arc:上界、下届、流量)、伴随网络(Acc:上界、下届、流量)。

2、  Acc的构建:增加一个新的起点S,新的终点T;定点i 的入度 u 大于出度 v 时,增加一条S à i 的边,容量为u-v;相反,增加一条i à T 的边,容量为v-u;其它边的容量皆为上界 - 下界。

当S à 各点的流量都满载时,存在可行流。

       3、求原网络的可行流:Acc的流量 + Arc 的流量下界。

4、构建有可行流后的残留网络(网络中弧的容量为:流量上界 – 可行流量),然后求解该网络的最大流,最

后与可行流相加就是最大流;求最小流则只要在构建残留网络后,将源点和汇点交换,再求最大流,最后结果的相反值就是最小流。

网上有种Vt à Vs 连边的一种简易方式求最大最小流,使用二分搜索,详细参见:http://wenku.baidu.com/view/0f3b691c59eef8c75fbfb35c.html

四、最小费用最大流(最大流不唯一的情况)

1、 先使用floyd求出任意两点间的最短距离,再求出网络最大流,然后使用二分法设置两点间最长距离的限制,以此为条件重新建立容量网络,求最大流,如最大流减小,则增大距离限制,否则减少,反复操作,直到取到最小的距离(距离最好是整数)。

2、 求得从源点到汇点的一条最短路径(约束条件:该边可流通),然后求出这条路上的增广量;然后反复运行,直到没有一条从源点到达汇点的最短路,得出最大流中的最小费用。

MPLA最短路径增值算法
1、初始化流量,计算出剩余图。
2、根据剩余图计算层次图。若汇点不在层次图内,则算法结束
3、在层次图内不断用bfs增广,知道层次图内没有增广路为止
4、转步骤2

Dinic算法
1、初始化流量,计算出剩余图。
2、根据剩余图计算层次图。若汇点不在层次图内,则算法结束
3、在层次图内用一次dfs过程增广
4、转步骤2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值