赫夫曼编码

article/2025/9/24 18:06:53

一 基本介绍

1 赫夫曼编码也翻译为哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法。

2 赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。

3 赫夫曼编码广泛地用于数据文件压缩。 其压缩率通常在20%~90%之间。

4 赫夫曼码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,称之为最佳编码。

二 原理剖析

1 通信领域中信息的处理方式1——定长编码

2 通信领域中信息的处理方式2——变长编码

3 通信领域中信息的处理方式3——赫夫曼编码

三 赫夫曼编码步骤

1 假设要传输的字符串为:i like like like java do you like a java

2 统计各个字符对应的个数:d:1 y:1 u:1 j:2 v:2 o:2 l:4 k:4 e:4 i:5 a:5  :9 

3 按照上面字符出现的次数构建一颗赫夫曼树, 次数作为权值。

构建赫夫曼树的步骤如下:

3.1 从小到大进行排序,每个数据都是一个节点,每个节点可以看成是一颗最简单的二叉树。

3.2 取出根节点权值最小的两颗二叉树。

3.3 组成一棵新的二叉树, 该新的二叉树的根节点的权值是前面两颗二叉树根节点权值的和。

3.4 再将这棵新的二叉树,以根节点的权值大小再次排序,不断重复1-2-3-4 的步骤,直到数列中,所有的数据都被处理,就得到一颗赫夫曼树。

4 根据赫夫曼树,给各个字符,规定编码 (前缀编码),向左的路径为 0, 向右的路径为 1 ,编码如下:

o:1000 u:10010 d:100110 y:100111 i:101 a:110 k:1110 e:1111 j:0000 v:0001 l:001  :01

5 按照上面的赫夫曼编码,"i like like like java do you like a java" 字符串对应的编码如下:

1010100110111101111010011011110111101001101111011110100001100001110011001111000011001111000100100100110111101111011100100001100001110 

注意:这里使用的是无损压缩。

6 通过赫夫曼编码处理后,长度变为133。

四 说明

1 原来长度是359,压缩了(359-133) / 359 = 62.9%。

2 此编码满足前缀编码, 即字符的编码都不能是其他字符编码的前缀,不会造成匹配的多义性。

3 赫夫曼编码是无损处理方案。

五 注意

赫夫曼树根据排序方法不同,也可能不太一样,这样对应的赫夫曼编码也不完全一样,但是 wpl 是一样的,都是最小的,最后生成的赫夫曼编码的长度是一样。

比如:如果让每次生成的新的二叉树总是排在权值相同的二叉树的最后一个,则生成的二叉树为下图。


http://chatgpt.dhexx.cn/article/DGrUJhZZ.shtml

相关文章

哈夫曼编码(Huffman Coding)原理详解

哈夫曼编码 哈夫曼编码,又称为哈夫曼编码(Huffman Coding) 是一种可变长编码( VLC, variable length coding))方式,比起定长编码的 ASCII 编码来说,哈夫曼编码能节省很多的空间,因…

霍夫曼编码详解

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:information-theory】,需要的朋友们自取。或者公众号【AIShareLab】回复 信息论 也可获取。 文章目录 霍夫曼编码最佳…

霍夫曼编码(Huffman Coding)

霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种。 霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用…

Typecho 博客美化

以前用typecho博客,现在学生服务器到期了,先记录到csdn上,以后工作有钱了,再租个服务器写博客:) 代码高亮 https://www.typechodev.com/plugin/482.html 天气功能 使用心知天气带的插件就可以轻松实现了。 https://www.seniverse…

Hexo博客之博客美化

https://lqgjava.github.io/2019/08/24/Hexo博客之博客美化/ 只需阅读这一篇文章,就可以让你的博客变得丰富多彩,有添加卡通人物,添加鼠标点击爱心,添加鼠标指针样式 添加彩色滚动变换、添加背景音乐、添加动态彩带等&#xff0…

CSDN博客美化

排列博客分类 管理博客-分类专栏下修改 双击分类名称,即可编辑,输入“#”“空格”“分类名称”可将一级分类改成二级分类。 显示的效果 分类图标设置 编辑-设置图标,可以这里找阿里素材库 效果图

【CSDN】CSDN博客美化教程

一、效果 二、MarkDown简明教程 MarkDown简明教程 三、摘要 添加摘要,增加可读性。 PS. 其实,可以根据深度学习算法,自动生成摘要。 四、自定义博客栏目 五、修改皮肤

博客美化作业详细教程

博客美化作业 第一步 下载作业资源 第二步 在文件夹内打开下载资源 单击后缀为HTML文件的网页文件,右击用编译器打开 这些软件都可以(除了紫色的) 第三步 准备工作 首先让我们重新看下作业要求: 必须使用“类选择器”来美化网…

【全网最全的博客美化系列教程】04.访客量统计的实现

全网最全的博客美化系列教程相关文章目录 【全网最全的博客美化系列教程】01.添加Github项目链接 【全网最全的博客美化系列教程】02.添加QQ交谈链接 【全网最全的博客美化系列教程】03.给博客添加一只萌萌哒的小仓鼠 【全网最全的博客美化系列教程】04.访客量统计的实现 【全网…

Hexo博客美化之——IP签名图一网打尽

love421个人博客地址:https://www.makedreamsir.xyz IP签名图可以实时显示来访者的坐标,IP地址,操作系统,浏览器等等。 使用方法:将下面生成的链接插入到合适的位置即可。 项目原地址:点我打开 原作者博…

Web前端:博客美化:一、模板美化

1、选用模板simplememory 2、写css放在 这些会覆盖掉原来的css样式 我是在网上找的css代码二次加工的 : ) /*1、针对simplememory的修改*/ #google_ad_c1, #google_ad_c2 {display:none;} .syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, …

Hexo博客之主题美化

据说 NexT 是使用最多的Hexo主题,原因当然是比较漂亮啦!这个项目托管于github上,你可以fork一下,贡献代码。NexT官网上面给出了详细的主题配置过程,这里只是我的博客使用的一些配置以及NexT网站上配置中需要补充的部分。如果你是从头开始配置,请参考NexT官网。这篇文章介…

csdn写博客美化代码显示

本人写博客只是随笔记录,并不是很正规,见谅。 最近在写博客的时候发现自己贴的代码块就只显示代码,而一些前辈的代码块是这样的: 上图只看格式,代码无实际意义。 下面是我的代码块: 我写的代码块就…

【学习之博客美化】matery主题

为了方便我们这里使用 "Visual Studio Code"打开文件 将博客改为中文 目录:E:\IsQiyaBlog 将 " _config.yml " 文件中代码段 language: en 改为 language: zh-CN 修改主题菜单栏 将它们填上内容 新建分类 categories 页: hexo …

Hexo博客美化之蝴蝶(butterfly)主题魔改

这里写自定义目录标题 首先下载主题配置博客主题_config.yaml配置前须知_config.yaml配置简单介绍 如果参考我的脚手架,大家可以阅读readme和changelog文件,和蝴蝶主题官方文档。 tip: 由于butterfly主题升级至3.0.1,所提供的源码不在进行维护…

Vuepress博客美化技巧

文章目录 导航栏透明背景图填充跳转样式悬浮气泡背景图填充导航栏透明图片中的点击向下跳转的样式悬浮气泡 导航栏透明背景图填充跳转样式悬浮气泡 背景图填充 效果图: 下面的小框扩展到大框,让后面的导航栏透明更完善一些。 编辑Theme/components/Ho…

个人博客美化界面

先看一下我的界面 进入个人博客———管理——设置 在CSS代码框中输入一段代码,如下: /*simplememory*/ #google_ad_c1, #google_ad_c2 {display:none;} .syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, .syntaxhighlighter t…

Wordpress(Argon)主题博客美化

前言 常言道:工欲善其事必先利其器,在发表文章前,美化博客,使其利于自己的观看与管理极其重要,所以我四处搜寻,得到了以下美化代码。 但是,有时候我们走得太远,会忘了为什么出发。…

Hexo博客美化

Hexo博客美化 我们搭建好自己的博客以后,可以在hexo官网的 主题 中选择自己喜欢的博客主题,可以直接在主题中点开预览主题样式或者打开主题项目的 github 地址,将该主题下载到我们自己的博客项目中的 theme 文件夹中,然后在 _con…

个人博客美化

文章目录 Butterfly 主题安装修改博主头像生成文章唯一链接本地搜索SitemapRSS追番插件夜间模式繁星(宇宙)背景添加页脚徽标和计时器关于页面 总体参考: Butterfly 文档:https://butterfly.js.organzhiyu :https://anz…