计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)

Error Detection and Correction

  • Noisy Text
  • Natural Language and Artificial Language
  • Repetition code
    • information rate
  • Parity code
    • modulo 2 algebra
    • Hamming distance
    • Hamming code
  • Polynomial code
    • burst error
    • CRC (Cyclic redundancy check 循环冗余校验)

Noisy Text

全是错的那种东西

Natural Language and Artificial Language

  • Natural language
    existence of redundancy enables correction of errors 冗余可以用来纠错
    比如说我们读一个句子,少了一个字母的情况下也能读对。
  • Artificial language
    designed without redundancy. error correcting capability is missing

Repetition code

repeating each symbol n times
我们假设一个一百个符号里只能容忍一个错误的信道。
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第1张图片

可以纠错,大多数投票就可以。只能纠1个错。
显然这个比特错误的概率超出了我们的容忍。
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第2张图片
符合我们的要求。注意二项式算法。

information rate

  • (n, k) 码
    k is information bits carry information;
    n is to be sent

    R(Z) = k/n is called information rate

  • Typically a code with information rate near 0 is not very efficient, but it often provides good noise protection.
    (e.g.) the repetition code has the information rate 1/n
    (e.g.) the parity code has the information rate (n-1)/n

Parity code

modulo 2 algebra

模2相加。

  • 如果发送v,收到w, error pattern e为1, 其他情况e为0,这样可以有w=v+e
  • repetition code (An):
    x1=x2; x1=x3; …; x1=xn
    x1+x2=0; x1+x3=0…
  • even-parity code
    x1+x2+…+xn=0

Hamming distance

  • The Hamming distance of two codewords is the number of corresponding对应的 bits that differ between these two codewords 对应比特不同的个数
  • The Hamming distance of a code is the minimum of the Hamming distance between all possible pairs of codewords of that code
    – To detect d-bit errors, a code must have a minimum Hamming distance of at least
    d + 1 检测x比特需要x+1的汉明距离
    – To correct d-bit errors, a code must have a minimum Hamming distance of at least 2d + 1 纠错x比特需要2x+1的汉明距离

Hamming code

假如是一个(7,4)码,最小汉明距离是3(原来的码和现在的码最少差3个) d=3,可以纠错1位,检错2位
– 这个地方不太懂,为什么要7位码要用3位?是由7得出3的还是由4得出3的。有待之后coding部分的学习,发现了后本人会来修正。

编码
汉明码的编码方式也比较特别的。

  1. 首先将前面信息位都写出来,我们的最终的码的构成其实就是4+3的形式。每个码的数位我们都依次按照1(1),2(10),3(11),4(100),5(101),6(110),7(111)来标注好。还有写出他们的二级制数。
  2. 汉明码的校验位是二次方幂的那个位数。比如1(1),2(10),4(100),8,16等等。
  3. 校验位按照二进制表达后,1所代表的那个校验位,校验的是所有倒数第一位是1的位数,也就是v1, v3, v5,v7。然后使用偶校验,也就是v1,v3,v5,v7中1的个数为偶,使用模2来表达的话就是v1+v3+v5+v7=0。v7=v1+v3+v5
  4. 第二个校验位就是v2,也就是10,倒数第二个为1的位数,v2, v3, v6, v7,同上
  5. 第三个校验位是v4,100。倒数第三个为1的位数。同上计算。
    计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第3张图片
    计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第4张图片

解码
d=3, 纠错1位检错2位
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第5张图片

  • 注意这个例题里的s1,s2和s3的顺序和自己按照上面的方法想的顺序是相反的。这也就验证了另一个博客里所说的为什么是从大到小排列。只需要在写题的时候尽量注意即可。
  • 知道了一位是错误的时候,因为是二进制,所以可以直接改过来
  • 两个错误的时候的纠错也是错误的。所以忽略。

Polynomial code

burst error

Bit errors:

  • random single-bit errors =⇒ parity code.
  • burst of multiple-bit errors =⇒ polynomial code.

计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第6张图片

CRC (Cyclic redundancy check 循环冗余校验)

计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第7张图片

  • 发送端基本思想就是发送端和接收端共同使用一个generator,然后发送的消息假如有4位,校验码4位。比如1001是发送的信息位。补齐后面三位变成10010000,然后除以那个generator生成的多项式所代表的二进制代码。比如1011。然后把10010000除以1011之后的余数111(这一步需要用到多项式的模除法)附属在原信息位1001的后面。这个时候码就变成了1001111。也就是传送的码
  • 接收端的时候,只需要用这个传送的码,减去余数,然后除以那个generator的多项式,如果传输没有错误的话就应该是0。
  • 在写的时候,M(x)是原信息位补齐的码也就是10010000
  • G(x)是generator生成的那个码
  • R(x)是remainder余数
  • T(x)是添加了R(x)之后的传输的码。T(x)也可以通过模2运算进行,T(x) ≡ M(x) − R(x).
  • 具体的计算过程可以看下面
    计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第8张图片
  • 接受端收到的可以假定为T’,用T’除以G(x),如果余数为0,那么T’=T,没有错误

还有最后一部分没太懂的,有待后续学习:
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第9张图片
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第10张图片
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第11张图片
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第12张图片
计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码)_第13张图片

不管有没有看懂,我认为最后一个G(x)的选择上,x不是因数而 x+1是因数这个必须要记住。

你可能感兴趣的:(计算机网络复习笔记第九部分--误差检测与修正(CRC循环冗余校验码,汉明码))