Shannon-fano编码算法 - 较大集合上的奇怪行为

时间:2017-04-11 22:42:34

标签: c# algorithm

我正在写一个Shannon-fano算法,我正在努力在我的程序中找到一个错误 - 我的程序适用于我在互联网上找到的例子 - 例如:

enter image description here


这是我的10个字符的示例,其中设置字符将降低可能性更长的代码:

enter image description here

左侧是字节值,中间是可能性,左侧是生成的代码。为什么65226's代码比0,332's长?任何人都可以看到代码中的错误吗?
编辑:代码隐藏,因为这个问题是关于学校作业

1 个答案:

答案 0 :(得分:0)

这可能不是你的代码中的一个错误,而是说明了与Huffman压缩相比Shannon-Fano代码的内在弱点。

如您所知,Shannon-Fano技术是按降序对代码频率列表进行排序,然后将二进制符号(零或一)分配给频率范围的每一半。只要段中有多个元素,就会以递归方式重复此过程。

这有一个弱点:尽管更频繁的符号在组合在一起时,其平均编码的平均值比不常用的符号更短,但事实并非如此必须为每个符号分配一个较短的编码分配给它。

有关详细信息,请参阅a question I posted a while back over on Computer Science有关此问题的信息。