跳转到内容

近似算法

快速概览

很多生物信息学问题是 NP-hard 的,无法在多项式时间内精确求解。近似算法提供了一种实用策略:在可接受的时间内找到足够好的解。

  • 先理解什么是 NP-hard 问题,再看近似比的概念会更顺。
  • 生物信息学中的很多现实工具本质上都是近似算法或启发式算法。
所属板块 基础与数学

对象层、坐标系统、coverage 与概率图模型的共同语言。

阅读目标 帮助建立阅读上下文

先判断这页与你当前问题的关系,再决定是否深入展开。

建议前置 先建立相关基础对象与方法直觉

建议先建立相关基础对象与方法直觉,再进入本页。

近似算法(approximation algorithm)用于解决优化问题,特别是 NP-hard 问题。它不追求最优解,而是在多项式时间内找到一个”足够好”的解。

NP-hard 问题
目前没有已知的多项式时间精确算法的问题,如旅行商问题、集合覆盖等。
近似比(Approximation Ratio)
近似解与最优解的比值,衡量算法的质量。对于最大化问题,$C/C^* leq alpha$;对于最小化问题,$C/C^* leq alpha$。
启发式(Heuristic)
基于经验规则的算法,通常没有理论保证的近似比,但在实践中效果好。

生物信息学中很多重要问题都是 NP-hard 的:

  • 系统发育树构建:寻找最优的系统发育树
  • 多重序列比对:寻找最优的多序列比对
  • Motif 发现:寻找最优的保守模式
  • 基因组重排:计算最小重排距离
  • 图着色:基因表达数据的聚类
  • 集合覆盖:选择最小探针集覆盖所有目标

NP-hard 问题的特点:

精确求解
在最坏情况下需要指数时间,$O(2^n)$ 或更差。
验证
给定一个解,可以在多项式时间内验证其正确性。
现实约束
生物数据规模大(基因组、蛋白质组),精确求解往往不可行。
问题生物信息学应用精确算法复杂度
旅行商问题(TSP)基因组重排、通路优化O(n!)O(n!)
集合覆盖探针设计、特征选择O(2n)O(2^n)
图着色表达数据聚类O(kn)O(k^n)
最大团蛋白质相互作用网络O(3n/3)O(3^{n/3})
最小割图分割、社区发现O(n3)O(n^3)

对于最小化问题:

{C}{C}α\frac\{C\}\{C^*\} \leq \alpha

其中 CC 是近似解的代价,CC^* 是最优解的代价,α\alpha 是近似比(α1\alpha \geq 1)。

对于最大化问题:

{C}{C}α\frac\{C^*\}\{C\} \leq \alpha

近似比越小,算法质量越好。

常数近似比
近似比是常数,如 2-approximation。
对数近似比
近似比是 $O(log n)$,如集合覆盖问题。
PTAS(多项式时间近似方案)
对于任意 $epsilon > 0$,存在 $(1+epsilon)$-approximation,时间复杂度可能是 $O(n^{1/epsilon})$。
FPTAS(完全多项式时间近似方案)
PTAS 且时间复杂度是关于 $1/epsilon$ 的多项式。

顶点覆盖(Vertex Cover):给定图 G=(V,E)G=(V,E),选择最少的顶点使得每条边至少有一个端点被选中。

这是一个经典的 NP-hard 问题,但有一个简单的 2-approximation 算法。

  1. 初始化空集合 CC
  2. 当图中还有边时:
    • 任选一条边 (u,v)(u,v)
    • uuvv 都加入 CC
    • 删除所有与 uuvv 关联的边
  3. 返回 CC

考虑图:

A -- B -- D
| |
C -- E

算法执行:

  1. 选边 (A,B),加入 {A,B},删除边 (A,B)(A,C)(B,E)
  2. 剩余边 (C,E),选边 (C,E),加入 {C,E}
  3. 返回 {A,B,C,E}

最优解可能是 {A,B,E}{B,C,D},大小为 3。 近似解大小为 4,近似比为 4/31.3324/3 \approx 1.33 \leq 2

每条边至少有一个端点在最优解中。我们的算法每次选一条边,把两个端点都加入,最多是最优解的 2 倍。

  • 蛋白质相互作用网络:找到最小顶点集覆盖所有相互作用
  • 基因调控网络:选择最少的关键基因覆盖所有调控关系

集合覆盖(Set Cover):给定全集 UU 和若干子集 S1,S2,...,SkS_1, S_2, ..., S_k,选择最少的子集覆盖 UU

这是一个经典的 NP-hard 问题,贪心算法可以达到 O(logn)O(\log n) 近似比。

  1. 初始化 C=C = \emptysetR=UR = U(剩余未覆盖元素)
  2. RR \neq \emptyset 时:
    • 选择覆盖 RR 中最多元素的子集 SiS_i
    • SiS_i 加入 CC
    • RR 中删除 SiS_i 的元素
  3. 返回 CC

全集 U={1,2,3,4,5,6,7,8}U = \{1,2,3,4,5,6,7,8\}

子集:

  • S1={1,2,3,4}S_1 = \{1,2,3,4\}
  • S2={3,4,5,6}S_2 = \{3,4,5,6\}
  • S3={5,6,7,8}S_3 = \{5,6,7,8\}
  • S4={1,2,7,8}S_4 = \{1,2,7,8\}

贪心算法:

  1. 选择 S1S_1(覆盖 4 个元素),R={5,6,7,8}R = \{5,6,7,8\}
  2. 选择 S3S_3(覆盖 4 个元素),R=R = \emptyset
  3. 返回 {S1,S3}\{S_1, S_3\}

最优解可能是 {S1,S3}\{S_1, S_3\}{S2,S4}\{S_2, S_4\},大小为 2。 贪心算法也得到大小为 2 的解。

贪心算法的近似比是 H(d)lndH(d) \approx \ln d,其中 dd 是最大子集的大小,H(d)H(d) 是调和数。

  • 探针设计:选择最少探针覆盖所有目标序列
  • 特征选择:机器学习中选择最少特征覆盖样本
  • 通路分析:选择最少基因覆盖所有通路

寻找最优系统发育树(如最大简约树、最大似然树)是 NP-hard 的。

距离法
如 UPGMA、Neighbor-Joining,基于距离矩阵构建树,$O(n^3)$ 或 $O(n^2)$。
启发式搜索
如树重排(tree bisection and reconnection),在树空间中局部搜索。
分支定界
精确算法,但通过剪枝加速,适用于小规模数据。

Neighbor-Joining 是一种流行的距离法:

  1. 计算所有叶节点的净发散度
  2. 计算距离矩阵的 Q 矩阵
  3. 选择 Q 值最小的节点对合并
  4. 计算新节点的分支长度
  5. 更新距离矩阵
  6. 递归直到只剩两个节点

时间复杂度:O(n3)O(n^3),可以在合理时间内处理数百个物种。

距离法没有理论保证的近似比,但在实践中效果良好。

寻找最优 motif 是一个困难的组合优化问题。

Gibbs Sampling 是一种随机化近似算法:

  1. 随机初始化 motif 位置
  2. 随机选择一个序列,从其位置矩阵中移除
  3. 基于剩余序列构建位置权重矩阵(PWM)
  4. 根据概率采样新的 motif 位置
  5. 重复直到收敛

假设有 4 条序列,motif 长度为 6:

Seq1: ATGCGATGCGA...
Seq2: CGATCGATCGA...
Seq3: GATCGATCGAT...
Seq4: TCGATCGATCG...
  1. 随机选择位置:[3, 5, 2, 4]
  2. 移除 Seq1,用 [5, 2, 4] 构建 PWM
  3. 根据 PWM 计算 Seq1 各位置的概率
  4. 按概率采样新位置
  5. 重复多次,取最好结果

Gibbs Sampling 没有理论保证的近似比,但通过多次运行可以提高找到高质量解的概率。

近似算法
有理论保证的近似比,如 2-approximation。
启发式
没有理论保证,但在实践中效果好,如 BLAST、Gibbs Sampling。
现实工具
大多数生物信息学工具是启发式的,结合多种策略。
  • BLAST:seed-and-extend(启发式)+ 统计评估
  • MAFFT:渐进式比对(启发式)+ 迭代优化
  • RAxML:启发式树搜索 + 最大似然评估

每步做局部最优选择,希望达到全局近似最优。

  • 优点:简单、快速
  • 缺点:可能陷入局部最优
  • 适用:集合覆盖、顶点覆盖等

把整数规划松弛为线性规划,求解后再取整。

  • 优点:有理论保证
  • 缺点:实现复杂
  • 适用:顶点覆盖、设施选址等

引入随机性避免局部最优。

  • 优点:跳出局部最优
  • 缺点:结果不稳定
  • 适用:Motif 发现、树搜索等
  • 贪心算法:很多近似算法基于贪心策略
  • 随机化算法:启发式搜索常使用随机化
  • 动态规划:某些近似算法结合 DP 和松弛
  • 整数规划:松弛技术来自优化理论
  • Approximation Algorithms, Vazirani
  • The Design of Approximation Algorithms, Williamson & Shmoys
  • Bioinformatics algorithms 相关文献