算法:按预期频率将符号压缩成位串?

标签 algorithm encoding compression

我有一个包含 100 万个符号及其预期频率的表格。

我想通过为每个符号分配一个唯一(且前缀唯一)的可变长度位串来压缩这些符号的序列,然后将它们连接在一起以表示序列。

我想分配这些位串,以使编码序列的预期位长度最小化。

例如,如果符号和预期频率是:

foo 0.5
bar 0.25
baz 0.25

最好的编码之一是:

foo 0
bar 10
baz 11

所以“foobarbazfoo”转换为 010110。

我可以通过什么算法将预期频率表转换为最佳编码方案?

最佳答案

您正在描述 entropy coding .一种流行且易于实现的选项是 Huffman coding , 但还有其他的。

关于算法:按预期频率将符号压缩成位串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062857/

相关文章:

java - 使用有损 jpeg 压缩多页 tiff 图像

algorithm - 不是线性代数的 O(n^2) 和 O(n^3) 算法列表?

python中点线裁剪算法

c - 为什么给qsort()的比较函数需要返回三个不同的值呢?

c# - 如何在 C# 中覆盖转储文件中的特定字节

linux - 可安全中断的连续流压缩

algorithm - 非确定性多项式(NP)与多项式(P)?

python - 如何转换阿拉伯语 Unicode

javascript - 有没有办法让 firefox 不自动对分配给 document.location.hash 的值进行 url 解码?