VinfRNA包中的RNAfold时间复杂度

时间:2018-03-24 11:46:56

标签: c++ time-complexity bioinformatics software-design dna-sequence

任何人都可以告诉我RNAfold包中的VinnaRNA算法的复杂程度。 https://www.tbi.univie.ac.at/RNA/

这个Algo。存在于ViennaRNA-2.4.4\ViennaRNA-2.4.4\src\bin中。 帮助我。

1 个答案:

答案 0 :(得分:0)

您提供的链接中有经验运行时分析。您可以在日志/日志图上看到线性计算时间。

这意味着您可以编写(使用log作为基数10的对数并调用T算法的时间复杂度)

   log(T(10^n)) = a.n + b                          for a and b to be read from the graph
=> T(10^n) = 10^(a.n + b) = C.10^(a.n)             with C constant
=> T(n) = T(10^(log(n)) = C.10^(a.log(n)) = C.n^a

现在,阅读图表,你可以看到

  • T(length of RNA sequence = 1000) ~= 10^0 = 1
  • T(10000) ~= 10^2.6

这会给你一个a ~= 2.6的近似值 如果您想要保守,可以将a3绑定,这会导致复杂性

T(n) = O(n^3)

其中n是核苷酸中RNA序列的长度。