Recursion 求解递推T(n)=3T(n/2)和#x2B;N
我正在准备考试,我不知道如何获得由该关系生成的递归树的高度: T(n)=3T(n/2)+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)。这是因为
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)