差分约束系统中的每个约束条件是形如如下所示的简单不等式:
xj - xi <= bk。
例如,求解不等式组
约束图:对于给定差分约束系统AX<=b,其对应的约束图是一个带权重的的有向图G=(V,E)
这里
V={v0,v1...vn}
E={(vi,vj):xj-xi <= bk 是一个约束条件 }U { (v0,v1)...(v0,vn)}
其中结点v0是我们自己添加的,用来保证图中至少存在一个结点,从其出发可以到达所有其他的结点。
边集中(v0,vi)的权值为0,(vi,vj)的权值为bk,那么我们就可以得到一个描述差分约束系统的约束图。
现在我们来证明可以通过在对应的约束图中寻找最短路来找到差分约束系统的一个解。
....
xk - xk-1 <= w(vk-1, vk)
将等式两边相加,左边为0,右边为这个环的权值之和,所以当环为负环时,不等式不成立,所以此时无解
求解差分约束系统。
可以使用Bellman-Ford算法求解差分约束系统。
因为约束图包含从源节点v0到所有其他节点的边,任何权重为负值的环路都可以从节点v0到达。如果Bellman_Ford算法返回true值,则最短路径权重给出的是该系统的一个可行解如果返回false值则差分约束系统没有解
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u014664226/article/details/47062643