网络流笔记

一些名词

图 G(V,E)    边集为 V,点集为 E。
tmp(temporary)  暂时
弧       有向边
c(u,v)      容量          (cap)
f(u,v)      流量          (flow)
r(u,v)      残余流量        (rest)

最大流问题

1、Ford Fulkerson method

  • 1-1 残留网络
    r(u,v)=c(u,v)-f(u,v)=f(v,u)

  • 1-2 增广路径
    一条 s->t 的路径使得 r(u,v)>0

  • 1-3 求最大流
    建上反向边,使得流出去的流得以“反悔”。(精髓)
    当残留网络Gf中不包含增广路径时,f 就是是G的最大流。
    一直找增广路径,找不到就退出算法,那么当前流即是最大流

  • 1-4 找增广路方法

    • EK (EdmondsKarp)
      直接 bfs 找最短的增广路径,修改流量值,当没有增广路时算法停止。
    • Dinic (模板链接)
      EK 的优化,在分层的基础上 dfs。
      允许弧 u->v:rest[u,v]>0,dis[v]=dis[u]+1。
      每次求一次 dis[] (点在残量网络中到 S 的最短路),然后在允许弧网络中处理出若干条增广路径。
    • ISAP (Improved Shortest Augmenting Path)
      施工中
  • 1-5 相关证明
    施工中……

  • 1-6 推荐文章

2、Preflow-push method

割:流网络 G(V,E) 的割 (S,T) 将 V 划分为分别包含 s 与 t 的两个集合,从集合S到集合T的所有弧的集合
割容量:割中弧的容量和
最大流不能超过最小割

猜你喜欢

转载自blog.csdn.net/jackypigpig/article/details/78565098