誤り訂正とは?誤り検出との違いと、三回繰り返しの限界

余分な情報と符号の規則を使い、一定の範囲の誤りを直す仕組みです。

まず、身近な例で考える

000か111だけを送るなら、010を000と推定できます。ただし一桁以下の反転という条件が必要です。

どんな誤りでも直せるわけではありません。訂正能力を超えると誤った復元も起こります。

検出:規則が崩れたか
訂正:どの元データに戻すか
限界:想定を超える誤りは直せない
検出できる誤りの数と、訂正できる誤りの数は同じではない。

壊れたと気付くことと、正しく戻すこと

データの1の個数が偶数になるようパリティビットを付けると、一桁の反転で規則が崩れます。しかし規則が崩れたことだけでは、どの桁が正しかったかまでは分かりません。検出と訂正は異なる能力です。

訂正するには、候補となる正しい符号を十分に離して配置する必要があります。000と111だけを使うなら、どちらから一桁変わったものかを区別できます。

ハミング距離で、訂正できる範囲を考える

000と111のハミング距離は3です。受信した010は000から距離1、111から距離2なので、誤りが一桁以下なら000と判断できます。

一般に、符号語間の最小距離が2t+1以上なら、t個までのビット反転を一意に訂正できます。これは同じ長さの列に対する反転誤りを考えた条件です。挿入・削除や通信路の別の性質には別の工夫が必要です。

訂正能力を超えると、誤った復元もある

000が110になった場合、111の方に近くなります。受信側は元のデータを直接見られないため、想定を超える誤りでは訂正を誤ることがあります。

実際の仕組みでは、検出後に再送する、消失を扱う、より複雑な符号を使うなど、目的に応じて設計します。訂正機能があるからバックアップも確認も不要、とは言えません。

自分で確かめる小問

000と111の距離はいくつ?

三か所すべてが異なるので3です。一桁の反転までなら、どちらの符号から来たかを区別できます。

参考資料

本文の場面・数値例は、定義を理解するための説明用作例です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です