差分约束
Posted gorgeousbankarian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了差分约束相关的知识,希望对你有一定的参考价值。
What is Difference Constrains System?
差分约束系统<(V, C)>:
- (V)为系统中的变量集合
- (C)为系统中约束集合,即一组不等式,每一条约束的形式如 (x_i-x_j leq b_{i,j}), (x_i,x_j in V, b_{i,j} in R)
写成矩阵的形式,则每一列有且仅有一个1和-1,其余为零:
[ left( egin{matrix} 1 & -1 & 0 & 0 & -1 & 1 & 0 & 1 & -1 & 0 \end{matrix} ight) left( egin{matrix} x_i x_j x_k x_l \end{matrix} ight) leq left( egin{matrix} b_{i,j} b_{k,j} b_{j,k} \end{matrix} ight) ]
求解差分约束系统
求解差分约束系统<(V, C)>的解就是求满足所有不等式(C)的一个关于(V)集合的解,由于不等式往往存在多解。
通常利用有向图的最短路径、最长路径算法来求解差分约束的解。为何可以这样呢?以图论的最短路径算法为例,在求解最短路径的时候往往会有松弛操作:
[ Dis[v] > Dis[u] + weight(u, v)
quad then quad
Dis[v] = Dis[u] + weight(u, v) ]
那么松弛完后(Dis[v] leq Dis[u] + weight(u, v)) (这也是最短路的一个结论),移一下项变成(Dis[u]-Dis[v] leq weight(u,v)) 满足约束的形式(x_i-x_j leq b_{i,j})。所以可以通过最短路径算法求解(leq)类型的差分约束系统,图的顶点集(V^{'} Rightarrow V),图的边集(E^{'} Rightarrow C),最终求解出的(Dis[i] Rightarrow x_i)。同理,最长路径算法则可以解决(geq)类型的差分约束系统。
以上是关于差分约束的主要内容,如果未能解决你的问题,请参考以下文章