[算法] 优化算法 概论
时间复杂度
- 时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。
- 复杂度被分为两种级别:一种是O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;另一种是O(a^n)和O(n!)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。当我们在解决一个问题时,我们选择的算法通常都需要是多项式级的复杂度,非多项式级的复杂度需要的时间太多,往往会超时,除非是数据规模非常小。
三类问题
- P(Polynomial):多项式(确定性)问题。存在能在多项式时间内解决问题的算法。常用的有价值算法均属此类
- NP(Non-deterministic Polynomial):多项式非确定性问题。不一定存在能在多项式时间内解决问题的算法,但可以在多项式时间内验证一个解是否可行
- NPC(Complete Non-deterministic Polynomial):完全多项式非确定性问题。由NP问题约化得到(只要解决了这个问题,那么所有的NP问题都解决了)
- NP=P?:是否所有的NP问题都是P问题?
- 同时满足下面两个条件的问题就是NPC问题。首先,它得是一个NP问题;然后,所有的NP问题都可以约化到它。
- 既然所有的NP问题都能约化成NPC问题,那么只要任意一个NPC问题找到了一个多项式的算法,那么所有的NP问题都能用这个算法解决了,NP也就等于P 了。因此,给NPC找一个多项式算法太不可思议了。因此,前文才说,“正是NPC问题的存在,使人们相信P≠NP”。我们可以就此直观地理解,NPC问题目前没有多项式的有效算法,只能用指数级甚至阶乘级复杂度的搜索
- 一个典型NPC问题:逻辑电路问题——给定一个逻辑电路,是否存在一种输入使输出为True
- 当今时代,在纯粹科学研究,通信、交通运输、工业设计和企事业管理部门,在社会军事、政治和商业的斗争中涌现出大量的NP问题。若按经典的纯粹数学家们所熟悉的穷举方法求解,则计算时间动辄达到天文数字,根本没有实用价值。数学界许多有经验的人认为对于这些问题根本上就不存在完整、精确、而又不是太慢的求解算法。NP=P?可能是这个世纪最重要的数学问题了
- 之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。相信读者很快明白,信息学中的号称最困难的问题——“NP问题”,实际上是在探讨NP问题与P类问题的关系
全局优化方法
- 随机性方法(搜索算法)
- 近邻法
- 插入法
- 模拟退火算法
- 遗传算法
- 神经网络算法
- 精确算法(数学规划模型是设计变量的显函数)
- 分支界定法
- 区间方法
- 割平面方法
名词解释
- 凸集:若集合C内任意两点间的线段均在集合C内,则称集合C为凸集
- 凸函数:如果一个函数图像的上方区域是凸集,则该函数是凸函数
- 凸优化:若最优化问题的目标函数为凸函数,不等式约束函数也为凸函数,等式约束函数是仿射的,则称该最优化问题为凸规划。凸规划的可行域为凸集,因而凸优化的局部最优解就是它的全局最优解。“一旦将一个实际问题表述为凸优化问题,大体上意味着相应问题已经得到彻底解决,这是非凸的优化问题所不具有的性质。”
- 仿射:仿射函数即由由1阶多项式构成的函数,一般形式为 f (x) = A x + b,这里,A 是一个 m×k 矩阵,x 和 b 都是一个 m 向量,实际上反映了一种从 k 维到 m 维的空间映射关系。
- 仿射集:若通过集合C中任意两个不同点的直线仍在集合C内,则称集合C为仿射集
- 松弛(Relaxation):将有约束问题转化为无约束问题求解(扩大可行域,去掉部分约束条件)
- 对偶(Duality):当Lagrange对偶问题的强对偶性成立时,可以利用求解对偶问题来求解原问题;而原问题是凸优化问题时,强对偶性往往成立。否则,可以利用求解对偶问题求出原问题最优值的下界。一句话,某些条件下,把原始的约束问题通过拉格朗日函数转化为无约束问题,如果原始问题求解棘手,在满足KKT的条件下用求解对偶问题来代替求解原始问题,使得问题求解更加容易。
- 雅克比矩阵:多元函数的一阶偏导数构成的方阵
- 黑塞矩阵:多元函数的二阶偏导数构成的方阵
- 泰勒公式:用若干项连加来表示一个函数,这些相加的项由函数在某一点的导数求得
参考
P、NP、NPC:
http://www.matrix67.com/blog/archives/105
https://cloud.tencent.com/developer/news/335461
拉格朗日松弛算法:
https://wenku.baidu.com/view/fc4fb17017fc700abb68a98271fe910ef12daeb9.html
https://www.zhihu.com/question/21345731
凸集、仿射集:
https://www.cnblogs.com/chengxi/p/5784430.html
凸优化:
https://zhuanlan.zhihu.com/p/78722274
https://www.jianshu.com/p/967e1ea18469
拉格朗日对偶问题:
https://www.cnblogs.com/90zeng/p/Lagrange_duality.html

浙公网安备 33010602011771号