【信息论安全】:信源编码定理

一. 介绍

在点对点的通信中,信源编码定理(source coding theorem)满足可达性和可逆性。当信道是无噪声时,那么Y=X,这时就不需要信道编码。但是,信源编码依旧是有效的,可以提高数据传输效率,信源编码的单位通常是bits/source symbol。

信源编码其实跟我们通常所说的数据压缩(data compression)很类似。信源整个可能序列记为U^k,根据典型集理论,只有部分序列是有效的。讲这些有效的序列编号从1~|A|,由此可得:

i\in[1,|A|]

信源编码端:

当从有效序列u^k\in A中抽取信源符号时,信源编码则输出对应的下标。

否则,输出一个固定的常数。

译码端:

当收到一个下标i时,则输出集合A中对应的序列。

二. 信源编码定理

信息论比较关注可靠传输的界限,接下来我们将从理论上证明存在对应的信源编码方案。

2.1 统计堆理论

信源编码会用到一个有意思的理论,叫做统计堆理论(binning)。输入一个序列u^n\in U^n,我们将其随机放到一个搁架里面,在同一个搁架里面的物体下标均一致。如果以上过程是按照均匀且随机的形式进行分配的,那么该过程称之为random binning。

借助选择引理(selection lemma),当以上分配过程的平均错误率接近于0时,也就可以说明信源编码的错误率趋近于0.

2.2 信源编码与压缩率

将一个离散无记忆的信源记作:

(U,P_U)

其中P代表概率分布。信息与通信理论告诉我们压缩后的长度不能太短,其界限跟U的香农熵是一样的,也就是可达的压缩率为:

换句话说可达的压缩率需要满足:

R\geq H(U)

解释:

根据随机统计堆理论(random binning),当把信源序列随机映射到有限数量的搁架里面时,只要搁架的数量大于:

2^{(kH(U))}

则可以保证每个搁架里面只会存在一个序列,不会有重复的情况出现,也就是发生这种情况的概率很小,则可以保证译码不会出错。

三. 信源编码方案设计

\epsilon>0且是一个很小的数,k\in N^*是一个正整数,R>0为压缩率。将信源编码方案C_k记作:

(2^{kR},k)

2.1 统计堆

从信源中选取典型集:

u^k\in T_\epsilon^k(U)

我们将典型集中的一个序列随机放入一个搁架中,搁架的编号(index)为:

[1.2^{kR}]

此过程可以看成如下函数:

e:U^k\to [1,2^{kR}]

此映射规则全局公开。

2.2 编码过程

给定一个序列u^k时,当序列属于典型集,也就是:

u^k\in T_\epsilon^k(U)

则利用映射函数生成m,如下:

m=e(u^k)

如果非典型集序列,则可以直接输出m=1

2.3 译码过程

给定一个消息m,译码为\hat u^k,其满足两个条件:

\hat u^k\in T_\epsilon^k(U)\quad e(\hat u^k)=m

第一个条件要求属于典型集。第二个条件要求编码和译码结果一致且唯一。

如果不满足任何一个条件,则输出错误“?”。

四. 理论分析

以上解释的信源编码方案的平均错误概率记为:

E[P_e(C_k)]

将发生译码错误的事件分成两种情况可得:

第一个事件代表编码前的序列不属于典型集。

第二个事件代表译码后的序列不在有效的集合中。

由此平均错误概率可以表示为:

E[P_e(C_k)]=P[\epsilon_0\cup \epsilon_1 ]

根据并集定理(union bound)可得:

先来分析下第一个事件。

根据信息论中的渐近等分性(AEP),第一个非典型集的概率很小,如下:

接着分析下第二个事件。

我们主要考虑错误概率的上界,如下:

第一个等号:将该事件表示为求和

第一个不等号:关注两个不同的序列编码后是相同的值概率,也就是位于同一个搁架里面

第二个等号:每个架子的概率

第二个不等号:求和的情况与典型集的大小一样

第三个不等号:典型集的定义

最后一个不等号:P总概率求和为1

根据以上讨论,我们需要让压缩率满足:

R>U(U)+\delta(\epsilon)

这样就可以保证:

最后可得统计堆理论的平均错误概率满足:

E[P_e(C_k)]\leq \delta_\epsilon(k)

根据选择引理,理论上一定可以找到一种编码方案,使其满足:

P_e(C_k)\leq \delta_\epsilon(k)

其中\epsilon是一个很小的数,也就是压缩率需要满足:

R>H(U)

反过来可逆性也是一样的。推导如下:

对熵进行讨论:

五. 小结

(1)子带编码

将连续信源产生的输出用多个带通滤波器进行滤波,只要这些滤波器是按照镜像滤波器成对设计的,这些滤波器的输出相加就可以无失真恢复原信号。信号进入带通滤波后再分别进行编码,各个子带的频谱特性相对平坦一些,样点之间的相关性减小,加之不同子带在进行编码时可以根据它的重要性分配不同的比特数,因此可以压缩编码数据。

(2)基于信源模型假定的编码方法

如果信源特性可以采用某种数学模型描述,那么基于这个模型进行压缩编码,可以获得更高的编码效率。

例如:语音信号可以用语音产生的声道模型进行描述,因而只要对估计出的声道模型参数和激励信号进行编码,接收端就可以重新合成出与原信号感觉上相类似的信号,这就是声码器技术。由于全极点声道模型抓住了语音信号共振峰特性的本质,计算上十分简捷,因此以线性预测为中心的一大类声码器在语音信号压缩编码方面取得了很大成功。包括:LPC 声码器、CELP 声码器、多带激励(MBE)声码器等。

基于声码器技术,压缩语音编码数据率的效率是非常高的,例如将 64Kbps 的 PCM 语音信号压缩到 8Kbps左右时,恢复语音的音质还可以是透明的;压缩到600bps时,恢复语音的可懂度还能接近100%。

(3)变换域编码

将连续信源产生的输出采用某种正交变换进行变换,变换域中各个信号分量的相关性大大减小,于是可以根据各个分量的重要性进行量化编码,可以大幅度减小比特率。常用的正交变换有离散傅立业变换、离散余弦变换、小波变换等。这些变换都是可逆的,接收端采用逆变换对于在变换域量化编码的结果进行逆变换,就可近似恢复原信号。这些编码算法在图像压缩编码,网络安全设计等方面取得了很大的成功。

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

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

相关文章

iOS swift UISlider改变进度条的高度和圆形滑块的大小

文章目录 1.改变进度条的高度(亲测有效)2.改变圆形滑块的大小(亲测有效) 1.改变进度条的高度(亲测有效) import UIKitclass CustomSlider: UISlider {// 设置轨道高度var trackHeight: CGFloat 10// 重写…

Navicat 16 for MySQL:打造高效数据库开发管理工具

随着数据的快速增长和复杂性的提升,数据库成为了现代应用开发中不可或缺的一部分。而在MySQL数据库领域,Navicat 16 for MySQL作为一款强大的数据库开发管理工具,正受到越来越多开发者的青睐。 Navicat 16 for MySQL拥有丰富的功能和直观的界…

Jenkins-Maven Git

整合Maven 安装GIT #更新yum sudo yum update #安装git yum install git 安装Maven插件,在插件管理中心: 配置仓库 配置密码认证 我们可以在这个目录下看到Jenkins 帮我们拉取了代码 /env/liyong/data/docker/jenkins_mount/workspace/maven-job 配置maven打包…

[数据结构与算法]数据结构基础、排序算法详解、算法思想详解、领域算法详解------

# 数据结构基础 学习思路 避免孤立的学习知识点,要关联学习。比如实际应用当中,我们经常使用的是查找和排序操作,这在我们的各种管理系统、数据库系统、操作系统等当中,十分常用,我们通过这个线索将知识点串联起来&am…

go-zero

官网地址 go-zero初探 常见问题及常用命令 1、配置go的镜像,存在的可以不用进行配置,用官方的镜像下载太慢或下载不下来 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 2、自动生成api后需要运行一下go mod tidy。用来加载…

启英泰伦推出「离线自然说」,离线语音交互随意说,不需记忆词条

离线语音识别是指不需要依赖网络,在本地设备实现语音识别的过程,通常以端侧AI语音芯片作为载体来进行数据的采集、计算和决策。但是语音芯片的存储空间有限,通过传统的语音算法技术,最多也只能存储数百条词条,导致用户…

python 入门基础 Introduction to Python Fundamentals

文章目录 注释单行注释多行注释 pass字符串格式化format%f-string(py3.6之后可用) 数据结构intstrboolfloat列表(list)字典(dict)集合枚举迭代器其他元组(tuple) 数值运算流程控制文件操作函数面向对象类方法继承与多态 对象复制上下文管理 异常模块包属性异步网络 注释 单行注…

Elasticsearch 索引文档时create、index、update的区别【学习记录】

本文基于elasticsearch7.3.0版本。 一、思维导图 elasticsearch中create、index、update都可以实现插入功能,但是实现原理并不相同。 二、验证index和create 由上面思维导图可以清晰的看出create、index的大致区别,下面我们来验证下思维导图中的场景&…

照片删除了怎么恢复回来

照片,对我们来说,这两个字眼再熟悉不过了,每一张照片都包含无比重要的意义,相信在大家的心目中,这些包含意义的照片都是无价的。怎样找回删除的照片? 既然这些照片对我们来说意义非凡,那如果不小…

通过 C++/WinRT 实现高级并发和异步

将工作卸载到 Windows 线程池 协同例程与任何其他函数的类似之处在于,调用方将会阻塞到某个函数向其返回了执行为止。 另外,协同例程返回的第一个机会是第一个 co_await、co_return 或 co_yield。 因此,在协同例程中执行受计算限制的工作之…

使用Guava Retrying优雅的实现业务异常重试

上次写过一篇如何使用spring retry来实现业务重试的文章:https://blog.csdn.net/Kingsea442/article/details/135341747 尽管 Spring Retry 工具能够优雅地实现重试,但它仍然存在两个不太友好的设计: 重试实体被限定为 Throwable 子类&#…

c++多久会被Python或者新语言取代?

c多久会被Python或者新语言取代? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&am…

方法重写。

altinsert 静态方法和非静态方法不一样 重写只与非静态方法有关 重载是指在一个类中定义多个同名的方法或者函数,但是这些方法或者函数的参数列表不同,即参数的类型、个数或者顺序不同。当调用这个同名方法或者函数时,编译器会根据实际传入的…

Elasticsearch的基本功能和使用

Elasticsearch ,简称为 ES,是一款非常强大的开源的高扩展的分布式全文 检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的 存储、检索数据.还可以可以实现日志统计、分析、系统监控等功能. 官网:https://www.elastic.c…

QT+jenkins window环境实现一键自动化构建打包签名发布

jenkins + QT 自动化构建打包 1.官网下载地址: Jenkins download and deployment,下载最新版本的安装包并安装。安装过程中,会要求你输入端口号并记住。 2.java下载地址:Java Downloads | Oracle,下载最新版本的安装包并安装。 3.浏览器输入网址:127.0.0.1: port, port为…

【Docker】镜像的构建与上传下载阿里云

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 &…

C++ Primer 6.4 函数重载 知识点+练习题

C Primer 6.4 函数重载 定义重载函数重载和const形参const_cast和重载重载与作用域练习题 定义重载函数 void lookup(int a); void lookup(double b); void lookup(int a,double b); 此三个函数构成函数重载,具体调用时根据传入实参进行匹配void lookup(int a); bo…

【iOS】UIColor、CGColor、CIColor的区别和联系

编者在实验室小组的指导下,仿写了许多App,其中UI的颜色模仿也是令人头痛的点。设计颜色一般使用UIColor类方法直接获取颜色: 有时会使用 (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alph…

C++中什么时候应该使用结构体,什么时候应该使用类

第一点: 在C中,结构体和类都可以用来定义自定义数据类型, 它们之间的主要区别在于默认的访问控制和成员变量的默认初始化方式。 结构体: - 结构体的成员变量默认为public访问权限。 - 结构体的成员变量默认为公共可见的&#x…

代码随想录算法训练营day8|344.反转字符串、541.反转字符串II、54.替换数字、151.翻转字符串里的单词、55.右旋转字符串

344.反转字符串 541. 反转字符串II 卡码网:54.替换数字 151.翻转字符串里的单词 卡码网:55.右旋转字符串 344.反转字符串 建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用…