【发布时间】:2014-12-12 22:19:32
【问题描述】:
我正在复习期末考试,目前专注于霍夫曼编码。
据我了解..您取两个最低频率并将它们组合..从下往上构建树。
我的问题是.. 当 3 个或更多频率相同时,您会怎么做?你选择结合哪两个有关系吗?你把它们都结合起来了吗?
字母顺序重要吗?显然,在您完成编码部分之后,字母可能会根据您选择的不同而有所不同。
我在网上找到了一些教程和示例,但似乎没有一个可以演示这种情况。任何建议表示赞赏。谢谢!
示例:
假设给我一个字母数组:[a,b,c,d,e,f,g],频率如下:
a=3 b=2 c=6 d=2 e=4 f=2 g=4
【问题讨论】:
-
在我告诉你我的想法之前,你明白为什么霍夫曼编码有效吗?为什么你首先要结合最低频率?如果你这样做了,试着反思一下,看看你是否会自然而然地得到答案。这是一个供您使用的示例:
a:0.245 b:0.245 c:0.245 d:0.265 -
@SamIam 您首先组合最低频率,因为它们访问频率最低,因此它们最终会出现在树的底部。以您的示例.. 树的顶部父级为 1,其右子级为 0.34,然后 1.. 的左侧为 0.66,左右子级各为 0.33。对吗?
-
是的,没错。不过,我已经更新了示例,使其与您的问题更相关。
-
关键是您可能不想如此依赖于人们告诉您在出现的每种情况下应该做什么。如果您考虑一下霍夫曼编码的实际作用,那么这个问题的答案应该很容易找到
-
@SamIam 好的,我已经在干擦板上画了出来。我得到了一棵树,父母为 0.49 和 .245,.245 作为孩子。还有另一棵树,0.51 作为父级,0.245,.265 作为子级。我在正确的轨道上吗?
标签: tree huffman-code