c# - 如何获得霍夫曼码的长度

标签 c# algorithm data-structures huffman-code

我正在尝试查找霍夫曼编码生成的代码长度,以找到霍夫曼压缩效率:

我的霍夫曼编码代码是:

函数调用是 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# 中找到逻辑 来计算这些编码对应于每个符号的长度,这样我就可以将它们与频率相乘来计算霍夫曼压缩效率。因为它们是“0 和 1”的字符串,所以如何计算它们的长度?

最佳答案

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

关于c# - 如何获得霍夫曼码的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22913101/

相关文章:

c++ - 抛出异常时不调用析构函数

algorithm - 快速获取洪水填充边界矩形的方法

java - 如何从庞大的数据库中搜索给定的单词?

c# - 在 .Net 中对字符串进行标记化的方法有哪些?

c# - 如何将具有多个组件的应用程序部署到 Azure?

C比较两个位图的最快方法

algorithm - 用于查找缺少字母的单词的良好算法和数据结构?

c# - 仅将构造函数公开给基类,可能吗?

c# - 是否可以在 C# 中创建一个字符串并将其与 PowerShell 一起使用?

c# - 为什么将 c# 泛型 List 实现为仅追加数组?