`
沈冠军
  • 浏览: 111250 次
  • 性别: Icon_minigender_1
  • 来自: 玉林
社区版块
存档分类
最新评论

赫夫曼算法是啥玩意啊??

阅读更多

  

记得第一次听说哈夫曼编码这个词的时候是在大一上信息与信号处理课上,那时觉得它很深奥,老师只是稍微提了一下这个而已,自己也没有去查找过相关的资料,它到底是什么玩意也不太清楚,通过自己写的一个可视化赫夫曼编码知道了哈夫曼编码的一些应用,知道它的原理就会就会觉得它没有什么,但是假如哈夫曼没有提出这种算法,你会想到这么算不?有时候看到一个理论总觉得简单,就好像牛顿被苹果砸了一下就发现了万有引力定律,但是想想,如果砸的是你,你是否也会发现万有引力定律呢?呵呵,扯远了,我想说的是,哈夫曼算法并不是偶然的,而是哈夫曼经过长期的钻研才总结出来的。

那好,说一下我自己对哈夫曼算法的理解,其实哈夫曼算法形象一点来说就是一颗带权路径长度最小的二叉树也叫做哈弗曼树。哈夫曼首先给出了对于给定的叶子数目及其权值构造最优二叉树的方法,故称其为哈夫曼算法。那么是如何创建出一颗哈弗曼树呢?比如有5个权值v1=1,v2=1,v3=3,v4=5,v5=8,创建哈弗曼时,我们就得将这n个数从小到大排序,为了好说明,这里的权值都是排序好了的,首先以v1v2为叶子,他们的权值之和为根节点v6=2,再将v6与剩下的排序,再去取出两个权值最小的v6v3为叶子,他们的和v7=5为根节点,依此类推,直到全部的节点都用完,那么一颗哈弗曼树就建成啦!

哈弗曼算法的最大用途是哈弗曼编码,用于数据压缩,信息时代,人们对使用计算机获取信息、处理信息的依赖性越来越高。计算机系统面临的是数值、文字、语言、音乐、图形、动画、静图像、电视视频图像等多种媒体。大数据量的图像信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。压缩关键在于编码,如果在对数据进行编码时,对于常见的数据,编码器输出较的码字;而对于少见的数据则用较长的码字表示,就能够实现压缩。

可以这么说很多的数据都是经过哈弗曼编码进行压缩的,可见哈弗曼算法的重要性,下面是我自己写的一个简单的哈弗曼编码软件,可能bug是有的,让大家看看他的界面效果:

  

 

 

 

         其实现在自己应用哈弗曼算法也不是很多,以后可能会用来做压缩软件····

  • 大小: 63 KB
  • HuffmanCode.rar (13.3 KB)
  • 描述: 可视化哈弗曼编码源码:
  • 下载次数: 7
分享到:
评论
1 楼 freewxy 2010-08-17  
great!!

相关推荐

    基于赫夫曼算法的文件加密程序

    基于赫夫曼算法的文件加密程序,能对文件进行压缩和解压

    C++编写的赫夫曼算法

    赫夫曼编码是一种高效的数据压缩算法,由美国计算机科学家大卫·赫夫曼在1952年提出。这种算法主要用于无损数据压缩,通过构建赫夫曼树来为每个字符或符号分配一个唯一的二进制编码,使得频繁出现的字符具有较短的...

    赫夫曼编码的算法实现

    在实际应用中,赫夫曼编码常被用于文件压缩软件,如早期的LZ77、LZ78压缩算法以及后来的DEFLATE算法(广泛应用于ZIP和GZIP格式)都采用了类似的思想。此外,它还被用于通信领域的数据传输,以减少信号传输中的带宽...

    赫夫曼算法c++实现

    在这个C++实现中,我们将深入理解赫夫曼编码的原理以及如何用C++语言来构建和应用这个算法。 1. **赫夫曼树的构建** - 赫夫曼树是带权路径长度最短的二叉树,每个叶子节点代表一个需要编码的字符,而权重则对应...

    Android性能优化之赫夫曼算法

    赫夫曼编码(Huffman Coding)是一种有效的无损数据压缩算法,常用于JPEG图像压缩引擎中。本篇文章将深入探讨如何在Android环境中利用JNI(Java Native Interface)和C/C++原生代码实现赫夫曼编码,以提升图像压缩的...

    c语言 赫夫曼编/译码算法

    在IT领域,赫夫曼编码(Huffman Coding)是一种用于数据压缩的高效算法,由David A. Huffman在1952年提出。它基于一种称为赫夫曼树(Huffman Tree)的数据结构,通过构建最小带权路径长度的二叉树来实现对原始数据的...

    自适应赫夫曼算法实现的编码

    自适应赫夫曼编码是一种动态数据压缩方法,与传统的赫夫曼编码相比,它具有能够根据输入数据流的特性实时调整编码树的能力。在数据压缩领域,赫夫曼编码是广泛应用的一种前缀编码技术,其核心思想是为频繁出现的字符...

    赫夫曼编码译码算法(数据结构)

    总之,赫夫曼编码是数据压缩的重要工具,其原理和实现涉及数据结构、算法设计和文件处理等多个方面的知识。本项目通过实际操作,让我们能够更好地理解和掌握这一概念,并将其应用于实际问题的解决中。

    赫夫曼树的构建及赫夫曼编码

    赫夫曼树是一种特殊的二叉树,用于解决数据的压缩问题。...由于其高效性和无损性,成为了许多压缩算法的基础。通过学习和理解赫夫曼编码,不仅可以提升你在数据压缩领域的专业知识,还能为解决其他相关问题提供思路。

    根据赫夫曼树求赫夫曼编码

    //算法5.11 根据赫夫曼树求赫夫曼编码 #include using namespace std; typedef struct { int weight; int parent,lchild,rchild; }HTNode,*HuffmanTree; typedef char **HuffmanCode; void Select(HuffmanTree HT...

    赫夫曼编码压缩也解压文件

    "Huffman_coding_finish" 文件可能是C语言实现的赫夫曼编码压缩和解压程序的源代码,包括了赫夫曼树的构建、编码生成、压缩和解压缩的算法。 在这个课程设计中,学生不仅可以学习到赫夫曼编码的理论,还能实际动手...

    赫夫曼编码c语言实现

    赫夫曼编码, 时间空间复杂度很合理,我大二时编写的

    赫夫曼书算法

    关于赫夫曼树解决问题

    数据结构算法之赫夫曼编码系统

    利用赫夫曼树的编码思想,构造一个完整的赫夫曼编码系统。源代码还附赠了详细的PPT讲解。 ①从键盘读入字符集大小n,以及n个字符和n个权值,建立赫夫曼树,然后对赫夫曼树进行编码,输出结果。 ②使用上述字符集创建...

    数据结构实验——赫夫曼树的算法

    一、实验目的 1、进一步掌握指针变量、动态变量的含义。 2、掌握二叉树的结构特性,以及各种存储结构的特点和适用范围。 3、掌握用指针类型描述、访问和处理二叉树的运算。 二、实验内容 赫夫曼树的算法。

    赫夫曼树的算法编码器

    一、实验目的 1、进一步掌握指针变量、动态变量的含义。 2、掌握二叉树的结构特性,以及各种存储结构的特点和适用范围。 3、掌握用指针类型描述、访问和处理二叉树的运算。...2、赫夫曼树的算法编码器的设计与实现

    赫夫曼树构建过程及赫夫曼编码的实现

    赫夫曼树是一种特殊的二叉树,用于解决数据的压缩问题,它的构建过程与赫夫曼编码是数据压缩领域的核心概念。在这个过程中,我们将详细探讨赫夫曼树的构建、赫夫曼编码的实现,以及如何使用C语言来动态演示这些操作...

    赫夫曼树的算法,权值,编码,原始码

    根据给定文件的信息,我们可以详细地探讨赫夫曼树(Huffman Tree)的相关知识点,包括赫夫曼树的构建算法、节点权值的理解、赫夫曼编码的生成以及树的遍历方法等。 ### 赫夫曼树的定义与用途 赫夫曼树是一种带权...

    C语言实现的赫夫曼编码

    赫夫曼编码是一种用于数据压缩的高效算法,尤其适用于非均匀分布的数据。它的基本原理是为出现频率较高的字符分配较短的编码,而为出现频率较低的字符分配较长的编码,以此达到平均码长最短的目标,从而提高数据传输...

Global site tag (gtag.js) - Google Analytics