zoukankan      html  css  js  c++  java
  • 上下界网络流构图证明

    对于上下界网络流,以前只会建图,不会证明,今天我算是会证了。
    (头一次证明图论啊,耶!)


    众所周知,网络流的一条可行流必须满足两个条件:流量守恒容量限制
    我们记有向图(G)的一条从(u)(v)的边的容量为(c(u, v)),流量为(f(u, v)),那么上述连个条件就可以形式化的写成:

    [sum _{u, i in G} f(u, i) = sum _ {i, v in G} f(i, v)$$$$f(u, v) leqslant c(u, v) ]

    现在每条边多了一个下限(b(u, v)),然后就有了这两种题型:求解可行流求解最大最小流
    以下我将分别证明这个图是怎么建的。


    求解可行流
    首先(b(u, v) leqslant f(u, v) leqslant c(u, v)),但因为网络流中只能体现流量非负,因此可以写成(f(u, v) = b(u, v) + g(u, v)),其中(g(u, v) geqslant 0)
    根据流量守恒,有

    [egin{align*} sum _ {u, i in G} f(u, i) &= sum _ {i, v in G} f(i, v) \ sum _ {u, i in G} b(u, i) + g(u, i) &= sum _ {i, v in G} b(i, v) + g(i, v) \ sum _ {u, i in G} g(u, i) - sum _ {i, v in G} g(i, v) &= sum _ {i, v in G} b(i, v) - sum _ {u, i in G} b(u, i) end{align*}]

    (M(i) = sum _ {i, v in G} b(i, v) - sum _ {u, i in G} b(u, i))
    (M(i) geqslant 0) 时,有

    [sum _ {u, i in G} g(u, i) = [sum _ {i, v in G} g(i, v)] + M(i) ]

    新建一个附加汇点(t),连一条新边(c'(i, t) = M(i)),就保证流量守恒了。
    (M(i) < 0)时,有

    [[sum _ {u, i 'in G} g(u, i)] - M(i) = sum _ {i, v in G} g(i, v) ]

    新建一个附加源点(s),从(s)(i)连一条边(c'(s, i) = -M(i))


    这样我们通过补充流量的方法把图建完了。
    能看出,原图存在可行流的情况必须满足对于任意一个(i)(g(s, i), g(i, t))都满载。
    这样我们从附加源跑最大流,然后看这些出边是否都满载即可。
    实际上不用依次判断附加源的出边,只用看到附加汇的流量是否为附加源出边的容量之和,因为根据这种建图的对称性,有(sum c'(s, i) = sum c'(i, t))


    上面讲的是无源汇可行流,对于有源汇的,只要在原源汇点加一条(c'(t_0, s_0) = [0,INF])的边就变成无源汇了。


    求解最大最小流
    方法和就是转化成循环流,在有解的前提下分情况。
    问题是自己只能口糊了,全网都没有什么证明……
    1.求最大流。
    一种做法是把(c'(t_0, s_0))这条边删掉,然后这次从(s_0)跑一边最大流,答案就是两次从(s_0)(t_0)的最大流量之和。
    另一种做法是不删边,直接跑,那么答案就是这次的(s_0)(t_0)的流量。


    2.求最小流。
    判完可行流之后,如果直接从(t_0)跑一边最大流进行退流的话,可能会超出下限。因此我们要删去所有和附加源汇相连的边和((s_0, t_0))这条边,相当于把这些补上去的流量给固定住了,这时候在退流,就能得出正确的最小流了。
    但是关于最小流,我在网上看到了n多种方法,各不相同但却都挺有道理。自己也试了一些,有些行得通有些行不通。不过为了防止自己记混,别的方法这里就不讲了。

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/mrclr/p/10764466.html
Copyright © 2011-2022 走看看