zoukankan      html  css  js  c++  java
  • 网络流建图

    最大流问题变形:
    多汇点多源点:
    加一个超级源点S与超级汇点T
    S到每个源点建立一条容量为对应的最大流出容量的边
    每个汇点到T建立一条容量为对应的最大流入容量的边
    无向图:
    把无向图的一条边拆成两个反向的容量相等的有向边
    顶点上有流量限制:
    把每个顶点拆成两个顶点,一个入,一个出,然后入->出连接一条容量为顶点流量限制c的边
    有最小流量限制:
    最小费用流问题变形:
    与最大流类似

    最小权匹配问题:
    两类物体之间的对应关系,把两类物体看成顶点,并在顶点之间连接权重为对应花费的边,就转化为最小权匹配问题。
    可以使用最小费用流解决
    例如:人要从楼A逃到楼B里面去,A里面又Ai个人,B的最大容量为Bi,Ai ->Bj有一个时间花费,问最小的花费。
    1、 将A楼的顶点集定为U,B为V,同时增加S,T点
    2、 S->Ui 建立容量为Ai,花费为0的边
    3、 Vi->T建立容量为Bi ,花费为0的边
    4、 Vi->Vj建立通量为INF,花费为对应花费的边
    5、 所有大楼的总人数为F,则求的就是流量为F的最小费用流

    最大闭合图:
    闭合图:有向图的点集,该点集的所有出边都指向这个点集
    最大闭合图就是所有点集里顶点权值和最大的一个,通常是反映了某事件是另一个的必要条件,相互依赖。
    这个问题可以使用最小割来解决
    1、 增加源点S与汇点T
    2、 所有原有的边改为容量为INF
    3、 对于所有顶点权值为正的建立S->该顶点容量为权值的边
    4、 对于所有顶点权值为负的建立该顶点->T容量为权值的相反数的边
    5、 求个最小割即可
    二分图最小点权覆盖集:
    点覆盖:所有的边都至少有一个顶点在这个集合里面。
    最小点权覆盖集:权值和最小的点覆盖
    1、 增加源点S与汇点T
    2、 所有原有的边改为容量为INF
    3、 S->U建立容量为对应顶点权值的边
    4、 V->T建立容量为对应顶点权值的边
    5、 求个最小割即可

    二分图最大点独立集:
    点独立集:对于所有的边,都满足每条边的两个端点不都是在这个集合里面
    最大点独立集:点最多的。
    与最小点权覆盖集互补,求最小点权覆盖集,然后用所有顶点权值和减掉最小点权覆盖就是最大独立点集

  • 相关阅读:
    网管必备网站地址
    数组是否包含某个元素
    Thinking in java(八)
    Thinking in java(八)
    Java8系列之重新认识HashMap
    Java8系列之重新认识HashMap
    MarkdownPad2.5/2 注册码
    MarkdownPad2.5/2 注册码
    java8函数式编程(2)
    java8函数式编程(2)
  • 原文地址:https://www.cnblogs.com/shuzy/p/3945531.html
Copyright © 2011-2022 走看看