通信の途中でノイズが入ったり、記憶メディアに傷がついたりすると、大切なデータの一部が壊れてしまうことがあります。
そうした場面で活躍しているのが、誤り訂正符号のひとつであるリードソロモン符号です。
今回は「リードソロモン符号の誤り訂正能力は?限界や訂正可能な範囲も!(最小距離:シンボル数:符号長など)」というテーマで、その具体的な仕組みと訂正できる範囲を詳しく解説していきます。
最小距離やシンボル数、符号長といった専門用語も、できるだけかみ砕いてお伝えするつもりです。
CDやQRコード、衛星通信など、実は身近な技術の裏側で働いているこの符号の実力を、一緒に確認していきましょう。
リードソロモン符号の誤り訂正能力の結論、訂正できるシンボル数は符号長とシンボル数の差の半分まで
それではまず、リードソロモン符号がどれだけの誤りを訂正できるのかという結論からご紹介していきます。
結論からお伝えすると、リードソロモン符号は符号語1つあたり(n-k)/2個までのシンボル誤りを訂正できる符号です。
ここでnは符号長、kは情報シンボル数を指します。
この式さえ押さえておけば、後半で説明する最小距離や訂正範囲の話もぐっと理解しやすくなるでしょう。
符号語の構造、符号長nと情報シンボル数k
リードソロモン符号は、情報を表すk個のシンボルに、誤り訂正用の冗長シンボルを付け加えて符号語を作ります。
符号語全体の長さがnで、そのうち実際の情報部分がk個というわけです。
残りのn-k個は、パリティシンボルと呼ばれる冗長データになります。
このパリティシンボルの数が多いほど、誤り訂正に使える余力も大きくなるのです。
訂正可能なシンボル数の求め方
誤り訂正能力を求める式は非常にシンプルです。
t=(n-k)/2
tは訂正可能なシンボル誤りの最大数を表します。
n-kが奇数の場合は、小数点以下を切り捨てて計算します。
この式が意味しているのは、冗長シンボルの半分の数までしか誤りを訂正できないということです。
なぜ半分なのかという理由については、次の見出しで最小距離とあわせて解説していきます。
具体例で確認する訂正能力
実際の数値を当てはめて考えてみましょう。
| 符号長n | 情報シンボル数k | 冗長シンボル数n-k | 訂正可能シンボル数t |
|---|---|---|---|
| 255 | 223 | 32 | 16 |
| 255 | 239 | 16 | 8 |
| 15 | 9 | 6 | 3 |
| 7 | 3 | 4 | 2 |
この表を見ると、冗長シンボルを増やすほど訂正能力も高まることが一目で分かるでしょう。
リードソロモン符号の誤り訂正能力は、符号長nと情報シンボル数kの差を2で割った値までです。
この上限を超える誤りが発生すると、正しく元のデータへ復号できなくなってしまいます。
最小距離とは何か、誤り訂正能力を左右する重要な指標
続いては、誤り訂正能力の根拠となる最小距離について確認していきます。
最小距離という言葉は聞き慣れないかもしれませんが、符号の性能を測るうえで欠かせない指標です。
ハミング距離とリードソロモン符号の関係
2つの符号語がどれだけ異なっているかを表す指標を、ハミング距離と呼びます。
異なるシンボルの数がそのままハミング距離になる、と考えると分かりやすいでしょう。
符号内に存在するすべての符号語同士のハミング距離のうち、最も小さいものが最小距離です。
この最小距離が大きいほど、符号語同士が離れて配置されていることになります。
符号語同士が離れているほど、誤りによって別の符号語と間違えてしまう可能性は低くなるのです。
最小距離d=n-k+1という性質
リードソロモン符号には、最大距離分離符号と呼ばれる優れた性質があります。
d=n-k+1
dは最小距離、nは符号長、kは情報シンボル数を表します。
この式は、与えられた符号長と情報シンボル数の組み合わせのなかで、理論上実現できる最大の最小距離を達成していることを示しています。
つまりリードソロモン符号は、同じn、kの条件下でもっとも誤りに強い符号のひとつだと言えるでしょう。
この性質こそが、リードソロモン符号がさまざまな分野で選ばれ続けている理由なのです。
最小距離と訂正能力の関係式
最小距離dが分かれば、訂正可能なシンボル誤り数tも導き出せます。
t=(d-1)/2
d=n-k+1を代入すると、t=(n-k)/2という先ほどの式にたどり着きます。
最小距離が1つ増えるごとに、訂正能力にも余裕が生まれていく仕組みです。
逆に言えば、最小距離が小さい符号は、それだけ誤りに弱いということになります。
符号を設計する際は、この最小距離をどこまで確保するかが重要な判断ポイントになるでしょう。
符号長とシンボル数が誤り訂正能力に与える影響
続いては、符号長nと情報シンボル数kが訂正能力にどう影響するのかを確認していきます。
符号長nを大きくした場合の効果
符号長nを大きくすると、1つの符号語に含められるシンボル数が増えます。
その分、冗長シンボルも増やしやすくなり、訂正能力を高めやすくなるのです。
ただしリードソロモン符号では、シンボルを表現するビット数によって符号長の上限が決まっています。
たとえば8ビットシンボルを使う場合、符号長の上限は255シンボルです。
これは2の8乗引く1という計算から導かれる数値になります。
より長い符号長が必要な場合は、シンボルのビット数を増やすか、複数の符号語を組み合わせる工夫が求められるでしょう。
情報シンボル数kと冗長シンボル数の関係
符号長nを固定した状態で情報シンボル数kを減らすと、冗長シンボルn-kは増加します。
冗長シンボルが増えれば増えるほど、当然ながら訂正能力も向上する仕組みです。
一方で、情報シンボル数kが減るということは、伝送できる実データ量が減ることも意味します。
誤り訂正能力と伝送効率は、いわばシーソーのような関係にあると言えるでしょう。
符号化率と訂正能力のトレードオフ
情報シンボル数kを符号長nで割った値を、符号化率と呼びます。
| 符号化率k/n | 特徴 | 向いている用途 |
|---|---|---|
| 高い(0.9前後) | 訂正能力は控えめだが伝送効率が良い | ノイズの少ない環境での通信 |
| 中程度(0.7前後) | 訂正能力と効率のバランスが良い | 光ディスクや一般的なストレージ |
| 低い(0.5以下) | 訂正能力が高いが伝送効率は下がる | 宇宙通信やノイズの多い環境 |
用途に応じてこの符号化率を調整することで、必要な訂正能力を確保しつつ無駄なく符号を設計できるのです。
符号化率をどこに設定するかは、システム全体の設計思想を反映する重要な判断だと言えるでしょう。
リードソロモン符号が訂正できる誤りの範囲、消失誤りとランダム誤りの違い
続いては、誤りの種類ごとに訂正できる範囲がどう変わるのかを確認していきます。
バースト誤りに強い理由
リードソロモン符号は、シンボル単位で誤りを扱う点に大きな特徴があります。
1つのシンボルが複数ビットで構成されているため、連続したビット誤りであっても1シンボルの誤りとしてまとめて処理できるのです。
この性質のおかげで、傷や瞬間的なノイズによって連続してビットが壊れるバースト誤りに強いと言われています。
CDの読み取りエラーや無線通信のフェージングなど、誤りが連続して発生しやすい環境で重宝される理由もここにあるでしょう。
消失訂正の場合の能力、n-k個まで訂正可能
誤りが発生した位置があらかじめ分かっている場合、それを消失と呼びます。
消失の場合は、誤りの値だけを求めればよく、位置を探す手間がかからないぶん訂正能力が高くなります。
消失訂正のみの場合、s個までの消失を訂正可能
ただしs≦n-kという条件を満たす必要があります。
つまり位置が分かっている消失であれば、冗長シンボルの数だけ丸ごと訂正できてしまうのです。
位置が分からない通常の誤りと比べると、実に2倍の許容量があると言えるでしょう。
誤りと消失が混在する場合の計算式
実際のシステムでは、位置不明の誤りと位置既知の消失が同時に発生することも珍しくありません。
2e+s≦n-k
eは誤りの数、sは消失の数を表します。
この式からも分かるとおり、誤り1つは消失2つ分に相当する負荷をかけていることになります。
誤りの位置が分からないという状況が、それだけ訂正の難易度を上げているというわけです。
通信システムを設計する際は、想定される誤りと消失の比率をあらかじめ見積もっておくことが大切でしょう。
リードソロモン符号の限界、訂正できないケースとは
続いては、リードソロモン符号にも存在する限界について確認していきます。
誤り数が限界を超えた場合に起こること
訂正可能なシンボル数tを超える誤りが発生した場合、何が起きるのでしょうか。
この場合、復号アルゴリズムが誤りを正しく特定できず、まったく違う符号語へ誤って復号してしまうことがあります。
厄介なのは、復号自体は成功したように見えても、中身が誤ったデータになっているケースがある点です。
これを検出するために、上位のシステムでチェックサムなど別の仕組みを組み合わせることも少なくありません。
訂正能力の上限を正確に把握しておくことが、システムの信頼性を左右すると言っても過言ではないでしょう。
復号アルゴリズムの計算量という課題
リードソロモン符号の復号には、ユークリッドの互除法やベルレカンプマッシー法といったアルゴリズムが使われます。
これらのアルゴリズムは符号長や訂正能力が大きくなるほど、計算量も増加していきます。
リアルタイム性が求められる通信システムでは、この計算コストが実装上のボトルネックになることもあるのです。
訂正能力を高めれば安心というわけではなく、処理速度とのバランスも考慮する必要があるでしょう。
シンボルサイズと符号長の制約
先ほども触れたとおり、シンボルのビット数によって符号長の上限は決まってしまいます。
8ビットシンボルであれば255、4ビットシンボルであれば15が符号長の上限です。
大容量のデータを扱いたい場合には、この上限がそのまま制約として立ちはだかることになります。
短縮符号や連接符号といった応用技術を使うことで、この制約を回避する工夫も行われています。
理論上の限界と実装上の工夫、その両方を理解しておくことが実務では欠かせないでしょう。
リードソロモン符号の活用事例に見る誤り訂正能力の実力
続いては、実際にどのような場面でこの誤り訂正能力が生かされているのかを確認していきます。
CDやDVDなど記憶メディアでの活用
CDやDVDには、傷や汚れによる読み取りエラーがつきものです。
こうしたメディアでは、リードソロモン符号を組み合わせたCIRCという方式が使われています。
この方式により、数ミリ単位の傷であってもデータを正しく読み出せるようになっているのです。
普段何気なく使っているディスクメディアの裏側で、リードソロモン符号がしっかりと働いているというわけですね。
QRコードでの活用
QRコードにも、リードソロモン符号による誤り訂正機能が組み込まれています。
QRコードの一部が汚れていたり破れていたりしても読み取れる経験をした方は多いのではないでしょうか。
| 誤り訂正レベル | 訂正可能な割合の目安 |
|---|---|
| レベルL | 約7パーセント |
| レベルM | 約15パーセント |
| レベルQ | 約25パーセント |
| レベルH | 約30パーセント |
このように訂正レベルを選べる設計になっているため、用途に応じて汚れへの耐性を調整できるのです。
衛星通信やストレージシステムでの活用
宇宙空間からの通信は、地上に比べて格段にノイズの影響を受けやすい環境です。
そのため衛星通信では、高い訂正能力を持つリードソロモン符号がたびたび採用されてきました。
また、大規模なデータストレージシステムでも、ディスク障害に備えてリードソロモン符号ベースの冗長化技術が使われています。
リードソロモン符号は、身近な家電製品から宇宙通信、大規模データセンターまで幅広く活用されている符号です。
その理由は、最大距離分離符号という理論的な優位性と、シンボル単位で誤りを扱える柔軟性にあります。
まとめ
今回は「リードソロモン符号の誤り訂正能力は?限界や訂正可能な範囲も!(最小距離:シンボル数:符号長など)」というテーマで解説してきました。
リードソロモン符号の誤り訂正能力は、符号長nと情報シンボル数kの差を2で割った値までというのが基本の結論です。
この能力を支えているのが、最大距離分離符号としての性質から導かれる最小距離d=n-k+1という関係式でした。
消失訂正であれば冗長シンボルの数だけ丸ごと訂正できる一方、誤りと消失が混在する場合は2e+s≦n-kという条件を満たす必要があります。
訂正能力には限界があり、それを超えると誤った復号結果を返してしまう点にも注意が必要でしょう。
CDやQRコード、衛星通信など、さまざまな場面でこの符号が支えている技術は少なくありません。
最小距離やシンボル数、符号長といった基本を押さえておけば、リードソロモン符号の仕組みはぐっと理解しやすくなるはずです。
ぜひ今回の内容を、日々の学習や実務にお役立てください。