网络流入门5——(最大流算法—Dinic)

之前一直在写分析,还没有认真介绍一下网络流,这篇是从网络流的定义,求最大流所常用的Dinic算法入手开始的。

参考:http://blog.csdn.net/lzoi_hmh/article/details/74940366

什么是网络流?

网络流的最大流是什么意思?

定义:带权的有向图G=(V,E),满足以下条件,则称为网络流图(flow network)。
(1)仅有一个入度为0的顶点s,称s为源点(source)或发点;
(2)仅有一个出度为0的顶点t,称S为汇点(sink)或沟或收点;
(3)每条边的权值都为非负数,称为该边的容量,记作c(i,j)。

网络流是指给定一个有向图,和两个点–源点S和汇点T,点之间有连边, 
每条边有一个容量限制,可以看作水管,网络流就是指由S点流到T点的一个可行流。 
最大流就是指所有可行流里面最大的流。

通俗的讲,就是由若干个运货点,一个是起点,一个是终点,有一些运货点由路相连,每条路有容量限制,走过那条路时运送的货物不能超过其中的容量限制,求最大流就是求从起点运送尽量多的货物到终点,到达终点的货物个数。


上图就是一个网络流。

对于网络流图G,每条边都给定一个非负数fij,这组数满足下面条件,称为网络的容许流(flow),记作f。
(1)0≤fij≤ c(i,j);
(2)除源点s和汇点t,其余顶点vi恒有:
                       ∑fij=∑ fki
                                                                               j                                  k
          即每个点流入和流出量相同;
(3)对于源点s和汇点t有:
              ∑fsi=∑ fjt=w
                                                  i                                  j
    w称为网络流的流量。

二.DINIC算法演示:











代码:。。。








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值