递归树方法

时间:2011-01-31 01:53:21

标签: algorithm recursion tree

给定公式:T(n) = T(n/4) + T(n/2) + n^2

树模型:

              T(n)                 -- Level 1
             /    \
       T(n/4)       T(n/2)         -- Level 2
        /   \       /    \
 T(n/16)  *T(n/8) T(n/4)  *T(n/8)  -- Level 3

来自麻省理工学院算法课程的讲座:http://www.youtube.com/watch?v=whjt_N9uYFI

分钟:38:53

问题:如何,为什么以及为什么第3级变为n / 8?创建递归树的显式方程是什么?

顺便说一句,这不是作业问题。

1 个答案:

答案 0 :(得分:2)

原始树是这样的:

  T(n)    =   n^2  ->  T(n/4)
                   ->  T(n/2)

当你展开第一个分支时,你做了一个替换n = n/4,所以你得到:

  T(n/4)  =   (n/4)^2  ->  T((n/4)/4)
                       ->  T((n/4)/2)

          =   (n/4)^2  ->  T(n/16)
                       ->  T(n/8)

和第二个分支类似,n = n/2

  T(n/2)  =   (n/2)^2  ->  T(n/8)
                       ->  T(n/4)

所以将这些扩展替换回T(n)你得到

  T(n)    =   (n^2)    ->  (n/4)^2   ->  T(n/16)
                                     ->  T(n/8)
                       ->  (n/2)^2   ->  T(n/8)
                                     ->  T(n/4)