关闭

Huffman 编码

757人阅读 评论(0) 收藏 举报
分类:

1) 问题引入

Huffman 编码也也是贪婪算法的一种应用,它在文件压缩中有较强的应用。

对于计算机来说,它只认识两个数0,1 。而对于字符,计算机需要对其进行二进制编码来表示。假设对于128个字符,常规的编码方式利用8个位来表示(其中1位为奇偶校验位)。假设我们的文件只有7种不同的字符组成,那么我们需要3个位来表示这7个字符,可以有下面的编码方式:


如果我们用等长的位来编码时,我们可以得到一共需要174位的空间。我们可以看到上表中不同的字符的频率是不同的,差别较大,那么如果用较少的位来编码频率较高的字符,用较多的位来编码频率较低的字符,那么最终总的空间是不是会小很多呢?Huffman算法就是解决了这一问题。


2) Huffman算法

a) 把每一个字符看做一棵树,频率作为权值

b) 合并频率较低的两棵树,这样频率较低的树就会在最终的编码树中深度较高。

c) 编码,编码的规则为左子树为0,右子树为1.

下面是上面的例子:


因此得到的最终的编码结果为



3) 讨论

值得注意的是,并不是所有的情形都适合用Huffman编码。因为在文件前,需要发送一个编码表来使接受方能够解码出内容,这也会占据一定的空间,尤其是需要编码的内容不多时,编码表会占比较大,同时利用Huffman需要首先扫描内容,得到字符的频率,然后在进行编码,因此比较费时。


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Huffman编码解压缩的通俗讲解

前言好久没写博客了,主要是各种事缠着,难以抽出时间。这两个月以来,由于项目需要,我也逼着自己学到了很多,什么java后台,web前端,还有万恶的OpenCV图形处理……,呵呵,全栈:( 。但对Andr...
  • TellH
  • TellH
  • 2016-04-30 14:56
  • 5379

Huffman编码原理详解

1、概述      huffman编码是一种可变长编码(  VLC:variable length coding))方式,于1952年由huffman提出。依据字符在需要编码文件中出现的概率提供...
  • yang6464158
  • yang6464158
  • 2014-10-07 11:38
  • 1914

数据结构和算法——Huffman树和Huffman编码

Huffman树是一种特殊结构的二叉树,由Huffman树设计的二进制前缀编码,也称为Huffman编码在通信领域有着广泛的应用。在word2vec模型中,在构建层次Softmax的过程中,也使用到了...
  • google19890102
  • google19890102
  • 2017-02-04 15:43
  • 1481

huffman 编码

  • 2014-10-21 22:35
  • 428KB
  • 下载

huffman编码

  • 2013-08-01 19:34
  • 25.98MB
  • 下载

huffman信源编码信宿解码及详解c++

  • 2016-03-01 14:26
  • 2.42MB
  • 下载

基于Huffman编码的ASCII文件压缩算法

  • 2017-12-24 15:24
  • 12KB
  • 下载

huffman编码

  • 2015-05-29 11:00
  • 2KB
  • 下载

Huffman编码

  • 2015-05-05 22:14
  • 19KB
  • 下载

huffman编码

  • 2014-10-26 20:44
  • 15KB
  • 下载
    个人资料
    • 访问:257428次
    • 积分:2658
    • 等级:
    • 排名:第15707名
    • 原创:68篇
    • 转载:7篇
    • 译文:0篇
    • 评论:52条
    文章分类
    最新评论