我正在使用这个链接练习递归树方法:http://www.cs.cornell.edu/courses/cs3110/2012sp/lectures/lec20-master/lec20.html ..第一个例子没问题但是在第二个例子中他计算树的高度为log(base 3/2)n ..任何人都可以告诉我他是如何计算身高的?可能是一个愚蠢的问题,但我无法理解! :|
答案 0 :(得分:8)
让我尝试解释一下。您拥有的递归公式为T(n) = T(n/3) + T(2n/3) + n
。它说,你正在制作一个递归树,在这个级别上分成两个大小n/3
,2n/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。