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

差分约束系统

时间:2015-10-22 18:57:57      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

差分约束系统 
    如果一个系统由n个变量和m个不等式组成,形如 Xj - Xi <= Bk, i, j属于[1, n], k属于[1,m],这样的系统成为差分约束系统。差分约束系统通常用于求关于一组变量的不等式组。

转换成图 
    可以将差分约束系统转换为单源最短路径来进行求解。 
    记Xi表示图中源点s到达图中节点i的最短路径长度,Xj为图中源点s到达节点j的最短路径长度,依次转换... 并将Bk视为图中节点i到节点j的边的长度,则根据 min_dist[i] + dist[i-->j] >= min_dist[j]可以得到Xi + Bk >= Xj, 这和初始给定的约束条件 Xj - Xi <= Bk 一致。

应用 
    于是,就将给定的约束变量Xi,Bk和构造出来的图的节点和最短路径对应起来。接着就可以利用最短路来求解差分约束系统的目标结果。 
    比如,给出一系列差分约束条件 Xj - Xi <= Bk ... 求出 Xt - Xs 的最大值。 
显然,将差分约束转换为图之后,Xt-Xs的最大值,就等于图中s到t的最短路径。这是因为通过转化的时候各个Xi都转换为s到节点i的最短距离,那么Xt为源点s到节点t的最短距离,Xs=0,于是,Xt - Xs就等于图中s到t的最短距离。

需要注意的几个问题 
(1)Xj - Xi >= k可以转换为 Xi - Xj <= -k,这样可能会出现负权边,相应的求最短路就不能用Dijkstra算法
(2)Xj - Xi = k 转换为 Xj - Xi <= k 和 Xj - Xi >= k(即Xi - Xj <= -k)处理 
(3)当图连通时,只需要对源点进行一次SPFA即可,若不连通,则需要对每个顶点SPFA一次 
(4)在求最短路还需要判断是否存在负权和环,若存在负权和环,则该差分约束系统不存在可行解 
(5)对于 Xj - Xi < k 或者 Xj - Xi > k,差分约束系统只针对 >= 或者 <= ,还需要将 > < 转换变成 >=, <=.

参考 
http://www.cnblogs.com/pony1993/archive/2012/09/01/2666996.html

差分约束系统

标签:

原文地址:http://www.cnblogs.com/gtarcoder/p/4901565.html

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