algorithm - 求解递归的递归树法

标签 algorithm recursion recurrence

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

最佳答案

让我试着解释一下。您拥有的递归公式是 T(n) = T(n/3) + T(2n/3) + n。它说,您正在创建一个递归树,该树分为大小为 n/32n/3 和成本为 n 的两个子树水平。

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

如果上面的句子你很清楚,我们来计算高度。在高度 1,我们将有 n*(2/3) 个元素,在高度 2,我们有 n*(2/3)^2 个元素,...我们将继续拆分,直到剩下一个元素,即高度 h

 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 Method for Recursion| .

关于algorithm - 求解递归的递归树法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382448/

相关文章:

algorithm - 用迭代、替换、主定理解决递归问题?

python - 如何为迭代深度优先搜索添加完成时间?

algorithm - 从邻接表计算入度图

c++ - 相互递归类是否可能?

algorithm - 这个递归算法的阶数/递归公式/闭合公式是什么?

algorithm - 出现以下复发如何解决?

c - 简单字符串匹配期间比较的字符数

php - 哈希游戏中一个岛屿的所有可能组合

recursion - 如何使用pykalman filter_update 进行在线回归

algorithm - Haskell:递归定义的函数值的有效计算