差分约束系统
目前,差分约束系统在当代的应用可谓是越来越广泛,差分约束系统是值得我们好好学习的。现在我们就深入了解差分约束系统,希望本文能对各位读者有比较大的参考价值。
差分约束系统(system of difference constraints),是求解关于一组变量的特殊不等式组之方法。如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如:xj-xi<=bk(i,j∈[1,n],k∈[1,m])。 如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi<=bk(i,j∈[1,n],k∈[1,m]),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。
差分约束系统解法
差分约束系统
求解差分约束系统,可以转化成图论的单源最长路径问题。观察xj-xi<=bk,会发现它类似最短路中的三角不等式d[v] <=d[u]+w[u,v],即d[v]-d[u]<=w[u,v]。因此,以每个变量xi为结点,对于约束条件xj-xi<=bk,连接一条边(i,j),边权为bk。再增加一个原点(s,s)与所有定点相连,边权均为0。对这个图以s为原点运行Bellman-ford算法(或SPFA算法),最终{d[i]}即为一组可行解。
例如,考虑这样一个问题,寻找一个5维向量x=(xi)以满足: 这一问题等价于找出未知量xi,i=1,2,…,5,满足下列8个差分约束条件:x1-x2≤0 x1-x5≤-1 x2-x5≤1 x3-x1≤5 x4-x1≤4 x4-x3≤-1 x5-x3≤-3 x5-x4≤-3 该问题的一个解为x=(-5,-3,0,-1,-4),另一个解y=(0,2,5,4,1),这2个解是有联系的:y中的每个元素比x中相应的元素大 5。 引理:设x=(x1,x2,…,xn)是差分约束系统Ax≤b的一个解,d为任意常数。则x+d=(x1+d,x2+d,…,xn+d)也是该系统 Ax≤b的一个解。 bellman-ford算法伪代码: for each v V do d[v] <-- 无限大; d[s] <-- 0 Relaxation for i =1,...,|V|-1 do for each edge (u,v) 属于 E do d[v] <-- min{d[v], d[u]+w(u,v)} Negative cycle checking for each v 属于V do if d[v]> d[u] + w(u,v) then no solution。
如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi<=bk(i,j∈[1,n],k∈[1,m]),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。
差分约束系统
综上所述,本文已为讲解差分约束系统,相信大家对差分约束系统的认识越来越深入,希望本文能对各位读者有比较大的参考价值。
浏览过本文<差分约束系统>文的人也浏览了
差分输入
http://baike.cntronics.com/abc/1151
差分电路
http://baike.cntronics.com/abc/1152
差分方程,差分方程的应用
http://baike.cntronics.com/abc/1150