最佳压缩的最佳哈夫曼树

发布于 2024-12-27 09:01:44 字数 272 浏览 0 评论 0原文

我正在编写霍夫曼字符串压缩器,我想确认我正在对我的树进行最佳压缩。

我正在使用这种树:

在此处输入图像描述

而不是这种树:

在此处输入图像描述

我认为超过 10 个单个字符,不可能压缩为 8 位。

第一个图像真的是最佳图像吗?

I am coding an Huffman string compressor and I would like to have a confirmation I am doing the optimal compression with my tree.

I am using this kind of tree:

enter image description here

Instead of this kinda tree:

enter image description here

I think that over 10 single characters, it's not possible to compress on 8 bits..

Is the first image really the optimal one?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

荆棘i 2025-01-03 09:01:44

最基本的想法是添加两个最小的节点,创建一个新节点,其值是其 2 个子节点的总和。

遵守此规则直至树的根部可保证生成的树将是最佳

因此,您无法控制树的形状:它完全取决于字符的概率分布。如果概率分布看起来像斐波那契数列,它最终可能会成为一棵退化树(每层一个分支)。

因此,创建具有预设最大深度的霍夫曼树更加复杂,并且需要打破总是添加 2 个最小节点的通常规则。生成的树显然不是最优的。

The very basic idea is to add the two smallest nodes, creating a new node which value is the sum of its 2 children.

Respecting this rule up to the root of the tree guarantee that the tree produced will be optimal.

Therefore, you have no control on the shape of the tree : it entirely depends on the probability distribution of characters. It may end up being a degenerated tree (one branch per level) if the probability distribution looks like a Fibonacci serie.

Creating Huffman tree with a pre-set maximum depth is therefore more complex, and requires to break the usual rule of always adding the 2 smallest nodes. The resulting tree will obviously not be optimal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文