Math World Lab

誤り訂正符号とハミング符号の数学

宇宙探査機からQRコード、Wi-Fi、SSDまで — 壊れたビットを自己修復する数理マジック

1001自動修復Hamming(7,4) s = H · r
この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
通信ノイズで0と1が反転(ビット反転)しても、パリティビットを巧みに配置することで『どのビットが壊れたか』を特定し自動修復できる
2
ハミング(7,4)符号は4ビットのデータに3ビットの冗長検査ビットを加え、1ビットの誤りを100%自動訂正する
3
数学的にはベクトル空間上の『ハミング距離』とパリティ検査行列 HH のシンドローム計算(s=Hrs = H r)で反転位置を一発検出する

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

NASAのボイジャー探査機が何百億キロ彼方の宇宙から鮮明な木星の写真を送ってこられるのも、汚れたQRコードがスマホで瞬時に読めるのも、すべて誤り訂正符号のおかげです。

身につく武器・思考力

有限体 $\mathbb{F}_2$ 上の線形代数の直感理解、デジタル通信の根幹プロトコルの把握、自己修復アルゴリズムの思考法

実社会・ITでの活躍現場

  • •QRコードの汚れ・欠損耐性(リード・ソロモン符号で最大30%欠損しても読める)
  • •サーバー用ECCメモリ(宇宙線によるビット反転エラーの自動訂正)
  • •5G・Wi-Fi・地上波デジタル放送の伝送路符号化(LDPC符号・ポーラー符号)
  • •宇宙深宇宙通信(NASAボイジャー探査機のゴーレイ符号)

Layer 1 — 直感・シミュレーター

4ビットの元データ(例: 1011)を入力すると、自動的に3つのパリティビットが付加されて7ビットの符号語が作られます。送られた7ビットのうち好きな1ビットをクリックして『ノイズ反転』させてみてください。シンドローム計算機が壊れた位置を即座に特定し、元のデータへと自己修復する様子を体験できます。

デジタル通信の自己修復マジック

ハミング(7,4)符号:ビットを1つわざと壊してみよう!数学が瞬時に場所を特定して直します

4ビットのデータに3つの検査ビット(パリティ)を計算して付加。 受信側では連立方程式(シンドローム行列)を計算するだけで、どのビットが壊れたかが自動的に2進数として表示されます。

ステップ 1: 送信したい 4ビットのデータ(クリックで 0/1 切替)
生成された検査ビット(パリティ): p1=0, p2=1, p3=0
ステップ 2: 通信路の7ビット(好きなビットをクリックしてノイズ混入!)
ステップ 3: 受信機のシンドローム計算機(パリティ検査行列 H · r)
パリティ検査 s1
0
ビット 1,3,5,7
パリティ検査 s2
0
ビット 2,3,6,7
パリティ検査 s3
0
ビット 4,5,6,7
シンドロームの2進数表記: (000)₂ = 0
エラーなし(データ完全)
直感チェック!ミニクイズ

ハミング(7,4)符号において、受信した7ビットのシンドロームベクトルを2進数で読んだ結果が「(1, 0, 1)₂ = 5」であったとき、どのビットが壊れているか?

Layer 2 — 定義・受験・証明

定義

**ハミング(7,4)符号**とは、4ビットの情報ビット d=(d1,d2,d3,d4)d = (d_1, d_2, d_3, d_4) に対し、3ビットのパリティ検査ビット p=(p1,p2,p3)p = (p_1, p_2, p_3) を付加して7ビットの符号語 cc を構成する線形符号である。

公式・数理モデル

生成行列: c=dG(mod2)シンドローム検査: s=HrT(mod2)(r は受信ベクトル。s=0 なら誤りなし、s≠0 なら s の値が誤りビットの位置を示す)\text{生成行列: } c = d G \pmod 2 \text{シンドローム検査: } s = H r^T \pmod 2 \text{(} r \text{ は受信ベクトル。} s = 0 \text{ なら誤りなし、} s \ne 0 \text{ なら } s \text{ の値が誤りビットの位置を示す)}

証明・導出

**シンドローム計算による誤り特定原理**

パリティ検査行列 HH(3×73 \times 7)の各列は、1から7の整数の2進数表現になっている:

H=(000111101100111010101)H = \begin{pmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 & 1 & 0 & 1 \end{pmatrix}

送信語 cc は HcT=0H c^T = 0 を満たすように設計されている。 もし第 ii ビットに誤り(誤りベクトル e=[0,…,1,…,0]e = [0,\dots,1,\dots,0])が生じて r=c+er = c + e を受信した場合、シンドローム ss を計算すると:

s=HrT=H(c+e)T=HcT+HeT=0+HeT=(Hの第i列)s = H r^T = H (c + e)^T = H c^T + H e^T = 0 + H e^T = (H \text{の第} i \text{列})

HH の第 ii 列はまさに整数 ii の2進数表現であるため、シンドローム ss を2進数として読むだけで、**何ビット目が壊れたかが直接表示される**のである!反転したビットを再度反転(0→1,1→00 \to 1, 1 \to 0)させるだけで、完全なデータが復元される(Q.E.D.)。

押さえておきたいポイント

  • 符号語同士の最小ハミング距離が dmin⁡=3d_{\min} = 3 であるため、1ビット誤り訂正・2ビット誤り検出が可能
  • 冗長性(ビット数の増加)と信頼性のトレードオフを数理的に極限まで最適化した符号
  • 現代のQRコードやCD/DVD/Blu-rayでは、より強力な『リード・ソロモン符号(Reed-Solomon)』が使われている
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

Pythonによるハミング(7,4)符号のエラー注入と自動訂正

通信ノイズシミュレーションとシンドローム復号のPython実装です。

1import numpy as np
2
3# パリティ検査行列 H (3x7)
4H = np.array([
5 [0, 0, 0, 1, 1, 1, 1],
6 [0, 1, 1, 0, 0, 1, 1],
7 [1, 0, 1, 0, 1, 0, 1]
8])
9
10def decode_hamming(received_bits):
11 """received_bits: 長さ7のリスト (0 or 1)"""
12 r = np.array(received_bits)
13 # シンドローム s = H * r^T mod 2
14 s = np.dot(H, r) % 2
15
16 # 2進数ベクトルを整数に変換
17 error_pos = s[0]*4 + s[1]*2 + s[2]*1
18
19 if error_pos == 0:
20 print("エラーなし!正常に受信しました。")
21 else:
22 print(f"第 {error_pos} ビットに誤りを検出!自己修復します。")
23 r[error_pos - 1] = 1 - r[error_pos - 1] # ビット反転修復
24
25 return r
この単元につながる学習ロードマップ

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高高校数学

行列の基本とアフィン変換

2×2行列で平面の空間を伸縮・回転・せん断させる幾何学

"PASS"c=mᵉ%n
関連度高工学応用

RSA暗号と素数の秘密(公開鍵暗号)

「掛け算は簡単だが、素因数分解は極めて困難」という非対称性を利用した現代暗号の金字塔

|0⟩|1⟩|ψ⟩Bloch Sphere & Qubit
関連度高大学数学

量子力学と線形代数(量子ビットの状態ベクトルとブロッホ球)

0と1の重ね合わせ、複素ヒルベルト空間の内積、そしてユニタリ行列による量子ゲート操作の数理

同じレベルで次に挑戦したいトピック

同レベル推薦大学数学

固有値・固有ベクトル

行列で変換しても「向きが変わらない」特別な方向

同レベル推薦大学数学

フーリエ変換と周波数分解

どんなに複雑な波も、単純なサイン波の重ね合わせに分解できる

同レベル推薦大学数学

ベイズの定理(条件付き確率と事前・事後確率)

新たな情報や証拠(エビデンス)を得て「確信度」を更新する確率論

工学・実社会での応用先でつながるトピック

工学・実践連携小学校・算数

最小公倍数・最大公約数

数直線に並ぶ倍数と、ユークリッドの互除法で公約数を探る

xy122436
工学・実践連携中学数学

関数の概念と対応表

「1つの入力にはただ1つの出力」というルールを対応表で確かめる

🎂🎂MATCH!わずか23人で 50.7%
工学・実践連携中学数学

誕生日問題(直感に反する確率のパラドックス)

「わずか23人で50%以上が同じ誕生日?」人間の直感がバグる組み合わせ爆発の謎

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。