读数据压缩入门笔记02_二进制和熵

news2024/11/24 12:21:59

1. 十进制

1.1. 现代数学建立在十进制计数系统之上

2. 二进制

2.1. 二进制计数系统的工作原理与十进制计数系统一样,唯一的区别是前者的基数为2,而后者的基数为10

2.2. 数据压缩所做的就是尽可能减少表示特定数据集时所需的二进制位数量

2.3. 给定任意一个整数,我们都能将它转换为二进制形式

3. 十六进制

3.1. 用字母A来表示10,用B表示11,以此类推,用F表示15

4. 信息论

4.1. 一个数值所包含的信息内容等于,为了在一个集合中唯一地确定这个数值,需要做出的二选一(是/否)决定的次数

5. 二分查找

5.1. 首先将数组中的数据集分成两半,然后判断要找的数值10比处于中间位置的枢轴值是大还是小

5.2. 如果一个数组包含偶数个元素,那么真正处于中间的元素是不存在的,可以根据喜好冲中间偏左或者偏右选择一个

6. 熵

6.1. 物理学中的解释

6.1.1. 一个热力学量,表示的是一个系统中无法转换为机械功的热能的量,通常被解释为该系统的无序度或随机度

6.2. 信息论中的解释

6.2.1. 对在特定的消息或语言中信息传输速度的一种对数度量

6.3. 表示一个数所需要的最少二进制位数

6.4. 一个数所需要的二进制位数lb(x)=(log(x)/log(2))

6.4.1. 二进制位已经是数据的最小单位,能使用的最小的二进制位数就是1

6.4.2. 必须对这个值向上取整,也就是使用向上取整函数,即ceil(或ceiling)函数

6.5. LOG2(x)=ceil(log(x+1)/log(2))

6.6. 一个集合的熵

6.6.1. H(S)=-∑pi×lb(pi)

6.7. 为了使表示某个数据集所需的二进制位数最少,数据集中的每个符号平均所需的最小二进制位数就是熵

6.8. 以一种倒排序的方式建立在数据流中每个符号出现概率的估算之上的

6.8.1. 一个符号出现得越频繁,它对整个数据集包含的信息内容的贡献就会越少

6.8.2. 很长的时间里没有什么有用的信息,真正有用的信息偶尔才会出现

7. 数据压缩算法的艺术

7.1. 真正试图去突破熵的限定

7.2. 将数据转换成一种熵值更小的、新的表现形式

8. 突破熵

8.1. 按照香农对熵的定义,他只考虑了符号出现的概率,完全没有考虑符号之间的排序

8.1.1. 对真实数据集来说,排序是一项基本的信息,符号之间的关系同样如此

8.2. 通过利用数据集的结构信息将其转换为一种新的表示形式,而这种新表示形式的熵比源信息的熵小

8.2.1. [Q,U,A,R,K] 和[K,R,U,Q,A] 这两个集合有相同的熵

8.2.2. [Q,U,A,R,K] 这个集合表示的是英语中一个有意义的单词

8.3. 增量编码(delta coding)

8.3.1. 如果相邻的值之间高度相关,那么用增量编码的方法可以转换数据,使其熵变得更小

8.3.2. 顺序很重要

8.4. 符号分组

8.4.1. 用单词作为符号,得到的熵值会更小

8.4.2. 如果数据集中存在连续值组合出现多次的情况,就可以利用这种情况来减小熵

8.4.3. 通过最佳符号分组预处理数据,会得到一个较小的熵值

8.5. 排列

8.5.1. 一个排列就是原来的集合打乱顺序后的一个版本

8.5.2. 对数直接进行编码时,共需要24个二进制位,而对下标编码时,只需要18个二进制位,也就是节省了大约25% 的空间

9. 标准的数字长度

9.1. 用最少的二进制位数来表示一个数,在解码相应的二进制字符串时会产生混乱(因为我们并不知道该数对应的LOG2长度),会与硬件的执行性能相冲突,两者不能兼顾

9.2. 折中的方案

9.2.1. 用固定长度的二进制位数来表示大小不同的整数

9.2.2. 最基本的存储单元是一个字节,由8个二进制位组成

9.3. 信息论与实际实现层面的差别

9.3.1. 绝大多数算法使用预先设定好的固定的二进制位长度,而不是通过LOG2函数计算出的二进制位长度

10. 柯尔莫哥洛夫复杂性

10.1. Kolmogorov complexity

10.2. 以数学家安德雷•柯尔莫哥洛夫(Andrey Kolmogorov)的名字命名,以纪念他在1963年发表了这方面的第一篇论文

10.3. 度量的是确定一个对象所需要的计算资源

10.3.1. 为了准确地生成数据,所需要的生成程序的大小

10.4. 任何字符串的柯尔莫哥洛夫复杂性顶多比字符串本身的长度大几个字节(基本上,也就是一个程序输出字符串的每个元素)

10.5. 逻辑综合(logic synthesis)或者程序综合(program synthesis)进行数据压缩的时候,柯尔莫哥洛夫复杂性就开始真正起作用了

10.5.1. 本质上它取的是数据集以及反向生成产生字符串的程序的二进制位流

 

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

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

相关文章

WASender - Whatsapp server and bulk sender

WASender 是一个 whatsapp 营销平台,它使用 Laravel 和 Node Js 构建。WhatsApp 是世界上最受欢迎的消息应用程序之一,拥有超过 20 亿活跃用户。这使其成为企业接触潜在客户并与现有客户群互动的有吸引力的平台。WASender 客户可以创建多个设备来向他的目…

NLP基础知识(语法语义、LDA、N-gram、词嵌入)

文章目录 本节课大纲Hyper-simplified linguisticsTerm spotting handling negation, uncertaintyML to expand termspre-NN ML to identify entities and relationsLatent Dirichlet Allocation (LDA)Statistical Models of Language: Zipfs lawvector space embeddings base…

Office project 2016安装

哈喽,大家好。今天一起学习的是project 2016的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

【WebLogic】WebLogic 14c服务器实例报BEA-001112的排查和解决

一、问题背景 WebLogic 14c配置了 MySQL 数据源(数据库使用的是MySQL的开源版本 - MariaDB),数据源其中一个 Target 为 WebLogic 应用域的一个受管服务器实例 - appServer1,并且为了增强 WebLogic JDBC Pool 里面的数据库连接的可…

NIO之FileChannel解读

目录 基本概述 打开 FileChannel 从 FileChannel 读取数据 向 FileChannel 写数据 关闭 FileChannel FileChannel 的 position 方法 FileChannel 的 size 方法 FileChannel 的 truncate 方法 FileChannel 的 force 方法 FileChannel 的 transferTo 和 transferFro…

华为OD机试真题B卷 Java 实现【寻找峰值】,附详细解题思路

一、题目描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于; 2.假设 nums[-1] n…

齿轮齿条平动模组的制作

1. 运动功能说明 齿轮齿条平动模组的主要运动方式为直流电机带动2个齿轮沿着齿条平行方向前进、后退。 2. 结构说明 本模组主要是由直流电机、齿轮、齿条、光轴、滑块、机架等组成。 3. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考&#xff1…

Fiddler抓不到包Fiddler chrome Edge无法抓包原因排查Fiddler死活抓不了包

一、问题描述 我这电脑上的Fiddler莫名其妙的死活就是无法抓包,换了几个版本的Fiddler都没有解决,这里参考了一些网上的教程,最终解决了,该文章算是比较详细的一篇介绍Fiddler无法抓包的教程。无法抓包主要由以下原因导致的&#…

1726_使用Python从dbc文件中提取simulink建模数据定义

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 使用dbc文件建模完成CAN通讯是一种比较高效的开发模式,不过在建模的过程中dbc文件中描述的数据需要自己去定义。使用文本编辑工具打开dbc文件可以看到&#xff0c…

中国生物科技公司【Advanced Biomed】申请纳斯达克IPO上市

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于台湾台南的生物科技公司【Advanced Biomed】近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为(AD…

git的本地分支如何关联远程分支,比如github,gitlab,码云等

文章目录 1. 文章引言2. 本地分支如何关联远程分支2.1 远程有分支2.2 远程无分支 3. 总结 1. 文章引言 今天发布某版本的项目,准备创建个v0point1分支,后期如果修改该版本,直接在该分支上修改即可。 首先,使用git branch v0point…

SeaFormer实战:使用SeaFormer实现图像分类任务(一)

文章目录 摘要安装包安装timm安装mmcv安装 grad-cam 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文翻译:https://blog.csdn.net/m0_47867638/article/details/130437649?spm1001.2014.3001.5501 官方源码:https://github.com/fu…

Vue2 创建 Vite 项目,新手教学

关于vite Vite是一种快速的现代化构建工具,可以显著提高Web应用程序的开发效率和性能。 以下是一些Vite的好处: 快速的冷启动:Vite使用原生ES模块解析器,在冷启动时会非常快速,不需要像Webpack一样构建整个应用程序。…

Linux输入输出重定向

目录 Linux输入输出重定向 Linux中的默认设备 输入输出重定向定义 输入输出重定向操作符 实用形式 标准输入、标准输出、标准错误 输出重定向案例 案例1 --- 输出重定向(覆盖) 案例2 --- 输出重定向(追加) 案例3 --- 错误…

chatgpt赋能python:Python中向上取整函数详解

Python中向上取整函数详解 对于Python中的向上取整运算,大家一定不会感到陌生。在FPython中,我们通常使用math.ceil()函数来对数值进行向上取整。本文将为大家详细介绍Python中的向上取整函数,以及如何在实践中应用。 什么是向上取整&#…

被黑客攻击了?无所谓,我会拔网线。。。

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 最近老是有粉丝问我,被黑客攻击了,一定要拔网线吗?还有…

C/S客户端核服务端-简单收发

一、程序 首先上程序 client端的程序 #include <arpa/inet.h> #include <netinet/in.h> #include <netinet/ip.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <sys/socket.h> #include <sys/type…

keep-alive 是 Vue 内置的一个组件,被用来缓存组件实例。

文章目录 简介注意点使用 keep-alive 有以下优缺点优点缺点 简介 keep-alive 是 Vue 内置的一个组件&#xff0c;被用来缓存组件实例。 使用 keep-alive 包裹动态组件时&#xff0c;被包裹的组件实例将会被缓存起来&#xff0c;而不会被销毁&#xff0c;直到 keep-alive 组件…

LSM零知识学习一、概念与框架机制

本文内容参考&#xff1a; LSM(Linux Security Modules)框架原理解析_lsm框架_pwl999的博客-CSDN博客 LSM相关知识及理解-布布扣-bubuko.com 一文了解Linux安全模块&#xff08;LSM&#xff09; - 嵌入式技术 - 电子发烧友网 在此特别致谢&#xff01; 一、什么是LSM LSM全…

HiFB 与Linux Framebuffer的对比

引言 HiFB和Linux Framebuffer是两种不同的图形缓冲区技术&#xff0c;它们在处理计算机图形显示方面有着重要的作用。以下是对这两种技术的简短定义&#xff1a; HiFB&#xff08;High-performance Intelligent FrameBuffer&#xff09;&#xff1a;HiFB是华为推出的一种高性…