首页
CtrlK

Reed-Solomon原始观点

Reed-Solomon原始观点

原始观点

视频 参考视频

【Reed-Solomon 擦除码 Python 实现:二 (甲) 范德蒙矩阵】 https://www.bilibili.com/video/BV1ue411B75E/?share_source=copy_web&vd_source=04259c9260832797bf08914e26e438d5

范德蒙矩阵

原始观点

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/od86j4j69dk5ej9nwvcpa62i.png)image.png

$y=pm(x)$中,x 预先约定,message 控制多项式 $pm$ 的系数,实际传输的是 y 值。

Encoding: polynomial evaluation, matrix-vector multiplication
Erasure Decoding: solve linear equations

香农生日

Shannon's Birthday date as polynomial coefficients

Message: 6 digits of the date are [d0, d1, d2, ..., d5], let's make a polynomial of degree 5 using those coefficients:$c(x)=d0+d1x+d2x2++d5x5$

Codeword of 9 values: [c(0), c(1), c(2), ... c(8)]

c(0)c(1)c(2)c(3)c(4)c(5)c(6)c(7)c(8)=1=14=93=370=1049=2406=4789=8618=14385

Shannon's Birthday using Vandermonde matrix:

$d=(d0,d1,,d5)T,c=(c0,c1,,c8)T$

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/mgldi77q5tx013s8k5xaiidm.png)image.png

$Vd=c$

假设 c0, c4, c8 丢失,我们用剩下的数据列线性方程组。

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/frxyhe59xf7t9crv79in2kbk.png)image.png

解出 d = [1, 6, 0, 4, 3, 0], 故 Shannon 的生日是 1916-04-30。

困难 不足之处

多项式编码的基本原理是这样,实际上还有一些困难需要克服,才能投入使用

  • 消息长度 k = 多项式次数 + 1,codeword 长度为 n,如何保证任选 k 行始终有解

  • 编码不用大整数 $(n1)k−1$,解码不用浮点数。

  • codeword symbol 的取值范围最好和 message symbol [d0, d1, ...] 一样,都是字节 [0, 255]。这就要用 Finite Field,也叫 Galois Field 迦罗华域。

  • 如何在没有传丢数据的情况下跳过解码步骤

    • systematic code: [c0, c1, ..., c5, c6, c7, c8] = [d0, d1, ... d5, p0, p1, p2]

系统码

目标 保留原信息

如果 d0.. d5 中没有丢失(erasure),那么无需解码。

$$An×k=[IkG]d=[dc]$$Generator matrix $G(nkk$ for parity.$d=[d0,d1,d2,,dk]$$c=[c0,c1,,cnk]$

Gd=cSendcordword[d ∣ c]oflengthnsymbols(bytes).
高斯消元

运用消元法,将范德蒙矩阵进行消元便可得到该矩阵:

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/d0llnksgoqawikuhoxvsmwbt.png)image.png

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/w4j9kd1u36vpfs6n4cqq2rbi.png)image.png

逆运算

或者,通过逆运算

Sysieniatic enciding using inverse of Vandermonde matrix

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/jtb34d6v7tip2y0wepqriad7.png)image.png

列变换

也可通过列变换:

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/a6e5bitrxattp0lxljsy4d65.png)image.png

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/t9awj6ee0awy6wiciv2m2sip.png)image.png

解码

擦除码解码

Systematic encoding

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/aw7cjaf6es2d66s0lw4h4gvk.png)image.png

如果 $d0d5$ 中没有丢失(erosure),那么无需解码。
纠错能力

  • 假如 $d0d5$ 中丢失任何一个,那么只要知道 $c0,c1,c2$ 中的任何一个就能恢复。

  • 假如 $d0d5$ 中丢失任何两个,那么只要知道 $c0,c1,c2$ 中的任何两个就能恢复。

  • 假如 $d0d5$ 中丢失任何三个,那么要知道 $c0,c1,c2$ 才能恢复。
    注意是丢失,不是传错,这是 erasure code 区别于 error correction code 的地方。

单个解码

假设丢失了 $d5$,如何从 $d0...d4$, $c0$ 恢复 $d5$ ?

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/lrrtiyv9prttil776pneuipw.png)image.png

对左边的矩阵求逆

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/zcdk4p8txtcdy4ojcusklkpl.png)image.png

三个解码

假设丢失了 $d2,d3,d5$,如何从 $d0...d4$, $c0,c1,c2$ 恢复原始数据?

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/dgo5ynegale6fo87squc6mtw.png)image.png

如法炮制

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/oavo4gtrfyqpnejw3bu1yoga.png)image.png

要求:$An×k$ 的任意 $k$ 行都是可逆的。

114514

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/e5iwuayelbxwu79itemmf2kq.png)image.png

Send [1, 1, 4, 5, 1, 4, 10, 14, 12]
Got [1, 1, ?, ?, 1, 4, 10, 14]

![image.png](https://cdn.modevol.com/user/ckxe4nrot01l501s5g2ehd6ge/images/j0e6kena2ffn0lxfbjukzzyp.png)image.png

Reed-Solomon原始观点
Mleon的头像
创建于:05-01
随记
讨论
媒体