平台网站建设ppt模板下载,网站开发全科班,物流建设网站总结报告,高端自适应网站一、对比哈夫曼编码#xff1a;为什么需要算术编码#xff1f;先看大家熟悉的哈夫曼编码#xff1a;每个字符单独编码#xff0c;比如#xff1a;A → 0#xff0c;B → 10#xff0c;C → 11编码长度必须是整数位#xff08;1位、2位……#xff09;问题#xff1a;…一、对比哈夫曼编码为什么需要算术编码先看大家熟悉的哈夫曼编码每个字符单独编码比如A → 0B → 10C → 11编码长度必须是整数位1位、2位……问题如果某个字符概率是 0.9比如英文中空格很常见理论上它只需要不到 1 位就能表示香农熵 ≈ 0.47 bit但哈夫曼最少也得用 1 位浪费了✅算术编码的突破不再限制每个符号必须用整数位而是把整条消息映射到一个0 到 1 之间的实数区间用这个区间的任意一个数比如 0.3527来代表整条消息二、通俗例子用“猜数字”理解算术编码想象你在玩一个猜数字游戏我心里想一个 0 到 1 之间的数你要通过我的提示不断缩小范围最后猜中它。现在我们用这个思路来“编码”一条消息比如AB假设我们知道每个字母出现的概率A80%0.8B20%0.2第一步划分初始区间 [0, 1)把 [0, 1) 按概率切分A 占前 80% → [0, 0.8)B 占后 20% → [0.8, 1)10 ────────┬─────────────── 1 2 │ 3 A(0.8) B(0.2)第二步处理第一个字符 A因为第一个字符是 A所以新范围缩小到 [0, 0.8)第三步在 [0, 0.8) 内再按概率细分在这个小区间里继续按 A:80%、B:20% 划分A 的子区间0 0.8 × 0.8 0.64 → [0, 0.64)B 的子区间0.64 到 0.8 → [0.64, 0.8)10 ────────┬─────────────── 0.8 2 │ 3 A(0.64) B(0.16)第四步处理第二个字符 B所以最终区间是[0.64, 0.8)第五步选一个数代表整个消息只要选这个区间里的任意一个数比如0.7就可以代表 AB解码时从 0.7 出发反向推回去0.7 在 [0, 0.8) → 第一个是 A在 A 的区间里0.7 落在 B 的子区间→ 第二个是 B得到 AB ✅三、为什么更高效哈夫曼编码 AB 可能需要A01位B11位→ 共2 位算术编码用一个小数如 0.7表示实际存储时只需足够精度的二进制小数比如0.7 的二进制 ≈ 0.101100110011...只需 约 1.32 位理论极限 -log₂(0.8×0.2) ≈ 2.64 bits / 2 chars 1.32 bpc✅ 算术编码可以逼近香农熵的理论极限比哈夫曼更省空间四、关键特点总结表格特点说明整条消息一个数不是逐个字符编码而是整体映射到一个区间支持非整数码长高频符号“贡献”的区间大所需精度低节省比特接近理论最优平均码长 ≈ 信息熵优于哈夫曼适合高冗余数据如文本、DNA序列、传感器数据五、现实中的应用虽然算术编码更优但因涉及浮点运算和专利问题早期用得少。如今广泛用于JPEG 图像压缩可选算术编码但多用哈夫曼H.264/HEVC 视频编码CABAC基于上下文的自适应算术编码数据压缩工具如 bzip2 的部分变种✅ 最后一句话记住它算术编码就像把一整句话“折叠”进 0 到 1 之间的一个小缝隙里缝隙越小信息越密集只要记住缝隙里的任意一个点就能还原整句话。字符串的长度决定了浮点区间计算的次数决定了嵌套的子区间的个数。字符的个数决定了最外层区间的个数。第一个字符决定了数值所在的第一个区间位置。