差分约束
差分约束
在一个由n个变量和m个约束条件组成的系统,如\(x_i-x_j<=k_t\),在不等式组中,要求任意一组特解
将一个不等式变换,\(x_j+k_t>=x_i\)
这看起来很像spfa三角不等式的判断,如果把整个系统看作一张有向图,这个式子又可以写成
\(dis[pos]+val>=dis[to]\)
这个不等式的反向命题
\(dis[pos]+val<dis[to]\)
必须不成立
即当每一个都无法再对其临接点更新时,整个不等式组成立
利用spfa算法对整个图松弛即可得到一个可行的特解
若此不等式组不存在解,一定会有以下情况发生
\(x_i-x_j>k\)
\(x_j-x_i>k\)
放在图中就是一对可以互相松弛的点,成为一个负环,判断图中是否存在负环得到是否有解
自此,spfa可以完美的解决差分约束的问题
——2020.5.22