前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >差分约束系统个人理解

差分约束系统个人理解

作者头像
attack
发布2018-04-12 14:19:34
5830
发布2018-04-12 14:19:34
举报
文章被收录于专栏:数据结构与算法

今天接触到一种很玄幻的东西:

差分约束

个人的理解:差分约束就是给定一些限制条件,求出满足条件的最优解,或者判断条件是否成立

做法/思路:

1.首先根据题目的条件,写出相应的不等式

2.将不等式转换成a-b<=c的形式

3.建一条权值为c的边,从b指向a

4.从0点向其他点连一条边权为1的点

5.跑深搜的SPFA,看看答案是否更新

这样做完,求得的是最短路!得出的是满足条件的最大值!

当然,你也可以按照和上面完全相反的思路做,

那么做法和得到的结果都是和上述完全相反的,但是都可以AC!

这里面肯定是有很多疑点的,我来根据的我理解解释一下

1.为什么要建一条从b到a的边权为c的边

  因为a-b<=c,所以b到a的边权最大就是c,那么得到的答案也是最大

2.为什跑的是最短路不是最长路

  因为我们每次建的都是最大的边权,而我们要求出满足所有的不等式的值。

  那么当这个值是所有不等式中的最小的值得时候方能满足条件,

  所以我们要求最短路

3.为什么SPFA要跑深搜而不是广搜

  因为深搜容易判断负环!

4.为什么要建一条从0到所有的点的边

  个人感觉:为了方便更新答案,因为0在所有边中都没有出现过

推荐几篇比较好的文章:

http://972169909-qq-com.iteye.com/blog/1185527

http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-07-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档