反復符号ほどはデータ量を増やさずに誤り率を下げる方法の一つに、パリティ検査符号がある。
パリティ検査符号では、符号を規定のビット数ごとに区切り、その内容に応じて別の符号を付け加えることでも誤り検出を行う。
まず、情報源 (送信側) で
元の符号を \(k\) ビットごとのブロックに区切る
ブロック中の1の数が偶数個なら後ろに0を付け加える
ブロック中の1の数が奇数個なら後ろに1を付け加える
という処理を行う。こうすることで、追加後の \(k+1\) ビットのブロックの1の数は常に偶数個になるはずなので、通信路で変化が起こらない限りこの条件は満たされる。そこで受信者は
ブロック中の1の数が偶数個なら後ろに0を付け加える
ブロック中の1の数が奇数個なら後ろに1を付け加える
受け取った符号を \(k+1\) ビットごとのブロックに区切る
ブロック中の1の数が偶数個なら変化がなかったと判定して最後の符号を削除 (元の符号を復元)
ブロック中の1の数が奇数個なら変化があったと判定して再送信を要求
のような処理を行う。
ブロック中の1の数が偶数個なら変化がなかったと判定して最後の符号を削除 (元の符号を復元)
ブロック中の1の数が奇数個なら変化があったと判定して再送信を要求
例 ( \(k=4\) の場合)
変化がなければ
奇数 偶数 奇数 | 偶数個 偶数個 偶数個 | ||
元の符号 |
0010 0110 1110
|
→ |
00101 01100
11101
|
↓ 変化なし | |||
復元された符号 |
0010 0110 1110
|
← |
00101 01100 11101
|
偶数個 偶数個 偶数個 |
通信路で変化がおきていた場合は、受信者側で1が奇数個含まれるブロックがみつかる。みつけたら再送信を要求する。
元の符号 |
0010 0110 1110
|
→ |
00101 01100 11101
|
|
↓ 変化 | ||||
00101 01100 10101
|
||||
偶数個 偶数個 奇数個 | →再送信を要求 |
「チェック用に追加した符号」(この例ではそれぞれのブロックの5ビット目) のことを検査符号、もとの符号のことを情報源符号という。
この呼び名は反復符号でも同様で、「0」を「000」にするケースでは最初の0が情報源符号、後ろの00が検査符号にあたる。