差分约束&最短路

什么是差分约束

​ 如果一个系统由n个变量和m个约束条件组成,形成m个形如ai-aj≤k的不等式(i,j∈[1,n],k为常数),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。

求解差分约束系统,可以转化成图论的单源最短路径(或最长路径)问题。

例子:参考http://tsreaper.is-programmer.com/posts/180182

来考虑这个不等式:a-b ≤ c。

我们知道,对于最短路,有这样的不等式:dis(u) ≤ dis(v) + len(v,u) (v,u是由一条长度为len(v,u)的有向边连接的两个点,dis(v)与dis(u)表示起点到达v或u的最短路)。

变形得:dis(u) - dis(v) ≤ len(v,u),与a-b ≤ c是不是非常相似?

所以,对于形如a-b ≤ c的不等式,我们可以从点b向点a连接一条长度为c的边。这样,我们就可以把不等式转换为图。

求满足条件的最大值该如何建图?求满足条件的最小值呢?

差分约束求最大值时需要将不等式化为<=的格式,因为这样的不等式满足图论中最短路的性质,所以接下来用最短路来求。求最小值需要将不等式化为>=的格式,因为这样的不等式满足图论中最长路的性质,所以接下来用最长路来求。

差分约束解的存在性

最长路为什么正环代表该约束条件下无解?

最长路中不等式是>=的形式。

加入现在有a->b为$w_1 b &gt; a ,b-&gt;a为 b>aw_2 , , 这是一个正环,即满足 ,w_1+w_2>0 ,把边转化为不等式就是 b>=a+w_1,a>=b+w_2$ ,整理一下就是 0 &gt; = w 1 + w 2 0&gt;=w_1+w_2 0>=w1+w2,又因为 w 1 + w 2 &gt; 0 w_1+w_2&gt;0 w1+w2>0,所以与不等式矛盾,无解。

如果不等式无解,必有上面的矛盾,那么也一定存在正环。

所以无解的充分必要条件是存在正环.

最短路为什么负环代表该约束条件下无解?

最短路中不等式是<=的形式。

加入现在有a->b为 w 1 w_1 w1,b->a为 w 2 w_2 w2, 这是一个负环,即满足 w 1 + w 2 &lt; 0 w_1+w_2&lt;0 w1+w2<0。把边转化为不等式就是 b &lt; = a + w 1 b&lt;=a+w_1 b<=a+w1, a &lt; = b + w 2 a&lt;=b+w_2 a<=b+w2 ,整理一下就是 0 &lt; = w 1 + w 2 0&lt;=w_1+w_2 0<=w1+w2,又因为 w 1 + w 2 &lt; 0 w_1+w_2&lt;0 w1+w2<0,所以与不等式矛盾,无解。

如果不等式无解,必有上面的矛盾,那么也一定存在负环。

所以无解的充分必要条件是存在正环

图不连通怎么办?

然后是关于图不连通的情况,即不存在一个点能到达所有点。这个时候是不能得到解的。这个时候需要找一个超级源地,建立一些满足题意的关系。(其实就是多找一些不等式,更加的去约束条件)比如 a i &gt; = 0 a_i&gt;=0 ai>=0等等

下面是一些题目:

POJ - 1364 题解链接

POJ - 1716 题解链接

HDU - 1534

HDU - 3592 题解链接

https://www.luogu.org/problemnew/show/P3084

https://www.luogu.org/problemnew/show/P1250

https://www.luogu.org/problemnew/show/P1993

https://www.luogu.org/problemnew/show/P3275