【问题标题】:Solving the recurrence relation for number of nodes in an AVL tree?解决 AVL 树中节点数的递归关系?
【发布时间】:2013-03-22 03:59:46
【问题描述】:

假设我们有这个递归关系,它出现在 AVL 树的分析中:

  • F1 = 1
  • F2 = 2
  • Fn = Fn - 1 + Fn - 2 + 1(其中 n ≥ 3)

你将如何解决这个递归以获得 F(n) 的封闭形式?此数字用于获取高度为 n 的 AVL tree 中的最小内部节点数。

【问题讨论】:

  • @phs- 我不认为这是重复的。这个问题询问您如何解决显示 AVL 树高度较低的中心递归。链接的问题要求提供在斐波那契数列中生成术语的方法。

标签: math data-structures discrete-mathematics avl-tree recurrence


【解决方案1】:

有很多方法可以解决这种重复问题,但其中大部分都非常复杂。我认为最简单的方法是扩展该系列的几个术语,看看你会发现什么:

  • F(1) = 1
  • F(2) = 2
  • F(3) = 4
  • F(4) = 7
  • F(5) = 12
  • F(6) = 20

如果您看一下,您会注意到以下内容:

  • F(1) = 1 = 2 - 1
  • F(2) = 2 = 3 - 1
  • F(3) = 4 = 5 - 1
  • F(4) = 7 = 8 - 1
  • F(5) = 12 = 13 - 1
  • F(6) = 20 = 21 - 1

看起来这些项只是斐波那契数列中减去 1 的项。特别要注意 F3 = 2、F4 = 3、F5 = 5 等。因此,它看起来像模式是

  • F(1) = 2 - 1 = F3 - 1
  • F(2) = 3 - 1 = F4 - 1
  • F(3) = 5 - 1 = F5 - 1
  • F(4) = 8 - 1 = F6 - 1
  • F(5) = 13 - 1 = F7 - 1
  • F(6) = 21 - 1 = F8 - 1

因此,更一般地说,模式看起来是 F(n) = Fn + 2 - 1。我们可以尝试使用数学归纳法将其形式化:

基本情况:

  • F(1) = 1 = 2 - 1 = F3 - 1
  • F(2) = 2 = 3 - 1 = F4 - 1

归纳步骤:假设 F(n) = Fn+2 - 1 和 F(n + 1) = Fn+3 - 1。那么我们有那个

  • F(n + 2) = F(n) + F(n + 1) + 1 = Fn+2 - 1 + Fn+3 - 1 + 1 = (Fn+2 + Fn+3) - (1 + 1) + 1 = Fn+4 - 1 = F(n + 2) + 2 - 1

瞧!归纳检查。

那么,我是如何考虑使用斐波那契数列寻找这种模式的呢?嗯......递归定义有点像斐波那契数列的定义,所以我预计它们两者之间可能存在某种联系。观察一切都是斐波那契数减一只是创造性的洞察力。您可能会尝试通过使用生成函数或其他组合技巧来解决此问题,尽管我不是这些方面的专家。

希望这会有所帮助!

【讨论】:

  • 这完全有帮助,谢谢。我专注于斐波那契数本身的归纳,但不要考虑这两者之间可能有什么联系。当我复制斐波那契数的解时,我有我脸上的鸡蛋,太愚蠢了。啊哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 2014-05-27
  • 1970-01-01
  • 2014-05-01
  • 2017-01-01
  • 2021-12-17
相关资源
最近更新 更多