哈夫曼树最优性的证明(思考良久)_huffman树是最优证明-CSDN博客
哈夫曼树的核心:每次选最小的两个节点合并:局部优->全局优
假设有一棵最优二叉树 H,其叶子节点权值满足 ≤
≤⋯≤
证明 和
为兄弟,从而证明:(每次合并最小两节点)是最优的
若H 中 和
不是兄弟,设 u 和 v 是 H中一对最深的兄弟节点(深度最大,路径长度最长)
将 与
交换位置,
与
交换位置,得到新树 H′
原树中, 和
的路径长度为
和
,
和
的路径长度为 l(l 是 H中最大深度,故 l≥
,l≥
),
交换后, 和
的路径长度变为 l,
和
的路径长度变为
和
。
=(
+
-
-
)(
-
-
)
0
H′ -WPL H-WPL
若 H 是最优树,则 Δ=0:交换后 H′ 也是最优树,且 w1 和 w2 为兄弟。
因此,最优树中最小的两个节点必为兄弟。
若最优树中最小的两个节点不相邻,它们与最深的兄弟节点交换后,树的带权路径长度更小,矛盾了。所以,最小节点必须相邻,哈夫曼树的贪心选择正确。