差分约束系统--详讲

------------差分约束题目请戳:差分约束题集暨报告

总的开说差分约束问题就是给出一系列不等式然后求问某一式子的最大值或者最小值。

差分约束问题具体解释:

比方有这样一组不等式:

X1 - X2 <= 0

X1 - X5 <= -1

X2 - X5 <= 1

X3 - X1 <= 5                   不等式组(1)

X4 - X1 <= 4

X4 - X3 <= -1

X5 - X3 <= -3

X5 - X4 <= -3

全都是两个未知数的差小于等于某个常数(大于等于也能够,由于左右乘以-1就能够化成小于等于)。这种不等式组就称作差分约束系统。

这个不等式组要么无解,要么就有无数组解。

由于假设有一组解{X1, X2, ..., Xn}的话,那么对于不论什么一个常数k。{X1 + k, X2 + k, ..., Xn + k}肯定也是一组解,由于不论什么两个数同一时候加一个数之后。它们的差是不变的,那么这个差分约束系统中的全部不等式都不会被破坏。

差分约束系统的解法利用到了单源最短路径问题中的三角形不等式。

即对于不论什么一条边u -> v。都有:

d(v) <= d(u) + w(u, v) 

当中d(u)和d(v)是从源点分别到点u和点v的最短路径的权值,w(u, v)是边u -> v的权值。

显然以上不等式就是d(v) - d(u) <= w(u, v)。这个形式正好和差分约束系统中的不等式形式同样。于是我们就能够把一个差分约束系统转化成一张图,每一个未知数Xi相应图中的一个顶点Vi,把全部不等式都化成图中的一条边。对于不等式Xi - Xj <= c。把它化成三角形不等式:Xi <= Xj + c,就能够化成边Vj -> Vi。权值为c。

在建立图的时候应该与目标函数的符号同样。即目标函数为>=,不等式的符号也应该变为>=,再依据不等式建立图。

相反,假设是<=,不等式也应该所有变为<=,再建立图;

(一致性)符号是>=或者<=,并不是<和>

上文就讲了怎样依据不等式建立图,哪究竟和问题的不等式的最大值或者最小值有什么关联呢?

如题目要求d(v) - d(u)的最小值,能够转换成d(v) - d(u) >=M,而依据上文得知M为u->v的权值。

要想上式子成立,则应有min(d(v) - d(u))>=max(M),即转成了求u->v最长的路径即式子的最小值

同样,假设求d(v) - d(u)的最大值。这应该求u->v的最小路径

对于差分不等式。a - b <= c 。求的是最短路,得到的是最大值;

对于差分不等式, a - b >= c
,求的是最长路。得到的是最小值。

关于补不补充源点:

事实上差分约束并不须要附加源点。附加源点的唯一作用是连接 整个图(保证图的连通),不让你有负环判不到的情况。

(超级源点)

当然解决问题的最佳途径是初始把全部的顶点都增加队列,并将全部的dist置0。

这就相当于从每个顶点開始遍历。也就不用附加源点了。

假设图中存在负权值回路。则求出来的最短路径没有意义。

也就是说不等式无解。所以要从是否有负权值回路进而推断有无解。

------------差分约束题目请戳:差分约束题集暨报告

时间: 2024-10-29 10:47:53

差分约束系统--详讲的相关文章

转自 void- man 差分约束系统详解

一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y<=b不等式的约束,问你是否满足有解的问题 好神奇的是这类问题竟然可以转换成图论里的最短路径问题,下面开始详细介绍下 比如给出三个不等式,b-a<=k1,c-b<=k2,c-a<=k3,求出c-a的最大值,我们可以把a,b,c转换成三个点,k1,k2,k3是边上的权,如图 由题我们可以得知,这个有向图中,由题b-a<=k1,c-b<=k2,得出c-a<=k1+k2,因此比较

差分约束系统详解(转)

一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y<=b不等式的约束,问你是否满足有解的问题 好神奇的是这类问题竟然可以转换成图论里的最短路径问题,下面开始详细介绍下 比如给出三个不等式,b-a<=k1,c-b<=k2,c-a<=k3,求出c-a的最大值,我们可以把a,b,c转换成三个点,k1,k2,k3是边上的权,如图 由题我们可以得知,这个有向图中,由题b-a<=k1,c-b<=k2,得出c-a<=k1+k2,因此比较

[转]差分约束系统详解

转载自:http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y<=b不等式的约束,问你是否满足有解的问题 好神奇的是这类问题竟然可以转换成图论里的最短路径问题,下面开始详细介绍下 比如给出三个不等式,b-a<=k1,c-b<=k2,c-a<=k3,求出c-a的最大值,我们可以把a,b,c转换成三个点,k1,k2,k3是边上的权

有关差分约束系统

差分约束系统详解(极力推荐)==> http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 个人瞎想 : 差分约束系统的题最重要的就是充分利用题目条件建立模型.构造出不等式最后使用最短路来算出答案,当然有些题目即使构造出了若干不等式我们可能只得到了部分约束性条件,真正的答案可能需要枚举或者二分枚举.在构造不等式的时候要充分考虑模型的实际意义,以防建少了边亦或者建多了边导致答案错误. 题目: POJ 3159 Candie

【POJ 1201】 Intervals(差分约束系统)

[POJ 1201] Intervals(差分约束系统) 11 1716的升级版 把原本固定的边权改为不固定. Intervals Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 23817   Accepted: 9023 Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a p

【POJ 1716】Integer Intervals(差分约束系统)

[POJ 1716]Integer Intervals(差分约束系统) Integer Intervals Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13425   Accepted: 5703 Description An integer interval [a,b], a < b, is a set of all consecutive integers beginning with a and ending w

poj 1201 Intervals(差分约束系统)(困难)

Intervals Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 23205   Accepted: 8764 Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: reads the number of intervals, their end po

初涉差分约束系统

一个把数学问题转化为图论模型的很好的例子 差分约束系统 差分约束系统的定义是:一个由$n$个变量和$m$个约束条件组成,形成$m$个形如$x_i-x_j≤k$的不等式($i,j∈[1,n],k$为常数)的系统. 举个例子(图自网络): 例如这个不等式组就是一个差分约束系统. 我们要求的通常是附加几个条件之后(例如$x_i>0$)的这个系统的最大/小解.因为很容易发现,若只有变量之间的相对限制,这个系统要么是无数解:要么是无解. 那么怎么把这个抽象的不等式组化为图论模型呢? 观察一下这个例子(图仍

差分约束系统

差分约束系统是指一系列不等式: $$ X_j - X_i \le C_{ij}(1\le i, j \le n) $$ 当然 i,j 不必取遍 1-n,而且在扩展的状况下,对于每个(i,j),可以由多个 $C_{ij}$,但是我们很容易把它们化成一个不等式. 在求解不等式组之前,我们可以分析一下这个不等式组的性质. 1. 这个不等式组是可以无解的,比如: $$X_1 - X_2 \le -1 \\ X_2 - X_3 \le -1 \\ X_3 - X_1 \le -1$$ 否则三个不等式相加得