差分约束系统

定义

由n个变量和一系列形如 xixj<=k (k是常数)的不等式组成的系统称为差分约束系统。

求解

分析最短路模型,我们会发现求得最短路(将i的最短路设为dis(i))之后,对于任何边(设为x->y长度为z),都有:
dis(x)+z>=dis(y)
这感觉怎么这么眼熟呢……
dis(y)dis(x)<=z
然后我们就惊奇的发现最短路和差分约束系统竟有异曲同工之妙!

所以我们对于 xixj<=k ,构造一条j->i的长度为k的边,然后随便乱刷最短路(起点乱给+初值乱给:P,因为根据上面的分析我们知道只要是最短路就是满足的)就是一组可行解。举个例子:
x1x2<=1
x3x2<=3
x3x4<=1
x4x5<=4
建完图,我们令1是起点,且dis(1)=0,其余=INF:
这里写图片描述
红色的数字即为最短路,大家可以自行验证这组解的正确性。我们还可以发现,一组可行解均加上一个相同的实数,依然还是可行解(这个很显然)。

但我们好像忽略了一种特殊的情况:无解。来看:
x1x2<=1
x2x1<=2
这组数据显然会掉进负环里:
这里写图片描述
这其实就对应了无解,因为最短路不存在,意味着解也不存在了。

差分约束系统的求解其实很简单(最短路菜鸡都会打好吗?),最重要的是转化和建图。

特殊解

求解查分约束系统特殊解好像有三个套路:
1.令所有点的dis=k(k是常数,一般给0),这样求出来的解就比较接近。
2.令随便一个点x的dis=0,其他给INF,这样求出来的解与x的差距就较大。
3.令随便一个点x的dis=0,其他给-INF,求最长路,这样求出来的解与x的差距就较小。
正确性好像比较显然,但是并不会严格证明啊QAQ。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值