LP对偶费用流 TopCoder SRM 676 div1 Farmville(最大费用循环流,对偶原理)

感觉这个年代已经没有人知道什么是对偶了。
对偶原理与线性规划详见2016集训队论文(没看过而且不知道什么是对偶的可能看不懂我这博客在讲什么

maximize cTxs.t. Axb        x0\begin{aligned} &maximize \ c^Tx\\&s.t. \ Ax\leq b \\& \ \ \ \ \ \ \ \ x \geq 0\end{aligned}

对偶于

minimize bTxs.t. ATxc        x0\begin{aligned} &minimize\ b^Tx\\&s.t. \ A^Tx\geq c \\& \ \ \ \ \ \ \ \ x \geq 0\end{aligned}

其中b,c,xb,c,x皆为列向量,AA为矩阵,ATA^T为矩阵的转置。
这两个最优化问题的答案相等。(强对偶)
一张图很生动的描述了对偶现象的形式。在这里插入图片描述

LPLP对偶费用流就是对于一个最大费用循环流问题。

maximize u,vcostu,vfu,vs.t. fu,vcapu,vifj,iifi,j0ifi,jifj,i0fu,v0\begin{aligned} &maximize \ \sum_{u,v} cost_{u,v}f_{u,v}\\s.t. \ &f_{u,v} \leq cap_{u,v} \\&\sum_{i} f_{j,i} - \sum_{i} f_{i,j} \leq 0\\&\sum_{i} f_{i,j} - \sum_{i} f_{j,i} \leq 0 \\&f_{u,v} \geq 0\end{aligned}

第一行是费用,第二行是流量限制,第三行和第四行是流量守恒。
一定要注意上面的这个线性规划,他的cTc^T是什么,他的xx是什么,他的AA长什么样子,那样看到对偶形式的时候才不会蒙圈。
但是这里要说明的是,我们应该在第三行和第四行中只留下一个,因为在一个图中,每个点入度 \leq出度即可构成入度==出度。
对偶形式:
vi,j+ϕiϕjcosti,jminimizevi,j×bi,jv_{i,j}+\phi_i-\phi_j\ge cost_{i,j}\\minimize \sum v_{i,j}\times b_{i,j}
在这里插入图片描述
这里的ϕi\phi_iϕj\phi_j其实,在我们上面的AA矩阵中,就是最下面几行构成的变量,每列只会有三个地方有值,变量为vi,j,+ϕ(i),ϕ(j)v_{i,j},+\phi(i),-\phi(j),又因为原来是0\leq 0,所以计算最小值的时候不需要考虑ϕ(i)\phi(i)造成的贡献。
而这道题正好满足下面这个线性规划,可以对偶成最大费用循环流,把所有正权边强制选了之后把入度出度不相等的点向TT/从SS连边,然后变成有源汇最大费用最大流(要流量平衡所以需要最大流)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章