Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何获得序列比对算法的复杂性?_Algorithm - Fatal编程技术网

Algorithm 如何获得序列比对算法的复杂性?

Algorithm 如何获得序列比对算法的复杂性?,algorithm,Algorithm,为什么这个算法的复杂度是3^n 分析算法opt的时间复杂度。您应该首先指定如何调用此函数。 关于大O的分析,您可以通过绘制递归树来获得它。您可以对较小的n样本执行此操作,您会注意到树的高度是n。现在,您可以注意到,对于函数的每个实例,您将再次调用同一个函数3次,因此有一棵树以3的倍数指数扩展。因此,您的复杂性是O(3^n) 奖金:与斐波那契类比 检查Fibonacci算法的基本(无记忆)递归版本,您将看到类似的结构,除了每次执行两个调用,因此复杂性为O(2^n)函数名opt()用作函数内变量的名

为什么这个算法的复杂度是3^n


分析算法opt的时间复杂度。

您应该首先指定如何调用此函数。 关于大O的分析,您可以通过绘制递归树来获得它。您可以对较小的
n
样本执行此操作,您会注意到树的高度是
n
。现在,您可以注意到,对于函数的每个实例,您将再次调用同一个函数3次,因此有一棵树以3的倍数指数扩展。因此,您的复杂性是
O(3^n)

奖金:与斐波那契类比


检查Fibonacci算法的基本(无记忆)递归版本,您将看到类似的结构,除了每次执行两个调用,因此复杂性为
O(2^n)

函数名
opt()
用作函数内变量的名称。我猜是打字错误。谢谢你的反馈,我想知道点火开关。
void opt(int i , int j )
{
  if(i == m)
    opt = 2( n - j);
  else if(j == n)
    opt = 2( m - i);
  else{
    if(x[i] == x[j])
     penalty = 0;
    else
     penalty = 1;
   opt = min(opt(i+1,j+1) + penalty, opt(i+1,j)+2, opt(i, j+1)+2);
  }
}