[英]I have a function f(w,x,y,z) and a target value A, how can I discover values for w,x,y,z that produce A?
[英]Let X,Y,Z,W be words with vector frequency $(x,y,z,w)$ , Find an optimal code
正如此处对答案的评论中所述,特别是您需要 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.