当前位置: 代码迷 >> 综合 >> Primal-Dual原对偶问题大致介绍
  详细解决方案

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

热度:64   发布时间:2023-12-01 13:28:36.0

简介

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

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

形式化描述:
(Primal):min∑i=1nciximin\sum_{i=1}^nc_ix_imini=1n?ci?xi?
s.t.forany1≤j≤m:s.t.\ \ for \ \ any \ \ \ 1\leq j\leq m:s.t.  for  any   1jm:
∑i=1naijxi≥bj,?1≤i≤n,xi≥0\sum_{i=1}^na_{ij}x_i\geq b_j, \ \ \forall \ 1\leq i\leq n, \ x_i\geq 0i=1n?aij?xi?bj?,  ? 1in, xi?0
(Dual):max∑j=1mbjyjmax\sum_{j=1}^mb_jy_jmaxj=1m?bj?yj?
s.t.forany1≤i≤n:s.t. \ \ for \ \ any \ \ 1\leq i\leq n:s.t.  for  any  1in:
∑j=1maijyj≤ci,?1≤j≤m,yj≥0\sum_{j=1}^ma_{ij}y_j\leq c_i,\ \ \forall 1\leq j \leq m,\ \ y_j\geq 0j=1m?aij?yj?ci?,  ?1jm,  yj?0

强对偶、弱对偶

假设原问题得到的可行解为P=min∑i=1nciximin\sum_{i=1}^nc_ix_imini=1n?ci?xi?,最优解为OPT;对偶问题得到的可行解为D=max∑j=1mbjyjmax\sum_{j=1}^mb_jy_jmaxj=1m?bj?yj?
由对偶的性质可知,其满足:D≤OPT≤PD\leq OPT \leq PDOPTP
原问题最优解p?/OPTp^*/OPTp?/OPT和对偶问题最优解d?d^*d?之间的差值称为对偶间隙:p??d?p^*-d^*p??d?,当对偶间隙为0时,则强对偶性成立;当对偶间隙大于0时,则其为弱对偶性。
大多数情况下, 当原问题是凸优化问题,即原函数和不等式约束为凸函数,而等式约束为仿射函数时,强对偶性成立(但不绝对)这句不太确定,其他博客看到的

互补松弛条件(Complementary Slackness Condition)

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

松弛的互补松弛条件

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

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

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

set-cover问题举例

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

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

参考

算法设计技巧: Primal-Dual

  相关解决方案