相关笔记

本章节笔记:

前置章节汇总:

后续章节:


概览

第29章系统介绍了线性规划(Linear Programming)的理论与方法。全章以单纯形算法为核心求解工具,从线性规划的基本表述出发,展示如何将经典组合优化问题建模为线性规划,最后通过对偶理论揭示线性规划的深层结构。

三节内容从理论到应用再到深层理论:(1) 29.1 节介绍线性规划的标准型与松弛型,以及单纯形算法(Simplex Algorithm)的完整流程——PIVOT 操作和 SIMPLEX 主循环,并分析其正确性与复杂度;(2) 29.2 节展示如何将最短路径、最大流、二分匹配、多商品流等问题表述为线性规划,引入LP 松弛(LP relaxation)和全幺模性(total unimodularity)的概念;(3) 29.3 节介绍对偶性理论——弱对偶定理、强对偶定理、互补松弛性条件,以及影子价格的经济解释。


知识结构总览

flowchart TD
    CH["第29章 线性规划"] --> S1["29.1 线性规划的表述与算法"]
    CH --> S2["29.2 将问题表述为线性规划"]
    CH --> S3["29.3 对偶性"]

    S1 --> S1A["线性规划一般形式"]
    S1 --> S1B["标准型(standard form)"]
    S1 --> S1C["松弛型(slack form)"]
    S1 --> S1D["基本可行解(BFS)"]
    S1 --> S1E["单纯形算法(SIMPLEX)"]
    S1 --> S1F["PIVOT 操作"]

    S2 --> S2A["最短路径 LP"]
    S2 --> S2B["最大流 LP"]
    S2 --> S2C["二分匹配 LP"]
    S2 --> S2D["多商品流 LP"]
    S2 --> S2E["LP 松弛与全幺模性"]

    S3 --> S3A["对偶问题构造"]
    S3 --> S3B["弱对偶定理"]
    S3 --> S3C["强对偶定理"]
    S3 --> S3D["互补松弛性"]
    S3 --> S3E["影子价格"]

    S1B --> S2
    S1E --> S3
    S3C --> S2E

    style CH fill:#e1f5fe,stroke:#0288d1,stroke-width:2px
    style S1 fill:#fff3e0,stroke:#ef6c00
    style S2 fill:#e8f5e9,stroke:#2e7d32
    style S3 fill:#fce4ec,stroke:#c62828

核心概念回顾

三节内容对比

维度29.1 线性规划的表述与算法29.2 将问题表述为线性规划29.3 对偶性
核心问题如何求解线性规划如何将实际问题建模为 LPLP 的深层理论结构
核心方法单纯形算法LP 建模技巧对偶理论
关键概念标准型、松弛型、BFSLP 松弛、全幺模性弱/强对偶、互补松弛性
复杂度最坏指数级,实际多项式取决于具体问题
应用场景通用 LP 求解组合优化问题算法分析、经济学

算法选型指南

  • 中小规模 LP:单纯形法(实际效率高,商用求解器 CPLEX/Gurobi 的核心)
  • 大规模 LP:内点法(理论多项式时间,适合大规模稀疏问题)
  • 整数约束问题:先尝试 LP 松弛,若约束矩阵全幺模则自动得到整数解;否则使用分支定界/割平面法
  • 需要下界证明:构造对偶问题,利用弱对偶定理提供下界
  • 灵敏度分析:利用影子价格分析参数变化对最优解的影响

核心定理汇总

  1. 基本定理:若 LP 有最优解,则必存在一个基本可行解是最优解
  2. PIVOT 等价性(Lemma 29.2):PIVOT 操作保持松弛型的等价性
  3. 基本解唯一性(Lemma 29.3):给定一组基本/非基本变量,基本解唯一
  4. 目标值单调性(Lemma 29.4):SIMPLEX 每次迭代不减少目标值
  5. 弱对偶定理:对任意可行解 x 和 y,
  6. 强对偶定理:若原问题有最优解,则对偶问题也有最优解,且最优值相等
  7. 互补松弛性 第 j 个对偶约束取等号

跨章关联

与第24章(最大流)的关系

  • 24.1 流网络24.2 Ford-Fulkerson方法 中的最大流问题可以用 LP 表述
  • 最大流 LP 的约束矩阵具有全幺模性,因此 LP 松弛自动给出整数最优解
  • Ford-Fulkerson 方法是最大流 LP 的一种高效组合算法

与第22章(单源最短路径)的关系

  • 22.1 Bellman-Ford算法22.3 Dijkstra算法 求解的最短路径问题可以用 LP 表述
  • 最短路径 LP 的约束 本质上就是松弛操作
  • 对偶问题揭示了最短路径的”势函数”结构

与第25章(二部图匹配)的关系

  • 25.1 最大二部图匹配 可以用 LP 表述,且 LP 松弛自动给出整数解
  • 匈牙利算法可以视为对偶单纯形法的特化版本
  • König-Egerváry 定理(最大匹配 = 最小顶点覆盖)是对偶性的直接推论

与第28章(矩阵运算)的关系

  • 单纯形算法中的 PIVOT 操作本质上是高斯消元法的变体
  • LP 的标准型 涉及矩阵运算
  • 对偶问题的构造依赖矩阵转置

与第15章(贪心算法)的关系

  • LP 松弛为贪心算法的正确性提供了理论框架
  • 某些贪心算法的最优性可以通过对偶性证明

综合复习题


常见误区

误区1:单纯形法是多项式时间算法

单纯形法在最坏情况下是指数级的(Klee-Minty 立方体反例)。虽然实际中单纯形法通常非常高效(平均迭代次数为 ),但它不是多项式时间算法。内点法(如 Karmarkar 算法)才是多项式时间的 LP 求解算法。

误区2:LP 松弛的最优解四舍五入就是整数最优解

只有当约束矩阵具有全幺模性时,LP 松弛的最优解才是整数。对于一般问题,四舍五入 LP 解可能得到不可行解或远非最优的解。正确做法是使用整数规划求解器(分支定界/割平面法)。

误区3:对偶问题总是有有限最优解

对偶问题可能有三种情况:(1) 有有限最优解(当原问题也有有限最优解时);(2) 无界(当原问题不可行时);(3) 不可行(当原问题无界时)。原问题和对偶问题的可行性/有界性存在对偶关系。

误区4:线性规划只能处理线性目标函数和约束

这是线性规划的定义限制。对于非线性问题,需要使用二次规划、凸优化或一般非线性规划方法。但许多非线性问题可以通过线性化技巧近似为 LP。


学习要点总结

学习目标掌握程度对应笔记
理解线性规划的一般形式和标准型★★★★★29.1 线性规划的表述与算法
掌握松弛型的定义和基本可行解的概念★★★★★29.1 线性规划的表述与算法
掌握单纯形算法的执行流程(PIVOT + SIMPLEX)★★★★★29.1 线性规划的表述与算法
理解单纯形法的正确性证明★★★★☆29.1 线性规划的表述与算法
了解 Klee-Minty 反例和内点法★★★☆☆29.1 线性规划的表述与算法
掌握最短路径/最大流/二分匹配的 LP 表述★★★★★29.2 将问题表述为线性规划
理解 LP 松弛和全幺模性★★★★☆29.2 将问题表述为线性规划
掌握对偶问题的构造规则★★★★★29.3 对偶性
掌握弱对偶定理和强对偶定理★★★★★29.3 对偶性
理解互补松弛性和影子价格★★★★☆29.3 对偶性
了解对偶性在算法分析中的应用★★★☆☆29.3 对偶性

参见Wiki


第29章-线性规划 章节汇总