哈夫曼平均码长

🔐 Huffman Average Code Length

Estimate the average code length and compression efficiency from symbol frequencies per Huffman coding.

📐 计算公式与说明

哈夫曼平均码长(本页代码口径,固定三符号):平均码长 L̄=(f₁×l₁+f₂×l₂+f₃×l₃)÷(f₁+f₂+f₃)(bit/符号,fᵢ 符号频率、lᵢ 对应码长,保留 4 位小数);联动量:总频数=f₁+f₂+f₃。校验:六项输入空值/非法值即提示并中止。判据:无固定分级,加权平均码长以信息熵 H 为理论下界,越接近 H 压缩效率越高(页面文案口径,代码不计算 H)。

输入频率(或概率,归一化后结果一致)。

📚 深度解析:哈夫曼平均码长

💡 常见使用场景

示例:A:0.5 B:0.25 C:0.25
哈夫曼码 A=0,B=10,C=11,平均码长=0.5×1+0.25×2+0.25×2=1.5 bit/符号(熵=1.5,已达最优)。

❓ 常见问题(FAQ)

哈夫曼为何最优?
在满足前缀码条件下使平均码长最小,等于信息熵(概率取 2 的幂时)。
与算术编码区别?
算术编码可超越符号边界、更接近熵,哈夫曼实现简单但略有冗余。
频率未知怎么办?
需先统计或使用通用模型,动态场景可用自适应哈夫曼。

Formula & Standard References

Item Formula / Rule Source / Standard
Average length L = ∑ pi · li where li is the codeword length of symbol i Huffman, A Method for the Construction of Minimum-Redundancy Codes, 1952
Optimality bound H(X) ≤ L < H(X) + 1, so Huffman coding exceeds entropy by less than one bit Shannon 1948 / Huffman 1952 §1
Coding efficiency Efficiency = H(X) / L and redundancy = 1 − H(X) / L ISO/IEC 2382 Information technology vocabulary — data compression