问:压缩算法 是如何 确定 编码表的?

吹风的兔子 吹风的兔子 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大部分 压缩算法原理:

通过符号的出现频率,按照 哈夫曼算法 得到一个 编码表,
再通过编码表 重新编码 得到 压缩后的 字节。


问题来了:
计算 “编码表”,取决于 “出现频率”
“出现频率” 是如何产生的???

比如:
我有一本 《三国演义》 需要压缩到 字节流。
哈夫曼算法 如果遍历了 整本《三国演义》 计算除了 “编码表”。
然后按照 “编码表” 压缩了 《三国演义》
然后:
我再继续往这个 压缩字节流 中,写入了一本 英文《圣经》

完蛋:
之前通过 整本 中文《三国演义》确定的 编码表,在压缩 英文《圣经》 时,命中率锐减,压缩质量瞬间变差。

——————————————————————
问:
压缩算法的 “编码表” 是如何 产生 的?
> 是通过 全部待压缩字节 计算?(把《三国演义》《圣经》 都遍历一遍) —— 很明显,这种做法太占用 算法空间(内存)。
> 还是通过 最前面的 一部分字节 计算?(把 《三国演义》第一章 遍历一遍) —— 很明显,这种做法得到的编码表质量不高。

> 压缩算法 是如何 折中 处理的????




...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
吹风的兔子
C# 111,129 成员 642,539 内容