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

来源:互联网 发布:打印快递单用什么软件 编辑:程序博客网 时间:2024/06/06 04:54

7 线性规划与规约

7.1 linear programming and reductions

7.1 线性规划简介

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

7.1.1 示例:利润最大化

  • 两种产品利润最大化

    7.2 profit maximization

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

7.3 simplex method

  • 更多产品

    7.4 more products

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

7.5 The feasible polyhedron for a three-variable linear program

7.1.2 示例:生产计划

  • 整数线性规划

7.1.3 示例:最优带宽分配

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

7.6 P reduces to Q

7.1.4 线性规划的变体

  • 线性规划问题的转化

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

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

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

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

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

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

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

min cTxAx+s=bs0x0

7.2 网络流

7.2.1 石油运输

7.2.2 最大流

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 二部图的匹配

  • 完美匹配:

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

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

7.4 对偶

  • 如果一个线性规划的最优目标函数值有界,则其对偶的最优目标函数值也有界,并且两者相等。
  • 当原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

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

      1. yi=biaix

7.6.3 补遗

  1. 起始顶点:

  2. 退化

  3. 无界性

7.6.4 单纯形法的运行时间

1 0