zoukankan      html  css  js  c++  java
  • 网络结点流网络浅析 By ACReaper

    文章结束给大家来个程序员笑话:[M]

        关于网络流,整整花了我一天间时,才看懂它再讲授什么,为了让初学者能更好解理,我算打写篇关于流网络的文章。

        

        1.流之网络最大流模型

        所谓的流网络其实也是图论的一部份,流网络是这样定义的,其每条边上都有两个值,一个称为flow流值,一个称为capacity,表现可通过的最大流值。

        而,问题是这样的,在现实界世中,我们可以立建很多这样的模型,有一个起始点,我们称它为源点,还有一个点称为点汇,那么源点相称与现实界世中

        的工厂,而点汇相称于仓库,每条边上可以看成是途径,而值capacity是这条路上所能流畅的最大物货量,我们想求得能从源点收回的最大货量,而且点汇

        所能接受到的最大货量即是源点收回的最大货量的值为多少,这就是流网络中的最大流模型!

        

        在这个流网络中,我们同时又定义了一个函数f,表现流的函数,c表现容量函数,且有一下三条性子

        

        1.f(x,y) <= c(x,y)   2.f(x,y) = -f(y,x), 3.在电脑上打不出来,即流入即是流出。

        对于

        1.很好解理。

        2.的意思就是从x到y的流值,也可等价表现为重y到x的流的值的取负,这里f(x,y)可认为正,可认为负,可认为0.但是前面的c(x,y)一定是正的。

        3.这个可以单简的这样解理,间中的结点都是转中结点,所以进来多上,可等要出去多少,不然在该结点就有累积,这样就不可能到达最大值,因为可以把这部份

        累积的值转移到其它结点,这样体总的值必定不会小于本来有累积的值!

        

        A。先在绍介一下残留网络,我在想这个名字真是听难!!!!!

        所谓的残留网络是实其基于这样一个实事,就是我们想要晓得每一条边还能在送传多少的流,我们把Cf表现为残留量其即是

        Cf(x,y) = c(x,y) - f(x,y)。对于图中的两个恣意结点,只要存在恣意一个方向的边,那么求残留网络时就有两条边。

        因为根据流网络的定义,如果边e 不属于边集E,则c(x,y) = 0,但是如果(y,x)属于边集,则就可以求出两条边,一个是0 - f(y,x) = 0 + f(x,y)

        每日一道理
    航行者把树比作指引方向的路灯,劳动者把树比作遮风挡雨的雨伞,诗人把树比作笔下的精灵,而我却要把树比作教师,它就是为我们遮风挡雨的伞,指明方向的路灯,打开知识殿堂的金钥匙。

        另外一个是c(y,x) - f(y,x).这个是个难点注意解理了,这个里解理了也就差不多了。

        

        B。增广径路

        所谓的增广路,就是在残留网络的基础上,存在的单简径路(可能有多条),从s源点出发到点汇t。当然这条径路也要足满流网络的三个性子,也就是说

        其实残留网络也是流网络!。还有当我们大扩流时,为要让每条边都能到达大扩的效果,必须取这条路上的小最C

        即Cf(p) = min(cf(x,y):(x,y)  is in p)

        

        上面绍介Ford-Fulkerson法方,之所以不称他为算法,是因为现实这个法方所用的数据结构有多种。

        Ford-Fulkerson(G,s,t){

        initialize flow f to zero //初始化这个流网络的流为0

           while there exist an augmenting path p//如果存在增广路p

                  do augment flow f along p//沿着这条增广路p大扩流f

           return f;//返回流,此时的流就是最大流。

        }

        

        基本的Ford-FULKERSON算法

        Ford-FULKERSON(G,s,t){

        for each edge(u,v) 属于E(G)

        do f(u,v) = f(v,u) = 0;

            while there exists a path p frpm s to t in the residual network Gf//Gf就是残留网络

                  do Cf(p) = min(cf(u,v)

             for each edge(u,v) in p

                do f(u,v) = f(u,v ) + Cf(p)

                     f(v,u) = -f(u,v)

        }

        

        2013 05 02

        By ACReaper

        

        

    文章结束给大家分享下程序员的一些笑话语录: 程序员喝酒
      我偶尔采用“木马策略”、“交叉测试”,时间不长就开始“频繁分配释放资源”,“cache”也是免不了的了,
      不过我从不搞“轮巡”,也不会“捕获异常”,更不会“程序异常”,因为我有理性
    克制的。  

  • 相关阅读:
    linux中压缩、解压缩命令
    linux中的sed指令
    linux中shell编程(一)
    linux中的正则表达式
    linux中的管道和重定向
    linux中用户、组和权限相关指令
    linux中bash常见的指令
    linux文本操作相关指令
    java.lang.OutOfMemoryError 解决程序启动内存溢出问题
    Java常用排序算法/程序员必须掌握的8大排序算法
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3055194.html
Copyright © 2011-2022 走看看