Primal-Dual原对偶问题大致介绍

简介

 线性规划技术是多项式时间可解的。通过将整数规划松弛为线性规划后(如将 x ∈ { 0 , 1 } x\in\{0,1\} x{0,1}松弛为 x ≥ 0 x\geq0 x0),得到一个分数解(fractional),之后再将分数解进行取整得到整数规划的整数解。
 其中primal-dual方法是一种被广泛使用的优化方法,在凸优化和组合优化上有很多应用;其在NP-hard问题的近似算法上也有广泛的使用。下文通过线性规划上的primal-dual方法的应用,进行简单的介绍。
 有一篇关于对偶和拉格朗日对偶问题的描述:优化方法:原问题和拉格朗日对偶问题(primal-dual)。其详细介绍了拉格朗日函数,拉格朗日对偶函数,以及一个通过图片直觉的感受拉格朗日对偶函数为凹函数的一个例子。介绍了 KKT 条件 和 Slater 条件。
 关于仿射函数可以理解为将一个向量x从n维空间映射到m维空间上,具体定义可以参考仿射函数百度百科

线性规划的原对偶(primal-dual)问题

形式化描述:
(Primal): m i n ∑ i = 1 n c i x i min\sum_{i=1}^nc_ix_i mini=1ncixi
s . t .    f o r    a n y     1 ≤ j ≤ m : s.t.\ \ for \ \ any \ \ \ 1\leq j\leq m: s.t.  for  any   1jm:
∑ i = 1 n a i j x i ≥ b j ,    ∀   1 ≤ i ≤ n ,   x i ≥ 0 \sum_{i=1}^na_{ij}x_i\geq b_j, \ \ \forall \ 1\leq i\leq n, \ x_i\geq 0 i=1naijxibj,   1in, xi0
(Dual): m a x ∑ j = 1 m b j y j max\sum_{j=1}^mb_jy_j maxj=1mbjyj
s . t .    f o r    a n y    1 ≤ i ≤ n : s.t. \ \ for \ \ any \ \ 1\leq i\leq n: s.t.  for  any  1in:
∑ j = 1 m a i j y j ≤ c i ,    ∀ 1 ≤ j ≤ m ,    y j ≥ 0 \sum_{j=1}^ma_{ij}y_j\leq c_i,\ \ \forall 1\leq j \leq m,\ \ y_j\geq 0 j=1maijyjci,  1jm,  yj0

强对偶、弱对偶

假设原问题得到的可行解为P= m i n ∑ i = 1 n c i x i min\sum_{i=1}^nc_ix_i mini=1ncixi,最优解为OPT;对偶问题得到的可行解为D= m a x ∑ j = 1 m b j y j max\sum_{j=1}^mb_jy_j maxj=1mbjyj
由对偶的性质可知,其满足: D ≤ O P T ≤ P D\leq OPT \leq P DOPTP
原问题最优解 p ∗ / O P T p^*/OPT p/OPT和对偶问题最优解 d ∗ d^* d之间的差值称为对偶间隙: p ∗ − d ∗ p^*-d^* pd,当对偶间隙为0时,则强对偶性成立;当对偶间隙大于0时,则其为弱对偶性。
大多数情况下, 当原问题是凸优化问题,即原函数和不等式约束为凸函数,而等式约束为仿射函数时,强对偶性成立(但不绝对)这句不太确定,其他博客看到的

互补松弛条件(Complementary Slackness Condition)

P: x j > 0 = > [ A T y ] j = c j x_j>0=>[A^Ty]_j=c_j xj>0=>[ATy]j=cj
D: y i > 0 = > [ A x ] i = b i y_i>0=>[A^x]_i=b_i yi>0=>[Ax]i=bi
当互补松弛条件成立时,x,y是P,D的可行解,也是最优解。
它从原问题§的一个可行解出发, 在满足互补松弛条件的前提下, 使得其对偶变量朝着对偶可行解的方向迭代. Primal-Dual的思想是从对偶可行解出发, 在满足互补松弛条件的前提下, 使得原始变量朝着可行解的方向迭代。

松弛的互补松弛条件

P: x j > 0 = > [ A T y ] j = c j / α x_j>0=>[A^Ty]_j=c_j/\alpha xj>0=>[ATy]j=cj/α
D: y i > 0 = > [ A x ] i = β b i y_i>0=>[A^x]_i=\beta b_i yi>0=>[Ax]i=βbi
通过松弛的互补松弛条件得到的primal-dual算法迭代计算得到的可行解最大不会超过最优解的 α β \alpha \beta αβ倍。

primal-dual方法主要流程(个人理解,不确定一定是对的)

通常将整数优化问题放缩为分数(fractional)形式,然后通过原始对偶方法进行问题最优解的计算,不需要解答线性规划的计算过程(这半句不是很理解,但它是对的)。原始对偶方法从对偶形式下的一个可行解出发,逐渐增加对偶变量值,使得满足互补松弛条件的变量个数增加,改进对偶解的解值,直到无法修正,得到对偶可行解,再通过对偶可行解得到原始的可行解。

set-cover问题举例

 给出一个集合的实例 I I I,其对应的最小优化问题也即原始问题(primal)会存在一系列的可行解,定义每个实例 I I I对应的最小可行解对应的花费(cost)为 O P T ( I ) OPT(I) OPT(I);同理,在最大化优化问题也即对偶问题(dual)中其对应的最大可行解对应的利润(profit)为 O P T ( I ) OPT(I) OPT(I)

之后理解的比较完善了再添加。

参考

算法设计技巧: Primal-Dual

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值