leafee98-blog/content/essays/reed-solomon-coding.md

24 lines
1.3 KiB
Markdown
Raw Normal View History

2022-11-08 02:30:54 +00:00
---
title: "Reed Solomon"
date: 2022-11-08T10:10:26+08:00
tags: []
categories: []
weight: 50
show_comments: true
draft: false
---
Reed-Solomon 直译大概是“里德-所罗门”,它利用多项式插值拟合的思想,将数据分为 `n = t + k` 份,那么任意最多 k 份数据丢失,依然能够还原出原始数据。
<!--more-->
首先多项式拟合的思想是,对于任意 t 个点,存在唯一的插值 t 项(最高次幂为 t-1多项式使得函数图像经过所有这 t 个点。更多特点可以看[维基百科](https://zh.wikipedia.org/wiki/%E5%A4%9A%E9%A1%B9%E5%BC%8F%E6%8F%92%E5%80%BC)
那么我们将数据分为 t 份存储,将存储媒介随意标号,比如 1 号磁盘、2 号磁盘……,将这些标号作为横坐标,每个磁盘中存的数据作为纵坐标,可以得到坐标系中的 t 个点。对这 t 个点进行插值,得到一个唯一的函数图像,然后再取 k 个不同的点,将纵坐标存储为冗余数据。
假设这 n 块磁盘有不多于 k 份丢失,那么可以从剩下的至少 t 份数据插值得到与原来相同的唯一函数,只需要取原磁盘标号处的纵坐标,就可以还原出原磁盘中的 t 份数据。
## 参考
- [The essence of Reed-Solomon coding](https://mazzo.li/posts/reed-solomon.html)