誤り訂正 【error correction】
概要
誤り訂正(error correction)とは、データを伝送・記録する際に特殊な符号を付加するなどして、途中で起きる誤りを受け手の側で検知し、少ない誤りであれば元の状態に復元できるようにすること。そのために付加される符号を「誤り訂正符号」(ECC:Error-Correcting Code)という。データを記憶装置に書き込んだり、電気回路や通信回線などを通じて伝送すると、様々な理由で意図せずデータの欠落や改変が起こることがある。これを完全に防止することは困難であるため、読み出しや受信の際に誤りが起きたかどうかを検知し、ある程度の誤りは訂正することができるようにするのが誤り訂正技術である。
データを記録・送信する際に、一定の長さごとに特定の計算手順で「誤り訂正符号」を算出し、データに連結する。読み込みや受信の際にはデータと符号を分離し、一定の計算手順でデータに誤りがないか確認し、誤りが検出されたら符号を元に復元を試みる。
誤り訂正符号の算出手法には様々な方式があるが、どのような量・種類の誤りも完全に検出・訂正できる符号はない。ある長さあたり何ビットまでの誤りを検出可能か、何ビットまでの誤りを訂正可能かが符号により決まっている。一般に、検出可能なビット数は訂正可能なビット数よりも多い。
方式によっては符号を長くすれば検出・訂正できる誤りを増やすことができるが、符号の算出・検証のための計算量が増え、記録や伝送の際に符号のために余計に費やされる容量や帯域(オーバーヘッド)も大きくなる。コストや誤りの発生率などを勘案して適切なものが選ばれる。
著名な誤り訂正符号には「ハミング符号」や「水平垂直パリティ符号」「リードソロモン符号」「BCH符号」などがある。受け手側で誤りを検知できるが訂正できない手法は「誤り検出」(error detection)と呼ばれ、誤ったデータは破棄して相手に再送を要求できる双方向通信などでよく用いられる。訂正と検知を合わせて「誤り検出訂正」(error detection and correction)と総称することもある。
(2023.12.21更新)