HuffmanCode固定每个字符的位长度

时间:2011-11-07 09:09:42

标签: huffman-code

如何使用huffman确定字符串中固定长度代码所需的每个字符位数?我有一个想法,你计算字符串中不同字符的数量,而不是你用二进制数字表示这个数字,这将是固定长度,但它不起作用。例如在字符串“letty lotto喜欢很多棒棒糖”...有10个不同的字符,不包括引号(因为10 = 0101(4位),我认为这意味着所有的字符都可以使用4位表示),现在f的频率为1,编码为11111(5位)而不是4。

1 个答案:

答案 0 :(得分:4)

假设你有一个50“A”,35“B”和15“C”的字符串。

使用固定长度编码,您可以使用2位表示该字符串中的每个字符。总共有100个字符,因此使用此方法时,压缩字符串的长度为200位。

或者,您可以使用可变长度编码方案。如果允许字符具有可变位数,则可以用1位(“0”)表示“A”,用2位(“10”)表示“B”,用2位表示“C”(“11” )。使用此方法,压缩字符串长度为150位,因为字符串中最常见的信息片段需要较少的位来表示。

霍夫曼编码特指一种构建可变长度编码方案的方法,使用每个字符的出现次数来实现。

您描述的固定长度算法完全独立于霍夫曼编码。如果您的目标是使用固定长度的代码压缩文本,那么确定表示每个字符的位数的方法将起作用。