1、15.082 和 6.855J 最大流问题的最短增广路径算法 3 最短增广路径 4 1 1 4 2 1 2 3 3 1 s 2 4 5 3 t 这是初始网络和初始剩余网络 . 4 初始化距离 4 1 1 4 2 1 2 3 3 1 s 2 4 5 3 t 结点标号从此以后将是距离标号 . 0 5 4 3 2 1 t 4 5 3 s 2 d(j)是在 G(x)中的 j到 t的的最大的距离 0 2 1115 可进入弧的表示 4 1 1 4 2 1 2 3 3 1 s 2 4 5 3 t 弧 (i,j) 是 可进入的 ,如果 d(i) = d(j) + 1. 0 5 4 3 2 1 t 4 5 3
2、s 2 一条可进入弧的 s-t 路径是最短路径 . 0 2 111可进入弧将表示成粗线 . 6 4 2 寻找最短 s-t 路径 4 1 1 2 1 3 3 1 s 2 4 5 3 t 使用可进入弧从 s 开始进行深度优先搜索 . 0 5 4 3 2 1 t 4 5 3 s 2 0 2 111下一步 . 发送流并更新剩余容量 . 7 2 4 22 更新剩余容量 4 1 1 2 1 3 3 1 s 2 4 5 3 t 这里是更新的剩余容量 . 0 5 4 3 2 1 t 4 5 3 s 2 0 2 111我们将会以后更新距离标号,如果需要 . 8 2 4 22 寻找最短 s-t 路径 4 1 1
3、2 1 3 3 1 s 2 4 5 3 t 0 5 4 3 2 1 t 4 5 3 s 2 0 2 111使用可进入弧从 s 开始进行深度优先搜索 . 下一步 . 发送流并更新剩余容量 . 9 2 2 2 4 22 更新剩余容量 4 1 1 1 3 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 4 5 3 s 2 0 2 111这里是更新的剩余容量 . 我们将会以后更新距离标号,如果需要 . 10 2 2 2 4 22 寻找最短 s-t 路径 4 1 1 1 3 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 4 5 3 s 2 0 2 111使用可进入弧从 s 开始
4、进行深度优先搜索 . 如果没有从 i出发的可进入弧,那么 relabel(i) 且沿着到 i 的路径反向 . 11 2 2 2 4 22 更新距离和路径 4 1 1 1 3 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 4 5 s 2 0 2 111使用可进入弧从 s 开始进行深度优先搜索 . 如果没有从 i出发的可进入弧,那么 relabel(i) 且反向沿着从s出发的路径的一条弧 . 23 12 2 2 2 4 22 更新距离和路径 4 1 1 1 3 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t s 2 0 2 111使用可进入弧从 s 开始进行深度优先搜索
5、. 如果没有从 i出发的可进入弧,那么 relabel(i) 且反向沿着从s出发的路径的一条弧 . 23 3s 4 5 13 2 2 2 4 22 寻找最短 s-t 路径 4 1 1 1 3 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 2 0 2 111继续从它离开的地方的路径 如果路径达到了 t, 那么发送流且更新剩余网络 . 23 3s 4 5 14 2 2 2 4 22 更新剩余容量 3 1 1 1 2 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 2 0 2 11123 3s 4 5 这是更新的剩余容量 . 1 1 15 2 2 2 4 22 搜索最短 s
6、-t 路径 3 1 1 1 2 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 2 0 2 11123 3s 4 5 搜索 从 s 开始的 最短 s-t 路径 1 1 如果没有从 i出发的可进入弧,那么 relabel(i) 且反向沿着从s出发的路径的一条弧 . 16 2 2 2 4 22 搜索最短 s-t 路径 3 1 1 1 2 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 2 0 2 11123 3s 4 5 搜索从 s 开始的最短 s-t 路径 1 1 如果没有从 i出发的可进入弧,那么 relabel(i) 且反向沿着从s出发的路径的一条弧 . 25 32
7、17 2 2 2 4 22 搜索最短 s-t 路径 3 1 1 1 2 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 0 2 11123s 4 5 1 1 232 3 5 搜索从 s 开始的最短 s-t 路径 如果路径达到了 t, 那么发送流且更新剩余网络 . 18 2 3 3 4 12 更新剩余容量 3 1 1 1 2 1 s 2 4 5 3 t 0 5 4 3 2 1 t 0 2 11123s 4 5 这是更新了的剩余容量 1 1 232 3 5 19 2 3 3 4 12 搜索最短 s-t 路径 3 1 1 1 2 1 s 2 4 5 3 t 0 5 4 3 2 1 t 0
8、 2 11123s 4 5 搜索最短 s-t 路径 1 1 232 3 5 4s 下一步 : 更新剩余容量 20 2 3 4 2 更新剩余容量 2 1 1 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 0 2 111234 5 这是更新了的剩余容量 2 2 232 3 5 4s 1 21 2 3 4 2 搜索最短 s-t 路径 2 1 1 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 0 2 111234 5 更新距离标号和路径 2 2 232 3 5 4s 1 如果 d(s) n-1, 那么没有从 s到 t的路径 4565 2 22 2 3 4 2 存在为最优流的剩余容量 2 1 1 1 1 s 2 4 5 3 t 0 5 4 3 2 1 t 0 2 111234 5 不存在在剩余网络的 s-t 路径 2 2 232 3 5 4s 1 456最小切割有 S = s, 2, 5. 5 2