2

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

4

1 回答 1

4

假设您有一个包含 50 个“A”、35 个“B”和 15 个“C”的字符串。

使用固定长度编码,您可以使用 2 位表示该字符串中的每个字符。总共有 100 个字符,所以当使用这种方法时,压缩后的字符串将是 200 位长。

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

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

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

于 2011-11-07T14:53:33.593 回答