C# Shannon-fano编码算法——大集合上的奇异行为

C# Shannon-fano编码算法——大集合上的奇异行为,c#,algorithm,C#,Algorithm,我正在写一个Shannon fano算法,我正在努力寻找程序中的错误-我的程序适用于我在互联网上找到的示例-示例: 这是我的10个字符的示例,其中设置的字符可能会降低较长代码的可能性: 左边是字节值,中间是可能性,左边是生成的代码。为什么65和226的代码比0,3和32的长?有人能看到代码中的错误吗? 编辑:代码隐藏,因为这个问题是关于学校作业的这可能不是代码中的错误,而是说明了Shannon Fano代码与Huffman压缩相比的固有弱点 正如您所知,Shannon-Fano技术是

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


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

左边是字节值,中间是可能性,左边是生成的代码。为什么
65
226的
代码比
0,3和
32的
长?有人能看到代码中的错误吗?

编辑:代码隐藏,因为这个问题是关于学校作业的

这可能不是代码中的错误,而是说明了Shannon Fano代码与Huffman压缩相比的固有弱点

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

不过,这也有一个缺点:虽然更频繁的符号在组合在一起时,平均编码比不太频繁的符号要短,但并非每个符号都有一个更短的编码


有关更多信息,请参阅此问题。

这可能不是代码中的错误,而是说明了Shannon Fano代码与Huffman压缩相比的固有弱点

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

不过,这也有一个缺点:虽然更频繁的符号在组合在一起时,平均编码比不太频繁的符号要短,但并非每个符号都有一个更短的编码

有关更多信息,请参阅关于此问题