labview霍夫曼编码_霍夫曼(Huffman)编码

一、定义

霍夫曼(Huffman)编码是一种编码方式,主要用于数据文件的压缩。它的主要思想是放弃文本文件的普通保存方式:不再使用7位或8位二进制数表示每一个字符,而是用较少的比特表示出现频率高的字符,用较多的比特表示出现频率低的字符。

引例:假设需要对文本字符串“ABRACADABRA!”编码

一种方式是,用较短的比特表示所有可能的字符。

如A-0、B-1、R-00、C-01、D-10、!-11,这样“ABRACADABRA!”的编码就是0 1 00 0 01 0 10 0 1 00 0 11。这种表示方法只用了17位,而7位的ASCII编码则用了77位。但是这种方法存在一个问题:当不存在分隔符的时候,我们无法根据一连串比特码区分字符与比特码的映射关系。如01000010100100011也可以表示成CRRDDCRCB或其它字符串。

第二种方式是,如果任一字符的编码都不是其它字符编码的前缀,那么就不需要分隔符了。

如A-0、B-1111、R-1110、C-110、D-100、!-101。而霍夫曼编码就是寻找这种变长前缀的算法,且能使最终构造出的比特流最小。

二、实现方式

霍夫曼编码,首先需要根据输入文本,构造一棵二叉树,树的左链接表示比特"0",右链接表示比特"1",叶子结点表示字符。字符所对应的霍夫曼编码值就是从根结点到叶子结点的链接值。

总体实现步骤如下:

【压缩步骤】

压缩用于将原始文本转换成一条编码过的比特流。

读取输入;

统计输入中每个字符的频次;

根据频次,构造Huffman树;

构造编译表,用于将字符与变长前缀映射;

将Huffman树编码为比特字符串,并写入输出流;

将文本长度编码为比特字符串,并写入输出流;

压缩数据,即使用编译表翻译每个文本字符,写入输出流。

【解压缩步骤】

解压缩用于将一条编码过的比特流转换为原始文本。

读取Huffman树(编码在比特流的开头);

读取需要解码的字符数量;

根据步骤1还原的Huffman树解码压缩数据。

三、源码实现

3.1 构造Huffman树

构造一颗Huffman树的步骤如下:

1、遍历一遍文本,统计各个字符出现的频次;

2、对每个字符构造一个叶子结点,结点包含该个字符的频次;

3、每次从所有结点中选出频次最小的两个根结点,构造一个新结点,新结点作为根结点,两个根结点作为其左右子结点,新结点的频次为左右子根结点的频次和;

4、重复第3步,直到最后只剩一个根结点。

树结点定义:

private static class Node implements Comparable {

private final char ch; //字符

private final int freq; //每个结点保存以该结点为根的子树中的字符数量

private final Node left, right;

Node(char ch, int freq, Node left, Node right) {

this.ch = ch;

this.freq = freq;

this.left = left;

this.right = right;

}

private boolean isLeaf() {

return (left == null) && (right == null);

}

public int compareTo(Node that) {

return this.freq - that.freq;

}

}

构造Huffman树:

//构造Huffman树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LabVIEW Runtime Engine 2018是由National Instruments公司开发的一款软件,它是基于LabVIEW编程语言开发的应用程序的运行时库。该软件在不使用LabVIEW开发环境的情况下,可以运行LabVIEW编写的程序和应用。这极大地方便了用户,因为他们不需要具备LabVIEW编程能力或安装LabVIEW开发环境就可以使用LabVIEW应用。 LabVIEW Runtime Engine 2018是一个跨平台的软件,它支持Windows、Mac OS X和Linux等主流操作系统。它的特点是功能强大、运行稳定、资源消耗低,具有很好的兼容性和易用性。使用该软件,用户可以方便地管理和运行自己的LabVIEW应用,从而提高了生产效率和质量。 总而言之,LabVIEW Runtime Engine 2018是一个高效实用的软件,在很多实际应用场景中发挥了不小的作用。它为用户提供了一种便捷的方式,让用户能够高效地运行和使用LabVIEW编写的应用程序,同时不需要花费大量的时间和成本学习LabVIEW编程语言。 ### 回答2: LabVIEW Runtime Engine 2018是 National Instruments 公司开发的一款软件,它可以在不安装 LabVIEW 的情况下运行由 LabVIEW 开发的程序。通俗地讲,它就像是一个“运行库”,可以让开发的程序在没有安装 LabVIEW 的电脑上运行。 因为 LabVIEW 程序开发过程中涉及到非常多的工具箱、组件以及可重用的代码模块,因此安装这些环境非常耗费时间和磁盘空间。而有了 LabVIEW Runtime Engine 2018,我们可以通过安装这个相对小巧的软件来避免安装庞大的 LabVIEW 开发环境,从而更加方便的运行 LabVIEW 程序。 当然,更为重要的是,LabVIEW Runtime Engine 2018 的存在,可以让我们将自己的程序分享给没有 LabVIEW 开发环境的用户,这样他们便能够在不需要购买 LabVIEW 的前提下使用我们的程序。一般来说,LabVIEW Runtime Engine 2018 支持的 LabVIEW 版本只要与开发程序的版本相同或者更低,就可以保证程序的兼容性。 总而言之,LabVIEW Runtime Engine 2018 是一个很实用的工具,它可以让我们更加方便地运行和共享我们的 LabVIEW 程序,同时也能够避免不必要的安装和磁盘空间的浪费。 ### 回答3: LabVIEW Runtime Engine 2018是一款由美国国家仪器公司(National Instruments)开发的软件,用于运行由LabVIEW开发的应用程序。LabVIEW Runtime Engine 2018是这个软件的最新版本,它兼容LabVIEW 2018及更早版本的应用程序。LabVIEW是一种可视化编程语言,广泛应用于数据采集、控制系统、信号处理、图像处理、测试和测量等领域。LabVIEW Runtime Engine 2018可在无需安装完整的LabVIEW开发环境的情况下,运行LabVIEW应用程序。这意味着,在安装了只需安装LabVIEW Runtime Engine 2018的机器上,LabVIEW应用程序可以像运行在开发环境中一样正常运行。此外,LabVIEW Runtime Engine 2018还允许用户部署他们所编写的应用程序在不同的平台上,比如Windows、Mac和Linux。总之,LabVIEW Runtime Engine 2018是LabVIEW应用程序必备的组件,它使得用户可以方便、快捷地运行和部署他们所开发的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值