我正在阅读有关压缩尝试的内容并阅读以下内容:
压缩的trie是具有L个叶子的树,并且trie中的每个内部节点具有至少2个子节点。
然后作者写道,一个带有L的树离开,使得每个内部节点都有第2个子节点,最多有L-1个内部节点。我真的很困惑,为什么这是真的。
有人可以为它提供归纳证明吗?
答案 0 :(得分:3)
归纳证明
我们将通过L
上的归纳证明它 - 树中叶子的数量。
base:由1片叶子制成的树实际上是一棵只有根的树。它有0个内部节点,声称是真的。
假设对于具有L叶的压缩树,声明是正确的。
步骤:让T为具有L + 1叶子的树。选择一个任意叶子,让它成为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内部节点!
答案 1 :(得分:0)
您应该尝试使用L个内部节点绘制树,其中每个节点都有2个子节点并且有L个叶子。如果你知道为什么这是不可能的,那么要弄清楚它为什么对L-1内部节点起作用并不难。
答案 2 :(得分:0)
好的,我会好好的。
为一个开始定义树:
T_0 = { Leaf }
T_i = T_i-1 union { Node(c1, ..., cn) | n >= 1 && ci in T_i-1 }
Trees = sum T_i
现在,你的断言的(草图)证据。
可以轻松查看T_0
对于T_i
:如果t \in T_i
它位于T_i-1
或新元素中。在前一种情况下,使用IH。在后一种情况下检查断言(简单:如果ci
有L_i
个叶子,t
有L = L_1 + ... + L_n
个叶子。它也不会超过L_1 - 1 + L_2 - 1 + ... + L_n - 1 + 1
内部节点(由IH代表儿童,+1代表自己)。因为我们假设每个内部节点至少有两个子节点(这是trie定义中的事实),它不超过L_1 + l_2 + ... + L_n - 2 + 1 = L - 1
)。
通过归纳,如果所有t in T_i
的{{1}}断言成立,则i
成立。