- 25
- 0
- 约2.15千字
- 约 13页
- 2020-07-29 发布于江西
- 举报
SEU SEU * A C (40) (10) (10) (20) (30) (30) (20) (20) (20) (30) (60) (40) (10) 下图为某一城市道路网络,路段均为双向,图中 数据(a )为道路通行能力(容量)。 求:从A、C两点到B点的最大网络运输能力(最大流量)。 B * 1 网络与流 网路流一般在有向图上讨论 定义网路上支路的容量为其最大通过能力,记为 cij ,支路上的实际流量记为 fij 图中规定一个发点s,一个收点t 节点没有容量限制,流在节点不会存储 容量限制条件:0? fij ? cij 平衡条件: 满足上述条件的网路流称为可行流,总存在最大可行流 当支路上 fij = cij ,称为饱和弧 最大流问题也是一个线性规划问题 vi A(vi) B(vi) * 2 截集与截集容量 定义:把网路分割为两个成分的弧的最小集合,其中一 个成分包含 s 点,另一个包含 t 点 。 一般包含 s 点的成分中的节点集合用V表示,包含 t 点的成分中的节点集合用V表示 截集容量是指截集中正向弧的容量之和 福特-富克森定理:网路的最大流等于最小截集容量 * 3 确定网路最大流的标号法 从任一个初始可行流出发,如 0 流 基本算法:找一条从 s 到 t 点的增广链(augmenting path) 最大流充要条件: 当且仅当不存在增广链时,可行流为最大流。 增广链中与 s 到 t 方向一致的弧称为前向弧,反之后向弧 增广过程:前向弧 f?ij=fij +q , 后向弧 f?ij=fij ?q 增广后仍是可行流 前向弧非饱和弧; 后向弧非零流弧。 * 最大流最小截的标号法步骤 第一步:标号过程,找一条增广链 1、给源点 s 标号[s+,q(s)=?],表示从 s 点有无限流出潜力 2、找出与已标号节点 i 相的连所有未标号节点 j,若 (1) (i, j)是前向弧且饱和,则节点 j 不标号; (2) (i, j)是前向弧且未饱和,则节点 j 标号为[i+,q(j)],表示从节点 i 正向流出,可增广 q(j)=min[q(i), cij?fij] ; (3) (j, i)是后向弧,若 fji=0,则节点 j 不标号; (4) (j, i)是后向弧,若 fji0,则节点 j 标号为[i?,q(j)],表示从节点 j 流向 i,可增广 q(j)=min[q(i), fji] ; 3、重复步骤 2,可能出现两种情况: (1) 节点 t 尚未标号,但无法继续标记,说明网路中已不存在增广链,当前流 v(f) 就是最大流;所有获标号的节点在 V 中,未获标号节点在 V 中,V 与 V 间的弧即为最小截集;算法结束 (2)节点 t 获得标号,找到一条增广链,由节点 t 标号回溯可找出该增广链;到第二步 * 最大流最小截的标号法步骤 第二步:增广过程 1、对增广链中的前向弧,令 f?=f+q(t),q(t) 为节点 t 的标记值 2、对增广链中的后向弧,令 f?=f?q(t) 3、非增广链上的所有支路流量保持不变 第三步:抹除图上所有标号,回到第一步 以上算法是按广探法描述的,但在实际图上作业时,按深探法进行更快捷 一次只找一条增广链,增广一次换一张图 最后一次用广探法,以便找出最小截集 * 最大流最小截集的标号法举例 (s+,?) (s+,6) (2?,6) (3+,1) (4+,1) (s+,?) (s+,5) (2+,2) (5?,2) (4+,2) * 最大流最小截集的标号法举例 (s+,?) (s+,3) (2?,3) 最小截集 * 多收发点的网络最大流 网络中存在多个发点和收点时:虚拟发点和收点,虚拟发点和收点到各发点的弧的容量、各收点的弧的容量为无穷大(不破坏发点、收点产生、吸引流量能力无限的条件) Vs3 Vt3 V2 V3 V4 V6 V5 13 9 4 5 6 5 5 5 4 5 10 4 Vs1 Vs2 Vt2 Vt1 Vs3 Vt3 V2 V3 V4 V6 V5 Vs1 Vs2 Vt2 Vt1 Vs Vt ∞ ∞ ∞ ∞ ∞ ∞ 多收发点的最大流问题转化为单收发点的最大流问题 最大流问题作业 Vs V2 V3 V6 V5 (3,2) (5,1) (1,1) (4,2) (2,2) (1,1) (5,2) (2,1) Vt (3,0) 弧旁注释(a,b)对应(弧容量,弧流量) * 6.4.5 最小费用最大流 双权网路:每条弧不但有容量,还有单位流量的通过费用 两种解法:一种基于最小费用路径算法;一种基于可行弧集的最大流算法 基于最小费用路径算法:总是在当前找到的最小费用的路径上增广流;缺点是每次增广后要改变弧的费用,且出现负权值
原创力文档

文档评论(0)