不相交的联合发现分析

时间:2011-10-03 11:28:14

标签: algorithm disjoint-union

在不相交的联合中,假设我们必须合并两个高度分别为h1和h2的树。使用此技术,如果h1不等于h2,则生成的合并树的高度将为max(h1,h2),如果h1 == h2,则为h1 + 1。在从初始情况开始的任意合并操作序列之后使用此技术,包含'k'节点的树具有高度 最多(logk的楼层)。这通过归纳证明如下。

基数:当k = 1时,高度为0. 0 <=(楼层(对数1))

归纳步骤:考虑k >1并假设所有m的误差都是1<=m<k。可以通过合并两个较小的子树来获得包含k个节点的树。假设这两个较小的树分别包含'a'和'b'节点,我们可以假定这些节点没有普遍性a<=b。现在a>=1,因此没有办法获得一棵树 从初始情况开始的零节点,并且k = a + b。 遵循a<=k/2b<=k+1,因为k>1k/2 < k(k-1) < k,因此a<k,和b<k

我上面的问题是

  1. 我们如何得到“它遵循上面的&lt; = k / 2和b&lt; = k + 1”声明。
  2. 谢谢!

1 个答案:

答案 0 :(得分:1)

我们假设a > k/2,然后是b > k/2,因为b>=a。然后是a + b > k/2 + k/2。因此,a + b > k。但我们有k = a + b!所以a > k/2的假设会导致矛盾,因此是错误的。这证明a <= k/2

英文版:如果我们将k分为ab两部分,其中b大一半,a必须小于一半k