誤り検出訂正
概要
誤り検出訂正 (error detection and correction) はデータの伝送やデータ保存時におけるエラー (誤り) の検出と訂正を行うための手法。データは、伝送やストレージで生じる物理的なノイズや機器の不具合によって情報の欠損が生じ正確性を損なう可能性があるが、誤り検出訂正によってそれらのエラーを検出し訂正することで正確性と信頼性を向上させることができる。
誤り検出はデータの受信時にエラーが起きているか検知することをのみ目的としている。比較的信頼性の高い通信チャネルでのデータ伝送は、誤り訂正のための冗長なビットを常に送信するより、誤り検出と自動再送のプロトコルを実装することが多い。
Table of Contents
アルファベット (alphabet) は記号の有限集合である。例えば 2 進数で表現されるデータのアルファベットは
情報を符号化することによって得られる固定長のアルファベット列を符号語 (code word) と呼び、符号語の集合を符号 (code) と呼ぶ。符号への変換が 1:1 であるなら一意復元可能 (uniquely decodable) であり、エンコード (符号化) 処理によって生成され符号語はデコード (復号化) 処理によって元の情報に復元することができる。サーディナス-パターソンのアルゴリズム (Sardinas–Patterson algorithm) は可変長の符号が一意復元可能であるかを判断するアルゴリズムである。
誤り訂正符号の場合、一般に符号語はデータ復元のための冗長ビットのような情報も含んでいる。
ハミング距離 (Hamming distance) は同じ長さを持つ 2 つのデータ列の差異を表すための指標である。具体的には双方のデータ列で同じ位置だが異なる値を持つ要素の数によって表される。ハミング距離が小さいほど 2 つのデータ列は類似していることを意味している。誤り訂正符号では、ハミング距離が一定値以上であることによって特定のビットのエラーが検出または訂正可能であることが保証される。
アルファベット
シャノンの定理
シャノンの定理 (Shannon's theorem)、または通信路符号化定理 (noisy-channel coding theorem) は通信チャネルのノイズによってデータ破損が起きた場合の誤り訂正符号の最大効率を説明している。これは、チャネル容量
線形符号
線形符号 (linear code) は線形結合の演算によって符号語を生成する誤り検出訂正符号である。加算またはスカラー乗算のみで符号を生成するため変換効率が良い。
線形符号における要素数
アルファベットが位数
長さ
ハミング符号
ハミング符号 (Hamming code) は 1947 年にハミングによって導入された初期の誤り訂正符号 (線形符号) である。冗長ビットを追加することで誤り検出が可能となり、さらに誤り検出結果の組み合わせからエラービットの位置を特定し訂正することができる。
ハミング符号は符号に含まれる 1 ビットの反転 (誤り) を検出し訂正することができるが、2 ビット以上の反転は誤った訂正を引き起こす。ハミング符号にパリティビットを加えた拡張ハミング符号 (extended Hamming code, Hamming codes with additional parity) は「1 ビットまでの誤り訂正、2 ビットまでの誤り検出」を行うことができる。ハミング符号は冗長性が限られる一方で演算が単純で比較的高速であるため、メモリの ECC 機構のような比較的安定したチャネルで高速な誤り訂正が必要なケースに適用されている。
代表的な設定は
アルゴリズム
この説明では
の 4 ビットを用いて 3 ビット ✕ 3 の集合を作る。このとき: 集合内でのビットの和が 0 となるようにパリティビットを追加する。このとき、符号
のいずれかのビットが反転したときに、少なくとも一つの集合の和が 1 となって誤りを検出できるように のビットを分配する。 それぞれの集合の和の並びを 3 ビット値とみなしたとき、
が反転した場合にその値が を示すように配置することで、反転した位置を特定できるので誤りを訂正ができる。
元の 4 ビット + パリティ 3 ビットを並べて 7 ビットの符号
とする。
これはしばしば集合の交差を用いた例で説明されている。まず Fig 1 左のように 3 つの集合
集合
符号化
この考えに基づいて
次に残りの冗長ビット
結果的に
この符号の 8 ビット目にパリティビット
誤り検出訂正と復号化
式 (
ハミング符号以前の符号
ハミング符号より前にも誤り検出訂正符号はあったが効果的ではなかった。
反復符号 (repetition code)-
すべてのビットを固定回数繰り返す符号。例えば 3 反復符号は 1011 を 111000111111 と表し、3 つの並びが 110 だったときは 3 ビット目が反転しているとみなして 1 とする
-符号である。
参考文献
- G.A.ジョーンズ, J.M.ジョーンズ. 情報理論と符号理論 (2012) 丸善出版 ISBN 4621063421