zoukankan      html  css  js  c++  java
  • 中科大算法分析与设计近似算法复习知识点

    三、近似算法

    3.1 NP-完全性理论

    图灵机

    • 确定性图灵机DTM:执行的动作唯一
    • 非确定性图灵机NTM:执行的动作有多个可选

    P类问题\(P={L:L能在多项式时间内被DTM接受}\)

    确定性算法在多项式时间内可解

    多项式时间内可解的问题\(=\)P

    NP类问题\(P={L:L能在多项式时间内被NTM接受}\)

    非确定性算法在多项式时间内可解

    多项式时间内可验证的问\(=\)NP

    多一规约\(L_1和L_2是两个判定问题,实例I_2=f(I_1)\)

    \[\forall I \in U_1, I是L_1输出yes的实例 \Leftrightarrow f(I)是L_2输出yes的实例 \\ L1 \le_m L_2 \]

    多项式时间多一规约\(f\)是多项式时间可计算的

    NPC问题:对于判定问题q,满足\(1)q\in NP;2)NP \le_m^p q;\)

    NP-hard问题:对于判定问题q,满足\(2)NP \le_m^p q;\)

    \(NPC \sqsubseteq NP-hard\)

    解题思路:

    • \(一个问题不可判定 \Rightarrow 该问题\notin NP \Rightarrow 该问题 \notin NPC\)
    • 证明\(q \in NPH\),找到\(q' \in NPC/NPH\),再将\(q'\)多项式归约到\(q\)
    • 如果继续证明\(q \in NP\),则\(q \in NPC\)
    • NPC问题:SAT可满足性问题、最大独立集问题、背包问题、覆盖问题、路径问题
    • NPH问题:停机问题

    规约策略

    • \(X\le_pY,Y\le_pX \Rightarrow X \equiv_pY\)\(最大独立集问题 \equiv_p 最小顶点覆盖问题\)

    • 特殊到一般,\(最小顶点覆盖问题 \le_p 最小集合覆盖问题\)

    3.2 相关问题总结

    1. 独立集问题(Independent-Set):图的顶点集合的子集中,所有顶点两两没有边
    2. 团问题:图的顶点集合的子集中,所有顶点两两均有边
    3. 顶点覆盖问题(Vertex-Cover):图的顶点集合的子集中,边集中至少有一个顶点在该子集中。
    4. 集合覆盖问题(Set-Cover):非空集合的若干非空子集合的并集等于原有集合。
    5. 3-SAT问题3-CNF(合取范式)组成的布尔公式存在真值解。
    6. 哈密尔顿圈问题:图中通过每一个顶点恰好一次的回路。

    上述问题均是NPC的。

    单源最短路径和欧拉环是P问题。

    3.3 近似算法

    三种放宽要求的可能性:

    • 超多项式时间启发:存在一个伪多项式时间的算法,如背包问题。(缺点:只对弱NPC问题有效)
    • 概率分析:不再要求问题的解满足所有输入实例。(缺点:选取一个特殊的输入分布不容易)
    • 近似算法:不再要求总是找到最优解。设计一个算法找出所有情况下的次优解来解NP-hard问题、

    近似解分类

    • 容易近似:背包问题、调度问题、装箱问题
    • 中等难度:顶点覆盖问题、欧式TSP问题、Steiner Trees
    • 难于近似:着色问题、TSP、Clique(团)

    性能保证:在最优解和近似解之间建立某种联系。

    绝对性能度量:绝对近似算法是优化问题的多项式时间近似算法A,\(\exist k > 0\),使得

    \[\forall I\in D,|A(I) - OPT(I) | \le k \]

    含义:近似解和最优解相差某一小的常数。

    对于大多数的NPH问题,不存在绝对近似算法,除非\(P=NP\)

    两种绝对近似算法:

    • 图是否可以3着色:

      • G为二部图,即可2着色
      • G一定可以4着色,四色定理
      • \(|A(G)-OPT(G)| \le 2\)
    • 图边着色最小颜色数:

      • 最大度 / 最大度+1
      • \(|A(G)-OPT(G)|\le1\)

    前提已知最优解 或 值所在的小范围

    对于大多数NPH问题,存在绝对近似算法当且仅当存在多项式精确算法。

    反证不存在绝对近似算法

    • 背包问题,通过Scaling放大利润为k+1倍,再算解的值
    • 最大团问题,构造\(G^{k+1}\)

    相对性能度量:算法A在一个输入实例上的性能比为

    \[R_A(I) = \begin{cases} \frac{A(I)}{OPT(I)},最小化问题 \\ \frac{OPT(I)}{A(I)},最大化问题 \end{cases} \\ 1 \le R_A(I) \le 1+\varepsilon,A为(1+\varepsilon)-近似算法 \]

    含义:近似解和最优解比值为某一小的常数。

    • 绝对性能比\(R_A = inf\{ r|R_A(I)\le r,\forall I \in D \} =性能比上界集合中的最小值\)
    • 渐近性能比\(R_A^\infty = inf \{ r | R_A(I)\le r,\forall I \in D 且OPT(I)\ge N \}=最优解要足够大\)
    • 最佳可达性能比\(R_{MIN}(\Pi)=inf \{ r\ge1 | \exist多项式时间算法A,R_A^\infty\le r \}\)
      • \(\begin{cases}1,最容易近似 \\有界,\bigtriangleup TSP问题 \\无界,难于近似 \end{cases}\)

    \(1\le R_A^\infty \le R_A < \infty\)

    对于有Scaling性质的问题,\(R_A^\infty = R_A\)

    很多问题找不到绝对近似算法。

    有些问题找不到有界性能比近似算法。

    3.3.1 多机调度问题

    List调度算法:n个作业依次分配给当前负载最小的机器。

    \(\frac{A(I)}{OPT(I)} \le 2-\frac{1}{m}\)

    证明上界:

    \[\begin{align} &A(I) = L,作业运行时间最长\\ &OPT(I) \ge \frac{\sum P_i}{m}\ge \frac{m(L-P_{last})+P_{last}}{m} \\ &\Rightarrow OPT(I) \ge A(I) + \frac{1-m}{m}P_{last} \\ &\because OPT(I) \ge P_{last} \\ &\therefore 1 \ge \frac{A(I)}{OPT(I)} + (\frac{1}{m}-1)\frac{P_{last}}{OPT(I)}\\ &\therefore \frac{A(I)}{OPT(I)} \le (2-\frac{1}{m})\frac{P_{last}}{OPT(I) } \le 2-\frac{1}{m} \end{align} \]

    证明紧确界:有\(n=m(m-1)+1\)个作业

    \[\begin{align} &P_1=\cdots=P_{n-1}=1,P_n=m \\ &OPT(I)=前n-1个机器每个运行m个作业+第n个机器运行P_n=m \\ &A(I)=前n个机器每个运行m-1个作业+第1个机器运行P_n=2m-1 \\ &R_A=2-\frac{1}{m} \end{align} \]

    LPT调度算法:将作业递序排列,然后List策略调度。

    \(\frac{A(I)}{OPT(I)} \le \frac{4}{3} -\frac{1}{3m}\)

    3.3.2 装箱问题BP

    n件物品,每件物品在单位大小之内,按某种策略装入单位大小的箱子中,令箱子数最小。

    首次适应算法FF

    \(R_{FF}(I)\le 2\)\(R_{FF}^\infty=1.7\)

    证明:

    最多只有一个箱子是大于半空的。

    物品的总大小至少为总箱子的一半,\([\sum S_i] \ge \frac{1}{2} FF(I)\)

    最优解至少为物品的总大小,\(OPT(I) \ge [\sum S_i]\)

    \(R_{FF}(I) = 2\)

    递减首次适应FFD

    \(R_{FFD} \ge 1.5\)\(R_{FFD}^\infty = \frac{11}{9}\)

    3.3.3 旅行商问题TSP

    求最短哈密顿回路HC,访问所有顶点一次的回路。

    这里研究\(\bigtriangleup TSP\),即输入满足三角不等式

    近邻法NN:从当前顶点访问最近尚未访问的顶点,一次构造哈密尔顿圈HC\(R_{NN}^\infty=\theta(lg\ n)\)

    MST启发:先找一个欧拉环ET,然后再”Short-Cut“获得哈密尔顿圈。

    \(R_{NN}^\infty=2\)

    有欧拉环,当且仅当图连通且顶点度数均为偶数

    MST:

    1. 构造最小生成树
    2. 每条边复制一个
    3. 找到欧拉圈
    4. 短路欧拉路的方法构造HC,即遇到重复顶点就跳过。

    CH启发:不需要将所有边都复制,只在每对奇度顶点之间连线。

    \(R_{CH}^\infty = 1.5\)

    CH:

    1. 构造最小生成树
    2. 每对奇度顶点之间连线
    3. 找到欧拉圈
    4. 短路欧拉路的方法构造HC,即遇到重复顶点就跳过。

    本文来自博客园,作者:小陆斑比,转载请注明原文链接:https://www.cnblogs.com/bamlubi/p/15763710.html

  • 相关阅读:
    python day01
    Mac上安装pexpect
    raid
    SSL证书制作
    linux grep命令详解
    第一轮迭代小组成员分数分配
    M1事后分析报告(Postmortem Report)
    软件发布说明
    测试报告
    week 9 scenario testing
  • 原文地址:https://www.cnblogs.com/bamlubi/p/15763710.html
Copyright © 2011-2022 走看看