网络寻找最大流(Edmonds-Karp算法)

概述

本文将介绍网络流模型中寻找最大流的算法–Edmonds-Karp(简称EK)算法,即BFS寻找增广路径
该算法是基于Ford_Fulkerson思想,并且算法的实现逻辑依赖于残量图的权值,故下文将介绍Ford_Fulkerson思想和残量图

Ford_Fulkerson思想

在残量图中不断查找增广路径,直到增广路径为止

残量图Residual Graph

对于顶点v和顶点w

  • 原图中v-w的容量为k,流量为m
  • 残量图中的v-w的权值为k-m,w-v的权值为m
    如下图所示
  • 原图中,0-1的容量为4,流量为0
  • 残量图中,0-1的权值为4,1-0的权值为0
    在这里插入图片描述

Edmonds-Karp算法

即BFS寻找增广路径算法(如不熟悉BFS遍历,请翻阅本人的另一篇文章:图的遍历(动图))

以下,将会展示一个示例,来描述整个算法的过程
在这里插入图片描述

  • 从顶点0出发,bfs遍历到顶点1和顶点2,流量分别为:
    • 0-1的最大流量为4
    • 0-2的最大流量为2
      在这里插入图片描述
  • 从顶点1出发,执行BFS遍历,先遍历到顶点1和顶点2,此时1-3的权值不为0,所以可以走到顶点3,虽然从1可以到达2,但是2已经遍历过了,所以不执行,遍历完成,得到如图中的红色路径
  • 此时0-1的最大流量为4,1-3的最大流量为2,即找到一条从顶点0到顶点3的路径,最大流量为min(0-1的最大流量, 1-3的最大流量)=1-3的最大流量=2,更新0-1,1-3的残量图
    在这里插入图片描述
  • 从顶点0出发,执行BFS遍历,先遍历到顶点1和顶点2,由于此时1-3的权值已经为0,所以从1到不了3,虽然从1可以到达2,但是2已经遍历过了,所以不执行,从回到顶点2,此时2-3的权值不为0,所以可以从顶点2走到顶点3,遍历完成,得到如图中的红色路径
  • 此时0-2的最大流量为2,2-3的最大流量为4,即找到一条从顶点0到顶点3的路径,最大流量为min(0-2的最大流量, 2-3的最大流量)=0-2的最大流量=2,更新0-2,2-3的残量图
    在这里插入图片描述
  • 从顶点0出发,执行BFS遍历,先遍历到顶点1,由于0-2的权值为0,所以没有遍历到2,由于此时1-3的权值已经为0,所以从1到不了3,但是1-2的权值不为0,所以顶点1可以到达顶点2,而2-3的权值不为0,所以顶点2可以到达顶点3,遍历完成,得到如图中的红色路径
  • 此时0-1的最大流量为2,1-2的最大流量为6,2-3的最大流量为2,即找到一条从顶点0到顶点3的路径,最大流量为min(0-1的最大流量, 1-2的最大流量,2-3的最大流量)=0-1的最大流量或2-3的最大流量=2,更新0-1,1-2,2-3的残量图
    在这里插入图片描述
  • 从顶点0出发,执行BFS遍历,遍历到达顶点1和顶点2就结束了,再也找不到新的增广路径,由此,查找完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值