并查集:按秩合并 $n$ 个点所得树高不超过 $\lfloor\log n \rfloor$

\(h_n\) 表示按秩合并 \(n\) 个点所得树的最大高度。
\(h_1 = 0, h_2 = 1, h_3 = 1, h_4 = 2, h_5 = 2, \dots\)
有如下地推:
\[ h_n = \max_{1\le i\le n-1} \max(h_i, h_{n-i}) + [h_i = h_{n-i} ]\]
因此有
\(h_{n+1} \ge h_n\)
\(h_{2n} \ge h_n + 1\)

可以证明 \(h_n = \lfloor \log n\rfloor\)

\(n\) 用数学归纳法。

\begin{aligned}
h_n &= \max_{1\le i \le n/2} h_{n-i} + [h_i = h_{n-i}] \\
&= \max_{1\le i \le n/2} \lfloor \log (n-i) \rfloor + [\lfloor\log i \rfloor = \lfloor \log(n-i)\rfloor]
\end{aligned}

\(n = 2^k + i\),其中 \(0\le i < 2^k\)

$ \lfloor\log i \rfloor = \lfloor \log(n-i)\rfloor \implies \lfloor\log i \rfloor = \lfloor \log(n-i)\rfloor = k-1$

\(h_n = \max(k, h_{n-1}) = k = \lfloor \log n\rfloor\)

posted @ 2018-11-27 21:34  Pat  阅读(452)  评论(0编辑  收藏  举报