【算法概论】7.线性规划与规约

7 线性规划与规约

【算法概论】7.线性规划与规约_第1张图片

7.1 线性规划简介

  • 线性规划问题的变量满足:
    1. 一组关于这些变量的线性方程/不等式
    2. 使给定的目标线性函数最大/最小

7.1.1 示例:利润最大化

  • 两种产品利润最大化

    【算法概论】7.线性规划与规约_第2张图片

​ 求解线性规划:”约束条件“构成一凸多边形,”单纯形法“从边上某一点出发,沿着边爬升到另一顶点,直到利润不再增加。

【算法概论】7.线性规划与规约_第3张图片

  • 更多产品

    【算法概论】7.线性规划与规约_第4张图片

​ 求解线性规划:”约束条件“构成一凸多面体,”单纯形法“从边上某一点出发,沿着边爬升到另一顶点,直到利润不再增加。

【算法概论】7.线性规划与规约_第5张图片

7.1.2 示例:生产计划

  • 整数线性规划

7.1.3 示例:最优带宽分配

  • 规约:解决某个任务Q的算法可用于解决任务P,则P可归约到Q (P reduces to Q)

【算法概论】7.线性规划与规约_第6张图片

7.1.4 线性规划的变体

  • 线性规划问题的转化

    1. 目标函数两边同时乘以-1,最大问题 转变成 最小问题

    2. 引入新的参数s,将条件中的不等式 ni=1aixib 变成等式 ni=1aisi+s=b,s0

      s为不等式的 松弛变量,向量 (x1,x2,...,xn) 满足最初的不等式约束,当且仅当存在某个 s0 使新的等式成立

    3. 等式约束变成不等式约束:将 ax=b 写成 axb axb

    4. 对于不确定符号的变量 x

      • 引入两个非负的变量 x+x0
      • x+xx
  • 将任意LP问题归约到LP标准型:

    • 目标函数最小化
    • 等式约束条件
    • 所有变量非负
  • LP问题的矩阵表示

min cTxAx+s=bs0x0

7.2 网络流

7.2.1 石油运输

【算法概论】7.线性规划与规约_第7张图片

7.2.2 最大流

【算法概论】7.线性规划与规约_第8张图片

7.2.3 对算法的深入理解

  • 单纯形法的求解过程:
    • 由最小的流(流量为0)开始
    • 重复如下动作:
    • 选择由s到t的一条可能路径,然后尽可能地提高该路径上的流量

7.2.4 最优性保证

  • 最小分割最大流定理:网络中最大流的规模等于其中(s,t)分割的最小容量

7.2.5 算法的效率

  • 每次迭代使用深度优先搜索广度优先搜索寻找s到t的路径,因此每次迭代的复杂度为 O(E) 。每条边的最大容量为C,则路径的最大流量为 C|E| ,迭代最多次数为 C|E|

    若每次广度优先搜索的结果为边最少的路径,则最少的迭代次数为 O(|V||E|) ,算法复杂度为 O(|V||E|2)

7.3 二部图的匹配

  • 完美匹配:

【算法概论】7.线性规划与规约_第9张图片

归约为最大流问题,每条边的容量为1:

【算法概论】7.线性规划与规约_第10张图片

  • 性质:如果所有边的容量为整数,则最大流的规模也是整数

7.4 对偶

【算法概论】7.线性规划与规约_第11张图片

  • 如果一个线性规划的最优目标函数值有界,则其对偶的最优目标函数值也有界,并且两者相等。
  • 当原LP问题为最大流问题时,其对偶问题为最小分割问题。

7.5 零和博弈

  • 最小最大定理:

maxxminyi,jGi,jxiyj=minymaxxi,jGi,jxiyj

7.6 单纯形算法

7.6.1 n维空间中的顶点和邻居

  • 顶点:由n的不等式定义的点
  • 邻居:两个顶点对应的所有不等式中,由n-1个相同

7.6.2 算法

  • 在每次迭代中,单纯形法需要完成如下任务:

    1. 检查当前顶点是否最优;如果是,则退出。
    2. 决定向哪里移动。

    3. 初始LP

    【算法概论】7.线性规划与规约_第12张图片

    • The origin is optimal if and only if all ci ≤ 0 .

      1. yi=biaix

    【算法概论】7.线性规划与规约_第13张图片

7.6.3 补遗

  1. 起始顶点:

    【算法概论】7.线性规划与规约_第14张图片

  2. 退化

  3. 无界性

7.6.4 单纯形法的运行时间

你可能感兴趣的:(算法概论)