• 网络流


    【最小割输出方案】 残量网络DFS,跑出S能到达的点集A,割=(A,V-A)

    【最小费用任意流】(最大类似) 增广路的费用>=0时停止增广。

    顶点限流】 拆点

    【费用分段递 拆边

    【最小点割集】

      图G中 删去一些点使得  '这些点的权值和最小' 且满足 '从点S走不到点T'。

      将G中每个点v   拆成v1,v2  add(v1,v2,val[v]);

      对于G中每条有向边(u,v)  add(u2,v1,inf); (无向就add无向边)

      源是S2 汇是T1  求最小割、

      割边e(v1,v2),就是意味点v是要删去的点(当然 方案数不唯一)

    【最大权闭合子图】

      图G中 若u->v,则选了u必须选v, add(u,v,inf)

      对于w(u)>0的,add(S,u,w(u));  对于w(u)<0的,add(u,T,-w(u));

      Ans=(正权和) - (S->T的最小割)

    【上下界网络流】

      1. 无源汇可行流 (也叫可行循环流)  判是否可行

        新建 s0,t0,判断每个点v的(入边的下界和-出边的下界和=w ,大于0,则s0向v连w的边,小于0,则v向t0连-w的边。  然后跑s0->t0最大流,满流则可行

      2. 有源汇最大流

        原图的T向S连 上界inf 下界0的边。然后先当成无源汇可行流那样做……跑出可行流之后,存下S->T这条边的流量,然后删掉S-T这条边,删除s0,t0。再跑S->T的最大流,加上之前存下的S->T的流量

      3. 有源汇最小流

        反例在这个博客里有。https://www.cnblogs.com/kane0526/archive/2013/04/05/3001108.html 

        先不加T向S的inf边,直接按无源汇可行流的方法跑s0->t0的最大流。再加T向S的inf边,继续跑s0->t0的最大流。最后的T->S的流量就是可行最小流。

        先不加T向S的inf边,是为了将原图中的循环流尽可能利用上,分担T->S这条inf边的流量。这样就能得到最小流了。

    【区间K覆盖】

      指 在区间[1,n] 中 选择 若干个有价值的区间[l,r],要求重叠的区间不超过K层,最大化价值

      转换成网络流就是,把每个区间当成流,要求最大流=最小割<=K

      建模:  S -> 1 -> 2 -> 3 -> ... -> n -> T  ,其中每条边 流量为K,费用为0

        然后对于每一个区间 [l,r] ,add(l,r,1,-val)   跑费用流即可。

      1、如果要求重叠在每个点上的不超过K层, 拆点即可

      2、如果要求整个区间的n-1个段 分别被恰好覆盖ai层,可以将对应的 i -> i+1 边 流量改为 上下界都为K-ai (这里的K取 max(ai)即可 。)

    转载请标明出处 http://www.cnblogs.com/cyz666/
  • 相关阅读:
    LateX安装记录
    阅读《基于区块链技术的溯源系统 》总结(硕士论文)
    阅读《轻量级比特币交易溯源机制》总结
    论文复现实践
    20199316 2019-2020-2 《网络攻防实践》第12周作业
    20199316 2019-2020-2 《网络攻防实践》第十一周作业
    网络空间安全学习笔记
    20199316 2019-2020-2 《网络攻防实践》第10周作业
    20199316 2019-2020-2 《网络攻防实践》第9周作业
    20199316 2019-2020-2 《网络攻防实践》第8周作业
  • 原文地址:https://www.cnblogs.com/cyz666/p/6391453.html
Copyright © 2020-2023  润新知