因子复杂度 与 阿贝尔复杂度区别

因子复杂度

因子复杂度算法的概念来自“字符串的代数组合”,在自然语言处理,模块识别 和密码理论等领域有着广泛的应用。简单来说,因
子复杂度算法通过分析子字符串的组合获取字符串的特征,该特征的主要特征是子字符串组合的复杂度以及拓扑熵。 下面给出因子复杂度的具体算法。对于一个字母表 &,& ={ A T C G }
假定一条基于字母表&的序列|W|,它的长度为 |W|。

我们知道,计算拓扑熵并不容易,因为拓扑熵算法随着有限长度序列的长度变化而变化。 因此,我们以 100 bp 长度的序列为例,阐述拓扑熵的算法。首先获取到 100 bp 长度序列的因子复杂度函数,观察该因子复杂度函数的函数图像可以发现,前 7 维的因子复杂度函数值呈指数水平递增,在第 7 维特征达到顶峰,然后数值缓慢线性下降。值得一提的是,拓扑熵本身就是与因子复杂度特征的非线性变化有关系,因此需要关注的是这前 7 维的因子复杂度特征。 Koslicki(Koslicki 2011) 等提出了选择拓扑
熵的公式如下:


其中 w 为序列长度,当 w 为 100 时,根据公式可以算出, n 等于 3。Jin提出另外一个选择拓扑熵的公式,该公式如下:

其中将 k 和 n0 结合起来分析拓扑熵。本研究根据拓扑熵的原始定义,结合前人的研究,提出一种从因子复杂度中选取拓扑熵的计算方法。前面提到,拓扑熵就是用来描述因子复杂度函数的指数增长速度,因此通过分析因子复杂度的二阶差分来寻找拓扑熵位点,公式如下:

阿贝尔复杂度

Abelian 复杂度,作为因子复杂度的衍生复杂度方法,最早被用来研究无限长度序列的复杂度(Balková et al 2011)。对于无限长度的序列,它的 abelian 复杂度会呈现规律的周期性(Richomme et al 2009),但是有限长度序列的 abelian 复杂度研究
的并不多。下面给出 abelian 复杂度的具体算法:

下面用一个例子加以说明:以 DNA 序列片段 = AAGCAGTCGG为例子,说明 abelian 复杂度的具体计算方法,

步骤一:获取序列片段 的所有子字符串,定义 S n ( ) 为所有子字符串的集合。
子字符串长 相应的子字符集合

扫描二维码关注公众号,回复: 3476194 查看本文章

步骤二:计算步骤一中获取的所有长度的子字符串集合的帕里克向量。例如,
子字符串 CAGT 与 AGTC 的帕里克向量都是(1, 1, 1, 1)。

步骤三:统计所有长度的子字符串集合的帕里克向量个数。例如,长度为 3 的
子字符串集合为 AAG, AGC, GCA, CAG, AGT, GTC, TCG, CGG
对应的帕里克向量为 (2, 0, 0, 1), (1, 1, 0, 1), (1, 0, 1, 1), (0, 1, 1, 1), (0, 1, 0, 2).

猜你喜欢

转载自blog.csdn.net/super_he_pi/article/details/82949023