zoukankan      html  css  js  c++  java
  • 差分约束系统相关证明(存在负环则无解证明)

    先引用网上的关于差分约束的解释:

    一、引例

    1、一类不等式组的解

    给定n个变量和m个不等式,每个不等式形如 x[i] – x[j] <= a[k] (0 <= i, j < n, 0 <= k < m, a[k]已知),求 x[n-1] – x[0] 的最大值。例如当n = 4,m = 5,不等式组如图一-1-1所示的情况,求x3 – x0的最大值。

    图一-1-1

    观察x3 – x0的性质,我们如果可以通过不等式的两两加和得到c个形如 x3 – x0 <= Ti 的不等式,那么 min{ Ti | 0 <= i < c } 就是我们要求的x3 – x0的最大值。于是开始人肉,费尽千辛万苦,终于整理出以下三个不等式:

    1. (3) x3 – x0 <= 8

    2. (2) + (5) x3 – x0 <= 9

    3. (1) + (4) + (5) x3 – x0 <= 7

    这里的T等于{8, 9, 7},所以min{ T } = 7,答案就是7。的确是7吗?我们再仔细看看,发现的确没有其它情况了。那么问题就是这种方法即使做出来了还是带有问号的,不能确定正确与否,如何系统地解决这类问题呢?

    让我们来看另一个问题,这个问题描述相对简单,给定四个小岛以及小岛之间的有向距离,问从第0个岛到第3个岛的最短距离。如图一-1-2所示,箭头指向的线段代表两个小岛之间的有向边,蓝色数字代表距离权值。

    图一-1-2

    这个问题就是经典的最短路问题。由于这个图比较简单,我们可以枚举所有的路线,发现总共三条路线,如下:

    1. 0 -> 3 长度为8

    2. 0 -> 2 -> 3 长度为7+2 = 9

    3. 0 -> 1 -> 2 -> 3 长度为2 + 3 + 2 = 7

    最短路为三条线路中的长度的最小值即7,所以最短路的长度就是7。这和上面的不等式有什么关系呢?还是先来看看最短路求解的原理,看懂原理自然就能想到两者的联系了。

    若有负环,则不等式组解不存在:

    若存在负环,则已知a+b+c<0。

    又已知:

    B-A<=c……1

    C-B<=a……2

    A-C<=b……3

    假设存在解A,B,C

    2+3得:A-B<=a+b

    和1联立得:-c<=A-B<=a+b

    又因为:a+b<-c

    所以:a+b<a+b,明显不符合,所以解不存在

    解的存在性

    上文提到最短路的时候,会出现负权圈或者根本就不可达的情况,所以在不等式组转化的图上也有可能出现上述情况,先来看负权圈的情况,如图三-3-1,下图为5个变量5个不等式转化后的图,需要求得是X[t] – X[s]的最大值,可以转化成求s到t的最短路,但是路径中出现负权圈,则表示最短路无限小,即不存在最短路,那么在不等式上的表现即X[t] – X[s] <= T中的T无限小,得出的结论就是 X[t] – X[s]的最大值 不存在。

    图三-3-1

    再来看另一种情况,即从起点s无法到达t的情况,如图三-3-2,表明X[t]和X[s]之间并没有约束关系,这种情况下X[t] – X[s]的最大值是无限大,这就表明了X[t]和X[s]的取值有无限多种。

    图三-3-2

    在实际问题中这两种情况会让你给出不同的输出。综上所述,差分约束系统的解有三种情况:1、有解;2、无解;3、无限多解;

  • 相关阅读:
    JavaScript 各种遍历方式详解
    使用TortoiseGit操作分支的创建与合并
    前端实现图片压缩上传
    改变input的value值,同时在HTML中将value进行改变
    HTML中字体单位px pt em之间的转换
    解决PHP无法接收post超过1000个字段的问题
    解决微信不能扫描下载的问题
    实现类似于百度实时搜索将结果在下拉框中显示的功能
    Python导入路径含特殊字符的包
    大二秋学期记录
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/9547679.html
Copyright © 2011-2022 走看看