码迷,mamicode.com
首页 > 其他好文 > 详细

差分约束系统学习笔记

时间:2015-07-26 06:14:19      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:算法导论   差分约束系统   

差分约束系统中的每个约束条件是形如如下所示的简单不等式:

xj - xi <= bk。

例如,求解不等式组

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的一个解。

约束图:对于给定差分约束系统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,那么我们就可以得到一个描述差分约束系统的约束图。

现在我们来证明可以通过在对应的约束图中寻找最短路来找到差分约束系统的一个解。

定理:1.对于给定的差分约束系统,如果其对应的约束图不包含权重为负值的环路,则
X = {d[1], d[2] ... d[n]}是该系统的一个可行解,其中d[i]表示v0到vi的最短路径。
2.如果G包含权重为负值的环路,则该系统没有可行解。
证明:首先证明第一条结论,
即当约束图中不包含权重为负值的环路时,对于任意一条边(vi,vj),因为
d[j] <= d[i] + w(i, j),即d[j] - d[i] <= w(i, j),故结论成立。
现在证明第二条结论。
如果G中包含负环,则没有可行解。设权重为负值的环路为(v1,v2 ... vk),这里v1 = vk。
环路c对应如下的差分不等式组:
x2 - x1 <= w(v1, v2)
x3 - x2 <= w(v2, v3)

....

xk - xk-1 <= w(vk-1, vk)

将等式两边相加,左边为0,右边为这个环的权值之和,所以当环为负环时,不等式不成立,所以此时无解


求解差分约束系统。

可以使用Bellman-Ford算法求解差分约束系统。

因为约束图包含从源节点v0到所有其他节点的边,任何权重为负值的环路都可以从节点v0到达。如果Bellman_Ford算法返回true值,则最短路径权重给出的是该系统的一个可行解如果返回false值则差分约束系统没有解

版权声明:本文为博主原创文章,未经博主允许不得转载。

差分约束系统学习笔记

标签:算法导论   差分约束系统   

原文地址:http://blog.csdn.net/u014664226/article/details/47062643

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!