zoukankan      html  css  js  c++  java
  • 网络流建模汇总

    建模相关

    1.二分图最大(带权)独立集

      定义:在一个二分图中,每个点都有一个权值,在保证选中的点不相交的情况下,求选出的点的最大权值和。

      建模:S向X连容量为权值的边,Y向T连容量为权值的边。X与相连的Y连容量为INF的边。

      原理:求出原图最小割,若原图中存在一条边X->Y,则S->X与Y->T必有一条被割掉,被割边所连的点不选,ans=点权总和-最大流。

    2.二分图最小点(权)覆盖

      定义:假如选了一个点就相当于覆盖了以它为端点的所有边,最小顶点覆盖就是选择最少的点(最小的点权和)来覆盖所有的边。

      建模:S向X连容量为权值的边,Y向T连容量为权值的边。X与相连的Y连容量为INF的边。

      原理:求出原图最小割,对原图中每一条边X->Y,S->X与Y->T必有一条被割掉,选择被割边所连的点,该点覆盖了边X->Y。ans=最大流。

    3.二分图最小边覆盖

      定义:假如选了一条边就相当于覆盖了它所连接的两个顶点,最小边覆盖就是选择最少的边来覆盖所有的点。

      建模:S向X连容量为1的边,Y向T连容量为1的边。X与相连的Y连容量为1的边。

      原理:实质上是求出原图的最大匹配,若总点数为n,最大匹配为m,则未匹配的(n-2m)个点都只能单独选一条边来覆盖,ans=m+(n-2m)=n-m=总点数-最大流。

    4.DAG最小路径覆盖

      定义:用最少的路径数(要求路径不相交,若路径可相交应先用floyd求出传递闭包)覆盖所有顶点。

      建模:拆点,S向X连容量为1的边,X'向T连容量为1的边。对每条边X->Y ,由X向Y′ 连一条容量为1的边。

      原理:每选择一条边X->Y,相当于将以X为终点的路径与以Y为起点的路径合并,路径数就减1。ans=总点数-最大流。

    5.最大权闭合图

      定义:闭合图内的任意点的任意后继也一定在闭合图中,最大权闭合图是一个点权之和最大的闭合图。

      建模:S向每个正权点连容量为点权的边,每个负权点向T连容量为|点权|的边,对每条边X->Y ,由X向Y 连一条容量为inf的边。

      原理:(详见 胡伯涛 《最小割模型在信息学竞赛中的应用》)ans=正权点之和-最大流。选择的点与S在同一个割集中,dinic结束后dep!=0的点即为所选点。

    最大流相关

    1.将边(x,y)的流量退回

      方法:T到y求一次最大流,x到S求一次最大流。

    2.在bfs的时候碰到T就返回(玄学优化?)

    3.【餐巾计划】(流量可在花费一定费用后重复使用)第i天需要ai流量,连(S,i',ai)和(i,T,ai),第i天流量的所有来源->i,i'->所有去向。

    4.【志愿者招募】(流量只在一段区间内使用且费用不重复计算)第i天需要ai流量,连(i,i',inf-ai)和(i',i+1,inf),对流量可使用的一段区间[X,Y],连(S,X,v)和(Y',T,v)。(原理:优先流inf-ai的零权边,缺少的ai会用带权边补齐)

    5.无向图中找一条S->T->S的不相交路径相当于找两条S->T的路径

    6.【最长k可重区间集问题】将费用取反可以使流优先通过带权/零权边。此问题也可以看成k条不相交路径最大权和。

    最小割相关

    1.判断边(x,y,f)是否可以在最小割中

      方法1:在残量网络中bfs看是否存在x到y的路径,若不存在则该边可出现在最小割中。

      方法2:对残量网络缩点,若边(x,y,f)满流并且x和y属于不同SCC,则该边可出现在最小割中。

    2.判断边(x,y,f)是否一定在最小割中

      方法:对残量网络缩点,若边(x,y,f)满流并且S与x属于同一个SCC,y与T属于同一个SCC,则该边一定在最小割中。

  • 相关阅读:
    pytest简介
    python @property的用法及含义全面解析
    python的各种推导式(列表推导式、字典推导式、集合推导式)
    python--random库基本介绍
    整理一下python中with的用法
    Python之路:进程、线程
    Python代码风格的良好养成
    Ubuntu 部署Python开发环境
    Python面向对象编程
    Python文件操作
  • 原文地址:https://www.cnblogs.com/nnezhb/p/8668213.html
Copyright © 2011-2022 走看看