对偶原理是线性规划中的一个类似 trick 的东西,给出了线性规划问题的一个转化思路。其基本形式为:
maxwTx,Ax⪯c,x⪰0
对应:
mincTy,ATy⪰w,y⪰0
这两个线性规划问题互为对偶问题。注意
max,min 和
⪯,⪰ 的互换,同时不要忘记变量与
0 的偏序关系。
当对偶问题与原问题的最优解同时存在时,两者的解相等。当原问题无解时对偶问题无界,反之亦然。这使得我们可以在解决一个问题时同时解决其对偶问题。
考虑最大流与最小割,我们可以尝试说明其对偶性,从而得到他们相等的经典结论。对于最大流,我们令
xe≥0 为
e∈E 上的流量,则可以得到以下约束:
∀u∈V∖{S,T},∑e∈Iuxe−∑e∈Ouxe≤0
以及
∀u∈V∖{S,T},∑e∈Ouxe−∑e∈Iuxe≤0
还有
∀e∈E,xe≤cape
所求为:
max∑e∈ITxe
考虑将其对偶,则令
pu≥0 对应第一类约束,
qu≥0 对应第二种约束,
ae≥0 对应第三种约束,则有约束:
∀e=(u→v)∈E,−pu+pv+qu−qv+ae≥[v=T]
而所求为:
min∑e∈Ecapeae
但我们没有考虑
S,T 的特殊地位。若
u=S,约束改写作:
∀e=(S→v)∈E,pv−qv+ae≥[v=T]
v=T:
∀e=(u→T)∈E,−pu+qu+ae≥1
此时考虑一条从
S 到
T 的简单路径
P,将其上的边对应的约束加起来,可以得到:
∑e∈Pae≥1
即在这条路径上至少有一条边被选择。此时我们发现这个模型对应的正好是最小割,自此我们得到了最大流与最小割的对偶关系。
另外一个例子是
luogu P6631,对于三种操作分别设立变量
xl,r,yl,r,zl,r,则可以列出约束:
∀i=2k,∑l≤i≤rxl,r+zl,r≥ai
∀i=2k,∑l≤i≤r−xl,r−zl,r≥−ai
∀i=2k+1,∑l≤i≤rxl,r+yl,r≥ai
∀i=2k+1,∑l≤i≤r−xl,r−yl,r≥−ai
所求为:
min∑l,rxl,r+yl,r+zl,r
考虑其对偶,设四种约束对应
pi,qi,ui,vi,则所求为:
max∑i=2kai(pi−qi)+∑i=2k+1ai(ui−vi)
对应约束为:
∀l≤r,∑i=2kl≤i≤r(pi−qi)+∑i=2k+1l≤i≤r(ui−vi)≤1
∀l≤r,∑i=2k+1l≤i≤r(ui−vi)≤1,∑i=2kl≤i≤r(pi−qi)≤1
设
p_i-q_i,i=2k\\
u_i-v_i,i=2k+1
\end{cases}$$
改写上述结果:
$$\forall \,l\leq r, \sum_{l\leq i\leq r} f_i \leq 1,\sum_{\substack{i=2k\\l\leq i\leq r}} f_i \leq 1,\sum_{\substack{i=2k+1\\l\leq i\leq r}} f_i \leq 1$$
$$ \max \sum a_if_i$$
注意到到约束形状类似最大子段和,于是我们可以进行 dp:令 $dp_{i,j,k,l}$ 表示当前已经考虑了前 $i$ 个元素,而且当前 $f$ 最大后缀和是 $j$,偶数位置最大后缀和是 $k$,奇数位置最大后缀和是 $l$ 时 $\sum a_if_i$ 的最大值。如果我们承认 $f$ 只能取整数(可以通过说明约束系数矩阵为全幺模矩阵证明),则显然 $j,k,l\in\set{0,1}$,进一步得到 $f_i\in\set{-1,0,1}$,所以这个 dp 是线性的。