• 浅谈差分约束系统


      花了很长时间,终于把差分约束搞清楚了……

      当我们在一个图上跑SPFA或DIJKSTRA时,我们能够得到什么?得到的是单源最短(长)路,也就是∀v的min(max){dis[v]-dis[s]},dis[s]是一个全局的“偏移量”,只是通常dis[s]为0而我们未有察觉而已。

      考虑为什么跑出来就能得到这样的结果,是因为有一种叫做“松弛操作”的东西。也就是说,如果u到v有一条边其权为w,就可以得到dis[u]+w≤(≥)dis[v],移项得到dis[v]-dis[u]≥(≤)w。因为一条路上一环衔一环,所以联立一条路就能得到dis[v]-dis[s]≥(≤)……。因为路有很多条,再度联立就能得到相应的最值。

      后人根据图上如此的性质,发现了差分约束系统。差分是什么?就是我刚才说的“一条路上一环衔一环”。约束是什么?就是构成“每一环”的约束边dis[u]+w≤(≥)dis[v]。在差分约束系统上跑最短(长)路,也就会得到∀v的min(max){dis[v]-dis[s]},这是大多数问题叫我们求的。因为min{x[t]-x[s]}与max{x[s]-x[t]}互为相反数,所以既可以从s开始跑最长路,也可以从t开始跑最短路。

      你或许会说,反了反了!但是,事实总是超出我们预料的。就像二分图中,最小边覆盖 = 最大独立集=n-最大匹配。在这里,合法的最小解就是约束图上的最长路,合法的最大解就是约束图上的最短路。

      为什么?在这里,依仗“元神”是不行的。因为我们不能这么“唯心”,要用“唯物”的方法动自己的脑子。

      最后需要注意的是,DIJKSTRA跑起来会很有问题,因为贪心的基础不存在了。

  • 相关阅读:
    I.MX6 Manufacturing Tool V2 (MFGTool2) ucl2.xml hacking
    I.MX6 Manufacturing Tool V2 (MFGTool2) Update Command List (UCL) User Guide translate
    I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
    I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking
    Eclipse中设置在创建新类时自动生成注释
    code
    Oracle的rownum原理和使用(整理几个达人的帖子)
    Catalog与Schema
    对于oracle监听器的配置
    64位WIN7+oracle11g+plsql安装
  • 原文地址:https://www.cnblogs.com/Doggu/p/chafen.html
Copyright © 2020-2023  润新知