码迷,mamicode.com
首页 > 其他好文 > 详细

差分约束

时间:2020-01-20 15:06:43      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:weight   系统   str   顶点   一个   差分   就是   利用   lin   

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

差分约束

标签:weight   系统   str   顶点   一个   差分   就是   利用   lin   

原文地址:https://www.cnblogs.com/GorgeousBankarian/p/12217377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!