Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Recursion 求解递推T(n)=3T(n/2)和#x2B;N_Recursion_Tree_Recurrence - Fatal编程技术网

Recursion 求解递推T(n)=3T(n/2)和#x2B;N

Recursion 求解递推T(n)=3T(n/2)和#x2B;N,recursion,tree,recurrence,Recursion,Tree,Recurrence,我正在准备考试,我不知道如何获得由该关系生成的递归树的高度: T(n)=3T(n/2)+n 我知道这棵树看起来像这样,我必须添加所有术语: c*n / | \ / | \ c*n/2 c*n/2 c*n/2 . . . . . . 谢谢 当您具有形式的递归关系时 T(n)=aT(n/b)+f(n) 那么递归树的高度只取决于b的选择(当然,假设a>0)。这是因为

我正在准备考试,我不知道如何获得由该关系生成的递归树的高度:

T(n)=3T(n/2)+n

我知道这棵树看起来像这样,我必须添加所有术语:

           c*n
          / | \
         /  |  \   
    c*n/2 c*n/2 c*n/2 
      .     .     .
      .     .     .

谢谢

当您具有形式的递归关系时

T(n)=aT(n/b)+f(n)

那么递归树的高度只取决于b的选择(当然,假设a>0)。这是因为树中的每个节点表示展开上述循环时发生的情况,而在上述循环中,可以展开某些内容的唯一位置是T(n/b)项。如果增加或减少a,将增加或减少树的分支因子(例如,2T(n/b)表示展开节点时将生成两个节点,3T(n/b)表示展开节点时将生成三个节点),但树的分支因子与层数无关。它只是告诉你会有多少级别。类似地,更改f(n)只会增加或减少每个节点完成的总工作量,这不会影响递归树的形状

那么b对树的高度有什么具体的影响呢?在这个递推关系中,每次我们展开T,我们都会把输入的大小除以一个系数b。这意味着在树的顶层,我们将遇到大小为n的问题。下面是尺寸n/b的问题。下面是大小(n/b)/b=n/b2的问题。通常,在树的k级,问题大小将为n/bk。当问题大小降至0或1时,递归停止,当k=logb n时发生。换句话说,递归树的高度将是O(logbn)

现在,仅仅知道树的高度并不能告诉你所做的工作总量,因为我们还需要知道分支因子和每个级别所做的工作。有很多不同的方法可以相互作用,但幸运的是,有一个美丽的定理,叫做,让你只看a,b,和f(n),就可以非常优雅地读出解。在你的情况下,复发是

T(n)=3T(n/2)+O(n)

将此插入主定理,我们可以看到递推的解是T(n)=O(nlog23)。这大约是O(n1.58)