差分约束系统(system of difference constraints)是线性规划问题的一种。在一个差分约束系统中,线性规划矩阵A的每一行包含一个1和一个-1,A的所有其他元素都为0。因此,由Ax≤b给出的约束条件是m个差分约束集合,其中包含n个未知元。每个约束条件为如下形式的简单线性不等式:
xj-xi≤bk
其中,1≤i, j≤n,1≤k≤m。
例如:寻找一个5维向量x = ( xi )以满足:
这一问题等价于找出未知量x1,x2,x3,x4,x5,满足以下8个差分约束条件:
为保证图的连通,在图中引入附加节点vs使图中每个顶点vi都能从vs可达,并设弧( vs, vi )的权w( vs, vi ) = 0。对于每一个差分约束xj - xi <= bk(注意是小于等于符号),则弧( xi, xj )的权w( xi, xj ) = bk。
初始化dis[ vs ] = 0,dis[ i ] = ∞。
求解以vs为源点的单源最短路径。
求解差约束分系统,关键在于找到约束条件,然后用Bellman-Ford,或SPFA就能做了。
大牛详细讲解:落花