求解若干个不等式,形如
\[x_i-x_j≤w_k
\]
为了求解,我们将方程变形
\[x_i≤w_k+x_j
\]
然后求解最短路时我们是这样操作的
\[dis_u=\min\{dis_u,dis_v+w(u,v)\}
\]
求解完整个图的最短路之后,我们有
\[dis_i+w(i,j)≥dis_j
\]
变形可以得到
\[dis_j-dis_i≤w(i,j)
\]
对比上面的式子,因此可以建立一条由\(j\)到\(i\)的边权为\(w_k\)的有向边。
另外,当出现一下方程时,我们可以做如下变化。
\[x_i-x_j<w_k \ =>\ x_i-x_j≤w_k-1
\]
\[x_i=x_j \ => \ x_i-x_j≤0 且x_j-x_i≤0
\]
\[x_i-x_j≥w_k \ => \ x_j-x_i≤-w_k
\]
另外,我们建立的图中可能并不是联通的,因此我们可以建立一个超级源点\(S\)向所有点建立一条权值为\(w\)的有向边,边权为\(w\)的意义为使得\(x_i≤w\)。同样的,我们可以用最长路以求出\(x_i-x_j≥w_k\)的方程,但是考虑到方程无解的情况,及为有负环,为什么呢?证明,假设有一个环\((x_1,x_2),(x_2,x_3)....(x_n,x_1)\),\(\sum_{i=1}^{n}w(x_i,x_{i+1})<0\),那么上面这个负环我们可以转化为方程,\(x_i-x_{i+1}≤w_i\),那么我们联立\(n\)个方程可以得到,\(x_1-x_2+x_2-x_3+...+x_n- x_1=0≤\sum_{i=1}^{n}w_i<0\),\(0<0\)这显然是不可能的,因此有负环的情况无解。所以我们使用\(spfa\)为最好。
浙公网安备 33010602011771号