37 | 全栈开发中的算法(下)
四火
该思维导图由 AI 生成,仅供参考
你好,我是四火。
今天,我们来继续学习一些全栈开发中影响深远的算法,我们这次的归类是无损压缩算法。无损压缩,顾名思义就是经过压缩以后,数据的大小降下来了,但是只要经过还原,原始数据是一点都不丢失的。和无损压缩对应的,显然就叫做“有损压缩”了,它们能够做到在牺牲一定程度原数据质量的基础上,比有损压缩获得额外的压缩比。
无损压缩的算法其实有很多,但无论是哪一种,里面都没有多么神奇的把戏,它们的最基本原理都是一致的,就是利用数据的重复性(冗余性)。在经过某种无损压缩以后,由于数据的重复性已经降下来了,因此再压缩就无法获益了。
哈夫曼编码
不管是在哪一本系统介绍压缩算法的书中,那么多的无损压缩算法,哈夫曼编码(Huffman Coding)基本都是需要我们最先接触学习的那一个。哈夫曼编码从原理上看,它会根据字符的出现频率,来决定使用怎样的编码方式,并且是变长编码的一种。相应地,程序员熟悉的 ASCII 码,就是定长编码,因为总共就 128 个字符,不管是哪一个字符,占用的长度都是一样的。
下面我们来看一下哈夫曼编码的大致过程:
首先,统计被加密数据中每个字符出现的频率,把它们从高到低排好。比如下面这个表,就是某一段文字的字母出现的次数统计表格,你可以看到这些字母出现的次数是从左到右依次增加的:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了无损压缩算法中的两种重要算法:哈夫曼编码和算术编码。哈夫曼编码基于字符频率进行变长编码,适用于高重复性数据;而算术编码则将整个消息串编码成一个数,根据已知统计进行划分。文章生动解释了这两种算法的原理和应用场景,并介绍了算术编码的优化方法。总结指出,实际的压缩算法往往是基础技术的综合使用。读者通过本文可以快速了解无损压缩算法的基础知识和优化方法,为深入学习和应用提供了有益的参考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》,新⼈⾸单¥59
《全栈工程师修炼指南》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- leslie老师今天的课程应当是硬件存储的算法:记得徐文浩老师的《深入浅出计算机组成原理》里面有讲解。今天的课程是完全提及了我们日常会忽略的一个现状:一个程序的好坏其实要从软硬件两方面去考虑,往往我们经常忽略的是硬件层的情况。 压缩很多种:有时存储时我们都会为了空间而适当转换,曾经和徐老师在课程中沟通过-深无底限。就像老师所说:没有最好,只有最合适当下业务场景。2019-12-042
- 第一装甲集群司令克莱斯特终于理解了哈夫曼编码!2023-01-07归属地:北京
收起评论