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連邊,然後變成有源匯最大費用最大流(要流量平衡所以需要最大流)。

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