差分约束系统

差分约束系统

一开始并不知道差分约束是什么东东,直到最近做到了一道题,才知道这是什么。
差分约束可以说是有 n 个形如xi- xj < b 的条件的约束,问关于x这个方程组的可行解。

我们把每一个形如 xi - xj < b 的条件变成xi+(- b )<xj,有没有发现这不等式很熟悉,这不就是跑最短路时的最小值的更新条件吗?把所有的 xi xj 连一条权值为(- b )的边,定义一个源点,从源点向全部定点连上一条权值为0的边,然后做一遍最短路。

做最短路的过程其实就是沿着某条从源点把权值和累加求出某个xi得极值,如果发现某两组点 xi xj 不满足约束条件 xi - xj < b 就等价于在极值情况下都无法满足,那就是说明该关于x的这个方程组没有可行解。

查分约束系统的问题可以出得很灵活,可能约束条件会变成 xi - xj <= b xi- xj >= b ,如果是xi- xj > b <script type="math/tex" id="MathJax-Element-30">b</script>就是做一遍最长路类似的东西。反正无论怎么变,只要把更新条件弄出来就好了。

伪代码(SPFA)
while循环

v=当前队头
for each edge (u,v) 属于 E do
if d[u] > d[v]+w(u,v) 则
begin
    更新d[u]
    u入队
end
释放节点


Checking
for each edge (u,v) 属于 E do
if d[v]> d[u] + w(u,v) then 无解
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值