感覺這個年代已經沒有人知道什麼是對偶了。
對偶原理與線性規劃詳見2016集訓隊論文(沒看過而且不知道什麼是對偶的可能看不懂我這博客在講什麼)
maximize cTxs.t. Ax≤b x≥0
對偶於
minimize bTxs.t. ATx≥c x≥0
其中b,c,x皆爲列向量,A爲矩陣,AT爲矩陣的轉置。
這兩個最優化問題的答案相等。(強對偶)
一張圖很生動的描述了對偶現象的形式。
LP對偶費用流就是對於一個最大費用循環流問題。
s.t. maximize u,v∑costu,vfu,vfu,v≤capu,vi∑fj,i−i∑fi,j≤0i∑fi,j−i∑fj,i≤0fu,v≥0
第一行是費用,第二行是流量限制,第三行和第四行是流量守恆。
一定要注意上面的這個線性規劃,他的cT是什麼,他的x是什麼,他的A長什麼樣子,那樣看到對偶形式的時候纔不會蒙圈。
但是這裏要說明的是,我們應該在第三行和第四行中只留下一個,因爲在一個圖中,每個點入度 ≤出度即可構成入度=出度。
對偶形式:
vi,j+ϕi−ϕj≥costi,jminimize∑vi,j×bi,j
這裏的ϕi和ϕj其實,在我們上面的A矩陣中,就是最下面幾行構成的變量,每列只會有三個地方有值,變量爲vi,j,+ϕ(i),−ϕ(j),又因爲原來是≤0,所以計算最小值的時候不需要考慮ϕ(i)造成的貢獻。
而這道題正好滿足下面這個線性規劃,可以對偶成最大費用循環流,把所有正權邊強制選了之後把入度出度不相等的點向T/從S連邊,然後變成有源匯最大費用最大流(要流量平衡所以需要最大流)。