スポンサーリンク

「誤り訂正可能符号を理解しよう!〜ハミング距離の応用〜」【幾何学の基礎シリーズ】グラフ理論編 その11

グラフ理論

本記事の内容

本記事は誤り訂正可能符号について解説する記事です。
本記事を読むにあたり、ハミンググラフ、ハミング距離について知っている必要があるため、以下の記事も合わせてご覧ください。

本記事で言いたいこと

ハミング距離が情報理論で果たす役割が本記事で言いたいことです。

アスキー・コード

ある人AAが、離れた場所に居るBBに何らかのメッセージを伝えるとき、よく使われる手段は、電話、無線、あるいはメールなどの通信装置です。
これらの通信装置は、一旦AAから送られるメッセージを符号化(信号化)して、電話線や電波などの信号を運ぶ媒体(チャンネル)を通して、受信装置に贈り、それをもとに戻して(復号化して)受信者BBがメッセージを受け取る、という方法です。

誠に平たく言えば、AAからのメッセージを機械の言葉に一度翻訳してBBに送り、BBが機械の言葉を人間の言葉に翻訳し直すことでAABBは意思疎通を図っている、というわけです。

この機構は

送信者AA符号化チャンネル復号化受信者BB

と表現されます。

符号の文字(先程の説明で言うと、機械の言葉)が0011のみから成る場合を考えます。
英語の平文で書かれたメッセージを符号化するのに使われるのがアスキー・コード(ASCII)です。
これはAmerican Standard Code for Information Interchangeの略で、英語の各アルファベットや「!」、「#」、「&」などの記号にも7桁の2進数(0と1を使って表す数)を対応させています。
文字列はこれらの2進数を並べて表します。

A1000001N1001110
B1000010O1001111
C1000011P1010000
D1000100Q1010001
E1000101R1010010
F1000110S1010011
G1000111T1010100
H1001000U1010101
I1001001V1010110
J1001010W1010111
K1001011X1011000
L1001100Y1011001
M1001101Z1011010
大文字に対するASXII 2進数

例えば、「CAT」なら「(C)1000011」と「(A)1000001」と「(T)1010100」を並べて「100001110000011010100」と表現します。

符号化と復号化は暗号の理論に関連しますが、ここでは扱いません。
ここでは、チャンネル(電波や電話線などの信号を運ぶ媒体)で起こり得る問題を扱います。

ノイズ

もし、チャンネル(信号を伝える媒体)を通して、符号がそのまま伝われば問題有りませんが、実際には送信の途中で雑音(ノイズ)が加わり、受信したときの符号が送信したときの符号と異なることがあります。

身近で言うと、Bluetoothイヤホンを電子レンジの近くで稼働させたときがイメージが湧きやすいのではないでしょうか。
Bluetoothイヤホンを電子レンジの近くで使うと、音が途切れたり音質が落ちたりしますよね。
これはBluetoothの周波数と電子レンジの周波数が近いため、互いに干渉することが原因です。

もっと身近で言えば、お祭りやらライブやらの最中に話そうとすると、周りの音が大きいがゆえに、意味が通らない言葉に聞き間違いをしたりと意思疎通がしにくかったりしますよね。
そんなイメージです。
広く言えば、世の中は電波で溢れていて、しかも電波は”波”なので互いに干渉してしまいます。
それがノイズの例です。

このような雑音が激しく、符号で使われている文字の入れ替わりが多ければ、復号することは難しくなります。
しかし、雑音による文字の変動があまり多くないときには、次のような符号のアイディアで正しく復号することが出来ます。

ノイズによる信号の変動が少ないときは正しく復号出来ます。

予め送られるメッセージの符号が決められていて(例えばASCII2進数を採用したとして)、その種類を\(A\)とBBの両人が知っているとします。
例えば、4種類の長さが8の符号
a1=(1,1,1,0,1,0,0,0)a2=(1,1,0,1,0,1,0,0)a3=(1,0,1,1,0,0,1,0)a4=(1,1,1,1,1,1,1,1)
が決められていたとしましょう。
つまり、先のASCII2進数の表に対応するのがa1a2a3a4です。
Aはこの中の符号をBに送ります。

例えばAが送信した符号が
a=(1,1,1,0,1,0,0,0)=a1
だったとします。
ところが、雑音によりBが受信した符号が
a=(1,1,1,0,1,1,0,0)
のようになってしまうこともあり得るわけです(6番目の01に変わっています)。
このとき、元の符号を復元しようとするとき、どのようにすれば良いでしょうか。

上で与えた符号のリストの中で、Bが受信したaに「最も近い」符号が、Aが送った符号と(断定は出来ないけれど)判断して良いでしょう。
この「符号の近さ」を定量的に定式化したものがハミング距離なのです。

ハミング距離をサラッと復習します。

ハミング距離

長さnの文字列a,bVに対して、 d(a,b)=|{i{1,,n}| aibi}| とし、この距離dハミング距離(Hamming distance)という。

詳しくは【幾何学の基礎シリーズ】グラフ理論編 その10を御覧ください。

要するに、長さが同じ文字列abが何文字異なるか、ということを表しているのが関数dです。

このハミング距離でaに最も近いのはa1=(1,1,1,0,1,0,0,0)だから、Bは、Aが送った符号はa1だ、と判断できるわけです。

要するに何が言いたいかと言うと、

お互いに符号の表を知っていれば、ノイズで符号が変わったとしても、ハミング距離でもって元の符号を推定出来る。

ということです。
少々粗をつくことを言えば、ノイズで変わってしまった符号とハミング距離が同じ符号が複数ある場合は判断しかねます。

今の話を一般化します。

先程述べたことを一般化してみます。

以下、前節の設定を用いて、符号で使われる文字の集合をWとして、符号の長さはnNで固定されているとします。

※以下で定めることは、後でまとめます。

符号全体の集合はWn個の直積集合V=W××W (n個の直積)です。さらに、|W|=qとします。
故に|V|=qnです。
例えば、先のa1a2a3a4についてはW={0,1}q=2n=8です。

M(MessageのM)を送りたいメッセージの集合とすると、Mの符号化というのは、MからVへの単射φ:MVのことです。
「全単射じゃないの?」と思うかもしれませんが、もし全単射であれば、メッセージが1つ1つ重複なく対応しているわけですので、ノイズが乗っていない、ということになってしまいます。

また、ψφ=IM、すなわち全てのメッセージmMに対して、ψ(φ(m)=m)を満たすような写像ψ:VMを復号化と言います。

では、ノイズ(雑音)はどのように定めたら良いでしょうか。
雑音の原因は様々ですし、完全な記述というのは困難を極めます。
そこで、雑音がもたらす結果のみに着目することにしましょう。
つまり、雑音がもたらす符号の変化に焦点を当てる、というわけです。

これをVからVへの”ある特別な”性質を満たす写像ω:VVから成る集合Ωのことを雑音と呼びましょう。

もし、全てのωΩに対して、ψωφ=IMとなるような復号化ψを持つとき、符号化φは雑音Ωによる誤りを訂正できる(error-correcting)と呼ぶことにします。

以上のことをまとめて書くと、次です。

符号、復号の一般化

符号で使われる文字の集合をWとして、符号の長さはnNで固定されているとする。
  1. 符号全体の集合
  2. V=W××W すなわち、Vn個のWの直積集合である。
  3. |W|=q
  4. Mは送りたいメッセージの集合
  5. Mの符号化
  6. M符号化とはMからVへの単射φ:MVのこと。
  7. Vの復号化
  8. ψφ=IM、すなわち全てのメッセージmMに対して、ψ(φ(m)=m)を満たすような写像ψ:VM復号化と呼ぶ。
  9. 雑音
  10. ω:VVから成る集合Ωのことを雑音と呼ぶ。
  • 誤りを訂正できる
  • 全てのωΩに対して、ψωφ=IMとなるような復号化ψを持つとき、符号化φは雑音Ωによる誤りを訂正できる(error-correcting)と呼ぶ。

    雑音の程度

    雑音の程度e(φ,Ω)を定めます。

    雑音の程度

    dV上のハミング距離とする。符号化φが与えられたとき、雑音Ω程度e(φ,Ω)e(φ,Ω)=maxmM, ωΩd(φ(m),ω(φ(m))) で定める。

    要するに、どういうことかというと

    送信した符号と雑音により変化した符号の距離(ハミング距離)を測り、全てのメッセージとの場合に考えたときの最大値を雑音の程度と呼ぶ。

    ということです。

    訂正可能な符号化を求めるには?

    一般化する前の例のお話を思い出すと、訂正可能な符号化を求めるには、雑音の程度と比較して
    d(φ)=minm1m2Md(φ(m1),φ(m2))
    を大きくすれば良いわけですが、正確には次の定理が成り立ちます。

    定理1.

    もし、d(φ)2e(φ,Ω)+1が成り立てば、符号化φの誤りを訂正できる。逆にe(φ,Ω)eとなる全ての雑音Ωについて、φが誤り訂正可能であれば、d(φ)2e+1である。

    定理1.の証明

    符号化φ:MVは単射なので、メッセージの集合Mを符号化による像φ(M)Vと同一視することで、MVの部分集合と思っても良いです。
    このとき、符号化は包含写像ι:MVと一致します。

    d(φ)2e(φ,Ω)+1が成り立てば、符号化φの誤りを訂正できることの証明

    e=e(φ,Ω)として、M={a1,a2,,ak}Vとします。
    ただし、kはメッセージの数です。
    ここで、φ(ai)=aiに注意しましょう。
    Bi(e)={aV|d(a,ai)e} (i=1,2,,k)
    とおくと、任意のωΩに対してω(ai)Bi(e)であり、さらに
    Bi(e)Bj(e)= (ij)
    となります。
    実際、仮にaBi(e)Bj(e)とすると、dは距離関数なので、三角不等式が成り立つから
    d(ai,aj)d(ai,a)+d(a,aj)2e
    となって、d(φ)2e+1に反します。

    さて、今示したことを使って復号化ψ:VMを、
    ψ(a)={ai(aBi(e))V(aki=1Bi(e))
    で定めます。
    ψ(ai)=aiだから、これを符号化φを用いて書き直すと、ψφ=IMが得られるので、ψは復号化です。
    さらに、ω(ai)Bi(e)であることから、ψ(φ(ai))=aiも成り立ち、これも書き直せば、ψωφ=IMとなり、φは誤り訂正可能です。

    e(φ,Ω)eとなる全ての雑音Ωについて、φが誤り訂正可能であれば、d(φ)2e+1であることの証明

    d(ai,ω(ai))e(i=1,2,,k)
    を満たすω:VVを任意に取ります。
    Ω={ω}とすると、
    e(φ,Ω)=max{d(ai,ω(ai))|i=1,,k}e
    だから、仮定によりφは誤り訂正可能です。
    すなわち、ψ(ω(ai))=ai (i=1,,k)を満たす復号化ψ:VMが存在します。

    任意の番号st (1s,tk)についてBs(e)Bt(e)=であることを示しましょう。
    背理法により示します。
    仮にBs(e)Bt(e)に属する符号xが存在するとしましょう。
    これを用いてω:VV
    ω(as)=ω(at)=x,ω(au)=au(us,t)
    で定めます。
    これは、d(ai,ω(ai))e (i=1,,k)を満たします。
    実際、
    d(as,ω(as))ed(at,ω(at))ed(au,ω(au))e(i=1,,k)
    です。
    しかし、上で述べたことからψ(ω(ai))ai (i=1,,k)を満たす復号化ψ:VMが存在するので、
    as=ψ(ω(as))=ψ(x)=ψ(ω(at))=at
    となって矛盾です。
    故にBs(e)Bt(e)=です。

    さて、定理の結論を否定してみます(背理法)。
    d(φ)2e+1の否定はd(φ)2eとなるから、d(ai,aj)2eを満たすai,aj (ij)が存在することになります。
    zV
    d(ai,aj)=d(ai,z)+d(z,aj),d(ai,z)e,d(z,aj)e
    を満たすように取ることが出来るから、zBs(e)Bt(e)となって、Bs(e)Bt(e)=に矛盾します。
    従って証明完了です。

    定理1.の証明終わり

    文字の数、符号の長さ、雑音の程度を固定したときは?

    文字の数q=|W|と符号の長さn、及び雑音の程度(の上限)eを固定したとき、どの程度の数のメッセージを、誤り訂正できるような符号に直すことが出来るかを考えます。
    つまり、メッセージ数|M|の上限を求めたいわけです。
    これに答えるのが次の定理です。

    定理2.

    e(φ,Ω)eとなる全ての雑音Ωについて、φが誤り訂正可能であれば、 |M|(eh=0nCh(q1)h)qn が成り立つ。この不等式をハミングの限界式という。

    定理2.の証明

    定理1.の証明と同様に、M={a1,,ak}とします(k=|M|)。
    仮定から、定理1.の後半を用いて、d(φ)2e+1です。
    さらに、定理1.の証明から{Bi(e)}ki=1は互いに交わりません。

    Bi(e)=eh=0{x|d(x,ai)=h}
    となることに注意しましょう。
    ここで、次の事実を使います。

    命題3.

    aVh0に対して、 {xV|d(x,a)=h}=nCh(q1)h である。ただし、 nCh={n!h!(nh)!(1hn1)1(h=0,n)0(h>n) とする。

    補題3.の証明

    d(x,a)=0となるxaのみであることと、任意のxに対してd(x,a)nであることに注意すると、1hnの場合についてのみ証明すれば良い事がわかります。

    d(x,a)=hということは、文字列xaの中で異なる文字を持つ場所の個数がh個ということです。
    h個の場所i1,,ihの選び方の総数はnCh個であり、h個の場所i1,,ihを選べば、それぞれのis (1sh)aの中の文字と異なる文字の個数は|W|1であるため、場所i1,,ihaと異なる文字を選ぶ選び方は(|W|1)h通りあります。
    従って、証明完了です。

    補題3.の証明終わり

    定理2.の証明に戻りましょう。

    補題3.から、
    |{x|d(x,ai)=h}|=nCh(q1)h
    だから、
    |Bi(e)|=eh=0nCh(q1)h
    となり、特に、|Bi(e)|iには依存しません。
    {Bi(e)}ki=1が互いに交わらないことから
    ki=1|Bi(e)||V|
    となり、これに()を代入すると、
    k(eh=0nCh(q1)h)qn
    が得られます。
    従って証明完了です。

    定理2.の証明終わり

    情報理論における重要な問題の1つは、できるだけ多くのメッセージを誤り訂正可能なように符号化する方法を見出すことです。
    この問題では、整数論や代数幾何学などが用いられています。

    皆様のコメントを下さい!

    今回のジョークはこれです。

    ジョーク
    社会学者、物理学者、そして数学者が同じ長さの閉じたロープによって最大の面積を持つ領域を囲む方法を考えています。
    社会学者は正方形の囲いを作りました。
    物理学者は円の面積が周囲長の同じ正方形より大きいことを思い出して円を作りました。
    そして「君はこれよりも大きくすることが出来るかい?」と数学者に問いかけました。
    すると、数学者は円形のロープで自分を囲んで「私が今立っているところを外側と定める。」と言ったそうな。

    地表のような球面に円を置いたとき、円によって分けられる2つの領域のどちらが囲まれた内側か、ということはそれだけでは数学者にとっては明らかなことではありません。
    普通は物理学者のように発想します。
    極端に言えば、赤道の周長と同じ長さのロープで囲むものとして読めば、何らおかしなことを言ってないはずです。
    面をロープで囲むという簡単な問題ですら数学者にとっては単純ではない問題ということを示しているのがこのジョークです。

    他にご存知のジョークをコメント欄で教えて下さい!

    今回は、ハミング距離との応用として、誤り訂正可能符号について解説しました。
    これはグラフ理論の情報理論での応用例です。

    我々が普段何気なく使っているツールの根幹には数学が隠れている、という良い例だと思います。

    次回は誤り産業連関について解説します。

    乞うご期待!
    質問、コメントなどお待ちしております!
    どんな些細なことでも構いませんし、「定理〇〇の△△が分からない!」などいただければ全てお答えします!
    お問い合わせの内容にもよりますが、ご質問はおおよそ3日以内にお答えします。
    もし直ちに回答が欲しければその旨もコメントでお知らせください。直ちに対応いたします。

    コメントをする

    タイトルとURLをコピーしました