【りーどそろもんふごう】

リード・ソロモン符号 とは?

最終更新:
💡 データの一部が欠けても、数学の力で穴埋めする復元の名手

データに冗長なパリティを付け足し、一部が壊れたり失われたりしても元のデータを復元できる誤り訂正符号。CDやQRコード、ストレージの冗長化などで使われる。

📌 このページのポイント
位置が分かる欠落なら、2個を復元 データ4個+パリティ2個の仮例 ①符号化 D1 D2 D3 D4 P1 P2 ②2個の消失 D1 × × D4 P1 P2 ③復元 D1 D2 D3 D4 P1 P2 残り4個は正しく読める 欠落位置を使って計算 位置不明の誤りなら、この例では1個
各マスは1シンボル。n=6、k=4の系統的なRS符号の模式図で、他に誤りがないとき、分かっている2つの欠落を残りから復元する。D/Pの番号は位置のラベルで、符号化した値ではない。
ひよこ ひよこ
リード・ソロモン符号って何? 人の名前みたいだね。
ペンギン先生 ペンギン先生
その通り、ReedさんとSolomonさんが1960年に発表した誤り訂正符号なんだ。データに冗長な情報(パリティ)を付け足しておいて、一部が壊れたり失われたりしても、元のデータを復元できるようにする仕組みだよ。
ひよこ ひよこ
どうやって復元できるの?
ペンギン先生 ペンギン先生
データを、有限体(ガロア体)という、要素数が有限で四則演算ができる数の集合の上の多項式として扱うんだ。多項式は、十分な数の点での値が分かれば元の式が決まる性質があるよ。だから余分な点の値を付けておけば、一部が欠けても元の多項式を復元できるんだね。
ひよこ ひよこ
いくつまでの間違いを直せるの?
ペンギン先生 ペンギン先生
k個のデータにn-k個のパリティを付けた符号だと、位置が分かっている欠落(消失)なら最大でn-k個まで復元できるよ。位置が分からない誤りは、最大でn-kの半分(切り捨て)個までだね。誤りは「どこが間違っているか」も見つける必要があるから、半分になるんだ。
ひよこ ひよこ
ハミング符号とは違うの?
ペンギン先生 ペンギン先生
ハミング符号は主に1ビットの誤りを扱うけれど、リード・ソロモン符号は複数ビットのまとまり(シンボル。よく使われる例は1バイト)を単位に訂正するんだ。だから、連続して壊れるバースト誤りに強いよ。傷がついたCDのように、連続した範囲が読めなくなる状況に向いているんだね。
ひよこ ひよこ
どんなところで使われているの?
ペンギン先生 ペンギン先生
CDやQRコードが有名だよ。QRコードは、汚れたり一部が欠けたりしても読み取れるように、リード・ソロモン符号でL・M・Q・Hの4段階の誤り訂正レベルを持っているんだ。ほかにも、RAID 6の実装や、分散ストレージのイレイジャーコーディングでも使われているよ。
もっと詳しく知りたい人へ

符号長の上限はいつも同じ?

構成によって異なります。例えばRFC 5510の構成では、mビットの要素に対して符号長は最大2のm乗−1です。RS符号のすべての派生に同じ上限を当てはめるわけではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リード・ソロモン符号」って出てきたら「一部が欠けても復元できる、シンボル単位の誤り訂正」と思えればだいたいOK!
📖 おまけ:英語の意味
「Reed-Solomon code」 = リード・ソロモン符号
💬 1960年にこの符号を発表した、Irving S. ReedとGustave Solomonの2人の名前から付いた名前だよ

参考資料

← 用語集にもどる