ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

差分约束基本原理

2020-10-22 08:00:26  阅读:204  来源: 互联网

标签:不等式 基本原理 源点 差分 约束 leq 顶点


最短路的基本性质
如果图中不存在负权回路,则当算法结束以后,对于边\((x,y,w)\)有\(dist[y] <= dist[x] + w\)成立。
差分约束系统
对于一组不等式

\[\left\{ \begin{array}{c} x_1-x_2 \leq0 \\ x_1 - x_5 \leq1 \\ x_2 -x_5\leq1 \\ x_3 - x_1\leq 4 \\ x_4 - x_3\leq -1 \\ x_5 - x_3\leq -3 \\ x_5 -x_4\leq -3 \end{array} \right. \]

特点是全部是两个未知数的差小于等于某一个常数,这样的不等式组就称为差分约束系统。

这个不等式要么无解,要么就存在无限组解。因为如果存在一组解\({x_1,x_2,...,x_n}\)的话,那么对于任何一个常数\(k\)有\(\lbrace x_1+k,x_2+k,...,x_n+k\rbrace\)也肯定是一组解,因为任何两个数加上一个数后,他们之间的关系是不变的,差分约束系统所有的不等任然是满足的
差分约束系统与最短路径
差分约束系统的解法用到了单元最短路径问题中的三角不等式。对于有向图中任意一条边\((u,v)\)都有:\(dist[v] <= dist[u] + len[u]][v]\)

如果存在顶点\(u\)到顶点\(v\)的有向边,那么从源点到顶点\(v\)的最短路径小于等于从源点到顶点\(u\)的最短路径长度加上边(u,v)的长度

上述不等式和差分约束系统中的不等式相同,因此就可以把差分约束系统转化成一张图求解
构图
对于未知数\(x_i\)对应图中的一个顶点\(v_i\),把所有不等式都转化为图中的一条边,对于不等式\(x_i - x_j \leq y\)转化为三角不等式\(x_i\leq x_j + y\),就可以化成边\((x_i,x_j,y)\),最后在这条边上求一遍单源最短路径,这些不等式就全部满足了,因此它是单元最短路的基本性质

求解
若存在负环\正环,则不等式组一定矛盾,以不同的顶点出发会得到不同的解,但这些解都一定合理
增加源点
源点需要满足的条件:从源点出发,一定可以走到所有的边。从0号点可以走到任意的边,则一定可以到达所有边,具体在实现算法的时候,可以附加上超级源点,这个顶点和每一个顶点都连接一条权值为0的边。
算法求解的步骤

  1. 先将每一个不等式\(x_i\leq x_j + c_k\)转化为一条从\(x_j\)走到\(x_i\)长度为\(c_k\)的一条边
  2. 找一个超级源点,使得该源点一定可以遍历到所有的边
  3. 从源点求一遍单源最段路径

如果存在负环,则原不等式一定无解,否则,dist[i]就是原不等式组的一个可行解
最大值和最小值的求法
如果求得是最小值,则应该求最长路,如果求最大值,应该求最短路。
对于\(x_i\leq c\)不等式的转化,建立一个超级源点0,然后建立从0到\(i\)的边,长度是\(c\)即可
最长路对应大于关系,最短路对应小于关系

标签:不等式,基本原理,源点,差分,约束,leq,顶点
来源: https://www.cnblogs.com/zykBlog/p/13855838.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有