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

$$中,x 预先约定,message 控制多项式 $$ 的系数,实际传输的是 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:$$

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

Shannon's Birthday using Vandermonde matrix:

$$

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

$$

假设 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 行始终有解

  • 编码不用大整数 $$,解码不用浮点数。

  • 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),那么无需解码。

$$$$Generator matrix $$ for parity.$$$$

高斯消元

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

![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

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

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

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

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

单个解码

假设丢失了 $$,如何从 $$, $$ 恢复 $$ ?

![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

三个解码

假设丢失了 $$,如何从 $$, $$ 恢复原始数据?

![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

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

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的头像
创建于:2025-05-01
随记
讨论
媒体