zoukankan      html  css  js  c++  java
  • 最大流算法小结

    最大流算法小结
       最近在看网络流,把几个常用的算法总结下,正确性的证明和一些理论的东西就不写了,参看算法导论和神牛们的论文,我只写算法的理解和实现模板。

    Ford-Fulkerson方法
          每次找增广路,把这条路上的所有点的流量加上这条路上的残余容量,再找新的增广路,直到找不到为止,它有很多种实现方法,下面给出算法导论上的伪代码
    Ford_Fulkerson( G, s, t ){
        
    for each edge( u, v )∈E[G]
            
    do    f[u,v]= 0
                f[v,u]
    = 0
        
    while there exists a path p from s to t in the residual network Gf
            
    do    Cf(p)= min{ Cf(u,v) | (u,v) is in p }
            
    for each edge(u,v) in p
                
    do    f[u,v]+= Cf(p)
                    f[v,u]
    = -f[u,v]

    Edmonds-Karp算法
          就是用广度优先搜索来实现Ford-Fulkerson方法中对增广路径的计算,时间复杂度为O(VE2)
          (代码参考NOCOW)
    #define VMAX 201
    int n, m;        //分别表示图的边数和顶点数
    int c[VMAX][VMAX];
    int Edmonds_Karp( int s, int t ){    //输入源点和汇点
        int p, q, queue[VMAX], u, v, pre[VMAX], flow= 0, aug;
        
    while(true){
            memset(pre,
    -1,sizeof(pre));        //记录父节点
            for( queue[p=q=0]=s; p<=q; p++ ){    //广度优先搜索
                u= queue[p];
                
    for( v=0; v<m&&pre[t]<0; v++ )
                    
    if( c[u][v]>0 && pre[v]<0 )
                        pre[v]
    =u, queue[++q]=v;
                
    if( pre[t]>=0 )    break;
            }

            
    if( pre[t]<0 )    break;        //不存在增广路
            aug= 0x7fff;    //记录最小残留容量
            for( u=pre[v=t]; v!=s; v=u,u=pre[u] )
                
    if(c[u][v]<aug)    aug=c[u][v];
            
    for( u=pre[v=t]; v!=s; v=u,u=pre[u] )
                c[u][v]
    -=aug, c[v][u]+=aug;
            flow
    += aug;
        }

        
    return flow;
    }
  • 相关阅读:
    [Ps]图层混合模式——排除
    [Swift]自定义View
    [Swift]Closures概念与使用
    [Swift]Class的概念与使用
    [Swift][OC]tableView去掉顶部空白
    html引用css的四种方法
    plSQL技巧:“tns:无法解析指定的连接标识符”问题详解
    桌面任务栏右侧的输入法状态(也就是语言栏)不见了,通常有以下几种解决方法:
    Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决
    Tomcat使用相对路劲来访问
  • 原文地址:https://www.cnblogs.com/ACAC/p/1737767.html
Copyright © 2011-2022 走看看