跳转到内容

断点与基因组重排

快速概览

断点是基因组重排中的核心概念,用于度量两个基因组间的结构差异。通过消除断点,可以设计近似算法求解基因组排序问题。

  • 断点是相邻基因对在一个基因组中连续但在另一个中不连续的位置
  • 排序 by 反转等价于消除所有断点
  • 基于断点的贪心算法具有 4-近似保证
  • strip(连续段)结构指导反转选择策略
所属板块 基础与数学

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

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

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

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

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

断点(Breakpoint) 是基因组重排分析中的关键概念,用于识别两个基因组间的结构差异点。通过分析断点,可以:

  • 度量基因组间的距离
  • 设计排序算法将 one 基因组转换为 another
  • 推断进化历史

给定两个基因排列(一个作为参考,一个作为目标),找到最短的反转序列将目标排列转换为参考排列。

示例

  • 参考排列:π=0 1 2 3 4 5 6 7 8 9\pi = 0\ 1\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9
  • 目标排列:π=0 8 2 7 6 5 1 4 3 9\pi = 0\ 8\ 2\ 7\ 6\ 5\ 1\ 4\ 3\ 9
  1. 进化分析:比较物种间基因组结构差异
  2. 癌症基因组:检测体细胞结构变异
  3. 祖先重建:推断共同祖先的基因顺序

将排列 π=π1π2...πn\pi = \pi_1 \pi_2 ... \pi_n 扩展为: π0=0,πn+1=n+1\pi_0 = 0, \quad \pi_{n+1} = n+1

对于相邻元素对 (πi,πi+1)(\pi_i, \pi_{i+1})

  • 邻接(Adjacency)πiπi+1=1|\pi_i - \pi_{i+1}| = 1(连续数字)
  • 断点(Breakpoint)πiπi+11|\pi_i - \pi_{i+1}| \neq 1(不连续)

排列:0 2 1 3 4 5 8 7 6 90\ 2\ 1\ 3\ 4\ 5\ 8\ 7\ 6\ 9

位置类型
(0,2)0-2断点
(2,1)2-1邻接
(1,3)1-3断点
(3,4)3-4邻接
(4,5)4-5邻接
(5,8)5-8断点
(8,7)8-7邻接
(7,6)7-6邻接
(6,9)6-9断点

断点数b(π)=4b(\pi) = 4

单位排列
单位排列(0 1 2 ... n n+1) 没有断点,是唯一断点数为 0 的排列。
最大断点数
n 个元素的排列最多有 n+1 个断点(如 0 6 1 3 5 7 2 4 8)。
反转的影响
一次反转最多消除 2 个断点(在反转的两端各一个)。

Strip 是两个连续断点之间的最大无断点区间

对于 0 2 1 3 4 5 8 7 6 90\ 2\ 1\ 3\ 4\ 5\ 8\ 7\ 6\ 9

0 | 2 1 | 3 4 5 | 8 7 6 | 9

Strips:

  • 0(单元素)
  • 2 1(递减 strip)
  • 3 4 5(递增 strip)
  • 8 7 6(递减 strip)
  • 9(单元素)
类型定义示例
递增 strip元素递增3 4 5
递减 strip元素递减8 7 6
单元素 strip只有一个元素定义为代表性为递减(除 0 和 n+1)

定理:如果一个排列包含递减 strip,则存在一个反转可以减少断点数。

证明思路

  • 在所有递减 strips 中选择包含最小元素 k 的那个
  • k1k-1 必定位于某个递增 strip 的末端
  • 反转 k 与 k-1 之间的区间,将两者合并,减少断点数

由于每次反转最多消除 2 个断点:

d(π)b(π)2d(\pi) \geq \frac{b(\pi)}{2}

其中 d(π)d(\pi) 是最少反转次数,b(π)b(\pi) 是断点数。

SIMPLEREVERSALSORT(π):
while b(π) > 0:
选择消除最多断点的反转 ρ
π ← π · ρ
输出 π

问题:该算法可能陷入局部最优,性能保证较差。

IMPROVEDBREAKPOINTREVERSALSORT(π):
while b(π) > 0:
if π 有递减 strip:
选择使 b(π·ρ) 最小的反转 ρ
else:
选择反转一个递增 strip(创造递减 strip)
π ← π · ρ
输出 π

定理:IMPROVEDBREAKPOINTREVERSALSORT 是 4-近似算法

证明概要

  1. 有递减 strip 时,算法必能减少断点数(定理 5.1)
  2. 无递减 strip 时,反转递增 strip 创造递减 strip,下一步必能减少断点
  3. 因此每 2 步至少减少 1 个断点
  4. 总步数 2b(π)\leq 2b(\pi),最优解 b(π)/2\geq b(\pi)/2
  5. 近似比 2b(π)b(π)/2=4\leq \frac{2b(\pi)}{b(\pi)/2} = 4

输入:π=0 8 2 7 6 5 1 4 3 9\pi = 0\ 8\ 2\ 7\ 6\ 5\ 1\ 4\ 3\ 9

初始状态

0 → | 8 ← | 2 ← | 7 6 5 ← | 1 ← | 4 ← | 3 ← | 9 →

Strips:0(增), 8 2 7 6 5 1 4 3(减), 9(增) 断点数:b(π)=6b(\pi) = 6

Step 1:反转递减 strip 中最小元素 1 所在位置

  • 1 在递减 strip 末端,0 在递增 strip 末端
  • 反转区间 [1, 0] 之间:0 8 2 7 6 5 1 4 3 90 1 5 6 7 2 8 4 3 90\ 8\ 2\ 7\ 6\ 5\ 1\ 4\ 3\ 9 \rightarrow 0\ 1\ 5\ 6\ 7\ 2\ 8\ 4\ 3\ 9
  • b(π)=5b(\pi) = 5

Step 2:继续消除递减 strip

  • …(继续迭代)

最终达到单位排列,总步数与最优解比值不超过 4。

操作断点影响近似比
反转最多消除 2 个4
转位最多消除 3 个3
反转+转位更灵活更小

对于多个基因组的祖先重建问题:

多断点距离问题:给定排列集合 {π1,...,πk}\{\pi_1, ..., \pi_k\},找到祖先排列 σ\sigma 使 i=1kbr(πi,σ)\sum_{i=1}^k br(\pi_i, \sigma) 最小。

煎饼翻转问题:给定一叠大小不同的煎饼,每次可以翻转前缀,求最少翻转次数使煎饼按大小排序。

等价性:这是前缀反转排序问题,是基因组重排的特例(只允许前缀反转)。

已知结果

  • William Gates 和 Christos Papadimitriou (1979) 证明:任何排列可在 5n+53\frac{5n+5}{3} 步内完成
  • 该问题至今未完全解决

断点概念由 SankoffNadeau 在 1980-90 年代发展,用于比较基因组学。Kececioglu 和 Sankoff (1995) 提出了基于断点的贪心算法。Berman、Hannenhalli 和 Karpinski (2002) 改进了近似比到 1.375。

  • 断点是基因组重排分析的核心度量,对应结构差异位置
  • 消除断点等价于排序问题,每次反转最多消 2 个断点
  • 基于断点的贪心算法具有 4-近似保证
  • 递减 strips 指导反转选择,确保算法进展