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

时间:2022-10-29 04:30:33

之前一直在写分析,还没有认真介绍一下网络流,这篇是从网络流的定义,求最大流所常用的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点的一个可行流。 
最大流就是指所有可行流里面最大的流。

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

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

上图就是一个网络流。

对于网络流图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算法演示:

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

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

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

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

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

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

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

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

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

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

代码:。。。