对偶原理小记

· · 算法·理论

对偶原理是线性规划中的一个类似 trick 的东西,给出了线性规划问题的一个转化思路。其基本形式为:

\max w^{\mathrm{T}}x,\,Ax \preceq c,\,x \succeq \vec{0}

对应:

\min c^{\mathrm{T}}y,\,A^{\mathrm{T}}y \succeq w,\,y \succeq \vec{0}

这两个线性规划问题互为对偶问题。注意 \max,\min\preceq,\succeq 的互换,同时不要忘记变量与 \vec{0} 的偏序关系。

当对偶问题与原问题的最优解同时存在时,两者的解相等。当原问题无解时对偶问题无界,反之亦然。这使得我们可以在解决一个问题时同时解决其对偶问题。

考虑最大流与最小割,我们可以尝试说明其对偶性,从而得到他们相等的经典结论。对于最大流,我们令 x_e \geq 0e \in E 上的流量,则可以得到以下约束:

\forall u \in V\setminus\set{S,T} , \sum_{e\in I_u} x_e-\sum_{e\in O_u} x_e \leq 0

以及

\forall u \in V\setminus\set{S,T} , \sum_{e\in O_u} x_e-\sum_{e\in I_u} x_e \leq 0

还有

\forall e \in E,\,x_e \leq cap_e

所求为:

\max \sum_{e \in I_T} x_e

考虑将其对偶,则令 p_u \geq 0 对应第一类约束,q_u \geq 0 对应第二种约束,a_e \geq 0 对应第三种约束,则有约束:

\forall e=(u\rightarrow v) \in E, -p_u+p_v+q_u-q_v+a_e\geq [v=T]

而所求为:

\min \sum_{e \in E} cap_ea_e

但我们没有考虑 S,T 的特殊地位。若 u=S,约束改写作:

\forall e=(S\rightarrow v) \in E,\, p_v-q_v+a_e\geq [v=T] $$\forall e=(u\rightarrow T) \in E,\,-p_u+q_u+a_e\geq 1$$ 此时考虑一条从 $S$ 到 $T$ 的简单路径 $P$,将其上的边对应的约束加起来,可以得到: $$ \sum_{e\in P} a_e\geq 1$$ 即在这条路径上至少有一条边被选择。此时我们发现这个模型对应的正好是最小割,自此我们得到了最大流与最小割的对偶关系。 另外一个例子是 [luogu P6631](https://www.luogu.com.cn/problem/P6631),对于三种操作分别设立变量 $x_{l,r},y_{l,r},z_{l,r}$,则可以列出约束: $$ \forall i=2k,\sum_{l\leq i\leq r} x_{l,r}+z_{l,r}\geq a_i$$ $$ \forall i=2k,\sum_{l\leq i\leq r} -x_{l,r}-z_{l,r}\geq -a_i$$ $$ \forall i=2k+1,\sum_{l\leq i\leq r} x_{l,r}+y_{l,r}\geq a_i$$ $$ \forall i=2k+1,\sum_{l\leq i\leq r} -x_{l,r}-y_{l,r}\geq -a_i$$ 所求为: $$ \min \sum_{l,r} x_{l,r}+y_{l,r}+z_{l,r}$$ 考虑其对偶,设四种约束对应 $p_i,q_i,u_i,v_i$,则所求为: $$ \max \sum_{i=2k} a_i(p_i-q_i)+\sum_{i=2k+1} a_i(u_i-v_i)$$ 对应约束为: $$\forall \,l\leq r, \sum_{\substack{i=2k\\l\leq i\leq r}} (p_i-q_i)+\sum_{\substack{i=2k+1\\l\leq i\leq r}} (u_i-v_i) \leq 1$$ $$\forall \,l\leq r,\sum_{\substack{i=2k+1\\l\leq i\leq r}} (u_i-v_i) \leq 1,\sum_{\substack{i=2k\\l\leq i\leq r}} (p_i-q_i) \leq 1$$ 设 $$f_i=\begin{cases} 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 是线性的。