Java实现哈夫曼编码问题:输出结果与预期不符
Java实现哈夫曼编码问题:输出结果与预期不符
大家好,我最近在做哈夫曼编码的Java实现任务时遇到了问题,自己写的代码输出结果和题目给出的参考答案对不上,想请各位帮忙分析下原因。
问题背景
我们有一个包含7个符号的离散信源(DMS),符号为Xi(i=1,2,...,7),对应的概率分别是:
- p1 = 0.37
- p2 = 0.33
- p3 = 0.16
- p4 = 0.07
- p5 = 0.04
- p6 = 0.02
- p7 = 0.01
按照要求,我先将这些概率按降序排列,再构建哈夫曼树,但运行代码后得到的编码结果和题目提供的表格答案不一致。
我的代码输出
1 0.37 1.4344 0 2 0.33 1.5995 11 3 0.16 2.6439 101 4 0.07 3.8365 1000 5 0.04 4.6439 10011 6 0.02 5.6439 100101 7 0.01 6.6439 100100
预期的正确结果
题目给出的正确编码结果(原内容略有截断,核心差异为编码序列与上述输出不同,比如符号2的编码应为10、符号3的编码应为11这类不同组合)
我的疑问
我是按照哈夫曼编码的常规步骤实现的:排序概率、合并最小概率节点、生成编码,但结果却和参考值有出入。是不是构建树的过程中有些细节没处理对?比如合并节点的顺序、给子树分配0/1的方向,或者排序时的稳定性问题?
备注:内容来源于stack exchange,提问作者Blahblah
相关产品推荐
相关产品推荐

