UA MATH636 信息论8 纠错码简介

  • Hamming Distance
  • Property of Error Correction

这一讲开始介绍纠错码,error correction codes,大概是从forward error correction codes (FECC)。先介绍block code的记号[n,k,d][n,k,d][n,k,d],其中nnn表示code length,kkk代表dimension of code,ddd是minimal distance of code。
有点抽象,举一个例子来说明:
假设信号大小是kkk bits,经过信道编码之后变成nnn bits的码(编码率为k/nk/nk/n),放入噪声信道传输到接收端,接收端收到的nnn bits的码可能有错误的。假设通过信道发送的码是xxx,接收端接收到的码是yyy,xxx和yyy的差别可以用它们的距离量化地表示,ddd就表示这个距离的最小值。

Hamming Distance

为了定义ddd先定义Hamming Distance的概念:
假设xxx,yyy是噪声信道输入和输出的nnn bits的码,则
d(x,y)=sum(x⊕y)d(x,y) = sum(x \oplus y)d(x,y)=sum(x⊕y)
其中⊕\oplus⊕表示异或运算,比如n=5n=5n=5,x=[11100]x=[1\ 1\ 1\ 0\ 0]x=[1 1 1 0 0],y=[10000]y=[1\ 0\ 0\ 0\ 0]y=[1 0 0 0 0],则x⊕y=[01100]x \oplus y = [0\ 1\ 1\ 0\ 0 ]x⊕y=[0 1 1 0 0],sum(x⊕y)=2sum(x\oplus y)=2sum(x⊕y)=2

再定义下Hamming Weight,假设eee是一个向量,则
w(e)=sum(e≠0)w(e) = sum(e\ne 0)w(e)=sum(e​=0)
其中≠\ne​=就是对eee的每个元素做的比较运算,e≠0e \ne 0e​=0的结果是0-1向量,因此w(e)w(e)w(e)就是eee中非零元素的数目,显然
d(x,y)=w(x−y)d(x,y)=w(x-y)d(x,y)=w(x−y)
这两个概念类似范数与距离,Hamming distance也具有距离的性质:

  1. d(x,y)≥0d(x,y) \ge 0d(x,y)≥0
  2. d(x,y)=d(y,x)d(x,y) = d(y,x)d(x,y)=d(y,x)
  3. d(x,y)+d(y,z)≥d(x,z)d(x,y)+d(y,z) \ge d(x,z)d(x,y)+d(y,z)≥d(x,z)

考虑binary code,一个重要的问题是,在知道nnn和kkk的情况下,如何计算ddd?

例1 (Repetition Code)
Repetition code可以记为[n,1,n][n,1,n][n,1,n],比如信号000会被信道编码为0000⋯000 000\cdots 000000⋯00(nnn个),因此Hamming distance为nnn。

更一般的情况,nnn bits的信息最多可能有2n2^n2n种,kkk bits的信息最多可能有2k2^k2k种(记它们的集合为C\mathcal{C}C),我们需要对他们进行两两比较计算Hamming distance,然后找出最小的那一个就是ddd。

Property of Error Correction

给定一个[n,k,d][n,k,d][n,k,d],有下面三个结论:

  1. 最多能够做[d−12][\frac{d-1}{2}][2d−1​]个error correction,[][\ ][ ]是高斯函数,表示不超过括号内的数的最大整数
  2. 最多能够做d−1d-1d−1个error detection
  3. 最多能够做d−1d-1d−1个erasure correction

证明
先考虑性质1,定义最邻近解码器 (Nearest Neighbor Decoder),记为D(y)D(y)D(y),其机制是在2k2^k2k个码中找与yyy距离最小的码。重述一下性质1,假设error的数目不超过d−12\frac{d-1}{2}2d−1​个,则NN Decoder可以把他们全部改正过来。假设ccc是正确的码,则
d(y,c)=w(y−c)≤d−12d(y,c) = w(y-c) \le \frac{d-1}{2}d(y,c)=w(y−c)≤2d−1​
用反证法,假设D(y)=c′≠cD(y) = c' \ne cD(y)=c′​=c,根据最邻近的含义
d(y,c′)≤d(y,c)d(y,c') \le d(y,c)d(y,c′)≤d(y,c)
根据Hamming distance的三角不等式以及ddd的含义
d≤d(c,c′)≤d(y,c)+d(y,c′)≤2d(y,c)≤d−1d \le d(c,c') \le d(y,c) + d(y,c') \le 2d(y,c) \le d-1d≤d(c,c′)≤d(y,c)+d(y,c′)≤2d(y,c)≤d−1
显然这是矛盾的。

现在考虑这个性质的几何解释,假设yyy在以c′c'c′为圆心,τ\tauτ为半径的圆中,ccc是另一个半径为τ\tauτ的圆,则d(c,c′)≥dd(c,c') \ge dd(c,c′)≥d意味着两个圆的圆心距离大于ddd。因为D(y)=c′D(y)=c'D(y)=c′,这意味着两个圆不会相交,那么d(c,c′)≥2τd(c,c') \ge 2 \taud(c,c′)≥2τ,最小的超过2τ2 \tau2τ的可能的取值为2τ+12\tau + 12τ+1,只要控制
d≤2τ+1d \le 2 \tau + 1d≤2τ+1
就可以让yyy被准确修正。因此τ≤[d−12]\tau \le [\frac{d-1}{2}]τ≤[2d−1​]。

对于性质2。
考虑解码器:D(y)=yIC(y)D(y)=yI_{ \mathcal{C}}(y)D(y)=yIC​(y),如果D(y)=0D(y)=0D(y)=0,认为yyy是错误的码,则最多可以侦测到d−1d-1d−1个错误。一个更一般的结论是,如果要侦测σ\sigmaσ处错误,并改正另外τ\tauτ处错误,则2τ+σ≤d−12 \tau + \sigma \le d-12τ+σ≤d−1

对于性质3。
考虑erasure correction,比如发送的码是11011,但收到的码是11??1,则第三位和第四位就被erased了。定义δ\deltaδ是被擦除掉的bit数目,上面这个例子δ=2\delta=2δ=2。考虑解码器D(y)=cD(y)=cD(y)=c,其中c∈Cc \in \mathcal{C}c∈C是唯一一个与yyy没有被擦除的符号匹配的,不存在就认为是一个error。如果δ≤d−1\delta \le d-1δ≤d−1,则解码之后不会有error:
d≤d(c,c′)=d(cδ,c′δ)≤δ≤d−1d \le d(c,c') = d(c^{\delta},c'^{\delta}) \le \delta \le d-1d≤d(c,c′)=d(cδ,c′δ)≤δ≤d−1
显然也是能得出矛盾的。

UA MATH636 信息论8 纠错码简介相关推荐

  1. UA MATH636 信息论9 有限域简介

    UA MATH636 信息论9 有限域简介 域.有限域 有限域上的多项式的四则运算 有限域是研究Reed-Solomon code (RS code)的基础,RS code是一种非常常用的error- ...

  2. UA MATH636 信息论7 高斯信道简介

    UA MATH636 信息论7 高斯信道简介 微分熵的性质 Gaussian Channel简介 微分熵的性质 讨论Gauss信道之前,先给出几条微分熵的有用的性质: Gibbs不等式:D(p∣∣q) ...

  3. UA MATH636 信息论5 信道编码简介

    UA MATH636 信息论5 信道编码简介 通讯的过程可以用下面这个流程图表示.信源发送一个随机信号WWW给信源编码器,编码器将信号WWW编码为XXX后发送到噪声信道进行传输,传输到接收端的解码器, ...

  4. UA MATH636 信息论8 线性纠错码的解码算法

    UA MATH636 信息论8 线性纠错码的解码算法 standard array decoding syndrome decoding 考虑BSC,上一讲提到了ML decoder与MAP deco ...

  5. UA MATH636 信息论8 线性纠错码

    UA MATH636 信息论8 线性纠错码 线性码的性质 Decode Linear Code 更细致地定义下记号,记 kkk bits信号为向量 m=[m0,⋯,mk−1]m=[m_0,\cdots ...

  6. UA MATH636 信息论7 并行高斯信道简介

    UA MATH636 信息论7 并行高斯信道简介 考虑并行的高斯信道:将一个长信号分为kkk段,走一个并行的高斯信道,被接受后再把信号拼起来.每一个高斯信道的输入为Xi,i=1,⋯,kX_i,i=1, ...

  7. UA MATH636 信息论5 信道编码定理

    UA MATH636 信息论5 信道编码定理 信道编码问题 信道容量的正式定义 信道编码定理 Joint Typical Set Joint AEP 上一篇简介里面介绍了通讯的过程,并用下面的流程图来 ...

  8. UA MATH636 信息论9 Berlekamp-Welch算法

    UA MATH636 信息论9 Berlekamp-Welch算法 Naive RS decoder Berlekamp-Welch算法 一个例子 上一讲介绍了RS code,这一讲介绍RS code ...

  9. UA MATH636 信息论9 Reed-Solomon Code

    UA MATH636 信息论9 Reed-Solomon Code Reed-Solomon Code的构造 一个例子 先介绍一类code,maximum distance separable cod ...

最新文章

  1. 干货 | 《利用Python进行数据分析》资料开源下载
  2. python绘制中国加油_软件开发|使用 Python 为你的油箱加油
  3. build muduo网络库undefined reference to问题
  4. linux sftp自动输入密码,使用autoexpect避免sftp输入密码
  5. Java Object.hashCode()方法
  6. 今晚8点直播丨经典知识库:数据库对象命名设计规范手册
  7. spring-cloud Sleuth
  8. Android框架之AsyncHttpClient
  9. MySQL(3)-----DML数据库操作(上)
  10. VS2010使用c++、gSOAP创建WebService 图文教程
  11. linux 升级内核和设置默认启动内核
  12. python12306抢票_Python3.6实现12306火车票自动抢票,并短信和邮件通知
  13. html中siblings方法,jQuery siblings()方法的用法
  14. Java基础-进程与线程
  15. 蝴蝶效应(Butterfly effect)[FROM 百度ZD]
  16. mysql b树_为什么 MongoDB 索引选择B树,而 Mysql 选择B+树(精干总结)
  17. wifi动不动就断开_WIFI经常自动断网,大多数是因为此原因
  18. 学校开展计算机教学的简报,教学工作简报(2019年第5期)
  19. PSPICE理想恒功率负载(CPL)建立方法
  20. Linux常用指令(详解)

热门文章

  1. 夏意秋尽-08年1月
  2. 利用iptables来配置linux禁止所有端口登陆和开放指定端口
  3. 关闭Windows不必要服务,电脑更安全
  4. OpenGL编译错误的解决
  5. 企业千人千面管理模式_零售企业该如何打造“千人千面”的差异化营销?
  6. java 向上取整_java 中的异常处理和常用类使用
  7. 教你创建高大上的多边形字体
  8. Windows 技术篇 - 远程桌面连接不保存密码、每次都要输入密码问题解决
  9. windows 技巧篇-查看文件夹被那个进程占用,文件夹占用解除方法
  10. windows 技术篇 - 启动项里没有的程序设置为开机启动方法