再探究线性规划和对偶问题_学习笔记

这是一篇啃论文的学习笔记嗷

标准型线性规划和对偶

任意模型都可以转换成标准型,可写为
max ⁡ c T x A x ≤ b x ≥ 0 \max c^{T}x\\ Ax\le b\\ x\ge 0 maxcTxAxbx0
c c c 表示目标函数的系数, x x x 为长度为 n n n 的向量表示变量, A A A m × n m\times n m×n 的矩阵表示约束的系数, b b b 为长度为 m m m 的向量表示约束中的常数。

​ 一般地,任意模型都可以转换成标准型,但有些过程比较繁琐,所以也可以选择死背

在这里插入图片描述

依旧很繁琐,所以接下来着眼标准型,毕竟它形式简单,且所有线性规划都能写成标准型。

标准型的对偶

​ 任意线性规划都有对偶线性规划,下面给出标准型的对偶,为
min ⁡ y T b A T y ≥ c y ≥ 0 \min y^Tb\\ A^Ty\ge c\\ y\ge 0 minyTbATycy0
​ 此处 y y y 称作对偶变量,这两个线性规划互为对偶问题。

对偶问题的性质

​ 在这里给出对偶问题的一些基本结论,暂不做证明
弱对偶引理:假设 x x x λ λ λ 分别是线性规划的原问题和对偶问题(对称形式及非对称形式)的可行解,则 x T x ≥ λ T b x^Tx\ge λ^Tb xTxλTb ,即“极大值 ≤ \le 极小值”。

定理1:假设 x 0 x_0 x0 λ 0 λ_0 λ0 分别是原问题和对偶问题的可行解,如果 c T x 0 ≥ λ 0 T b c^Tx_0\ge λ_0^Tb cTx0λ0Tb,那么 x 0 x_0 x0 λ 0 λ_0 λ0 分别是各自问题的最优解。

定理2(对偶定理):如果原问题有最优解,那么其对偶问题也有最优解,并且它们目标函数的最优解相同。

定理3(互补松弛条件) x x x λ λ λ 分别是原问题和对偶问题的可行解,则它们分别是各自问题的最优解的充分必要条件为
1.      ( c T − λ T A ) x = 0 2.      λ T ( A x − b ) = 0 \begin{aligned} & 1.\ \ \ \ (c^T-λ^TA)x=0 \\ & 2.\ \ \ \ λ^T(A_x-b)=0 \end{aligned} 1.    (cTλTA)x=02.    λT(Axb)=0


拉格朗日对偶

​ 论文上讲的并没有很清楚,所以在这里推一个b站视频 机器学习系列0.2.2——拉格朗日对偶性 还有可能需要的前置知识 机器学习系列0.2.1——拉格朗日乘子法及KKT条件

​ (反正我数学菜成一坨屎,看视频都看不懂。

​ (不过不重要2333。

一般的

​ 设 f ( x ) , g ( x ) f(x),g(x) f(x),g(x) 为关于 x x x 的函数,( x x x可以是向量),此时要求
max ⁡ f ( x ) g ( x ) ≤ 0 \max f(x)\\ g(x)\le 0 maxf(x)g(x)0
​ 引入拉格朗日乘子 λ \lambda λ ,( λ \lambda λ 可以是向量), L ( λ ) = max ⁡ f ( x ) − λ g ( x ) L(\lambda)=\max f(x)-\lambda g(x) L(λ)=maxf(x)λg(x),那么
f ( x ) ≤ min ⁡ L ( λ ) f(x)\le \min L(\lambda) f(x)minL(λ)

一般的拉格朗日对偶的性质

​ 记 x ∗ x^* x 为满足 L ( a λ 1 + ( 1 − a ) λ 2 ) L(a\lambda_1+(1-a)\lambda_2) L(aλ1+(1a)λ2) 最大时的 x x x ,那么考虑
L ( a λ 1 + ( 1 − a ) λ 2 ) = f ( x ∗ ) − ( a λ 1 + ( 1 − a ) λ 2 ) g ( x ∗ ) = a ( f ( x ∗ ) − λ 1 g ( x ∗ ) ) + ( 1 − a ) ( f ( x ∗ ) − λ 2 g ( x ∗ ) ) ≤ a L ( λ 1 ) + ( 1 − a ) L ( λ 2 ) \begin{aligned} &L(a\lambda_1+(1-a)\lambda_2)\\ =&f(x^*)-(a\lambda_1+(1-a)\lambda_2)g(x^*)\\ =&a(f(x^*)-\lambda_1g(x^*))+(1-a)(f(x^*)-\lambda_2g(x^*))\\ \le& aL(\lambda_1)+(1-a)L(\lambda_2) \end{aligned} ==L(aλ1+(1a)λ2)f(x)(aλ1+(1a)λ2)g(x)a(f(x)λ1g(x))+(1a)(f(x)λ2g(x))aL(λ1)+(1a)L(λ2)
又因为

在这里插入图片描述

然后你发现这个东西是就是凸函数的零阶定义。把 λ \lambda λ 看成变量,那么函数 L ( λ ) L(\lambda) L(λ) 是凸的。然后在一般的拉格朗日对偶问题中,当 λ \lambda λ 不是一个向量,那么可以直接通过二分斜率或者三分来求得最小值。

线性规划中的拉格朗日对偶

​ 线性规划的标准型
max ⁡ c T x A x ≤ b x ≥ 0 \max c^{T}x\\ Ax\le b\\ x\ge 0 maxcTxAxbx0
​ 考虑代入拉格朗日对偶模型,令 f ( x ) = c T x f(x)=c^Tx f(x)=cTx g ( x ) = A x − b g(x)=Ax-b g(x)=Axb λ = y T \lambda=y^T λ=yT 。因为有
f ( x ) ≤ min ⁡ max ⁡ f ( x ) − λ g ( x ) f(x)\le \min \max f(x)-\lambda g(x) f(x)minmaxf(x)λg(x)
所以
max ⁡ c T x ≤ min ⁡ y ≥ 0 max ⁡ x ≥ 0 c T x − y T ( A x − b ) = min ⁡ y ≥ 0 max ⁡ x ≥ 0 ( c T − y T A ) x + y T b = min ⁡ y T b \max c^Tx\le \min_{y\ge 0} \max_{x\ge 0} c^Tx-y^T(Ax-b)=\min_{y\ge 0} \max_{x\ge 0} (c^T-y^TA)x+y^Tb=\min y^Tb maxcTxy0minx0maxcTxyT(Axb)=y0minx0max(cTyTA)x+yTb=minyTb
​ 显然若 c T − y T A > 0 c^T-y^TA>0 cTyTA>0 x x x ∞ \infty 时,上式则能取到 ∞ \infty 。所以 c T − y T A ≤ 0 c^T-y^TA\le0 cTyTA0,最后一步成立。注意满足 min ⁡ y ≥ 0 max ⁡ x ≥ 0 ( c T − y T A ) x + y T b \min_{y\ge 0} \max_{x\ge 0} (c^T-y^TA)x+y^Tb miny0maxx0(cTyTA)x+yTb x x x,并不是原问题的解,而满足这个式子的 y y y 则是其对偶问题的解。

​ 现在问题就变成了,在满足 y T A ≥ c T , y ≥ 0 y^TA\ge c^T,y\ge 0 yTAcT,y0 的条件下, y T b y^Tb yTb 的最小值。就和将其直接对偶的问题一模一样了。也顺便证明了之前线性规划对偶的结论。

​ 在线性规划的条件下,拉格朗日对偶和线性规划对偶本质相同,但形式不同。如遇到拉格朗日对偶的 min ⁡   max ⁡ \min\ \max min max 形式,可以考虑转化成线性规划问题求解。


转化最小费用流模型

一般地

​ 对于边 u v ∈ E uv\in E uvE ,令 f u v f_{uv} fuv 为边 u v uv uv 的流量,常量 c u v c_{uv} cuv 为流量限制, w u v w_{uv} wuv 为单位流量代价, b u b_u bu u u u 点的流量需求(即要求流出的流量减去流进的流量为 b u b_u bu),写成线性规划就是
min ⁡ ∑ u v w u v f u v − f u v ≥ − c u v ∑ v f v u − ∑ v f u v = − b u \min \sum_{uv} w_{uv}f_{uv}\\ -f_{uv}\ge -c_{uv}\\ \sum_v f_{vu}-\sum_{v}f_{uv}=-b_u minuvwuvfuvfuvcuvvfvuvfuv=bu
z u v z_{uv} zuv f u v ≤ c u v f_{uv} ≤ c_{uv} fuvcuv 的对偶变量, p u p_u pu ∑ v f v u − ∑ v f u v \sum_vf_{vu}−\sum_vf_{uv} vfvuvfuv 的对偶变量,上面的模型不是标准型,换成标准型后 z u v ≥ 0 , p u 无限制 z_{uv}\ge0,p_u\text{无限制} zuv0,pu无限制 。写成对偶形式就是
max ⁡ ∑ u − b u p u − ∑ u v c u v z u v p v − p u − z u v ≤ w u v \max \sum_u -b_up_u-\sum_{uv}c_{uv}z_{uv}\\ p_v-p_u-z_{uv}\le w_{uv} maxubupuuvcuvzuvpvpuzuvwuv
假设已经求出了每一个 p u p_u pu ,那么要在不等式限制下最大化上式,显然有 z u v = max ⁡ ( p v − p u − w u v , 0 ) z_{uv}= \max(p_v-p_u-w_{uv},0) zuv=max(pvpuwuv,0) 。所以可以得到
min ⁡ ∑ u b u p u + ∑ u v c u v max ⁡ ( p v − p u − w u v , 0 ) \min \sum_{u} b_up_u+\sum_{uv}c_{uv}\max(p_v-p_u-w_{uv},0) minubupu+uvcuvmax(pvpuwuv,0)
如果题目所求的为这个形式,就可以用最小费用流解决。

​ 把题目所求目标函数的写成这个形式之后,其中目标变量是对于单个点的,而它的系数也就是 b u b_u bu 是流量需求, max ⁡ \max max 中减去的是对应边的费用, max ⁡ \max max 的系数 c u , v c_{u,v} cu,v 是流量限制。这里要注意,如果 p u p_u pu 的有限制 p u ≥ 0 p_u\ge 0 pu0,那么 b u b_u bu 就表示 u u u 点的流量需求至少为 b u b_u bu

​ 两个月前 p_b_p_b 讲过类似的题 CF1307G Cow and Exercise 【线性规划转对偶+费用流】(要不是今天整理这个板块,我直接看不懂当时写的博客2333

特别地

​ KM 算法,专门用作解决二分图最大权匹配,或二分图最大权完美匹配问题的图论算法。底层逻辑同样也是线性规划对偶。

​ 在二分图上,记 y u y_u yu 为点 u u u 的顶标( y ≥ 0 y\ge 0 y0), L L L 为左部点的点集, R R R 为右部点的点集, w u v w_{uv} wuv 为边权。现在的问题是
min ⁡ ∑ u ∈ L y u + ∑ v ∈ R y v y u + y v ≥ w u v \min \sum_{u\in L}y_u+\sum_{v\in R}y_v \\ y_u+y_v\ge w_{uv}\\ minuLyu+vRyvyu+yvwuv
将其对偶
max ⁡ ∑ ( u , v ) ∈ E w u , v x u , v ∑ v ∈ R x u , v ≤ 1 ∑ u ∈ L x u , v ≤ 1 \max \sum_{(u,v)\in E}w_{u,v}x_{u,v} \\ \sum_{v\in R}x_{u,v}\le1\\ \sum_{u\in L}x_{u,v}\le1\\ max(u,v)Ewu,vxu,vvRxu,v1uLxu,v1
​ 然后我们敏锐的发现,这个 x x x 可以看成一个矩阵,由不等式可以得出 x ∈ { 0 , 1 } x\in\{0,1\} x{0,1},两个和式的限制意思就是每一行每一列最多有一个点为 1 1 1 ,而且若某个点为 1 1 1 就会对应有 w w w 的贡献。

​ 把 n n n 行 和 n n n 列看成 2 n 2n 2n 个点,把 x x x 矩阵看成边,为 1 1 1 就是对应行和列连边。然后下面这个问题就是个最大权二分图匹配。这个问题可以用网络流解决。

​ 普通网络流只能求出答案,而 KM 算法则可以求出最小顶标的方案。记得省选前考过一道构造就是这个模型 某个不知道名字的题目

整数性的探讨

​ (咕咕咕咕咕咕咕咕咕,反正是对的。

例题1 [ZJOI2013]防守战线

​ 设 x i x_i xi 表示前 i i i 处有 x i x_i xi 座塔,先抽象出数学模型
min ⁡ ∑ x i ( C i − C i + 1 ) x R − x L − 1 ≥ D L , R \min \sum x_i(C_i-C_{i+1})\\ x_{R}-x_{L-1}\ge D_{L,R} \\ minxi(CiCi+1)xRxL1DL,R
​ 法1:无脑对偶
max ⁡ ∑ D L , R y L , R ∑ L = 1 i y L , i − ∑ R = i + 1 n y i , R ≤ ( C i − C i + 1 ) \max \sum D_{L,R}y_{L,R}\\ \sum_{L=1}^iy_{L,i}-\sum_{R=i+1}^{n}y_{i,R}\le (C_i-C_{i+1}) \\ maxDL,RyL,RL=1iyL,iR=i+1nyi,R(CiCi+1)
然后你发现这个 y y y 就是就是每条边的流量,然后限制就是每个点的流量需求,建图跑费用流即可。

​ 法2:将目标函数写成
∑ v x v ( C v − C v + 1 ) + ∑ v ∞ max ⁡ ( 0 , x v − x v − 1 ) + ∑ i ∞ max ⁡ ( 0 , x L i − 1 − x R i + D i ) \sum_{v}x_v(C_v-C_{v+1})+\sum_{v}\infty\max(0,x_v-x_{v-1})+\sum_{i}\infty\max(0,x_{L_i-1}-x_{R_i}+D_i) vxv(CvCv+1)+vmax(0,xvxv1)+imax(0,xLi1xRi+Di)
wow,然后你发现这个东西也是费用流模型。

例题2 [Aizu 2230] How to Create a Good Game

​ 这个题的难点是建出数学模型,设 x u , v x_{u,v} xu,v 表示边 u , v u,v u,v 增加的长度, p u p_u pu 表示点 0 0 0 到点 u u u 的最长路径的长度, w u , v w_{u,v} wu,v 是原本的边权, D D D 是原图上点 0 0 0 到点 n − 1 n-1 n1 的最长路径的长度,那么建出数学模型
max ⁡ ∑ u , v x u , v p n − 1 − p 0 ≤ D x u , v ≤ p v − p u − w u , v x u , v , p u , v ≥ 0 \max \sum_{u,v}x_{u,v}\\ p_{n-1}-p_0\le D\\ x_{u,v} \le p_v-p_u-w_{u,v}\\ x_{u,v},p_{u,v}\ge 0 maxu,vxu,vpn1p0Dxu,vpvpuwu,vxu,v,pu,v0
观察发现 x u , v x_{u,v} xu,v 的限制只有 x u , v ≤ p v − p u − w u , v x_{u,v}\le p_v-p_u-w_{u,v} xu,vpvpuwu,v ,目标函数为 min ⁡ ∑ u , v − x u , v \min \sum_{u,v} -x_{u,v} minu,vxu,v 所以把 x x x 消去得到
min ⁡ ∑ u , v ∞ max ⁡ ( p u − p v + w u , v , 0 ) + p u − p v + w u , v + ∞ max ⁡ ( p 0 − p n − 1 + D , 0 ) \min\sum_{u,v} \infty \max(p_{u}-p_v+w_{u,v},0)+p_u-p_v+w_{u,v} + \infty \max(p_0-p_{n-1}+D,0) minu,vmax(pupv+wu,v,0)+pupv+wu,v+max(p0pn1+D,0)
接下来把 p u p_u pu 的系数求出,就是标准的费用流模型了。

例题3 [Utpc2012.12] じょうしょうツリー

​ 设 p u p_u pu 是点 u u u 最后的点权,那么建出线性规划模型
min ⁡ ∑ v ∣ p v − c v ∣ p u ≥ p v \min \sum_v |p_v-c_v|\\ p_u\ge p_v minvpvcvpupv
p 0 = 0 p_0=0 p0=0 目标函数可以写成
min ⁡ ∑ v max ⁡ ( 0 , p v − p 0 − c v ) + max ⁡ ( 0 , p 0 − p v + c v ) + ∑ u , v ∞ max ⁡ ( 0 , p v − p u ) \min \sum_{v} \max(0,p_v-p_0-c_v)+\max(0,p_0-p_v+c_v)+\sum_{u,v}\infty\max(0,p_v-p_u) minvmax(0,pvp0cv)+max(0,p0pv+cv)+u,vmax(0,pvpu)
​ 嗯,然后你发现就是费用流。


转化成动态规划模型

例题1 [XX Open Cup. GP of Moscow] Circles

​ 提交链接是英文的,题面是这样的

​ 题目描述:给定一个长度为 n n n 的非负整数序列 s 1 , s 2 , . . . , s n s_1, s_2, ..., s_n s1,s2,...,sn,称长度为 n n n 的非负序列(不一定要 是整数) x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn 是平衡的当且仅当对于任意 i i i 都有 x i + x ( i   m o d   n ) + 1 ≤ s i x_i+x_{(i\ mod \ n)+1} ≤ s_i xi+x(i mod n)+1si。定义 f ( s 1 , s 2 , . . . , s n ) f(s_1, s_2, ..., s_n) f(s1,s2,...,sn) 为所有平衡的序列的中 x 1 + x 2 + . . . + x n x_1+x_2+...+x_n x1+x2+...+xn 的最大值。给定长度为 n n n 的非负整数序列 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1,a2,...,an 。对于所有 3 ≤ k ≤ n 3 \le k \le n 3kn,求出 f ( a 1 , a 2 , . . . , a k ) f(a_1, a_2, ..., a_k) f(a1,a2,...,ak) 3 ≤ n ≤ 1 e 5 , 0 ≤ a i ≤ 1 e 5 3\le n\le 1e5,0\le a_i\le 1e5 3n1e5,0ai1e5

​ 建出模型
max ⁡ ∑ u k x u x u + x ( u + 1 ) ≤ a u   ( u < k ) x 1 + x k ≤ a k \max \sum_u^k x_u\\ x_u+x_{(u+1)} ≤ a_u \ (u<k)\\ x_1+x_{k}\le a_k maxukxuxu+x(u+1)au (u<k)x1+xkak
将其对偶
min ⁡ ∑ u k a u y u y u + y u + 1 ≥ 1   ( u < k ) y 1 + y k ≥ 1 \min \sum_u^k a_uy_u\\ y_u+y_{u+1}\ge 1\ (u<k)\\ y_1+y_k\ge1 minukauyuyu+yu+11 (u<k)y1+yk1
​ 因为 0 ≤ y ≤ 1 0\le y\le 1 0y1 ,于是我们大胆的猜想 y ∈ { 0 , 1 } y\in\{0,1\} y{0,1}。我们假设它是对的,那么设 d p [ i ] [ 0 / 1 ] [ 0 / 1 ] dp[i][0/1][0/1] dp[i][0/1][0/1] 表示前 i i i 个位置 , y 1 y_1 y1 [ 0 / 1 ] [0/1] [0/1] y 2 y_2 y2 [ 0 / 1 ] [0/1] [0/1] ∑ a i y i \sum a_iy_i aiyi 的最小值,用 d p dp dp 就可以在线性时间内求出答案。

​ 然后你发现你猜错了,可是呢我们又发现只有在 y 1 = y 2 = . . . = y n = 0.5 y_1=y_2=...=y_n=0.5 y1=y2=...=yn=0.5 时答案才有可能更优,否则 y y y 一定 ∈ { 0 , 1 } \in\{0,1\} {0,1}。所以最后你加了个特判你就过了。

​ (证明我不会,反正它是对的。

例2 [ZJOI2020] 序列

​ 放个题解链接


拉格朗日对偶的特殊应用

​ 蒋神说这个没啥用2333(那我学个peach?

例1 POJ2595 Min-Max

​ 以求最大值为例
max ⁡ ∑ i = 1 n q i μ i ∑ i = 1 n p i μ i = C ∑ μ i = 1 \max \sum_{i=1}^n q_i\mu_i\\ \sum_{i=1}^n p_i\mu_i=C\\ \sum\mu_i=1 maxi=1nqiμii=1npiμi=Cμi=1
​ 法1:暴力对偶
min ⁡ C x + y p i x + y ≥ q i x , y 无 限 制 \min Cx+y\\ p_ix+y\ge q_i\\ x,y无限制 minCx+ypix+yqix,y
发现可以把 y y y 消去得到目标函数
min ⁡ C x + max ⁡ { q i − p i x } \min Cx+\max \{q_i-p_ix\} minCx+max{qipix}
然后你发现直接维护凸包即可。

​ 法2:我不会,告辞。

例2 [Utpc2012.10] きたまさの逆襲

​ 我也不会,告辞。


学习资料《再探线性规划对偶在信息学竞赛中的应用 南京外国语学校 丁晓漫》orz丁姐

posted @ 2022-10-10 20:18  缙云山车神  阅读(160)  评论(0编辑  收藏  举报