• 差分约束系统


    差分约束系统 
        如果一个系统由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

  • 相关阅读:
    pigeon
    servlet
    Linux (centos6.5) 安装Node和pm2
    git 常用命令
    git本地仓库推送代码到远程仓库
    linux 服务器 磁盘空间查看清理
    阿里云 Kubenetes容器 时区相差8小时 设置环境变量
    推荐一个简易易懂的ElasticSearch 入门学习站
    ElasticSearch 设置索引mapping 文档类型,重置elastic密码
    linux 查看系统各项指标(资源,内存)
  • 原文地址:https://www.cnblogs.com/gtarcoder/p/4901565.html
Copyright © 2020-2023  润新知