递归树解决复发的方法

时间:2012-09-12 06:37:37

标签: algorithm recursion recurrence

我正在使用这个链接练习递归树方法:http://www.cs.cornell.edu/courses/cs3110/2012sp/lectures/lec20-master/lec20.html ..第一个例子没问题但是在第二个例子中他计算树的高度为log(base 3/2)n ..任何人都可以告诉我他是如何计算身高的?可能是一个愚蠢的问题,但我无法理解! :|

1 个答案:

答案 0 :(得分:8)

让我尝试解释一下。您拥有的递归公式为T(n) = T(n/3) + T(2n/3) + n。它说,你正在制作一个递归树,在这个级别上分成两个大小n/32n/3和费用n的子树。

如果您看到高度由最大子树的高度(+1)确定。这里右侧子树,2n/3元素将驱动高度。 OK?

如果您对上述句子清楚,请计算身高。在高度1处,我们将有n*(2/3)个元素,在高度为2时,我们有n*(2/3)^2个元素,...我们将继续分裂,直到我们剩下一个元素,因此在高度h < / p>

 n*(2/3)^h <= 1
 (take log both side)
 log(n) + h*log(2/3) <= 0
 (log is an increasing function)
 h*log(3/2) >= log(n)
 h >= log(n)/log(3/2)
 h >= log3/2 (n)

我建议从Introduction to Algorithms - CLRS阅读Master of Recursion。