想象你在二手房市场看中了一套房子。房东心里有个“底线价”——低于这个价他宁愿不卖;而你心里也有个“最高报价”——高于这个价你宁愿去租别的。你们一个藏着底价,一个攥着预算,中介从中来回撮合。 数学里的“原问题”就像房东的底线,它在所有可行的交易方案里挑选成本最低的那个;“对偶问题”则像你的预算论证——它不停追问:“凭这个约束条件,最便宜也不可能低于多少钱?”于是我们得到一个非常自然的问题:房东真正能接受的最低价格(原问题最优值),和你理论推算出的最低预算线(对偶最优值),之间到底差了多少? 这个差,就是本文的主角——对偶间隙。当你们最终以同一价格成交时,间隙为零,数学家称之为“强对偶”;当预算线和底价之间还有一道鸿沟时,间隙非零,即为“弱对偶”。看懂了这道鸿沟,你就能判断一个问题到底好不好解:间隙小,近似算法靠谱;间隙大,你的求解器可能还在云里雾里。

岗位关联

对偶间隙是连接原问题与对偶问题的一把尺子:它告诉你一个优化问题“难啃”到什么程度,也是检测近似算法精度、判断凸优化收敛可靠性的核心指标。搞懂它,你就能在真实的工程优化中自信地评估模型底线与算法上界之间的真实距离。

目录
  1. 可视化演示
  2. 对偶间隙定义
  3. 强弱对偶区分
  4. 强对偶条件
  5. 弱对偶意义
  6. 几何直观洞察
  7. 近似算法评估
  8. 凸性关联分析
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示对偶间隙的核心机制,通过概览/流程/对比/趋势四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

对偶间隙:一对偶间 一、对偶间隙的定义与弱对偶性 二、强对偶性与对偶间隙为零的条 核心机制可视化 对偶间隙整体架构与关键组件

对偶间隙定义

你约房东在中介办公室见面,房东悄悄写下一个数字:底价。你也在手机备忘录里记下:预算上限。如果房东写的是 300 万,你记的是 250 万,中间差的 50 万就是谈判的“心理鸿沟”——它就是这里要讲的对偶间隙。

数学世界中,约束优化问题(原问题)想找一个可行方案让目标函数值最小,这个最小可能值记为 \(p^{\star}\)。而它的“影子问题”——对偶问题——则调转视角,把约束条件当作“资源”来定价,寻找一个最优的惩罚价格,最大化某个下界,记为 \(d^{\star}\)。对偶间隙就是这两个量的差:\(p^{\star} - d^{\star}\)。

这个定义看似简单,却是整个优化理论的风向标。它告诉你:你手头的问题,到底是被“约束”卡得死死的,还是给算法留足了腾挪的空间。间隙为零,意味着原问题的一切信息都浓缩在对偶问题里;间隙为正,则说明“买方”和“卖方”之间还有信息不对称的空间。

gap=p⋆−d⋆\text{gap} = p^{\star} - d^{\star}

1. 原问题最优值 \(p^{\star}\):在所有满足约束的可行方案中,让目标函数取到的最小值。它反映了问题“真实”的最优成本。

p⋆=inf⁡x∈Df(x)p^{\star} = \inf_{x \in \mathcal{D}} f(x)

2. 对偶问题最优值 \(d^{\star}\):通过给约束乘上拉格朗日乘子并内层最小化后,外层所能获得的最大下界。

d⋆=sup⁡λ⪰0g(λ)d^{\star} = \sup_{\lambda \succeq 0} g(\lambda)

3. 间隙差值:用原问题最优值减去对偶问题最优值,得到的非负量。

gap=p⋆−d⋆≥0\text{gap} = p^{\star} - d^{\star} \ge 0

回到谈判桌上,\(p^{\star}\) 是房东心里真正的底线,\(d^{\star}\) 是你能拿出的最优预算论证。两者之间的那 50 万,决定了这单买卖是“一拍即合”还是“僵持不下”。

强弱对偶区分

有些买卖谈得顺,房东降一点、你加一点,最后以同一个数字握手成交。有些买卖则不然——房东咬死 300 万,你预算就 250 万,任中介跑断腿也合不拢。优化问题也一样,要看间隙能不能被“谈拢”。

当间隙为零,即 \(p^{\star} = d^{\star}\),我们说问题满足强对偶。此时原问题和对偶问题“完全透明”,解原问题和解对偶问题在数值上是等价的。当间隙严格为正,即 \(p^{\star} > d^{\star}\),称为弱对偶——你只能确定对偶值不超过原值,却无法保证两者相等。

你可能要问:弱对偶是不是“没用”?恰恰相反,弱对偶定理 \(d^{\star} \le p^{\star}\) 是永远成立的,哪怕原问题非凸、不可微、甚至没有可行解,这个不等式都像物理定律一样稳固。它给任何复杂问题都罩上了一层“下界保护网”。

d⋆≤p⋆d^{\star} \le p^{\star}

1. 对偶上界:对任意非负拉格朗日乘子,对偶函数给出的都是一个不超过原问题最优值的下界。

g(λ)≤p⋆,∀λ⪰0g(\lambda) \le p^{\star}, \quad \forall \lambda \succeq 0

2. 取最大值:在所有下界中挑最紧的那个,得到对偶最优值。

d⋆=sup⁡λ⪰0g(λ)≤p⋆d^{\star} = \sup_{\lambda \succeq 0} g(\lambda) \le p^{\star}

3. 强弱判定:对比左右两侧是否相等,决定间隙是否为零。

gap=p⋆−d⋆{=0,强对偶>0,弱对偶\text{gap} = p^{\star} - d^{\star} \begin{cases} = 0, & \text{强对偶} \\ > 0, & \text{弱对偶} \end{cases}

房东的底价永远不会高于你的报价上限推导出来的下界,这句话听着像废话,但它却是整个优化理论最坚实的基石之一。谈判无论多激烈,总有一道“安全线”在兜底。

强对偶条件

怎么样才能让房东和你的心理价位严丝合缝地对上?前提是市场信息足够透明:所有可成交的价格区间都清清楚楚,没有任何“暗箱”地带。数学上,这对应着一组条件:问题本身是凸的,且满足约束品性。

最著名的一条路是Slater 条件。它要求:存在一个点 \(x\),位于可行域的相对内部,并且所有不等式约束都被“严格”满足——不是贴着边界,而是留有余量。这就像在谈判前,你先找到一个双方都确认“肯定能成交”的参考方案,把价格区间彻底照亮。

对于凸优化问题,只要 Slater 条件成立,强对偶必然成立,间隙归零。而对线性规划,只要存在可行解,强对偶通常自动成立——因为线性约束天然满足更宽松的约束品性。至于非凸问题,强对偶就成了奢望,间隙几乎总是正的。

∃ x∈relint(D),hi(x)<0,  ∀i\exists\, x \in \mathrm{relint}(\mathcal{D}), \quad h_i(x) < 0, \; \forall i

1. 相对内部:点 \(x\) 必须落在可行域的相对内部,而非边界上。

x∈relint(D)x \in \mathrm{relint}(\mathcal{D})

2. 严格不等式:每个不等式约束都以严格小于号成立,留出裕量。

hi(x)<0,∀i=1,…,mh_i(x) < 0, \quad \forall i = 1, \dots, m

3. 强对偶结论:凸问题 + Slater 条件,推出间隙为零。

gap=0  ⟺  p⋆=d⋆\text{gap} = 0 \iff p^{\star} = d^{\star}

这就好比谈判前双方先确认了一笔“参考成交单”。有了这个锚点,价格区间就不会漂移,最终成交价必然落在唯一的交点上。

弱对偶意义

弱对偶听起来像是“退而求其次”,但在真实工程里,它往往是你能抓到的唯一救命稻草。想象你是个房产评估师,看不透房东的真实底价,但你总能通过周边成交数据算出一个“理论最低价”——这个数字不见得准,但绝对不会高于真实底价。

在优化中,弱对偶 \(d^{\star} \le p^{\star}\) 的这个性质极其宝贵:它永远给出一个安全下界。哪怕你的问题是组合优化、整数规划这类 NP-hard 难题,拉格朗日松弛或对偶分解仍然能产出一个像样的下界。用这个下界去和启发式算法给出的可行解比较,你就能量化“当前解离最优到底有多远”。

具体场景:你在做调度问题,启发式算法给出一个总成本 9800 的解;对偶松弛算出下界 9200。那么间隙是 600,你至少知道最优解不会低于 9200,当前解最多偏离最优解的 \(600/9800 \approx 6.1\%\)。这种“质量证书”在工业界极其诱人——管理者不需要精确最优,只需要一个“不会更差太多”的保证。

gap=p⋆−d⋆⇒p⋆≥d⋆+0\text{gap} = p^{\star} - d^{\star} \quad\Rightarrow\quad p^{\star} \ge d^{\star} + 0

1. 任意乘子下界:任何非负 λ 代入对偶函数都得到下界。

g(λ)≤p⋆,∀λ⪰0g(\lambda) \le p^{\star}, \quad \forall \lambda \succeq 0

2. 最优下界:在最优点处,所有下界中最紧的值就是 d*。

d⋆=max⁡λ⪰0g(λ)d^{\star} = \max_{\lambda \succeq 0} g(\lambda)

3. 间隙非负:由弱对偶直接得到间隙 ≥ 0。

p⋆−d⋆≥0p^{\star} - d^{\star} \ge 0

这就像就算房东咬死不降价,你至少知道市场上不可能有人低于某个价位成交——基于这个“锚”,你永远能做出理性的决策。

几何直观洞察

把对偶间隙画出来,你会看到一幅非常有趣的几何图景。对偶函数 \(g(\lambda)\) 是一族仿射函数的下确界,因此它天然是凹函数——像一个倒扣的碗。原问题最优值 \(p^{\star}\) 是碗上方的一条水平线。碗的最高点与这条水平线之间的垂直距离,恰是对偶间隙。

从另一个角度看,原问题的最优点可以视为某个“支撑超平面”的截距。对偶变量 λ 像是一把尺子,不断旋转方向,去“托住”目标函数下方。当某把尺子恰好水平地托住了最低点,间隙就消失了——这正是强对偶的几何含义。

这个视角在算法设计中有实实在在的用处。对偶上升法、ADMM 等经典算法,本质上都是在“抬高凹碗”的峰值,让那条水平线(\(d^{\star}\))不断上升,逐步逼近 \(p^{\star}\)。你每迭代一步,碗里的水就涨一分,间隙就缩一寸。

g(λ)=inf⁡x[f(x)+∑i=1mλihi(x)]g(\lambda) = \inf_{x} \left[ f(x) + \sum_{i=1}^{m} \lambda_i h_i(x) \right]

1. 拉格朗日函数:把约束按乘子加权并入目标函数。

L(x,λ)=f(x)+∑i=1mλihi(x)L(x, \lambda) = f(x) + \sum_{i=1}^{m} \lambda_i h_i(x)

2. 内层下确界:固定 λ,对 x 求最小,得到“最差情况成本”。

g(λ)=inf⁡xL(x,λ)g(\lambda) = \inf_{x} L(x, \lambda)

3. 外层上确界:调整 λ 使下界最大,得到对偶最优。

d⋆=sup⁡λ⪰0g(λ)d^{\star} = \sup_{\lambda \succeq 0} g(\lambda)

碗的形状越“尖”,说明约束越紧,强对偶越难达成;碗越“平缓”,越容易抬高到与底价平齐。看懂了这口碗,你便看懂了许多优化算法的发力逻辑。

近似算法评估

说回你的置业计划。中介推荐了一套“方案”——一个可行解,报价 9800 元月供;而你的精算师(对偶问题)算出理论底线不会低于 9200。这时候你心里就有数了:这套方案到底值不值,就看它与底线之间那 600 元的差距是否在接受范围内。

在算法设计中,对偶间隙直接充当近似质量标尺。给定一个可行解 \(\tilde{x}\),其目标值 \(f(\tilde{x})\) 是原问题最优值的一个上界;对偶最优值 \(d^{\star}\) 是下界。两者一夹,真实最优值 \(p^{\star}\) 就被限制在区间 \([d^{\star}, f(\tilde{x})]\) 内。区间越窄,说明这个可行解越接近最优。

更进一步,间隙本身还能当收敛停止判据用。在迭代求解中,如果当前间隙小于某个阈值 \(\epsilon\),你就有信心停止迭代——毕竟再往下走,收益也不大了。这是工业级求解器(如 Gurobi、CPLEX)内部的核心机制:它们输出的“MIP gap”就是这种对偶间隙的工程化变体。

gap≤ϵ⇒f(x~)−p⋆≤ϵ\text{gap} \le \epsilon \quad\Rightarrow\quad f(\tilde{x}) - p^{\star} \le \epsilon

1. 上界来自可行解:任何可行解的目标值都 ≥ 原问题最优值。

f(x~)≥p⋆f(\tilde{x}) \ge p^{\star}

2. 下界来自对偶:对偶最优值永远 ≤ 原问题最优值。

d⋆≤p⋆d^{\star} \le p^{\star}

3. 夹逼判断:差值 \(f(\tilde{x}) - d^{\star}\) 收缩到 ε 以内即可停止。

f(x~)−d⋆≤ϵ  ⇒  gap≤ϵf(\tilde{x}) - d^{\star} \le \epsilon \;\Rightarrow\; \text{gap} \le \epsilon

买房时如果中介的报价只比你的精算底线高一点点,你多半会果断出手;算法也一样,间隙小到一定程度,再算下去就是浪费电。

凸性关联分析

为什么凸性在优化里这么重要?回到谈判场景:凸问题就像一间玻璃房,所有信息透明可见,底价和预算线想藏着也藏不住——所以强对偶是常态;而非凸问题像迷宫,你和房东之间隔着无数堵墙,信息极不透明——间隙几乎总是正的。

数学上,凸问题的可行域和目标函数都是“友好”的,几乎不存在局部陷阱。再加上 Slater 条件,强对偶就如同探囊取物。而非凸问题,哪怕只是一个小小的非凸约束(比如整数变量),都可能让对偶间隙变成深不见底的鸿沟。

这就解释了为什么工程师在处理整数规划时,往往先做线性规划松弛或者拉格朗日松弛来获得下界:目的就是估算那道“墙”有多厚——也就是间隙有多大。间隙小,说明松弛质量好,启发式解可信度高;间隙大,则提示你可能需要换一种松弛策略。

f 凸,  hi 凸,  Slater  ⟹  p⋆=d⋆f \text{ 凸}, \; h_i \text{ 凸}, \; \text{Slater} \;\Longrightarrow\; p^{\star} = d^{\star}

1. 目标函数凸:f 是凸函数,保证局部最小即全局最小。

f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y)f(\theta x + (1-\theta)y) \le \theta f(x) + (1-\theta) f(y)

2. 约束集凸:所有 h_i 是凸函数,可行域为凸集。

D={x:hi(x)≤0} 为凸集\mathcal{D} = \{x : h_i(x) \le 0\} \text{ 为凸集}

3. Slater 加持:严格可行点存在,信息透明,间隙消失。

∃x∈relint(D),  hi(x)<0  ⇒  gap=0\exists x \in \mathrm{relint}(\mathcal{D}),\; h_i(x) < 0 \;\Rightarrow\; \text{gap}=0

凸性是“可谈判性”的终极保证。只要你的问题建立在凸的底盘上,又满足 Slater 条件,那么原问题与对偶问题之间最后一道隐形的墙也会轰然倒塌。

AI 应用场景

分布式优化中的收敛监控

阶段:模型训练与优化

解决的问题:在联邦学习或分布式机器学习中,多个节点各自持有一部分数据,难以直接求解全局最优化问题。传统做法需要中央节点汇总全部数据,不仅拉高通信成本,还可能触碰数据隐私红线。利用对偶分解,将全局问题拆成子问题分发给各节点,通过对偶间隙作为收敛信号——当参数服务器计算出的间隙趋近于零,说明各节点子解已经一致收敛到全局最优。

具体案例:一家银行用联邦学习训练反欺诈模型,总行和 20 家分行各自持有本地的交易流水。工程师在每个分行本地求解一个对偶子问题,总行汇总拉格朗日乘子并计算全局对偶间隙。迭代 50 轮后,间隙从 0.3 降到 0.004,判定模型已收敛到全局近似最优,全程原始交易数据未出分行。

整数规划松弛质量评估

阶段:决策优化与推理

解决的问题:物流调度、资源分配等组合优化问题通常是非凸的,直接求解 NP-hard。传统启发式算法只能给出一个可行解,却不知它离最优有多远。通过对偶松弛(如拉格朗日松弛)构造下界,再与启发式解比较,用对偶间隙量化“次优程度”。若间隙小于 5%,管理者便可放心采用该方案。

具体案例:某即时配送平台每天要调度 10 万骑手的订单分配。调度引擎先用贪心策略产出一个可行排班方案,再用拉格朗日松弛求得理论下界,间隙显示为 3.8%。平台据此确认该排班已接近最优,无需耗时做精确求解。

强化学习中的价值函数下界

阶段:策略评估与优化

解决的问题:在强化学习里,评估一个策略的性能往往困难重重。利用对偶思想,把值函数估计问题转化为对偶问题,可得到一个可靠的下界。智能体在与环境交互过程中持续监控对偶间隙,判断策略评估是否已收敛,避免过早开始策略更新。

具体案例:某机器人控制团队用基于对偶的 actor-critic 方法训练机械臂抓取算法。每轮训练后计算当前值函数与对偶下界之间的间隙,当间隙低于 0.01 时触发策略更新,训练效率提升了约 30%,同时避免了值函数高估导致的策略震荡。

Python 演示

python70 行
import matplotlib.pyplot as pltimport numpy as np class DualGapDemo:    """演示原问题、对偶问题与对偶间隙的求解过程。     原问题: min (x1-2)^2 + (x2-1)^2            s.t.  3 - x1 - 2*x2 <= 0   (即 x1 + 2x2 >= 3)    对偶函数: g(l) = inf_x [ f(x) + l*(3 - x1 - 2x2) ], l >= 0    对偶最优: d* = max_{l >= 0} g(l)    原问题最优: 解析解 x* = (1.8, 0.6), p* = 0.2    """     def __init__(self):        self.p_star = 0.2          # 原问题最优值(解析解)        self.lr = 0.005            # 梯度上升步长        self.iters = 800           # 迭代轮数        self.lambda_list = []      # 外部记录 lambda 轨迹        self.gap_list = []         # 外部记录间隙轨迹     def dual_grad(self, lam):        """返回对偶函数在 lam 处的梯度值。"""        x1 = 2 + lam / 2        x2 = 1 + lam        return -2.5 * lam - 1.0     def run(self):        """执行梯度上升,返回最优对偶值和间隙。"""        lam = 0.0        for _ in range(self.iters):            self.lambda_list.append(lam)            grad = self.dual_grad(lam)            lam = max(0.0, lam + self.lr * grad)            d_val = -1.25 * lam ** 2 - lam            self.gap_list.append(self.p_star - d_val)        d_star = -1.25 * lam ** 2 - lam        return lam, d_star     def print_report(self):        """打印求解报告。"""        lam, d_star = self.run()        gap = self.p_star - d_star        print("原问题最优值 p* =", self.p_star)        print("最优拉格朗日乘子 lambda =", round(lam, 4))        print("对偶问题最优值 d* =", round(d_star, 6))        print("对偶间隙 gap =", round(gap, 6))        return lam, d_star, gap     def plot_dual_curve(self):        """绘制对偶函数曲线与切点。"""        lam_vals = np.linspace(0, 1.5, 300)        g_vals = -1.25 * lam_vals ** 2 - lam_vals        _, d_star = self.run()        plt.figure(figsize=(8, 4))        plt.plot(lam_vals, g_vals, color='#818CF8', lw=2, label='对偶函数 g(λ)')        plt.plot([0], [d_star], 'o', color='#10B981', ms=8, label=f'd*={d_star:.4f}')        plt.axhline(self.p_star, color='#F43F5E', ls='--', lw=1.5, label=f'p*={self.p_star}')        plt.xlabel('λ')        plt.ylabel('g(λ)')        plt.legend()        plt.title('对偶函数与强/弱对偶间隙')        plt.tight_layout()        plt.savefig('dual_gap_demo.png', dpi=120)        plt.close()  if __name__ == '__main__':    demo = DualGapDemo()    demo.print_report()    demo.plot_dual_curve()
目的:示范对偶函数的构建、对偶最优值的求解,以及最后对偶间隙的量化计算。
  1. self.p_star = 0.2预先用解析法求出的原问题最优值,用于和数值求解结果对比。
  2. def dual_grad(self, lam)手算推导出的对偶函数梯度,指向对偶函数上升最快的方向。
  3. lam = max(0.0, lam + self.lr * grad)带非负投影的梯度上升,保证拉格朗日乘子始终满足约束。
  4. self.lambda_list.append(lam)记录乘子迭代轨迹,便于后续可视化分析。
  5. d_val = -1.25 * lam ** 2 - lam对偶函数闭式表达式,直接计算当前乘子对应的下界值。
  6. gap = self.p_star - d_star核心的对偶间隙计算:上下界之差。
  7. plt.axhline(self.p_star, color='#F43F5E', ls='--')绘制原问题最优值参考线,直观标出间隙区间。

常见误区

误区凸优化问题很完美,所以不管约束是什么样,原问题和对偶问题的解都应该相等,间隙永远是零。

正解凸性只是强对偶的必要前提,而不是充分条件。还需要额外的约束品性,最常用的就是 Slater 条件——要求存在严格可行点。像“目标凸但可行域只有单个孤立点”的退化凸问题,同样会出现正隙。可以这样理解:玻璃房虽然透明,但如果房间里的展品被焊死在墙角,你和房东依然无法自由议价。

为何常见:教材里绝大多数凸优化案例都满足 Slater 条件,读者看到多了,就把“凸”当成了“强对偶”的充分条件。

误区对偶间隙是两个最优值的差,方向不定,有时候对偶值大于原值,间隙就是负的。

正解弱对偶定理 \(d^{\star} \le p^{\star}\) 是所有情况下都成立的铁律。对偶函数 \(g(\lambda)\) 构造方式决定了它永远不会超过原问题最优值。因此间隙要么为零,要么为正,绝不可能为负。哪怕原问题没有可行解,我们约定 \(p^{\star} = +\infty\),对偶值仍不会超过这个约定值。

为何常见:初学者容易把“两个数的差值”想当然地认为可正可负,忽略了弱对偶定理的结构性约束。

误区既然弱对偶下间隙不为零,那就说明对偶问题帮不上忙,不如把精力全放在满足强对偶条件上。

正解弱对偶是工业界的“安全带”。对整数规划、非凸问题等难以强对偶的问题,弱对偶依然提供一个永不失效的下界。用这个下界配合启发式解,你可以量化近似解的质量(如“不超过最优解的 6%”)。这一点在 Gurobi 等商用求解器的 MIP gap 指标里体现得淋漓尽致。

为何常见:课堂例题大多选强对偶案例,弱对偶“暂时落后”的价值不容易被直观感知。

误区随便在可行域里找一个点验证不等式约束成立,就能用 Slater 条件推出强对偶。

正解Slater 条件要求的不只是“可行”,而是所有不等式约束都严格成立,且点落在可行域的相对内部。如果某个约束恰好取等号,这个点就在边界上,不能满足条件。好比谈判时双方确认的参考方案必须“留有余量”,而不是贴着成本的临界线。

为何常见:可行性和严格可行性之间的区分需要拓扑学直觉,初学者容易模糊。

面试题

Q1. 对偶间隙的定义是什么?

单选题 · easy

  • A.原问题最优值减去对偶问题最优值← 正确答案
  • B.对偶问题最优值减去原问题最优值
  • C.原问题可行解个数减去对偶可行解个数
  • D.拉格朗日函数的一阶导数

答案:A。对偶间隙定义为 \(p^{\star} - d^{\star}\),即原问题最优值与对偶最优值之差。由弱对偶定理保证此差值非负。选项 B 方向反了,C 与可行解个数无关,D 是导数的概念。

Q2. 强对偶条件成立时,对偶间隙等于多少?

单选题 · easy

  • A.一个正数
  • B.零← 正确答案
  • C.负无穷
  • D.无法确定

答案:B。强对偶的定义就是原问题最优值与对偶最优值相等,所以间隙恰为零。这相当于房东与买家以完全相同的价格成交。

Q3. 以下哪些条件有助于保证强对偶成立?

多选题 · mid

  • A.目标函数是凸函数← 正确答案
  • B.约束函数均为凸函数← 正确答案
  • C.Slater 条件成立← 正确答案
  • D.可行域为空集

答案:ABC。凸目标 + 凸约束 + Slater 条件是强对偶的“黄金三重奏”。可行域为空时问题本身无意义,选项 D 错误。这就像玻璃房透明、空间有余量、双方信息对等,谈判自然能达成一致。

Q4. 弱对偶定理 \(d^{\star} \le p^{\star}\) 的正确理解是?

单选题 · mid

  • A.对偶值永远不小于原值
  • B.原问题最优值永远不小于对偶最优值← 正确答案
  • C.两者之间没有任何确定关系
  • D.只对凸问题成立

答案:B。弱对偶定理是普适的,即便非凸问题也成立。它说的是对偶最优值是对原问题最优值的一个下界。选项 D 错误,因为弱对偶不依赖于凸性。

Q5. 对一个非凸整数规划问题,对偶间隙大概率?

单选题 · hard

  • A.为零,因为强对偶普遍成立
  • B.为正,因为整数变量破坏凸性← 正确答案
  • C.为负,因为对偶值可能超过原值
  • D.没有定义,只能求解精确最优

答案:B。非凸问题不满足强对偶条件,间隙通常严格为正。整数变量的存在使可行域变成离散集合,破坏凸性,对偶松弛只能给出一个下界。选项 C 违反弱对偶定理,选项 A 与 D 不符合实际情况。

Q6. 对偶间隙在近似算法中有哪些用途?

多选题 · mid

  • A.衡量启发式解的近似误差← 正确答案
  • B.作为迭代求解的停止判据← 正确答案
  • C.判断问题是否被攻击
  • D.提供可行解的上下界夹逼区间← 正确答案

答案:ABD。间隙结合对偶下界与可行解上界,可量化近似误差(A),也常作为收敛停止条件(B),形成 \([d^{\star}, f(\tilde{x})]\) 的夹逼区间(D)。选项 C 与安全无关。

Q7. Slater 条件要求可行域内存在一点使得?

单选题 · easy

  • A.目标函数取最小值
  • B.所有不等式约束严格小于零← 正确答案
  • C.所有约束取等号
  • D.对偶变量为零

答案:B。Slater 条件要求存在可行点位于可行域相对内部,且所有不等式约束以严格小于号成立,即留有余量。约束取等号是边界点,不能满足条件。

Q8. 关于对偶间隙,下列哪些说法正确?

多选题 · hard

  • A.强对偶时间隙为零← 正确答案
  • B.弱对偶时间隙为正← 正确答案
  • C.间隙恒非负← 正确答案
  • D.间隙可以为负数

答案:ABC。强对偶间隙为零,弱对偶间隙严格为正,弱对偶定理保证间隙恒非负,因此 D 错误。间隙的符号问题背后是强弱对偶的本质区别。

Q9. 对偶函数 \(g(\lambda)\) 的几何形状是?

单选题 · mid

  • A.凸函数,开口向上
  • B.凹函数,开口向下← 正确答案
  • C.线性函数,无弯曲
  • D.分段常数函数

答案:B。对偶函数是若干仿射函数的下确界,仿射函数族的下确界是凹函数,形状像倒扣的碗。凸函数是上确界才会得到,选项 A 说反了。

Q10. 以下哪些问题更容易出现正对偶间隙?

多选题 · hard

  • A.带整数变量的混合整数规划← 正确答案
  • B.满足 Slater 条件的凸二次规划
  • C.非凸的感知机损失最小化← 正确答案
  • D.线性约束的线性规划

答案:AC。整数变量和非凸损失都会破坏凸性结构,导致强对偶失效,间隙为正。满足 Slater 的凸二次规划和线性规划的约束品性足够好,通常强对偶成立,间隙为零。