zoukankan      html  css  js  c++  java
  • 差分约束系统

    差分约束系统是指一系列不等式:

    $$ X_j - X_i le C_{ij}(1le i, j le n) $$

    当然 i,j 不必取遍 1-n,而且在扩展的状况下,对于每个(i,j),可以由多个 $C_{ij}$,但是我们很容易把它们化成一个不等式。

    在求解不等式组之前,我们可以分析一下这个不等式组的性质。

     

    1. 这个不等式组是可以无解的,比如:

    $$X_1 - X_2 le -1 \ X_2 - X_3 le -1 \ X_3 - X_1 le -1$$

    否则三个不等式相加得到 $0 le -3$。

     

    2. 如果这个不等式组有解 $(x_1, x_2, ..., x_n)$,那么对于任意常数 c,$(x_1 + c, x_2 + c, ..., x_n + c)$ 也是解。

    因为两个变量相减的过程中,常数 c 被减掉了。

    如果我们把诸 x 看做是数轴上的若干点,那么这条性质就是说任意一组解可以整体在数轴上平移使得它依然是解。

     

    3. 那么是不是所有解经过平移之后都会重合的呢?这当然也不是。

    就考虑一个极端状况,如果一个 $X_k$ 在系统中没有任何一个不等式,那么这个变量最后取多少都可以。这种状况就是其他点不动,唯独这个点随便在数轴上走。我们把这样的点叫做系统中的自由点。

     

    现在我们把这个系统映射到一个单源的图上。

    我们发现图上有不等式:$dis_j - dis_i le edge_{ij}$,其中 $dis_i$ 表示源点到 i 的最短路径的长度。

    如此一来,如果我们建立一个图,令 $edge_{ij} = C_{ij}$,那么 $(dis_1, dis_2, ..., dis_n)$ 就是系统的一组解。

    关于这个解有一些性质:

    0. 假设源是 s,那么 $dis_s=0$。

    1. 这组解中的 $dis_i$ 恰好是所以可能的解中 $x_i - x_s$ 的最大值。这个证明看这个 http://blog.csdn.net/runninghui/article/details/9137673

    2. 对于一个 $dis_u = INF$ 的 u,就是说这个 $x_u-x_s$ 没有最大值,多大都可以。

    3. 如果这个图中有从 s 可达的负环,那么这个最短路是没有的,这种状况对应着原来的差分约束系统无解。

     

    性质的重点当然是第一条,这样的话我们就可以解决上述数轴模型的最大距离问题。

    关于这个模型还有一些点:

    1. 如果有不等式 $X_j - X_i ge C$ 怎么办?这样只要变成 $X_i - X_j le -C$。

    2. 如果我们要解决的是距离最小值问题怎么办?上述过程启发我们建立 $dis_j - dis_i ge edge_{ij}$,那么这里的 dis 当然是最长路。

     

  • 相关阅读:
    HDU 1465 不容易系列之一(错排,递归)
    HDU 1397 Goldbach's Conjecture(二分,查找素数)
    HDU 1393 Weird Clock (英语,纪念题)
    HDU 1163 Eddy's digital Roots(模)
    HDU 1098 Ignatius's puzzle(数学归纳)
    HDU 1028 Ignatius and the Princess III (递归,dp)
    字符串方法
    __name__和__main的含义
    list 和 str
    python_元组
  • 原文地址:https://www.cnblogs.com/gu-castle/p/5003450.html
Copyright © 2011-2022 走看看