给定BLAST的时间复杂度是多少?

时间:2019-12-23 11:14:48

标签: c time-complexity blast

comp

这是BLAST(基本局部比对搜索工具)图。如何计算其时间复杂度?

1 个答案:

答案 0 :(得分:1)

BLAST算法步骤:

  • 创建查询序列的长度为W的单词列表。

  • 在数据库中搜索W字。

  • 命中序列(即找到的序列)的延伸和得分分配。这些序列将通过局部比对给出。

  • 采用所谓的HSP(高分细分对)。

第一步花费时间O(n),其中n是序列中元素的数量。

第二步是第一步中创建的单词的另一个循环(上限n),因此时间为O(n)

第三步分配命中分数。这只能逐个字母地完成,因此时间复杂度为O(n * m),其中m是查询词中字母的数目。作为上限,我们可以说时间是O(n ^ 2)

第四步是对获得的分数进行简单的循环,所以O(n)也是如此。

总而言之,该算法可以同化为O(n ^ 2),在m << n的情况下,我们可以说O(n * m)。下限是O(n)。