【问题标题】:Proof for number of internal nodes in a tree树中内部节点数的证明
【发布时间】:2012-01-16 12:47:01
【问题描述】:

我正在阅读有关压缩尝试的内容并阅读了以下内容:

压缩树是一棵树,它有 L 个叶子,并且树中的每个内部节点都至少有 2 个子节点。

然后作者写道,具有 L 个叶子的树使得每个内部节点都有至少 2 个子节点,最多有 L-1 个内部节点。我真的很困惑为什么这是真的。

有人可以提供一个归纳证明吗?

【问题讨论】:

  • 这真的很容易......你自己尝试过吗?
  • 另外,你的意思是“trie”还是“tree”?它们是不同的数据结构。
  • @Marcin - 特里树是一种特殊的树,对于这个问题,差异并不重要。
  • @Marcin:他的意思是图论意义上的树。从这个意义上说,任何树都是一棵树。
  • @jpalecek:那么我不应该到处执行尝试 - 我认为它们与跳过列表相同。

标签: algorithm trie compression induction


【解决方案1】:

归纳证明:
我们将通过对L 的归纳来证明这一点 - 树中的叶子数。
base:一棵由一片叶子组成的树实际上是一棵只有根的树。它有 0 个内部节点,并且声明是正确的。
假设该声明对于具有 L 个叶子的压缩树是正确的。
步骤:令 T 为一棵有 L+1 片叶子的树。选择任意一片叶子,让它为 l,然后修剪它。
为了使树再次压缩 - 你需要让 l 的父亲成为一片叶子 [如果 l 的父亲有超过 2 个儿子,包括 l,请跳过这一步]。我们通过赋予它与 l 的兄弟相同的值并修剪兄弟来做到这一点。
现在你有一棵树 T',叶子 L。
通过归纳:T' 最多有 L-1 个内部节点。
所以,T 有 L-1+1 = L 个内部节点,最多有 L+1 个叶子。
Q.E.D.

替代证明:
具有 L 个叶子的二叉树有 L-1 个内部节点 (1 + 2 + 4 + ... + L/2 = L-1)
因为在“最坏情况”你有一个二叉树[每个内部节点至少有 2 个儿子!],那么你不能有超过 L-1 个内部节点!

【讨论】:

  • @Nemo:如果父亲有超过 2 个儿子,包括 l,那么通过修剪 l,不做任何其他事情,新树中有 L 个叶子 [让它是 T'],然后归纳假设,在 T' 中没有超过 L-1 个内部节点。我们没有修剪任何内部节点,因此 T 中也没有超过 L-1 个内部节点。这个案例是琐碎的,不有趣的,所以我跳过它。关于替代证明:它是证明的指南。证明二元情况是最坏的情况也不难。
  • 是的,我的错。需要在评论之前醒来。
  • 你能解释一下:一棵有 L 个叶子的二叉树有 L-1 个内部节点 (1 + 2 + 4 + ... + L/2 = L-1) 吗?
  • @crisron 这是geometric seriesa=1, r=2。计算a_k(距根深度k的节点数)和S_{k-1}(该级别k的内部节点总和)的公式,得到S_k-1 = (1-2^(k-1))/(1-2) = 2^(k-1) -1a_k = 1*2^(k-1)
【解决方案2】:

您应该尝试绘制一棵具有 L 个内部节点的树,其中每个节点都有 2 个子节点,并且有 L 个叶子。如果您明白为什么这是不可能的,就不难理解为什么它对 L-1 内部节点有效。

【讨论】:

    【解决方案3】:

    好的,那我试试看。

    首先定义树:

    T_0 = { Leaf }
    
    T_i = T_i-1 union { Node(c1, ..., cn) | n >= 1 && ci in T_i-1 }
    
    Trees = sum T_i
    

    现在,你的断言的(草图)证明。

    1. 很容易查到T_0

    2. 对于T_i:如果t \in T_i 它位于T_i-1 或新元素中。在前一种情况下,使用 IH。在后一种情况下检查断言(简单:如果cis 有L_i 叶子,tL = L_1 + ... + L_n 叶子。它也有不超过L_1 - 1 + L_2 - 1 + ... + L_n - 1 + 1 内部节点(由 IH 为孩子,+1 self)。因为我们假设每个内部节点至少有两个子节点(这是 trie 定义的事实),所以它不超过L_1 + l_2 + ... + L_n - 2 + 1 = L - 1)。

    3. 通过归纳,如果断言对于所有i 都适用于t in T_i,那么它适用于t in Trees

    【讨论】:

    • 不要喂帮助吸血鬼!
    猜你喜欢
    • 2014-06-30
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多