问题标签 [lz77]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

compression - DEFLATE 是如何优化这个的?

我正在尝试理解放气算法,并且我已经阅读了霍夫曼代码以及 LZ77 压缩。我正在玩弄不同字符串的压缩大小,我偶然发现了一些我无法解释的东西。通过zlibgzipaaa压缩后的字符串大小与(36 s) 相同。aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

在阅读此内容之前,我会假设压缩器会执行诸如存储 36*a 而不是单独存储每个字符之类的操作,但我在规范中找不到任何提到的地方。

使用固定的霍夫曼代码产生了相同的结果,所以我假设节省空间的地方在于 LZ77,但它只使用距离-长度对。那如何允许 3 长度的字符串在不增加大小的情况下扩展 12 倍?

a在中间用一个或几个s打断 s 的字符串会b大大增加大小。b如果距离-长度对是做什么的,为什么它不能在向后搜索时跳过s ?或者是否使用了霍夫曼代码并且我误解了固定霍夫曼代码的含义?