12.20 差分约束学习笔记
先来看一组不等式:
X1 - X2 <= 0
X1 - X5 <= -1
X2 - X5 <= 1
X3 - X1 <= 5
X4 - X1 <= 4
X4 - X3 <= -1
X5 - X3 <= -3
X5 - X4 <= -3
在不等式组(1)中,每个不等式都是两个未知数的差小于等于某个常数(大于等于也可以,因
为左右乘以-1 就可以化成小于等于)。这样的不等式组就称作 差分约束系统(system of difference
constraints)。
这个不等式组要么无解,要么就有无数组解。因为如果有一组解{ X1, X2, ..., Xn }的话,那么
对于任何一个常数 k,{ X1 + k, X2 + k, ..., Xn + k }肯定也是一组解,因为任何两个数同时加一个
数之后,它们的差是不变的,那么这个差分约束系统中的所有不等式都不会被破坏。
我们已经知道对于这些不等式要么无解,要么有无数组解,我们通过构造,把他们转化成不等式之后(注意转化的时候最好全部转化成小于或者大于,这样比较好处理),构造一张图,然后再图上跑一遍最短路,
若是从原点到终点没有最短路或者有一个负环,那么这就是无解的情况,否则就有解。。。
备注:资源来自网络