zoukankan      html  css  js  c++  java
  • [学习笔记]上下界网络流

    概述

    上下界网络流本质上是给流量网络的每一条便设置了流量上界\(c(u,v)\)和下界\(b(u,v)\)

    无源汇上下界可行流

    给定无源汇流量网络\(G\) 。询问是否存在一种标定每条边流量的方式,使得每条边流量满足上下界同时每一个点流量平衡。

    不妨假设每条边已经流了\(b(u,v)\)的流量,设其为初始流。同时我们在新图中加入\(u\)连向\(v\)的流量为\(c(u,v) - b(u,v)\)的边。考虑在新图上进行调整至满足流量平衡关系。

    考虑设初始流入流量减初始流出流量为\(M\):
    \(M > 0\),此时入流量过量,其向 \(T'\) 连流量为\(|M|\)的附加边。
    \(M < 0\),此时出流量过少,\(S'\) 向其连流量为\(|M|\)的附加边。

    然后跑\(S' \to T'\)的最大流,若\(S'\)的出边均满流,则存在可行流。

    有源汇上下界可行流

    \(T\)\(S\)设一条\([0,\infty]\)的边即可转为无源汇的上下界可行流问题。

    有源汇上下界最大流

    给定有源汇流量网络\(G\)。询问是否存在一种标定每条边流量的方式,使得每条边流量满足上下界同时除了源点和汇点每一个点流量平衡。如果存在,询问满足标定的最大流量。

    我们找到网络上的任意一个可行流。如果找不到解就可以直接结束。

    否则我们考虑删去所有附加边之后的残量网络并且在网络上进行调整。

    我们在残量网络上再跑一次 \(S\)\(T\)的最大流,将可行流流量和最大流流量相加即为答案。

    有源汇上下界最小流

    改为跑\(T\)\(S\)的最大流退流即可。

  • 相关阅读:
    旋转编码器控制线扫相机
    函数被const修饰,const修饰的究竟是谁?
    静态函数不能引用非静态成员变量的原因,this指针
    Ubuntu18.04 截图工具flameshot
    基于STM32的uCGUI移植和优化
    基于bootsplash的嵌入式linux启动画面定制
    uC/OS-II源码分析(一)
    uC/OS-II源码分析(二)
    uC/OS-II源码分析(三)
    uC/OS-II源码分析(四)
  • 原文地址:https://www.cnblogs.com/dixiao/p/15793244.html
Copyright © 2011-2022 走看看