图和树(下)差分约束系统

差分约束系统

  • 一种特殊的n元一次不等式组, 它包含n个变量以及m个约束条件。
  • 每个约束条件是由其中的变量做差构成的,形如xi - xj <= ck,其中ck为常数(可以是非负数,也可以是负数)
  • 要解决的问题是求一组解x1 = a1, x2 = a2,…, xn = an, 使得所有的约束条件都得到满足,否则判断出无解。

• 𝑥1 − 𝑥0 ≤ 1
• 𝑥2 − 𝑥0 ≤ 2
• 𝑥3 − 𝑥0 ≤ 4
• 𝑥2 − 𝑥1 ≤ 3
• 𝑥3 − 𝑥2 ≤ 1
• 在这个例子中,根据第3条可以知道 𝑥3 − 𝑥0 ≤ 4
• 根据第1、4、5条可以知道 𝑥3 − 𝑥0 ≤ 5
• 而根据第2、5条可以知道 𝑥3 − 𝑥0 ≤ 3
• 那么此时如果规定 𝑥0 = 0 则 𝑥3 的最大值是3

结论:求解差分约束系统,都可以转化为图论中单源最短路问题
• 对于差分约束中的每一个不等式约束 𝑥𝑖 − 𝑥𝑗 ≤ 𝑐𝑘 都可以移项变形为
𝑥𝑖 ≤ 𝑐𝑘 + 𝑥𝑗
• 如果令 𝑐𝑘 = 𝑤( 𝑖,𝑗) , 𝑑𝑖𝑠[ 𝑖] = 𝑥𝑖,𝑑𝑖𝑠 [𝑗] = 𝑥𝑗,那么原式变为 𝑑𝑖𝑠[ 𝑖] ≤
𝑑𝑖𝑠 [𝑗 ]+ 𝑤 (𝑖,𝑗) ,

由差分约束,转为图

对于每一个不等式约束 xi - xj <= ck, 从节点j 到结点 i 连一条长度为ck的有向边
路径与不等式约束一一对应

如果xs为原点
求最短路的效果,就可以求得任意一个变量的最终表达式
xi - xs <= wMin 即 xi - xs <= dis[ i ]
求解差分约束问题变成了求解最短路的问题
如果最终令xs = 0,那么xi = dis[ i ] 便是差分约束问题的一组解

解的存在性

存在负环

xi 的结果不存在,SPFA来判断负环

终点不可达

变量xi无约束,dis[ i ] = inf

不等式组的转化

xi - x1 >= T,转化为 x1 - xi <= -T
xi - x1 < T ,在整数域上可以转化为xi - x1 <= T - 1
xi - x1 = T , 转化为xi - x1 <= T 且 x1 - xi >= T

xi / xj <= k 的转化 ,取对数

跑最短路可以求最小解
跑最长路可以求最大解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值