差分约束系统

差分约束

用于求有\(n\)个变量,\(m\)条限制,每条限制只与两个变量的差有关的问题的一组解。

一般可以转化为最短路或者最长路解决。

最短路:用三角形不等式\(dis_v\le dis_u+w\)来保证解合法,这样一条不等式等价于\(x_v\le x_u+w\)

最长路:类似最短路,用\(dis_v\ge dis_u+w\)来保证解合法,这样一条不等式等价于\(x_v\ge x_u+w\)

发现两种形式中都只有变量的差而没有变量的和,于是遇到变量的和时只能对其中几个乘上\(-1\)改变符号。

超级源点可以控制变量的上下界:上面转化后转化为最短路或最长路问题,建立超级源点跑一下即可。但是注意超级源点和其它每个点的连边同样代表着一条不等式,所以可以通过设置超级源点的权值和超级源点连出的边的边权来限制变量的上界或者是下界。

还有一条事实,对于任意一组合法的解,每个变量加上同一权值仍然合法,因为变量相互差分中可以消掉权值,我们称这样得到的解是原来的那一组的一组等价解。差分约束中除了无数组等价解,还有本质不同的解。

最长路与最短路的解法有何本质不同呢?

可以证明最短路后不等式都取得等号,而最短路与最长路的不等号方向是不同的,于是可以分别求得上下界。一般最长路取得下界,最短路取得上界。每一个变量都取得上下界后,其和同样可以取得上下界。

posted @ 2024-12-23 10:44  RandomShuffle  阅读(25)  评论(0)    收藏  举报