读数据压缩入门笔记05_字典转换

news2024/10/7 16:27:25

 

1. 瓶颈

1.1. 在网络带宽有限、存储昂贵的时期

1.2. 移动设备正日益成为人们访问互联网的首选的今天

1.3. 数据压缩成了缓解这些瓶颈的关键

2. 字典转换

2.1. dictionary transforms

2.2. 完全改变了人们对数据压缩的认知

2.2.1. 压缩变成了一种对各种类型的数据都有用的算法

2.3. 事实上今天所有的主流压缩算法(比如GZIP或者7-Zip)都会在核心转换步骤中使用字典转换

3. 基本字典转换

3.1. 统计压缩主要关注数据流中单个符号的出现概率

3.2. 这一概率与其周围可能出现的符号无关

3.3. 符号字典

3.4. 任何出现可以重复使用的相似内容分组的地方,都会有“短语”存在

3.5. 步骤

3.5.1. 给定源数据流

3.5.2. 构建出单词字典(而不是符号字典)

3.5.3. 再将统计压缩应用到字典中的单词上

3.6. 字典转换并非是要去替代统计编码

3.6.1. 只是你先应用到数据流上的一个转换,这样统计编码算法就能更有效地对其编码

3.7. 实际是一个数据流的预处理阶段

3.7.1. 生成的数据集会更小,比源数据流压缩率更高

3.8. 当能识别出那些经常重复使用的长字符串,并为它们分配最短的码字时,字典转换的效率最高

4. 分词

4.1. tokenization

4.2. 是信息论领域的一个研究分支

4.3. 一种暴力方法是读取一组符号并搜索字符串的剩余部分来确定该组符号的出现频次

4.3.1. 对所有真实的数据流而言,这样做不仅需要大量的内存,同时还需要花费很长的时间

4.4. 为了找到数据流的理想分词,我们需要有某种方法来处理现有的和那些还没有遇到的符号,并能以一种高效的方式将两者合并为尽可能长的符号集

5. LZ算法

5.1. 1977年,Abraham Lempel和Jacob Ziv提出

5.1.1. Jacob Ziv大学毕业于以色列理工学院,随后于1961年获得了麻省理工学院信息论专业的博士学位

5.1.2. Abraham Lempel在以色列理工学院获得了学士、硕士和博士学位

5.1.3. 1997年获得了IEEE信息理论学会的香农奖

5.2. LZ77 和LZ78

5.2.1. 找出最佳分词方面非常高效,30多年来还没有其他算法可以取代它们

5.3. 衍生算法

5.3.1. 每一种变体都是根据特殊的需要、性能要求的不同或者用例的不同,对LZ77基本算法进行了一些小调整

5.3.1.1. 对数据集越了解,你就越能从中选择出最适合的LZ变换

5.3.2. GIF图像格式中使用的LZW(即Lempel-Ziv-Welch)算法

5.3.2.1. Terry Welch于1984年提出的,它采用了LZ78算法的思想

5.3.2.2. 首个在计算机中广泛采用的通用数据压缩方法

5.3.3. 应用于7-Zip、xz等压缩工具的LZM(即Lempel-Ziv-Markov chain)算法

5.3.4. DEFLATE又应用于PNG图像格式、PKZIP、GZIP等压缩工具及zlib库中

5.3.5. PKZip、ARJ、RAR、ZOO和LHarc使用LZSS算法

5.3.6. 图

 

5.4. 真正吸引人的地方还在于它可以和统计编码结合使用

5.4.1. 将记号中的偏移量、长度值以及字面值分开后,再按照类型合并,组成单独的偏移量集、长度值集和字面值集,然后再对这些数据集进行统计压缩

6. LZ算法的工作原理

6.1. 通过在读取的字符串中寻找当前单词的匹配来分词

6.2. 与读取一组符号然后向后查找它是否重复出现不同

6.2.1. LZ算法向前查找当前单词是否出现过

6.3. 在数据流的前半部分,由于我们见过的单词很少,因此出现新单词的可能性很大

6.4. 数据流的后半部分,由于已经有了很大的缓冲区,因此出现匹配的可能性更大

6.5. 向前寻找匹配可以让我们找出“最长的匹配词”

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《C和指针》读书笔记(第十一章 动态内存分配)

目录 0 简介1 为什么使用动态内存分配2 malloc和free3 calloc和realloc4 使用动态分配的内存5 常见的动态内存错误6 内存分配实例6.1 排序一列整型值6.2 复制字符串6.3 变体记录的创建与销毁 7 总结 0 简介 在实际开发中(C语言),数组的元素存…

JDK,JRE,JVM有什么区别?跨平台?跨语言?

JDK Java Development Kit(Java开发工具包),提供了Java的开发环境和运行环境。包含Java源文件的编译器Javac,还有调试和分析工具。 JRE Java Runtime Environment(Java运行环境)包含了Java虚拟机&#xff…

WPF开发txt阅读器10:语音播报快进快退

文章目录 MySpeech类快进 文章目录 MySpeech类快进 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定💎前景/背景颜色书籍管理系统💎用树形图管理书籍语音播放💎播放进度显示 MySpeech类 …

MySQL 中有哪些锁?

数据库中锁的设计初衷处理并发问题,作为多用户共享资源,当出现并发访问的时候,数据库需要合理控制资源访问规则。锁就是实现这些访问规则中的重要数据。 锁的分类 根据加锁范围,MySQL 里面的锁可以分成全局锁、表级锁、行锁三类…

计算机视觉算法——BEV Perception算法总结

计算机视觉算法——BEV Perception算法总结 计算机视觉算法——BEV Perception算法总结1. Homograph Based——3D LaneNet2. Depth Based——LSS3. MLP Based——PON4. Transformer Based——BEVFormer5. Transformer Based——Translating Image into Maps 计算机视觉算法——…

急于生成人工智能是有风险的:如何保护数据

每天的业务用户都在尝试使用 ChatGPT 和其他生成式 AI 工具。事实上, Gartner 预测, 到 2025 年,30% 的营销内容将由生成式人工智能创建并由人类增强。 然而,像三星这样的公司已经发现,不了解新技术风险的用户正在成…

linux(线程控制)

目录: 1.线程创建 2.线程等待 3.线程终止 4.线程分离 5.线程ID -------------------------------------------------------------------------------------------------------------------------------- 1.线程创建 pthread_create pthread_t *pthread 是一个输出型…

Nucleo-F411RE (STM32F411)LL库体验 5 - 通用定时器TIM2的使用

Nucleo-F411RE (STM32F411)LL库体验 5 - 通用定时器TIM2的使用 1、简述 设定TIM2,计数周期为10KHZ,即计时1s需要10000次,通过shell命令动态修改reload值,来更改定时器的频率。 假定设定TIM2 counter cloc…

第五章 部署PKI与证书服务

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 PKI(公钥加密基础结构):通…

【C++】list的使用和模拟实现

目录 1.什么是list2.list的一些接口3.list的模拟实现3.1 迭代器3.2 list主体3.2.1 构造函数3.2.2 拷贝构造、赋值重载3.2.3 主体内引入迭代器3.2.4 insert和erase3.2.5 clear和析构函数 3.3 const迭代器的实现3.4 实现迭代器的operator-> 4.总结list迭代器的实现 1.什么是li…

领域驱动应用架构实践

一个合适的应用架构不仅能促使项目朝着好的方向发展,易于维护,也能指导团队成员有效协作。 DDD是站在领域的角度来驱动应用架构的落地,接下来将介绍一种落地方案。 架构分层 首先在架构层次方面,在遵循DDD的分层架构模式的同时&…

STM32单片机(六)TIM定时器 -> 第五节:TIM输入捕获

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

Nucleo-F411RE (STM32F411)LL库体验 4 -Letter Shell移植与调试

Nucleo-F411RE (STM32F411)LL库体验 4 -Letter Shell移植与使用 1、串口的初始化 Nucleo-F411RE自带st-link,并支持虚拟串口的功能,根据原理图,st-link的rx tx接到了Nucleo-F411RE的PA2 PA3,所以我们要初…

以太网MII、RMII、GMII、RGMII(三)

目录 一、MII 二、RMII 三、GMII 四、RGMII 以太网硬件主要包括OSI的最下面两层,物理层和数据链路层,前者的芯片为PHY,后者的芯片为MAC控制器。而MAC与PHY之间的常用的数据传输接口有MII、RMII、GMII、RGMII。 模式 时钟 位宽 速率 M…

pytorch笔记:transformer 源码

来自B站视频,API查阅,TORCH.NN seq2seq 可以是 CNN,RNN,transformer nn.Transformer 关键源码: encoder_layer TransformerEncoderLayer(d_model, nhead, dim_feedforward, dropout,activation, layer_norm_eps, ba…

5.vue3医疗在线问诊项目 - _极速问诊-前置准备 ==> 需求分析、枚举类型、pinia仓库的初始化

5.vue3医疗在线问诊项目 - _极速问诊-前置准备 > 需求分析、枚举类型、pinia仓库的初始化 极速问诊-需求分析{#consult-product} 极速问诊阶段流程分析 线下看病流程: 选择医院(三甲、普通)》挂号》选择科室 》选择医生(专家…

牛客网专项练习——C语言错题集(5)

文章目录 指针的值指针与数组、函数的组合空结构体* 和 的优先级 指针的值 指针的值是一个地址,题目中的字符串 “girl” 应该是 *p 的值,即指针 p 所指地址存储的数据的值。 指针与数组、函数的组合 int *p[n] 等价于 int (*)p[n],是一个…

xinput1_3.dll丢失怎么办?xinput1_3.dll丢失的修复方法

xinput1_3.dll是电脑文件中的dll文件(动态链接库文件)。如果计算机中丢失了某个dll文件,可能会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错。 在我们打开软件或者游戏的时候,电脑提示xinput1_…

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042

STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 Proteus仿真小实验: STM32 Proteus仿真自动刹车系统超声波测距电机控制-0042 功能: 硬件组成:STM32F103C6单片机 LCD1602显示器HCSR04超声波传感器按键(加 减)电机蜂鸣器 1.单片机…

学习Angular的编程之旅

目录 1、简介 2、特点 2.1 横跨多种平台 2.2 速度与性能 2.3 美妙的工具 3、Angular 应用:知识要点 3.1 组件 3.2 模板 3.3 依赖注入 4、与其他框架的对比 1、简介 Angular 是一个应用设计框架与开发平台,旨在创建高效而精致的单页面应用。 A…