知识卡片
霍夫曼编码与算术编码的取舍
内容
霍夫曼编码给每个符号分配一个整数比特长度的前缀码,出现频率越高的符号编码越短,但因为编码长度必须是整数比特,天然无法完全逼近[[信息熵定义压缩的理论下限]]所给出的理论极限。算术编码则把整条信息编码成[0,1)区间内的一个小数,按符号概率不断细分区间,能以分数比特逼近信源熵,压缩效率通常比霍夫曼高约10%。但算术编码计算复杂、且在有限精度计算机上要解决区间收敛问题,历史上还受专利限制,所以工程落地远不如实现简单的霍夫曼编码普及。发散:这是一个典型的”理论最优”输给”工程可用性更好”的例子。
参考来源
《Linux开源存储全栈详解从Ceph到容器存储》第1章《Linux开源存储》