【问题标题】:How to get the length of of huffman codes如何获得霍夫曼码的长度
【发布时间】:2014-04-07 12:57:11
【问题描述】:

我正在尝试查找在 Huffman 编码上生成的代码长度,以查找 Huffman 压缩效率:

我的霍夫曼编码代码是:

函数调用是GenerateCode(rear, "",Obj); 这些Obj 用于内部目的(您可能觉得没有必要,但我正在使用它来获取当前上下文中的数据)。

    public void GenerateCode(Node parentNode, string code, MainPage obj)
    {
        obj.listBox2.Visibility = Visibility.Visible;
        if (parentNode != null)
        {
            GenerateCode(parentNode.left, code + "0",obj);
            if (parentNode.left == null && parentNode.right == null)
               obj.listBox2.Items.Add("Symbol :" + parentNode.symbol + " - " + "Code : " + code);
               GenerateCode(parentNode.right, code + "1",obj);
        }
    } 

假设获得的霍夫曼表是这样的:

symbol : 0 Code : 1
symbol : 1 Code : 00
symbol : 2 Code : 011
symbol : 3 Code : 010

现在我无法在 c# 中找到逻辑来计算这些编码对应于每个符号的长度,以便我能够将它们乘以频率来计算 Huffman 压缩效率。因为它们是“0和1”的字符串,所以如何计算它们的长度?

【问题讨论】:

  • 您上一个问题的答案没有回答这个问题吗?在我看来,他们好像这样做了

标签: c# algorithm data-structures huffman-code


【解决方案1】:

长度为code.Length,字节长度为(float)code.Length / 8。重要的是以相同的单位、位或字节与原始长度进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    相关资源
    最近更新 更多