【图】差分约束

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( \begin{matrix} 1 & -1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ 0 & 1 & -1 & 0 \\ \end{matrix} \right) \left( \begin{matrix} x_i \\ x_j \\ x_k \\ x_l \\ \end{matrix} \right) \leq \left( \begin{matrix} b_{i,j} \\ b_{k,j} \\ b_{j,k} \\ \end{matrix} \right) \]

求解差分约束系统

求解差分约束系统<\(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\)类型的差分约束系统。

posted @ 2020-01-20 13:30  Bankarian  阅读(142)  评论(0编辑  收藏  举报