zoukankan      html  css  js  c++  java
  • 最大流小结(入门)

    最大流的各种变体与技巧:

    1.存在多个源点和汇点,设置超级源点和超级汇点,使得超级源点连向各个源点,各个汇点连向超级汇点,边的容量都是INF

    2.顶点也有限制的情况(即有点权),考虑拆点,将顶点拆成两个点,中间连一条容量为点权的边

    3.若点与点之间的边为无向边,则各自方向建一条边(各自的容量都等于无向图边的值)也能得到相同的结果

    4.图发生变化的情况(一般指边权增加)。有时候求完最大流之后需要对原图进行一些改变这时候无需重新计算,而是利用前一步的结果求出新的最大流

    5.并点:当点过多时同时点的状态也是一样时,考虑将点合并扩大边的容量。

    6.判满流:往往将某些大的条件分成若干个小条件,当最大流等于从源点流出的流量时则为满足条件,否则不满足

    7.与流量平衡(流入==流出)相关的题目建图:行进列出模型(即从一边流入的值和从另一边流出的值相等)

    与最小割相结合:

    首先介绍割的性质:A.去掉割的边集则不存在点到汇的路径

    B.任一一个割将点集化成两部分。而割为两部分的桥梁。

    1.与二分图相关(最小点权覆盖集,最大点权独立集):将所给的图转化为带点权的二分图,进而将点权转化为边的容量,而点与点之间边的容量设置为INF(保证其不在最小割中),根据最小割的性质A,最小割必然是两侧到源、汇中的边,使得两个对象中至少有一个被取。最小点权覆盖集的目标是点权之和最小,刚好与最小割相对应。而最大点权独立集=所有点权之和-最小割

    2.与最短路相关:这类问题往往求边不可重复走的最短路的条数有关(只将最短路上的边加入网络中),因为边只能走一次所以将边的容量设为1.

    3.去除一些点使得某两点不可达,拆点建容量为1的边

    推荐几篇好的文章(进阶必看):

    http://blog.sina.com.cn/s/blog_60707c0f01011fnn.html(对偶图的应用)

    https://wenku.baidu.com/view/419b43d6360cba1aa811daeb.html(大规模网络流对偶图算法)

    《最小割模型在信息学竞赛中的应用》胡伯涛

    http://www.cppblog.com/MatoNo1/archive/2012/05/11/174440.html(关于网络流建模的方法)

    该总结未涉及的变形:

    1.最小流限制

    2.容量为负数的情况

    3.边权减小的情况

    4.无源无汇有容量下届网络的可行流

    5.最大权闭合图

    6.最大密度子图

  • 相关阅读:
    IE浏览器Ajax缓存问题小结
    2015第50周二
    2015第50周一了解微服务架构
    2015第49周日
    2015第49周六
    2015第49周五
    2015第49周四
    2015第49周三
    0当执行游戏xc000007b错误的解决方法
    微软的最高市值是多少?
  • 原文地址:https://www.cnblogs.com/HDUjackyan/p/8641358.html
Copyright © 2011-2022 走看看