560 likes | 678 Views
单纯型算法的复杂性及改进途经. 说明单纯型算法计算复杂性的例子. 例、. 其中 ( Klee-Minty , 1971 ). 的可行集. 对原问题进行可逆的线性变换,令. 则. 原问题. 变换后的等价问题. 变换后的可行集. 变换后问题的标准形式. 从 出发用单纯型法求解上述问题. 如果选最大检验数进基,取 , 进基. 如果选最小正检验数进基,取 ,还是 进基. 对任何给定算法,可选择参数经过所有 个顶点 !. 的可行集.
E N D
例、 其中 (Klee-Minty,1971 ) 的可行集
对原问题进行可逆的线性变换,令 则 原问题 变换后的等价问题
变换后的可行集 变换后问题的标准形式 从 出发用单纯型法求解上述问题 如果选最大检验数进基,取 , 进基 如果选最小正检验数进基,取 ,还是 进基 对任何给定算法,可选择参数经过所有 个顶点!
对原问题进行可逆的线性变换,令 则 原问题 变换后的等价问题
对已经提出的进出基规则,均能设计出要经历的对已经提出的进出基规则,均能设计出要经历的 顶点个数是变量维数的指数函数的例子 但是,也不能证明无论采用什么进出基规则,均 能设计出要经历的顶点个数是变量维数的指数函 数的例子 只要 比较大,搜索 个顶点的计算量就不 可能完成!能否找到没有上述问题的其他算法?
如何描述算法的计算复杂性? 要排除机器性能和程序性能的影响 以一种最基本的计算模型的运算次数描述 要排除问题规模的影响 以具体实例的全部数据的大小为变量 要排除不同数据的影响 考虑最坏(为什么不是平均?)情况
计算复杂性: :二进制数的总位数 :全部数据的总位数不大于 的具体实例集 :实例 的基本计算模型的基本运算次数 说明:以上数据均为转换成整数后的数据 多项式算法: 存在正整数 和常数 满足 通常记为 现有的单纯型算法都不是多项式算法! 线性规划问题是否有多项式算法?
一个有用的事实: 如果一个算法中间过程产生的数据位数均有 的多项式上界,而算法的所有代数运算次 数存在 的多项式上界,那么 (实例 的基本计算模型的基本运算次数)也有 的多项式上界 理由:在基本计算模型里完成所有代数运算的算 法都是多项式算法 用处:分析计算复杂性时不用知道基本计算模型
线性规划的椭球算法 (Khachian,哈奇杨,1979)
规范形式线性规划问题及其对偶问题 原问题 对偶问题 据对偶性原理,当且仅当 和 满足以下方程时,它 们分别是原问题和对偶问题的最优解 求解规范形式的线性规划问题等价于解决下述问题: 或者找到等式和不等式方程组的解,或者断定无解
等式和不等式方程组 可以写成下述不等式方程组 其系数矩阵是列满秩矩阵
求解线性规划问题可等价为求解下述判定问题:求解线性规划问题可等价为求解下述判定问题: 任意给定一个 的列满秩整数矩阵 和一个 维 的整数向量 ,要判定集合 是否非空,并在非空的情况下找到一个
用椭球算法求解前述判定问题的核心迭代步骤 先找到一个包含 的椭球 要求 正定,其体积为 因为 ,所以
如果 ,停止。否则,存在 ,过 点 做超平面把椭球分为两半,其中一半包含 ,然后再 做 包含包含 的半个 椭球 ,因此仍然成立
从 到 有迭代公式(教材66页),并可证明 因此,迭代算法或者在找到一个 后停止,或者 随着迭代次数增加使椭球的体积以负指数速率逼近零 推导上面公式的方法:先计算 是圆心在原点的单位 圆的情况,然后再用坐标变换变成椭圆的情况
如果能够:1)找到包含 的椭球 ;2)找到 的下界 ,则可得到 利用 ,经过 次迭代,可得 若要达到 ,只需要 取 为刚刚大于以上不等式右边数的整数,椭球算法 必在 步迭代之内解决判定问题
实现前面想法的难点: 第一、是否存在满足 的 ? ( 可能属于降维空间,体积为零) 第二、是否存在满足 的 ? ( 可能无界,体积为无穷大) 对证明椭球算法是多项式算法有利的关系: 容许 为 的指数函数
克服难点的关键 当全部输入数据的二进制位数不大于 时,任何数据的 绝对值就有个最大的上界 当全部输入数据都是整数时,对它们进行加减乘法运算 得到仍然是整数,而非零整数的绝对值以 1为下界 利用上述上下界就可能解决无界和体积等于零的困难 ? 例如, 为整数时以下两不等式组同时有解或无解,有 解时前者体积可能等于零,而后者体积一定不小于
先考虑第二个难点 设 是 的任意一个顶点,由规范形 式可行集的顶点描述方法可知,在 中存在 个线性无 关的行向量构成可逆矩阵 满足 ,于是 由求解线性方程组的克莱姆公式可得 其中 是用 替换 的第 列向量得到的矩阵
例如,求以下方程的解 用克莱姆公式 可得
如果将 写成 ,根据行列式的定义,可得 其中 是 的一种排列,求 和是对全部 种排列求和,由于 ,可以得到 ,又因为 (!) ,所以 由此可知,按以下参数定义的 可以包含 的全部顶点
再考虑第一个难点 我们要确定一个 ,使 和 或者同时为空集,或者同时非空, 其中 由于显然成立 ,如果 是空集可以肯定 也 是空集,所以只需做到 是空集能保证 也是空集 (如果 无限制不可能达到上述目的,当 有界时 可能存在能够区别一点是否属于 的下界,当 小于这 个下界后就能达到上述目的) 如何找到满足条件的 ?
考虑下面的线性规划问题及其对偶问题 当 是空集时,原问题无可行解,而 是对偶问题 的可行解,所以对偶问题最优目标一定为无穷大,因此 一定有 满足约束 ,根据线性规 划标准型的定理2.2.5(22页),一定有顶点满足上述约 束,设为 ,其基变量组成的向量等于 的矩阵乘 维向量,用克莱姆公式可得 对 个基变量成立
由于 的非基变量等于零,所以 只要取 就满足 考虑优化问题 由于 ,该优化问题最优目标 值为无穷大,所以其对偶问题不能有可行解
原问题 对偶问题 无可行解 无界 是空集 无界 无界 也是空集 无可行解 无界
例 如果 非空,它有如下两个(或退化为一个)顶点 或 如右图所示 对偶问题 该问题无界 当且仅当下式有解
可行集 如果非 空就只有一个顶点,可由以下方程求出 用克莱姆公式 可得
可行集 非空 ? 当上式成立时,可验证以下两种情况都不会发生 或 和 矛盾 第一种情况需要 和 矛盾 第二种情况需要 说明对偶问题无界确实能导致 是空集
下面再说明: 不是空集 任取 定义以 为中心的超立方体 记 ,由于 ,所以 任取 ,因为 所以 说明 ,因此
小结: 1) 和 或者都 是空集,或者都不是空集 2)只要 非空,就至少有一个顶点( 列满秩),其 所有顶点被 的椭球 包含,易 知 (后者是超立方体体积) 3)只要 非空,就成立 其中 结论:用椭球算法可解决 的判定问题
用椭球算法解决 判定问题的迭代次数 已知 迭代次数 为满足下式的最小整数 由以上条件可得 每次迭代的计算量为 结论:椭球算法计算复杂性为 ,多项式算法!
说明 1)如果求得的解属于 但不属于 ,采用恰当 的取整步骤可以得到属于 的解 2)在确定 时我们简单地用了 有的书中提到用阿达马(Hadamard)不等式 能给出各分量的上界为 ,最终复杂性就 是教材中给出的 3)严格说明算法复杂性还要讨论中间数据大小和 开平方运算的复杂性等其他细节问题
基本想法:能否在可行集内部搜索前进到最优解?基本想法:能否在可行集内部搜索前进到最优解? 目标函数梯度方向 最优解 在任何内点沿目标函数增加方向搜索一定到达边界 在靠近可行集的中间位置获得较大改进的可能性大 设想:每次搜索到一个新点后,设法用某种变换将可 行集变形,使新点靠近新可行集的中间位置
可能实现上述设想的集合与变换 考虑如下图所示的二维空间的可行集及可行解 其中
记 是 维空间 个顶点的凸组合生成的 维单纯型
的中心点: 在 内向任意方向移动都不会出 的最大步长: ? 是中心点到 个顶点生成的 维单纯型的距离 的作用:对任何非零的 和 ,可保证 是 的内点(分量都大于零)!
上的尺度变换 设 是 的任意内点,即 定义尺度变换 其中 如果 ,则
尺度变换的性质 1)有逆变换 2) 3)
Karmarkar标准型 其中 , 假设: 1) 行满秩 2) 3)最优目标值等于零 的中心点 是可行解
Karmarkar算法的主要步骤 出发点:原问题的一个可行内点 (分量都大于零) 对原问题进行尺度变换,令 考虑变换后的近似问题 用逆变换得到新的内点
如何得到 ? 变换后的近似问题 已知:1) 是可行解 是 的内点, 2) 将目标函数下降方向 投影到等式约束的零空间得到可行下降方向 ,再用 2)的公式得到新内点
向等式约束 的零空间投影的公式 行满秩 行满秩 可逆方阵 记 ? 在 的零空间投影为 容易验证 ,所以
任取 ,令 , 是 的内点 再利用 可得 所以 是变换后问题的可行内点 又因为 所以 (近似目标有改进)