霍夫曼编码将两个字符编码为一个字符

3

我需要一个哈夫曼编码(最好是用Python或Java),它可以将文本编码为两个字符,而不是一个字符 (a = 10, b = 11)。例如(ab = 11, ag = 10)。请问是否有这样的编码方式可用?如果有,请问在哪里可以找到它?也许它已经存在于互联网上,而我只是找不到它?


如果这是一份作业,请将其标记为作业。 - danben
不完全是作业。我答应了我的老师做这个,但现在我做不到了。我以为这会容易得多 :) - Adomas
你试过搜索一些哈夫曼编码的Python代码吗?我在Google上很快就找到了一些关键词为“huffman python”的代码。正如IVlad在下面所说,使用单个字符和使用两个字符作为符号之间实际上没有太大的区别。将使用一个字符的代码适应为使用两个字符应该相当容易。当然,如果字符串中字符数是奇数,则需要有一个符号只包含一个字符。 - Justin Peel
3个回答

6

Huffman编码不关心字符,而是关心符号。通常,它用于编码字母/其他单个字符,但很容易推广到编码字符串。基本上,您只需要采用现有的实现,并允许符号成为字符串而不是字符。然后,叶节点将对应于一个字符串列表。


1

Python bitarray 模块中分发了一个 Huffman 编码器示例,如果对您有用的话。


0

可能有一些代码存在。但这听起来像是一个解析和标记化的问题。我首先要回答的一个问题是,你正在处理多少个唯一的配对。霍夫曼编码在处理少量标记时效果最好。例如,键盘上的101个字符。但如果你的两个字符可以是任何东西,那么你现在将大大扩展最大字符数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接