最大流算法(网络流问题)

最大流算法(网络流问题):

对于流的概念是,我觉得就是管道;而管道就存在一种限制,大的管道的通量要小于等于小的管道的最大的通量。

算法实现(基于DFS,我自己的思路):

**按照DFS的思想,先找到一条到目的点的路径,得到这个路径的最小权值存起来

**对于第一步用到的边,减去最小权值后(如果权值为0,则说明这个边已经走不通了),再用DFS算法,找到一条可达目的点路径,得到这个路径的最小权值,和刚刚得到的权值加起来

**重复上述步骤,直到找不到一条可达路径为止;这是最小权值的累加值就是这个图的最大流的值




**执行DFS搜索,找到一条可达6t的路径,1-2-5-6,这个路径中的最小权值是4

**所以,在经过第一次流通后,1-2的权值变为2,2-5的权值变为0,5-6的权值变为4,流通量为4

**重新执行DFS搜索,知道一条可达的路径,1-2-3-6,这个路径的最小权值是2

**所以,在经过第二次流通后,1-2的权值变为0,2-3的权值变为2,3-6的权值变为2,流通量为6

**重新执行DFS搜索,知道一条可达的路径,1-4-3-6,这个路径的最小权值是2

**所以,在经过第三次流通后,1-4的权值变为5,4-3的权值变为1,3-6的权值变为0,流通量为8

**重新执行DFS搜索,知道一条可达的路径,1-4-5-6,这个路径的最小权值是2

**所以,在经过第四次流通后,1-4的权值变为3,4-5的权值变为0,5-6的权值变为2,流通量为10

**至此,再也走不到可达的路线了,结束,最大流量是10


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值