哈夫曼树

感觉是一个平凡的结论,但是我想了一年怎么证!!!

结论:序列 \(a\) 生成的哈夫曼树,第 \(i\) 个元素的深度为 \(\mathcal{O}(\log\sum a_i-\log a_i+1)\)

考虑哈夫曼树的生成过程:每次选取两个权值最小的结点合并。假设 \(x,y,z\) 为序列中最小的三个元素,那么与 \(x+y\) 合并的下一个元素 \(w\) 一定满足 \(w\geq z\),由于 \(x\leq y\leq z\),所以 \(w\geq z\geq\dfrac{x+y}{2}\),所以 \(x+y\)\(w\) 合并之后,其所在的子树规模至少变为原来的 \(1.5\) 倍,加上第一次合并,元素 \(i\) 的合并次数不超过 \(\mathcal{O}(\log\sum a_i-\log a_i+1)\),证明完毕。

练习:分析 P7124 [Ynoi2008] stcm 的复杂度。

posted @ 2023-02-08 19:48  yllcm  阅读(61)  评论(1编辑  收藏  举报