ディジタル通信における符号誤り訂正技術入門

ディジタル通信における符号誤り訂正技術入門
電気電子工学科 教授
小原
仁
1.はじめに
筆者はディジタル通信に関する講義を担当している。講義内容を考える際に教科書はも
ち ろ ん ,イ ン タ ー ネ ッ ト 上 の 教 材 や 他 大 学 の 公 開 講 座( オ ー プ ン コ ー ス ウ ェ ア ,OCW)な
ども参考にする。しかし,本稿のテーマである「符号誤り訂正技術」に関して,初心者で
も理解しやすい解説は,筆者の知る限り見当たらない。そこで、学生(3年次)が予備知
識 な し で 初 め て 聞 い て も わ か る よ う に 考 え た「 符 号 誤 り 訂 正 技 術 入 門 」を 紹 介 し た い 。90
分 の 講 義 に 相 当 す る 内 容 で す 。 数 式 は 最 小 限 と し ,「 読 ん で わ か る 」 を 主 眼 と し ま し た 。
2.符号誤り訂正技術の概要
(1)その必要性
送信データや記録データを誤りなく正しく再現したいのは当然として,その背景を考え
てみよう。銀行ATMやカード決済などではデータ誤りは許されない。そのようなデータ
誤りにセンシティブなアプリケーションが増えてきた。また,ファイルを送信したり記録
する場合,データ量を圧縮するのが普通になっている。データ量が少ないのは通信時間が
短く,記憶するメモリ量も少ないので大歓迎・・・しかし,圧縮されたデータに誤りが発
生したらどうなるか?データ量を圧縮したら,元のデータを復元するにはそれを膨らませ
る必要がある。圧縮データに誤りがあると,復元されたデータには,圧縮された度合い以
上に誤りが拡大されて出てくる。大げさな言い方をすれば,技術の光と影の一端をそこに
見ることができる。このため,データ圧縮には誤り訂正(もしくは検出)機能がセットで
用 い ら れ る 。携 帯 電 話 の 音 声 信 号 は 1/10 以 下 に 圧 縮 さ れ て お り ,無 線 区 間 で 発 生 す る 誤 り
対策は必須である。音楽CD は圧縮をかけていないが,データの読み取りに誤りがあると
雑音となって品質が損なわれるため,誤り訂正技術が用いられている。
(2)技術的な分類と用途
前 方 誤 り訂 正 方 式
Forward Error Correction
符 号 誤 り訂 正 方 式
ブロック符 号 方 式
たたみ込 み符 号 方 式
再 送 要 求 方 式 Repeat Request
符 号 誤 り 訂 正 技 術 は ,最 初 に 二 つ に 大 別 さ れ る 。第 一 は「 前 方 誤 り 訂 正 方 式( Forward
Error Correction, FEC)」 で , 送 信 デ ー タ に 誤 り 訂 正 用 の ビ ッ ト を 前 も っ て 付 加 し て 送 る
方 法 で す 。 第 二 は 「 再 送 要 求 方 式 ( Repeat Request, RR)」 で , 送 信 デ ー タ に 誤 り 検 出 ビ ッ
ト を 付 加 し ,受 信 側 で 誤 り を 検 出 し た 場 合 に 限 っ て ,デ ー タ の 再 送 を 行 う 。パ ケ ッ ト 通 信
で用いられる。一般に,誤り検出用の付加ビット数は訂正のものより少なくて済むが,訂
正に時間がかかる(再送するため)というトレードオフがあり,それぞれ特徴を活かした
用 途 が あ る 。 FEC方 式 は , さ ら に 二 つ の 方 式 に 細 分 化 さ れ る 。 第 一 は 「 ブ ロ ッ ク 符 号 方 式 」
で,送信データは一定長のブロックに区切られて,それに訂正用のビットが付加される。
音 楽 CDな ど に 用 い ら れ る 。 第 二 は 「 た た み 込 み 符 号 方 式 」 で , 送 信 デ ー タ そ れ 自 身 が 新 た
な符号系を構成する。その処理は複雑になるが,訂正能力は高い。誤りが多く発生する衛
星通信などに用いられる。本稿ではブロック符号の最も基本となる「ハミング符号」につ
い て 解 説 す る 。 こ れ は 1950 年 に ベ ル 研 究 所 ( ア メ リ カ ) の R. W. Hammingに よ っ て 提 案 さ
れた。当時,開発が始まったばかりのディジタルコンピュータで頻発するデータ誤りの対
策として考えられた。さて,教科書的な前書きはこれくらいにして,本論に入ろう。
3.ブロック符号の動作原理に関する考察
(1)原始的な方法
1ビットのデータを送信する。それが「0」の場合,雑音のせいで「1」に誤って受信
し て も , 元 の 「 0 」 に 訂 正 し た い (「 1 」 を 送 っ て 「 0 」 に 誤 る 場 合 も 同 じ )。 な お , ビ ッ
ト誤りは最悪でも数千ビットに1回だけ発生する程度とする。この例では,ビット誤りは
最 大 で も 1 回 だ け 。さ て ,あ な た な ら ど う し ま す か ?・・・・・・・・一 つ の 答 え と し て ,
「 同 じ デ ー タ を 3 回 以 上 繰 り 返 し て 送 る 」。誤 り が な い と す る と ,受 信 側 で は 1 つ の デ ー タ
ビットについて3回とも「0」または「1」を受ける。1回だけ誤りが発生すると,1つ
のデータビットについて,
「 0 」を 2 回 と「 1 」を 1 回 ,あ る い は「 0 」を 1 回 と「 1 」を
2回受ける。誤りの発生は1回だけと考えてよいから,元のデータは多数決によって,そ
れ ぞ れ「 0 」あ る い は「 1 」と 決 定 で き ,誤 っ た ビ ッ ト を 訂 正 で き る( 下 図 を 参 照 )・・・
・・・・・・しかし,この符号化では余りにも効率が悪い。
送信
データ
符号化
伝送
(誤 り発 生 )
訂正
(多 数 決 )
復元
データ
0
000
100
010
001
000
0
1
111
011
101
110
111
1
3ビット目 に誤 り発 生
2ビット目 に誤 り発 生
1ビット目 に誤 り発 生
(2)試行錯誤的な方法
送信データを「011001001111」とする。1ビットずつ符号化するのは非効
率 な の で ,2 ビ ッ ト 毎 に ブ ロ ッ ク に 区 切 る 。
「 0 1・1 0・0 1・0 0・1 1・1 1 」と な
る 。デ ー タ の 数 が 増 え て も ,2 ビ ッ ト の 組 み 合 わ せ は「 0 0 」
「01」
「10」
「 1 1 」の 4
組 だ け 。よ っ て ,そ の 4 組 に つ い て 誤 り が 訂 正 で き れ ば ,ど ん な 長 さ の デ ー タ で も 大 丈 夫 。
次 に ,誤 り の 発 生 す る 状 況 を 観 察 す る 。
「 0 1 」を 例 に と る 。そ の 1 ビ ッ ト 目 が 誤 る と「 1
1」となり,2ビット目が誤ると「00」になる。このままだと,他の2ビットの組合せ
の「 1 1 」と「 0 0 」と 同 じ に な っ て ,誤 り の せ い で「 1 1 」
「 0 0 」に な っ た の か ,元 々
の 送 信 デ ー タ が「 1 1 」
「 0 0 」だ っ た の か 区 別 で き な い 。な ら ば ,2 ビ ッ ト の 送 信 デ ー タ
に,あと何ビットか追加して区別してはどうか,とハミングは考えた。
まずは,付加ビットを1ビットとしよう。4組のデータのそれぞれに1ビットを付加す
る 。1 組 の 付 加 ビ ッ ト へ の 割 り 当 て は「 0 」
「 1 」の 2 通 り 。4 組 全 体 の 付 加 ビ ッ ト の 割 り
当 て 方 は ,2 ×2 ×2 ×2 = 1 6 通 り で ,手 作 業 で も す べ て の 場 合 を チ ェ ッ ク で き る 。・・
・ ・( 実 際 に や っ て み て 下 さ い )・ ・ ・ ・ ・ ・ 結 論 と し て , 1 ビ ッ ト 追 加 す る だ け で は , 上
で 述 べ た 状 況 と 同 じ く ,誤 っ た デ ー タ が 他 の デ ー タ と 区 別 で き な い こ と が わ か る 。な ら ば ,
追加ビットを2ビットにしてはどうか?ただし,今度は256通りになる。
先 を 急 ぐ 気 持 ち を 抑 え て ,付 加 ビ ッ ト が 1 ビ ッ ト の 結 果 を よ く 見 て み よ う 。そ う す る と ,
1ビットでも大丈夫な場合があることに気づく。もし,送信データが「00」と「11」
の2組だけならば,付加ビットをそれぞれ「0」および「1」とすればよい。すなわち,
「000」と「111」という符号になる。この2組の符号の間では1ビットの誤りがど
の 位 置 に 発 生 し て も 元 の デ ー タ が 復 元 で き る 。上 で 述 べ た 多 数 決 と 似 て い る( 下 図 を 参 照 )。
誤 りのパターン
元 の符 号
0 0 0
誤 りのパターン
100
110
010
011
001
101
元 の符 号
1 1 1
で は ,残 り の「 0 1 」と「 1 0 」の 2 組 に つ い て は ど う か 。そ の 結 論 は ,
「 0 1 0 」と「 1
01」という符号にすれば,1ビットの誤りが訂正できる。一番目の符号「010」の中
の 1 ビ ッ ト が 誤 る と ,そ の 誤 り の 発 生 箇 所 に 応 じ て「 1 1 0 」
( 1 ビ ッ ト 目 が 誤 る ),
「00
0 」( 2 ビ ッ ト 目 が 誤 る ),「 0 1 1 」( 3 ビ ッ ト 目 が 誤 る ) と い う 3 つ の パ タ ー ン が 考 え ら
れ る 。 同 じ よ う に 二 番 目 の 符 号 「 1 0 1 」 に つ い て は 「 0 0 1 」「 1 1 1 」「 1 0 0 」 と な
る。元の符号を含めた,それぞれ4つのパターンは互いに重複しないので,どのパターン
が 発 生 し て も , 元 の 送 信 デ ー タ が 一 意 に 決 定 で き る ( 下 図 を 参 照 )。
誤 りのパターン
元 の符 号
0 1 0
誤 りのパターン
110
100
011
001
000
111
元 の符 号
1 0 1
上 で 述 べ た 二 つ の 例 は 元 の 符 号 が 違 う だ け で ,同 じ 動 作 を し て い る 。そ の 動 作 を 統 一 的
に表現する にはどうしたらいいだろうか?上の二つの図を見て,共通点を探すと・・・・
(3)符号間の距離を定義して設計する方法
こ こ で ,「 符 号 間 の 距 離 」 を 定 義 す る 。 n ビ ッ ト の 長 さ の 符 号 を 考 え る 。 2 つ の 符 号 を
a 1 ,a 2 ,a 3 ,・・・,a n と b 1 ,b 2 ,b 3 ,・・・,b n と す る 。 こ こ で , a k や b k は 0 ま た は 1 を 表 す
ものと する 。この 2つ の符号 を左 端( a1と b1 )から 1ビ ットず つ比 較し, その ビット が
異 な っ て い る 箇 所 を 合 計 す る 。そ の 値 を 符 号 間 の 距 離 と 呼 ぶ 。全 て の ビ ッ ト が 同 じ な ら ば
距 離 は 0 と な り ,全 て の ビ ッ ト が 互 い に 異 な っ て い れ ば 距 離 は n と な る 。例 え ば 0 1 0 と
010なら距離は0であり,010と011なら距離は1である。
この距離の概念を使うと,誤り訂正符号の話は非常にすっきりする。誤りがなければ送
信符号と受信符号の距離は0になる。1ビットの誤りがあると,その距離は1になる。2
つ の 符 号 を 考 え る と ,1 ビ ッ ト 誤 り が 訂 正 で き る 条 件 は ,そ れ ら の 符 号 間 の 距 離 が 3 以 上
と な る こ と で あ る 。 な ぜ な ら ば , 1 ビ ッ ト 誤 る と 符 号 の 距 離 は 1 だ け 離 れ る 。( 2 ) で 述
べた例より,誤りが訂正できるためには,2つの符号からそれぞれ1だけ離れた符号が互
い に 重 な ら な い( そ れ ぞ れ の 誤 り パ タ ー ン の 間 の 距 離 が 1 以 上 離 れ て い る )必 要 が あ っ た 。
よ っ て ,そ れ ら を 合 計 す れ ば ,距 離 が 3 以 上 と な る( 下 図 を 参 照 )。な お ,2 ビ ッ ト の 誤 り
を訂正するためには符号間距離を5とすればよい。その一般化も容易である。
誤 りのパターン
元 の符 号
0 0 0
距 離 ≥1
距 離 =1
元 の符 号
011
101
110
100
010
001
1 1 1
距 離 =1
距 離 ≥3
(4)符号数の設計
(3)の結果より,元になるnビットの長さの符号(1個)と,それから派生する1
ビ ッ ト 誤 り の 符 号( n ビ ッ ト の 各 ビ ッ ト に 誤 り が 発 生 す る の で ,全 体 と し て n 個 ) の 合 計
は( 1 + n )個 と な る 。こ の( 1 + n )個 の 符 号 の 集 合 が ,他 の 符 号 お よ び そ れ ら の 1 ビ
ット誤った符号の集合と 重複してはいけない 。それらは独立した集合を形成する。さて,
nビットで表現できる符号の総数は2 n 個である。それを(1+n)個の単位で分割した
個数が,距離3以上の符号の数mとなる。すなわち,
2n
m≤
1+ n
ただし, m = 2
d
(dは送信データのビット数)
例 え ば n = 3 ビ ッ ト な ら ば , m = 2 / (1+ 3)= 2 1 と な っ て , 2 個 の デ ー タ ( す な わ ち
3
1ビットのデータ)の誤りが訂正できる。よって,付加ビットは3-1=2ビット必要と
な る 。( 2 ) で 示 し た 二 つ の 例 は , こ の 場 合 に 相 当 す る 。 次 に , n = 5 ビ ッ ト の 符 号 を 設
5
計 し よ う 。 送 信 デ ー タ 数 は m = 2 / (1+ 5)= 5.3 よ り , 5 個 と な る 。 デ ー タ ビ ッ ト は 5 を
超えない最大の2のべき乗となるから,2ビットとなる。その結果,付加ビットは5-2
=3ビットとなる。では,実際にそのような符号を設計してみよう。送信データは00,
01,10,11の4種類である。付加ビットは符号間の距離(互いに異なっているビッ
トの数)が3以上となるように割り当てる。今の段階では,試行錯誤を繰り返してやって
下さい。一例を下の図に示す。例えば,①の符号00000は②の01110と3箇所の
ビ ッ ト が 異 な っ て お り , 距 離 が 3 で あ る こ と が わ か る 。 な お , デ ー タ 長 が 10, 100, 1000
ビ ッ ト で は , 付 加 ビ ッ ト は そ れ ぞ れ 4, 7 , 10 ビ ッ ト と な る こ と が 上 式 か ら わ か る 。
送 信 データ
(2ビット)
付 加 ビット
(3ビット)
①
0 0
0 0 0
②
0 1
1 1 0
③
1 0
0 1 1
④
1 1
1 0 1
4.パリティビットを用いたシステマチックな設計
3.で符号ビット数の設計はできたが,付加ビットのパターンを決めるのは試行錯誤に
頼 る し か な か っ た 。以 下 で ,そ れ を 系 統 的( シ ス テ マ チ ッ ク )に 実 行 す る 方 法 を 紹 介 す る 。
( 1 ) パ リ テ ィ ( Parity) と は
ゴルフ場のコースには目安となる打数が設定されている。パー3とかパー5という表示
で す 。 こ こ で 使 わ れ て い る 「 パ ー ( Par)」 と は 「 釣 り 合 い が 取 れ た 」 と か 「 均 し い 」 と い
う 意 味 の 形 容 詞 で す 。規 定 の 打 数 と 自 分 の 打 数 を 比 較 し ま す 。パ リ テ ィ は そ の 名 詞 形 で す 。
誤り訂正(あるいは検出)で言えば,送信した符号と受信した符号が一致しているかどう
か比較することです。その具体的な実施例として,偶(奇)パリティ則がある。送信デー
タに1ビットのパリティビットを付加する。送信データ中の「1」の個数を合計して奇数
ならばパリティビットを「1」にして,符号全体の「1」の個数を偶数にする。送信デー
タ中の「1」の個数が偶数なら,パリティビットは「0」にする。そのように規則化され
た符号を送信し,受信側でも再度,受信データからパリティビットを計算する。送信され
て き た パ リ テ ィ と , 受 信 側 で 再 計 算 し た パ リ テ ィ を 比 較 し て ,一 致 す れ ば 誤 り な し と 判 定
する。不一致ならば誤りが発生したと判定する。一種の保存則のようなものです。
送 信 データ
(1次 元 )
0110010010111000011111001
送 信 データ
(2次 元 配 列 )
垂 直 パリティビット
水 平 パリティビット
H1
0
1
1
0
0
1
0
0
1
0
H2
1
1
1
0
0
H3
0
0
1
1
1
H4
1
1
0
0
1
H5
V1 V2 V3 V4 V4
(2)垂直・水平パリティによる誤り訂正方式
このパリティ則をうまく使うと誤りが訂正できる。一例を上の図に示す。連続して送ら
れる送信データのビット列を図のような二次元の配列にします。そして,横方向(H)と
縦方向(V)にパリティビットを付加します。前に想定した誤りの発生条件と同じく,こ
の配列に含まれるデータの誤りは最大でも1ビットだけです。
受信側では受信データに基づいてパリティを再計算し,送信されてきたパリティと比較
する。その結果,例えばH 4とV 5にパリティの不一致があったとすると, その交点に位置
す る デ ー タ に 誤 り が あ っ た こ と が わ か り , そ の 符 号 を 反 転 す れ ば 訂 正 が 完 了 す る (「 0 」
な ら ば 「 1 」 に ,「 1 」 な ら ば 「 0 」 に 変 換 )。 も し , 縦 方 向 ま た は 横 方 向 の パ リ テ ィ の 1
箇所のみに不一致が検出された場合は,そのパリティビット自身に誤りが発生したと解釈
します。もちろん,その場合,誤ったパリティビットはデータビットと同じく訂正できま
す。
垂 直・水 平 パ リ テ ィ 方 式 と 3 .で 示 し た 符 号 間 距 離 を 用 い る 方 式 の 性 能 を 比 較 し て み る 。
デ ー タ 長 が 100 ビ ッ ト の 例 を 考 え る 。前 者 で 必 要 と な る パ リ テ ィ は 2 × 100 = 20 ビ ッ ト で
ある。後者の付加ビットは前述の式から,7ビットでよいことがわかる。その差はデータ
長が大きくなるほど広がる。よって,垂直・水平パリティ方式は改善の余地がある。
(3)シンドロームによる誤り訂正方式の原理
「 シ ン ド ロ ー ム( syndrome)」と い う 言 葉 を ご 存 知 の 方 も 多 い で し ょ う 。
「 症 候 群 」と 訳
されています。風邪をひくと,のどが痛い,鼻水が出る,熱が出る,頭が痛い・・・とい
うように,1つの病気が原因となって発生する色々な症状のことです。逆に言えば,それ
らの症状から病気の原因がわかります。垂直・水平パリティ方式を,原因(データのビッ
ト誤り)と,それによって引き起こされる症状(パリティの不一致)というように対比さ
せて考えたらどうでしょうか。簡単のためデータ長を4ビットとし,パリティを垂直・水
平 そ れ ぞ れ 2 ビ ッ ト ず つ と し ま す ( 下 の 図 を 参 照 )。
D1
D2
P1
D3
D4
P2
P3
P4
データ
垂 直 パリティビット
水平
パリティ
ビット
データの
誤 り位 置
シンドローム
D1
P1 P3
D2
P1 P4
D3
P2 P3
D4
P2 P4
P1 P2
P1 P2 P3
上の図の右側を見て下さい。誤りの発生したビット(原因)に対して,パリティエラー
が 検 出 さ れ る パ リ テ ィ ビ ッ ト の 組 を 示 し て い ま す 。 先 頭 の デ ー タ ビ ッ ト D1 に 誤 り が あ る
と , 2 つ の パ リ テ ィ ビ ッ ト P1 と P2 で 不 一 致 が 検 出 さ れ る , と い う よ う に 読 ん で 下 さ い 。
すなわち,左側が病気の原因で,右側が症状(シンドローム)に対応しています。この対
応 表 か ら ,P2 と P3 で エ ラ ー が 検 出 さ れ る と ,そ の 原 因 は D3 の 誤 り だ と わ か り ま す 。4 組
の パ リ テ ィ の 組 み 合 わ せ は 全 て 異 な っ て い る の で ,誤 診 断 の 恐 れ は あ り ま せ ん 。パ リ テ ィ
側から見れば,例えばP1はD1とD2のシンドロームの要素となっています。つまり,
P1はD1とD2の偶(奇)パリティで定義されるということです。なお,1つのパリテ
ィビットのみに不一致が検出された場合は,データに誤りはなく,送信されてきたパリテ
ィビットそのものにビット誤りが発生したと解釈します。ところで,シンドロームを構成
するパリティは,何故,最低2ビット必要でしょうか?・・・・・・・ 1ビットではパリ
テ ィ 自 身 の 誤 り と デ ー タ の 誤 り が 区 別 で き な い か ら で す 。も し ,2 ビ ッ ト の 誤 り を 訂 正 し
たい場合は,シンドロームは3ビット以上のパリティで構成されます。
(4)シンドロームの最適な構成法
上の図の右側の対応表をよく観察して下さい。何か気がつきませんか?・・・・・
・・シ ン ド ロ ー ム は ,誤 り 位 置 が 一 意 に 特 定 で き る よ う に 構 成 さ れ て い れ ば よ い 。よ っ て ,
図のように,すべてのシンドロームを2ビットの組合せだけで表現する必要はない・・・
・ ・ ・ 例 え ば , D4 の シ ン ド ロ ー ム を P1, P2, P3 の 3 つ の 組 合 せ に し た ら ど う か ( 上 図 を
参 照 )。シ ン ド ロ ー ム の 一 意 性 を 確 保 で き ,2 ビ ッ ト 以 上 の 条 件 も 満 た す・・・・・そ の 結
果 ,パ リ テ ィ ビ ッ ト は 3 ビ ッ ト で 済 む( P4 が 不 要 に な る )。た だ し ,P1 と P4 の 組 合 せ を
P1 と P2 に 変 更 す る ・・・・・ 正 に ,そ の 通 り 。で は ,任 意 の デ ー タ 長 で は ,ど の よ う に
構成すればよいか?
ただし,データビットをdビット,パリティビットはpビットとす
る 。・・・・・・結 論 と し て ,2 個 以 上 の パ リ テ ィ の 組 合 せ の 総 数 を 求 め ,そ れ が d 以 上 で
あ れ ば よ い ( d ビ ッ ト の デ ー タ の 中 で , 1 ビ ッ ト 誤 り の 発 生 箇 所 は 最 大 で も d 個 だ か ら )。
こ こ で , 中 学 や 高 校 で 習 っ た 順 列 ・ 組 合 せ の 公 式 を 思 い 出 し て 下 さ い ( 二 項 定 理 )。
( x + y) p = p C0 x p y0 + p C1x p−1 y1 + p C2 x p −2 y2 + p C3 x p−3 y3 + LL+ p Cp −1x1 y p −1 + p Cp x0 y p
a C b は a個 の 中 か ら b個 を 取 り 出 す 組 合 せ の 数 で ,
2 p = 1 + p+ p C 2 + p C3 + LL+ p C p −1 + p C p
x = y =1 を 代 入 す る と , 次 式 が 得 ら れ る 。
こ こ で a Cb =
a!
b! (a − b)!
ただし
a
C0 = a Ca = 1
上の式の意味するところは次の通り。まず,左辺の意味。pビットのパリティにおいて,
各ビットはパリティに採用されるか・されないかの2通り。よって,pビット全体では2
P
通りのシンドロームの組合せとなる。次に,右辺の意味は以下の通り。
・第一項はp個のパリティビットから0個のパリティビットを選ぶ組合せの数。
・第二項はp個のパリティビットから1個のパリティビットを選ぶ組合せの数。
・第三項はp個のパリティビットから2個のパリティビットを選ぶ組合せの数。
・( 以 下 , 同 様 )
すなわち,左辺がシンドロームの総数で,右辺がその内訳を示しています。さて,我々が
求めたいのは,p個のパリティビットから2個以上を選ぶ組合せの数でした。その数は右
辺の第三項目以降の和に相当します。このシンドロームの組合せの数が,データビットの
長さd(すなわち,誤りが発生する可能性のあるビット位置の数)に等しいか,大きくな
れば,ビット誤り位置とシンドロームとの一意な対応関係が構築できます。ただし,シン
ドローム長は2~pビットになります。pは次式を満たす必要があります。
適用可能なシンドロームの総数=
p
C 2 + p C 3 + L L + p C p −1 + p C p = 2 P − (1 + p ) ≥ d
∴ 2p ≥ d + p +1
ここで,データビット長dにパリティビット長pを加えた(d+p)は,符号全体の長さ
n と な る 。よ っ て ,上 の 式 の 左 辺 で p → n ― d ,右 辺 で d + p → n と 置 き 換 え る と ,次 の
式が得られる。
2 n−d ≥ n + 1
∴
2n
≥ 2d
1+ n
上の最後の式は,どこかで・・・・・・・3.の符号間距離に基づいて,データの数m
を求めた式そのものです。上の右側の式の右辺はdビットで表現される送信データの総数
です。符号間距離とシンドロームという,一見,別々の概念が数学的に同じ構造を有する
のは興味深いと思いませんか?(ただし,高校の順列・組合せのレベルの内容ですが)
やっとゴールが見えてきました。4章の話をまとめると,1ビットの誤りを訂正するた
めには,上式を満たす最小のp個のパリティビットの中から,2個以上の組合せをシンド
ロームとして列挙すればよい。列挙の仕方はコンピュータで簡単に実行できるアルゴリズ
ムが既にわかっています。もちろん,人間がやってもよく,辞書式に並べていけば(時間
が か か っ た と し て も ),全 て の 組 合 せ を リ ス ト ア ッ プ で き ま す 。こ れ が ハ ミ ン グ 符 号 の エ ッ
センスです。パリティの組合せの自由度を最大限に活用した方法です。
これで,システマチックな設計法の完成です。長い時間,お疲れ様でした・・・・・・
・・・あ っ け な い 幕 切 れ で し た か ? で は ,ア ン コ ー ル に 応 え て ,次 の 問 題 に チ ャ レ ン ジ し
て下さい。今までの説明から簡単に解けます。どの教科書にもある基本的な問題です。
[問題]上記の議論は1ビット誤り訂正可能なハミング符号を対象とした。では,2ビッ
ト の 誤 り が 訂 正 で き る ハ ミ ン グ 符 号 は ど の よ う に 構 成 で き る か ? n ビ ッ ト の 符 号 で ,2 ビ
ッ ト 誤 り 訂 正 可 能 な デ ー タ の 総 数 m を , n を 用 い て 式 で 表 せ 。m ,n な ど の 記 号 は 1 ビ ッ
トの場合と同じです。
(ヒント)1ビットの誤りに加えて,2ビットの誤りが出るビット位置の組合せの数を考
え て み る と ,・ ・ ・ ・ あ る い は , シ ン ド ロ ー ム が 3 ビ ッ ト 以 上 に な る 組 合 せ は ・ ・ ・ ・
( 解 答 を 希 望 す る 方 は [email protected] ま で , 遠 慮 な く お 問 い 合 わ せ 下 さ い )
5.まとめ
ここまで読み終えて,如何でしたか?最先端の符号誤り訂正技術のレベルが千里の先に
あるとすると,この解説が理解できた方は少なくとも一里を超えたことは確かです。何も
わからない状態から,最初の一里を超えるのが最大の難関です。それをアシストしたいと
思い,自らの非才を省みず,本稿をまとめてみました。その思いだけが空回りして,かえ
っ て わ か り に く い 解 説 か も 知 れ ま せ ん( 実 際 ,学 生 か ら は ,そ う 言 わ れ て い ま す )。諸 先 輩
におかれては,未熟な教育者の足掻きと,笑ってお許し下さい。最後に,本稿が通信教育
受講中の皆様に,僅かでもお役に立てることを願うとともに,皆様の長年の努力が何らか
の形で報われることをお祈り申し上げます。