全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

37 | 全栈开发中的算法(下)

将静态模型改进为自适应模型
适当考虑条件概率
引入结束字符
采用二进制
实际应用中的考虑因素
基本原理
适用情况
原理
编码表
大致过程
基本原理
推荐阅读的算法文章
哈夫曼树的生成
无损压缩算法的特点
哈夫曼编码中数据损坏导致的解码问题
对比哈夫曼编码和算术编码的优劣
算术编码
RLE 编码
哈夫曼编码
扩展阅读
总结思考
无损压缩算法
全栈开发中的算法
算法

该思维导图由 AI 生成,仅供参考

你好,我是四火。
今天,我们来继续学习一些全栈开发中影响深远的算法,我们这次的归类是无损压缩算法。无损压缩,顾名思义就是经过压缩以后,数据的大小降下来了,但是只要经过还原,原始数据是一点都不丢失的。和无损压缩对应的,显然就叫做“有损压缩”了,它们能够做到在牺牲一定程度原数据质量的基础上,比有损压缩获得额外的压缩比。
无损压缩的算法其实有很多,但无论是哪一种,里面都没有多么神奇的把戏,它们的最基本原理都是一致的,就是利用数据的重复性(冗余性)。在经过某种无损压缩以后,由于数据的重复性已经降下来了,因此再压缩就无法获益了。

哈夫曼编码

不管是在哪一本系统介绍压缩算法的书中,那么多的无损压缩算法,哈夫曼编码(Huffman Coding)基本都是需要我们最先接触学习的那一个。哈夫曼编码从原理上看,它会根据字符的出现频率,来决定使用怎样的编码方式,并且是变长编码的一种。相应地,程序员熟悉的 ASCII 码,就是定长编码,因为总共就 128 个字符,不管是哪一个字符,占用的长度都是一样的。
下面我们来看一下哈夫曼编码的大致过程:
首先,统计被加密数据中每个字符出现的频率,把它们从高到低排好。比如下面这个表,就是某一段文字的字母出现的次数统计表格,你可以看到这些字母出现的次数是从左到右依次增加的:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了无损压缩算法中的两种重要算法:哈夫曼编码和算术编码。哈夫曼编码基于字符频率进行变长编码,适用于高重复性数据;而算术编码则将整个消息串编码成一个数,根据已知统计进行划分。文章生动解释了这两种算法的原理和应用场景,并介绍了算术编码的优化方法。总结指出,实际的压缩算法往往是基础技术的综合使用。读者通过本文可以快速了解无损压缩算法的基础知识和优化方法,为深入学习和应用提供了有益的参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • leslie
    老师今天的课程应当是硬件存储的算法:记得徐文浩老师的《深入浅出计算机组成原理》里面有讲解。今天的课程是完全提及了我们日常会忽略的一个现状:一个程序的好坏其实要从软硬件两方面去考虑,往往我们经常忽略的是硬件层的情况。 压缩很多种:有时存储时我们都会为了空间而适当转换,曾经和徐老师在课程中沟通过-深无底限。就像老师所说:没有最好,只有最合适当下业务场景。
    2019-12-04
    2
  • 第一装甲集群司令克莱斯特
    终于理解了哈夫曼编码!
    2023-01-07归属地:北京
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部