生物序列分析中的算法与距离度量方法
1. 受限最长公共子序列问题
在某些情况下,我们会考虑 2 - ELCS(1) 问题的一种受限形式,即强制符号的数量最多为一个常数。针对这个受限问题,有一个多项式时间算法,该算法包含两个阶段:
- 第一阶段 :猜测最优解中所有强制符号的精确顺序。由于每个强制符号在可行解中恰好出现一次,所以强制符号的正确顺序是集合 (A_m) 的一个排列。又因为 (|A_m|) 是常数,所以这个排列可以在常数时间内计算出来。
- 第二阶段 :计算 ({s_1, s_2}) 的最长公共子序列 (s^ ),使得 (s) 是 (s^ ) 的子序列。
为了更精确地描述这个过程,我们引入一些符号。用 (s[i]) 表示序列 (s) 的第 (i) 个字符,用 (s[i…j]) 表示从 (s[i]) 开始到 (s[j]) 结束的子串。对于 (EL[i, j, k]),它表示 (s_1[1…i]) 和 (s_2[1…j]) 的最优解长度,且该最优解是序列 (s[1] \cdots s[k]) 的超序列,其递推方程如下:
[
EL[i, j, k] = \max
\begin{cases}
EL[i - 1, j - 1, k] + 1 & \text{如果 } s_1[i] = s_2[j], s_1[i] \in A_o \
EL[i - 1, j - 1, k - 1] + 1 & \text{如果 } s_1[i] = s_2[j] = s[k] \
EL[i - 1, j, k], EL[
超级会员免费看
订阅专栏 解锁全文
1708

被折叠的 条评论
为什么被折叠?



