RLE算法机制、缺点及哈夫曼算法和莫尔斯编码

news/2024/5/16 23:55:02/文章来源:https://blog.csdn.net/m0_61961937/article/details/127142248

CSDN话题挑战赛第2期
参赛话题:学习笔记

目录

一、RLE算法机制

二、RLE算法的缺点

三、哈夫曼算法和莫尔斯编码


一、RLE算法机制

        对 AAAAAABBCDDEEEEEF 这17个半角字符的文件(文本文件)进行压缩。虽然这些文字没有什么实际意义,但是很适合用来描述RLE的压缩机制

        由于半角字符(其实就是英文字符)是作为1个字节保存在文件中的,所以上述的文件大小就是17字节。如下图:

17个英文字符占用空间:

如何才能压缩该文件呢?只要能够使文件小于17字节,我们可以使用任何压缩算法

最显而易见的一种压缩方式就是把相同的字符 去重化,也就是 字符 * 重复次数 的方式进行压缩,所以上面文件压缩后就会变成下面这样:

文件压缩后的文件大小:

 从图中可以看出,AAAAAABBCDDEEEEEF的17个字符成功被压缩成了 A6B2C1D2E5F1 的12个字符,也就是 12/17 = 70% ,压缩成功了

像这样,把文件容易用 数据* 重复次数 的形式来表示压缩方法称为 RLE(Run Length Encoding,行程长度编码)算法。RLE算法是一种很好的压缩方法,经常用于压缩传真的图像等。因为图像文件的本质也是字节数据的集合体,所以可以用RLE算法进行压缩

二、RLE算法的缺点

RLE的压缩机制比较简单,所以RLE算法的程序也比较容易编写,所以使用RLE的这种方式更能让你体会到压缩思想,但是RLE只针对特定序列的数据压缩,下面式RLE算法压缩汇总:

文件类型压缩前文件大小压缩后文件大小压缩比率
文本文件14862字节29065字节199%
图像文件96062字节38328字节40%
EXE文件24576字节15198字节62%

通过上表可以看出,使用RLE对文本文件进行压缩后的数据不但没有减小,反而增大了!几乎是压缩前的两倍!因为文本字符中连续的字符并不多见。

就像上面的示例一样,RLE算法只针对 连续 的字节序列压缩效果比较好,假如有一连串不相同的字符该怎么压缩呢? 比如说 ABCDEFGHIJKLMNOPQRSTUVWXYZ ,26个英文字母所占空间应该是26个字节,我们用RLE压缩算法压缩后的结果为:

A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1,所占用52个字节,压缩完成后的容量没有减少,反而增大了,这显然不是我们想要的结果,所有这种情况下下就不能再使用RLE进行压缩

三、哈夫曼算法和莫尔斯编码

下面是另一个压缩算法,即哈夫曼算法。在了解哈夫曼算法之前,必须舍弃 半角英文数组的1个字符是1个字节(8位)的数据。下面式哈夫曼算法的基本思想

文本文件是由不同类型的字符组合而成的,而且不同字符出现的次数也是不一样的。例如,在某个文本文件中,A出现了100次左右,Q仅仅用到了3次,类似这样的情况很常见。哈夫曼算法的关键就在于多次出现的数据用小于8位的字节数表示,不常用的数据则可以使用超过8位的字节数表示。A和Q都用8位表示时,原文件的大小就是100次 * 8位 + 3位 * 8位 = 842位,假设A用2位,Q用10位来表示就是2 * 100 + 3 * 10 = 230位

不过需要注意的是,最终磁盘的存储都是以8位为一个字节来保存文件的

莫尔斯编码在以前的美剧和战争片的电影,在通信的时候经常采用摩尔斯编码来传递信息

 下面式莫尔斯编码的示例,可把1看作短点(嘀),把11看作是长点(嗒即可)

 莫尔斯编码一般把文本中出现最高频率的字符用 短编码 来表示。如表所示,假如表示短点的为是1,表示长点的位是11的话,那么E(嘀)这个数据的字符就可以用1来表示,C(滴答滴答)就可以用9位的 110101101 来表示。在实际的莫尔斯编码中,如果短点的长度是1,长点的长度就是3 ,短点和长点的间隔就是1。这里的长度指的就是声音的长度。比如我们想用上面的AAAAAABBCDDEEEEEF 的例子来用莫尔斯编码重写,在莫尔斯编码中,各个字符之间需要加入表示时间间隔的符号。这里我们用 00 加以区分

所有,AAAAAABBCDDEEEEEF 这个文本就变成了 A * 6次 + B * 2次 + C * 1次 + D * 2次 + E * 5次 + F * 1次 +字符间隔 * 16 = 4位 * 6次 + 8位 * 2次 + 9位 * 1次 + 6位 * 2次 + 1位 * 5次 + 8位 * 1次 + 2位 * 16次 = 106位 = 14字节

所以使用莫尔斯电码的压缩比为 14 / 17 = 82% ,效率并不太突出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_17619.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring源码分析(三)Bean生命周期源码解析1:扫描生成BeanDefinition

Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,如果先分析Spring启动过程的源码,会比较难理解,因为你可能不知道为什么要做这些准备动作,所以我们…

Shiro知识总结二

3. 与 Spring Boot 整合 3.1 框架整合 依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>o…

java基于springboot+vue+nodejs的高校学生健康档案管理系统 element

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,高校学生健康档案管理系统就是信息时代变革中的产物之一。 在经济快速发展的带…

快速玩转Yolov5目标检测—没有好的显卡也能玩(二)

上篇 快速玩转Yolov5目标检测—没有好的显卡也能玩&#xff08;一&#xff09; 已经将YoloV5在我的笔记本电脑上快速跑起来了&#xff0c;因为电脑显卡一般&#xff0c;所以运行的CPU版本&#xff0c;从推理结果来看&#xff0c;耗时还是蛮高的&#xff0c;如下图&#xff0c;…

03 NLP-神经网络基础常识复习2-计算图(乘法节点,分支节点,Repeat节点,Sum节点,MatMul节点)

下面&#xff0c;我们将研究误差反向传播法。不过在此之前&#xff0c;作为准备工作&#xff0c;我们先来介绍一下计算图的相关内容。计算图是计算过程的图形表示。所示为计算图的一个例子 计算图通过节点和箭头来表示。这里&#xff0c;“”表示加法&#xff0c;变量x和y写在各…

【流放之路闪电打击开荒攻略】

重点1&#xff1a;每次攻击杀1群白怪 重点2&#xff1a;地图区域等级-4《角色等级《地图区域等级2 重点3&#xff1a;非boss战斗不死亡 重点4&#xff1a;对下阶段成长有目标&#xff0c;搜集装备 国际服网址 G&#xff08;green&#xff09;R&#xff08;red&#xff09;B&am…

SSTI基础知识

我们用如下环境进行讲解(flask-jinja2):from flask import Flask from flask import render_template from flask import request from flask import render_template_string app = Flask(__name__) @app.route(/) def index():code = request.args.get(id)template = <h3&…

【Pandas总结】第九节 Pandas_累计与分组 pd.groupby()

文章目录一、数据准备二、累计值计算2.1 df.describe()2.2 常用统计值三、分组 pd.groupby()四、更多的使用方法aggregate(),filter(),transform(),apply()4.1 aggregate()4.2 filter()4.3 transform()4.4 apply()在对较大数据进行分析时&#xff0c;有一项最基本的工作就是&am…

2022-09-18-事务机制与锁

事务机制与锁 事务ACID特性(4大特性):原子性;一致性;隔离性;持久性。事务隔离性(四大隔离级别):读未提交;读已提交;可重复读;串行。脏读:读到了别的事务还没有提交,可能随时会被回滚掉的,有可能不存在的数据,这叫做脏读。 可重复读:我第一次查到的数据,我之后…

【选择】选择排序、堆排序(大根堆【升序】,小根堆【降序】)

简单选择排序 思想&#xff1a;默认0号位&#xff0c;定义为min&#xff0c;再从第二位起&#xff0c;遍历所有&#xff0c;找到一个更小的&#xff0c;把下标赋给min&#xff0c;遍历结束&#xff0c;如果当前i下标的值不是min&#xff0c;则说明min更新&#xff0c;有更小的…

【牛客-算法】 NC48 在旋转过的有序数组中寻找目标值

文章目录&#x1f6a9; 前言1.题目描述2.算法设计思路3.算法实现bug记录&#x1f9ed; 遇到问题&#xff08;可跳过&#xff09;&#x1f33b; 写在前面我最初的通过代码&#xff08;C语言&#xff09;4.运行结果5.小结&#x1f525; 该专栏作为算法题笔记&#xff0c;记录算法…

Bert在fine-tune训练时的技巧:①冻结部分层参数、②weight-decay (L2正则化)、③warmup_proportion、④

作为一个NLPer&#xff0c;bert应该是会经常用到的一个模型了。但bert可调参数很多&#xff0c;一些技巧也很多&#xff0c;比如加上weight-decay, layer初始化、冻结参数、只优化部分层参数等等&#xff0c;方法太多了&#xff0c;每次都会纠结该怎么样去finetune&#xff0c;…

打印数组的所有子集

打印数组的所有子集 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;打印数组的所有子集 CSDN&#xff1a;打印数组的所有子集 无重复值情况 题目描述见: LeetCode 78. Subsets 主要思路 定义递归函数 void p(int[] arr, int i, LinkedList<Integer…

【数据结构与算法】深度理解队列(上)

✨hello&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f68e;&#x1f68e;系列专栏&#xff1a;【数据结构与算法】 &#x1f680;&#x1f680;本篇内容:队列从0到1的学习&#xff01; ⛵⛵作者简介&#xff1a;一名双非本科大三在读的科班Java编程小…

11-二叉树-删除

delete(ElementType e)&#xff1a;删除某个值为 e 的结点。实现方法有多种。 按添加结点的规则&#xff0c;小于根结点的放在左边&#xff0c;大于等于根结点的放在右边。b 小于 c 中任意一个子结点&#xff0c;只能放在 c 中最小的一个结点 e 的左子结点下。 除 e 外&#x…

Git基础操作

拉取代码直接clone,复制远程仓库文件夹 git clone git@gitee.com:chen-LinQiang/my-notes.git 在已有仓库文件夹中拉代码 # 初始化 git init # 关联远程仓库 git remote add origin git@gitee.com:chen-LinQiang/my-notes.git # 切换到本地主分支 git checkout master # 若报错…

SpringBoot员工管理的项目——SpringBoot首页定制的操作和国际编码操作(课时十五)

SpringBoot员工管理的项目——SpringBoot后台数据库的搭建(课时十四)_星辰镜的博客-CSDN博客 上篇文章的的文章路径 读者可以回看 有些内容在这里不在说明 本博文完成的两个功能: 利用 Thymeleaf模板引擎完成员工管理系统的的首页定制 国际化编码格式操作 <!--Thymeleaf 说…

计算机网络——媒体接入控制

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 计算机网络——媒体接入控制 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收藏⭐ 评论&#x1f4c4; 小王…

20、DQL(编写顺序和执行顺序)

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 DQL&#xff08;编写顺序和执行顺序&#xff09; 执行顺序&#xff1a; 1、from&#xff08;from 查什么表是第一&#xff09; 2、where 3、group by 和 having 4、select 5、order by&#xff08;你很与众不同哈&…

Promise 及其基于 Typescript 的实现

Promise 的概念、用法与实现作者&#xff1a; jcLee95 邮箱 &#xff1a;291148484163.com CSDN 主页&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/121506948 相关文章&…