繁体   English   中英

令 X,Y,Z,W 为向量频率为 $(x,y,z,w)$ 的词,找到最优编码

[英]Let X,Y,Z,W be words with vector frequency $(x,y,z,w)$ , Find an optimal code

令 X,Y,Z,W 为向量频率为 (x,y,z,w) 的词,使得$x\leq y\leq z\leq w$ .

找到关于 x,y,z,w 的某些要求,使得 W=00,Z=01,Y=10,X=11 是最优代码。

我的解决方案:

使用霍夫曼编码,我认为解决方案是需求在此处输入图像描述

树是:

在此处输入图像描述

在这种情况下在此处输入图像描述 下一棵树是适当的树:

在此处输入图像描述

因此最佳编码为 W=0,Z=10,Y=110,X=111。

这两种情况的最佳代码是否正确?

谢谢 !

正如此处对答案的评论中所述,特别是您需要 w ≤ x + y 才能使顶部前缀代码达到最佳状态。 (符号“z, w ≤ x + y”没有公认的含义,z 无论如何都无关紧要,因为它与 w、x 和 y 的关系已经给出。)在 w = x + y 的情况下,那么您显示的两个前缀代码都是最佳的,并且正确实施的霍夫曼算法可以产生任何一个。 如果 w > x + y,则第二个代码是最优的。

另一个没有给出但应该给出的条件是 x > 0。如果 x = 0 但 y > 0,则根本不会对 x 进行编码,树中将有三个符号而不是四个。

您显示的树是四个符号仅有的两种可能的前缀代码拓扑。

你的解决方案是正确的,你可以证明它如下。 首先,论证通过要求 z 和 w 都不大于 x + y,您可以获得看起来像建议的最佳代码; 然后,争辩说,如果 z 或 w 大于 x + y,则无论如何都无法获得显示的代码。

正如您清楚地指出的那样,当 z 和 w 不大于 x + y 时,您可以获得平衡的二叉树,其中符号的代码长度为 2。 将标签分配给边缘会给出所示的代码。

类似地,如果 z 或 w 大于 x + y,则 Huffman 将在到达根之前将节点或 x + y 与其他节点组合; 这意味着从根到某些叶子的路径长度至少为 3,因此通过重新标记边缘获得的任何代码都将具有一些长度至少为 3 的代码字。 这看起来不像所提供的代码,其代码字的长度都是相等的 2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM