Ford-Fulkerson算法为什么可以将反向边当作普通边使用,背后的原理

文章目录


目的

最近在思考研究方向,在关注网络流问题,解决困扰几个月的一个问题,之前一直没有理解的就是Ford-Fulkerson算法中添加反向边后,为什么可以将反向边当作普通边使用,背后的原理是什么?

讲解

提示:本文中图片来自ShusenWang[bilibili]
在这里插入图片描述
如上图所示,通过 s → v 1 → v 4 → t s \rightarrow v_1 \rightarrow v_4 \rightarrow t sv1v4t走了3的流量,添加了如图所示的绿色虚线,这里的核心是这三条虚线边是没有前向关联性的,意思是:如果 v 1 → v 4 v_1 \rightarrow v_4 v1v4的全部或部分流量该走 v 1 → v 3 v_1 \rightarrow v_3 v1v3,将不会影响 s → v 1 s \rightarrow v_1 sv1的流量,但是会影响 v 4 → t v_4 \rightarrow t v4t,因为这部分的流量必须要有别的地方补上。
下一步在右图中继续找路。
在这里插入图片描述
通过 v 4 → v 1 v_4 \rightarrow v_1 v4v1走了1的流量,这说明撤回了原来从 v 1 → v 4 v_1 \rightarrow v_4 v1v4的量为1的流量。

宏观上的效果
原先 s → v 1 → v 4 → t s \rightarrow v_1 \rightarrow v_4 \rightarrow t sv1v4t v 1 → v 4 v_1 \rightarrow v_4 v1v4的量为1的流量改走 v 1 → v 3 → t v_1 \rightarrow v_3 \rightarrow t v1v3t,这对 s → v 1 s \rightarrow v_1 sv1没有影响,但是对 v 4 → t v_4 \rightarrow t v4t有影响,必须要有其他地方补充上流入 v 4 v_4 v4的1的流量,这部分流量正好就是我们现在找到的这条路径 s → v 2 → v 4 → v 1 → v 3 → t s \rightarrow v_2 \rightarrow v_4 \rightarrow v_1 \rightarrow v_3 \rightarrow t sv2v4v1v3t中的 s → v 2 → v 4 s \rightarrow v_2 \rightarrow v_4 sv2v4的量为1的流量。

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值