■幾何学におけるマイ未解決問題(その22)
[1]ハミングコード
コードを高次元立方体に関連づけるのが,「ハミング距離」である.この概念は2つの文字列がまったく同じときのみ0になり,三角形のどの辺の長さもほかの2辺の長さの和以下になるなど,距離空間の性質をもっている.
たとえば,2進数文字列
10011101
10110101
は2箇所違っているので,ハミング距離は2である.
ハミングは長さ4のビット列を長さ7のビット列に変換する新たなコードを考え出した.このコードは1ビットエラーを検出して訂正できる.これに手を加えた8ビットコードは,ハミングコードと呼ばれているが,2ビットエラーを検出できるが訂正はできない.
===================================
[2]リード・ソロモンコード
2進数文字列からなる数体系に似たものに,要素の個数が素数の累乗
2,3,4,5,7,8,9,11,13,16,・・・
のガロア体と呼ばれている.とくに2の累乗の場合がデジタル通信に適している.
ガロア体から生まれたエラー訂正コードは,リード・ソロモンコードと呼ばれている.
===================================
[3]DNAコード
A,G,T,Cという4種類の記号を使って書かれたメッセージ.ヒトDNA情報は塩基30億個分からなるが,生物を作るにはそれよりもはるかに多くのものが必要で,エピジェネティック因子も考えに入れなければならない.
===================================
全体としてツリー様の配列をとり,隣接するブドウの房との間を横方向に連結させた場合,2つの多面体,たとえばw1=(010110)とw2=(101001)の距離を求めることを考える.
[1]それぞれの群内のハミング距離を求める.たとえば
b1=(010010)とw1のハミング距離は1
b2=(100001)とw2のハミング距離は1
→深さ方向の差はない.
[2]b1とb2のマンハッタン距離を求める.まず,横方向の差であるが,
b=(01,・・,0u,1,01,・・,0v,1,01,・・,0w)
を
b=(01,・・,0u,1,01,・・,0w)=「1」
または
b=(01,・・,0u,1,1,01,・・,0w)=「11」
に変換する.
1つ左にいくと左右のポインタが1つずつ内側に,1つ右にいくと左右のポインタが1つずる外側に移動するから,vが偶数の場合のステップ数はv/2,奇数の場合は(v+1)/2,すなわち,いずれの場合も
[(v+1)/2]
ステップとなる.
b1=(010010)→(001100)になるステップ数は1
b2=(100001)→(001100)になるステップ数は2
その差は1である.
[3]次に,縦方向の差を求める.1の数が同じ場合,たとえば,
b1=(001100),b2=(110000)→差は4
b1=(001100),b2=(010000)→差は2
b1=(001100),b2=(001100)→差は0
b1=(001100),b2=(000110)→差は2
b1=(001100),b2=(000011)→差は4
すなわち,1ビットのシフトは2差に相当する.
b1=(001000),b2=(100000)→差は4
b1=(001000),b2=(010000)→差は2
b1=(001000),b2=(001000)→差は0
b1=(001000),b2=(000100)→差は2
b1=(001000),b2=(000010)→差は4
b1=(001000),b2=(000001)→差は6
この場合も1ビットのシフトは2差に相当する.
1の数が異なる場合,「1」を規準にしてみると,
b1=(001000),b2=(110000)→差は3
b1=(001000),b2=(011000)→差は1
b1=(001000),b2=(001100)→差は1
b1=(001000),b2=(000110)→差は3
b1=(001000),b2=(000011)→差は5
「11」を規準にしてみると,
b1=(001100),b2=(100000)→差は5
b1=(001100),b2=(010000)→差は3
b1=(001100),b2=(001000)→差は1
b1=(001100),b2=(000100)→差は1
b1=(001100),b2=(000010)→差は3
b1=(001100),b2=(000001)→差は5
[4]求める間マンハッタン距離は[1]+[2]+[3]
すなわち,深さ方向の差0+横方向の差1+縦方向の差0
===================================