0 と 1 の列を、ときどきビットが反転する通信路で送るとき、列に余分な情報を付けておけば、受け取った側で誤りに気づいたり直したりできます。この記事では、余分な情報の付け方(符号)をどう決めればよいか、またどれだけうまく付けられるかには限界があるのか、を数え上げと線形代数で調べます。読み終えると、符号の「強さ」を表す数を計算でき、7 ビットの符号で 1 ビットの誤りを実際に直せるようになります。
符号は F q n \mathbb{F}_q^n F q n の部分集合で、符号語どうしの Hamming 距離の最小値 d d d が性能を決めます。最小距離 d d d の符号は d − 1 d - 1 d − 1 個までの誤りを検出し、⌊ ( d − 1 ) / 2 ⌋ \lfloor (d-1)/2 \rfloor ⌊( d − 1 ) /2 ⌋ 個までの誤りを訂正します。
線形符号は F q n \mathbb{F}_q^n F q n の部分空間 です。生成行列 G G G (基底 を並べた行列)と検査行列 H H H (符号を核とする行列)の 2 通りで記述でき、H H H は双対符号 C ⊥ C^{\perp} C ⊥ の生成行列です。
最小距離は、検査行列の列のうち一次従属になる最小の本数に等しくなります。符号の設計は「どの d − 1 d - 1 d − 1 本も一次独立な列を集める」問題になります。
符号長 n n n 、次元 k k k 、最小距離 d d d は同時には大きくできません。Singleton 限界 d ≤ n − k + 1 d \le n - k + 1 d ≤ n − k + 1 、Hamming 限界(球充填)、Plotkin 限界、Griesmer 限界が上から抑え、Gilbert–Varshamov 限界が「ここまでは必ず作れる」ことを保証します。
Hamming 符号は Hamming 限界を等号で満たす完全符号(符号語を中心とする球で空間をすき間なく埋め尽くす符号。§5 で定義します)で、双対の単体符号はすべての符号語の重みが等しくなります。
誤り率 p < 1 / 2 p < 1/2 p < 1/2 の二元対称通信路(各ビットが独立に確率 p p p で反転する通信路)では、情報率が 1 − H ( p ) 1 - H(p) 1 − H ( p ) (H H H は §7 の二元エントロピー関数)より小さければ、復号誤り確率をいくらでも小さくする線形符号が存在します(Shannon の符号化定理の順方向)。
この記事で使う事前知識
有限体 F q \mathbb{F}_q F q : 元が q q q 個で、四則演算ができる体。→ 有限体の構造
部分空間 : 和とスカラー倍で閉じているベクトルの集まり。→ 部分空間
次元 : 基底に含まれるベクトルの本数。→ 次元
零化空間・双対空間 : 部分空間のすべての元で 0 0 0 になる線形形式の全体が零化空間。→ 零化空間
剰余類 : 部分空間 C C C を y \boldsymbol{y} y だけずらした集合 y + C \boldsymbol{y} + C y + C 。→ 本文 §4 で使います。
期待値 (§8 のみ): 値と確率の積の和。→ 期待値
0 0 0 と 1 1 1 の列を、ときどきビットが反転する通信路で送るとします。そのまま送れば、受け取った側は誤りがあったかどうかも分かりません。そこで送る列に冗長な部分を付け加えます。最も素朴なのは同じビットを 3 回送る方法で、0 ↦ 000 0 \mapsto 000 0 ↦ 000 、1 ↦ 111 1 \mapsto 111 1 ↦ 111 とすれば、1 個のビットが反転しても多数決で直せます。ただし通信量は 3 倍になります。
もっと上手な方法があります。4 ビットの情報に 3 ビットの検査ビットを付け加えた 7 ビットを送ると、どの 1 ビットが反転しても直せます(Hamming 符号)。通信量は 7 / 4 7/4 7/4 倍で済みます。違いを生むのは、冗長な部分の作り方、つまり「送ってよい列の集合」の選び方です。
この記事の問いは 2 つです。第 1 に、よい符号とは何で、どう記述するか。答えは「符号語どうしが Hamming 距離で遠く離れた集合」で、それを部分空間に限ると線形代数の言葉(生成行列・検査行列)で書けます。第 2 に、符号の良さにはどんな限界があるか。答えは数え上げによるいくつかの不等式です。
文字の集合は 第 1 章 の有限体 F q \mathbb{F}_q F q (q = p e q = p^e q = p e 個の元をもつ体。命題 2.4[有限体の構造] )とします。ここで定める語彙は、第 4 章 の巡回符号と 第 5 章 の重み分布でそのまま使います。Singleton 限界を等号で満たすのが Reed–Solomon 符号、Hamming 限界を等号で満たすのが Hamming 符号と Golay 符号です。
F q n \mathbb{F}_q^n F q n の元は行ベクトル x = ( x 1 , … , x n ) \boldsymbol{x} = (x_1, \ldots, x_n) x = ( x 1 , … , x n ) で書き、誤解のないときは成分を並べて 1011 1011 1011 のようにも書きます。
定義 2.1 (Hamming 距離・Hamming 重み ) ↗
x , y ∈ F q n \boldsymbol{x}, \boldsymbol{y} \in \mathbb{F}_q^n x , y ∈ F q n に対し、
d ( x , y ) = # { i : x i ≠ y i } , w t ( x ) = # { i : x i ≠ 0 } = d ( x , 0 ) d(\boldsymbol{x}, \boldsymbol{y}) = \#\{\, i : x_i \ne y_i \,\}, \qquad \mathrm{wt}(\boldsymbol{x}) = \#\{\, i : x_i \ne 0 \,\} = d(\boldsymbol{x}, \boldsymbol{0}) d ( x , y ) = # { i : x i = y i } , wt ( x ) = # { i : x i = 0 } = d ( x , 0 ) をそれぞれ Hamming 距離 、Hamming 重み という。{ i : x i ≠ 0 } \{i : x_i \ne 0\} { i : x i = 0 } を x \boldsymbol{x} x の台 といい s u p p ( x ) \mathrm{supp}(\boldsymbol{x}) supp ( x ) と書く。
命題 2.2 (Hamming 距離は距離 ) ✓
すべての x , y , z ∈ F q n \boldsymbol{x}, \boldsymbol{y}, \boldsymbol{z} \in \mathbb{F}_q^n x , y , z ∈ F q n について次が成り立つ。
d ( x , y ) ≥ 0 d(\boldsymbol{x}, \boldsymbol{y}) \ge 0 d ( x , y ) ≥ 0 で、d ( x , y ) = 0 ⟺ x = y d(\boldsymbol{x}, \boldsymbol{y}) = 0 \iff \boldsymbol{x} = \boldsymbol{y} d ( x , y ) = 0 ⟺ x = y 。
d ( x , y ) = d ( y , x ) d(\boldsymbol{x}, \boldsymbol{y}) = d(\boldsymbol{y}, \boldsymbol{x}) d ( x , y ) = d ( y , x ) 。
d ( x , z ) ≤ d ( x , y ) + d ( y , z ) d(\boldsymbol{x}, \boldsymbol{z}) \le d(\boldsymbol{x}, \boldsymbol{y}) + d(\boldsymbol{y}, \boldsymbol{z}) d ( x , z ) ≤ d ( x , y ) + d ( y , z ) 。
d ( x + z , y + z ) = d ( x , y ) = w t ( x − y ) d(\boldsymbol{x} + \boldsymbol{z}, \boldsymbol{y} + \boldsymbol{z}) = d(\boldsymbol{x}, \boldsymbol{y}) = \mathrm{wt}(\boldsymbol{x} - \boldsymbol{y}) d ( x + z , y + z ) = d ( x , y ) = wt ( x − y ) 。また a ∈ F q × a \in \mathbb{F}_q^{\times} a ∈ F q × なら w t ( a x ) = w t ( x ) \mathrm{wt}(a\boldsymbol{x}) = \mathrm{wt}(\boldsymbol{x}) wt ( a x ) = wt ( x ) 。
証明(命題 2.2) (1)(2) は定義から直接分かります(成分が 1 つも異ならないことは 2 つのベクトルが等しいことです)。
(3) x i ≠ z i x_i \ne z_i x i = z i なら、x i ≠ y i x_i \ne y_i x i = y i または y i ≠ z i y_i \ne z_i y i = z i です(どちらも等しければ x i = y i = z i x_i = y_i = z_i x i = y i = z i )。したがって { i : x i ≠ z i } ⊆ { i : x i ≠ y i } ∪ { i : y i ≠ z i } \{i : x_i \ne z_i\} \subseteq \{i : x_i \ne y_i\} \cup \{i : y_i \ne z_i\} { i : x i = z i } ⊆ { i : x i = y i } ∪ { i : y i = z i } で、元の個数を比べれば不等式が出ます。
(4) x i + z i ≠ y i + z i ⟺ x i ≠ y i ⟺ x i − y i ≠ 0 x_i + z_i \ne y_i + z_i \iff x_i \ne y_i \iff x_i - y_i \ne 0 x i + z i = y i + z i ⟺ x i = y i ⟺ x i − y i = 0 です。a ≠ 0 a \ne 0 a = 0 なら a x i ≠ 0 ⟺ x i ≠ 0 a x_i \ne 0 \iff x_i \ne 0 a x i = 0 ⟺ x i = 0 です。
∎
定義 2.3 (符号・最小距離 ) ↗
F q n \mathbb{F}_q^n F q n の空でない部分集合 C C C を(F q \mathbb{F}_q F q 上の)長さ n n n の符号 、その元を符号語 という。∣ C ∣ ≥ 2 |C| \ge 2 ∣ C ∣ ≥ 2 のとき
d ( C ) = min { d ( c , c ′ ) : c , c ′ ∈ C , c ≠ c ′ } d(C) = \min\{\, d(\boldsymbol{c}, \boldsymbol{c}') : \boldsymbol{c}, \boldsymbol{c}' \in C,\ \boldsymbol{c} \ne \boldsymbol{c}' \,\} d ( C ) = min { d ( c , c ′ ) : c , c ′ ∈ C , c = c ′ } を C C C の最小距離 という。長さ n n n 、符号語の個数 M M M 、最小距離 d d d の符号を ( n , M , d ) q (n, M, d)_q ( n , M , d ) q 符号という。R = log q M n R = \dfrac{\log_q M}{n} R = n log q M を情報率 、δ = d / n \delta = d/n δ = d / n を相対距離 という。
受信語 y ∈ F q n \boldsymbol{y} \in \mathbb{F}_q^n y ∈ F q n に対し、d ( c , y ) d(\boldsymbol{c}, \boldsymbol{y}) d ( c , y ) が最小になる符号語 c \boldsymbol{c} c の 1 つを出力する復号を最小距離復号 という。
符号語 c \boldsymbol{c} c を送って y \boldsymbol{y} y を受け取ったとき、e = y − c \boldsymbol{e} = \boldsymbol{y} - \boldsymbol{c} e = y − c を誤りベクトル といい、w t ( e ) = d ( c , y ) \mathrm{wt}(\boldsymbol{e}) = d(\boldsymbol{c}, \boldsymbol{y}) wt ( e ) = d ( c , y ) を誤りの個数といいます。
定理 2.4 (最小距離と誤り検出・誤り訂正 ) ✓
C C C を最小距離 d d d の符号とし、t = ⌊ ( d − 1 ) / 2 ⌋ t = \lfloor (d - 1)/2 \rfloor t = ⌊( d − 1 ) /2 ⌋ とする。c ∈ C \boldsymbol{c} \in C c ∈ C 、y ∈ F q n \boldsymbol{y} \in \mathbb{F}_q^n y ∈ F q n とする。
(検出)1 ≤ d ( c , y ) ≤ d − 1 1 \le d(\boldsymbol{c}, \boldsymbol{y}) \le d - 1 1 ≤ d ( c , y ) ≤ d − 1 ならば y ∉ C \boldsymbol{y} \notin C y ∈ / C である。
(訂正)d ( c , y ) ≤ t d(\boldsymbol{c}, \boldsymbol{y}) \le t d ( c , y ) ≤ t ならば、c \boldsymbol{c} c 以外のすべての符号語 c ′ \boldsymbol{c}' c ′ について d ( c ′ , y ) > t ≥ d ( c , y ) d(\boldsymbol{c}', \boldsymbol{y}) > t \ge d(\boldsymbol{c}, \boldsymbol{y}) d ( c ′ , y ) > t ≥ d ( c , y ) である。したがって最小距離復号は c \boldsymbol{c} c を出力する。
(限界)d ( c , y ) = d d(\boldsymbol{c}, \boldsymbol{y}) = d d ( c , y ) = d かつ y ∈ C \boldsymbol{y} \in C y ∈ C となる c , y \boldsymbol{c}, \boldsymbol{y} c , y が存在する。また、d ( c , y ) = t + 1 d(\boldsymbol{c}, \boldsymbol{y}) = t + 1 d ( c , y ) = t + 1 かつ、ある符号語 c ′ ≠ c \boldsymbol{c}' \ne \boldsymbol{c} c ′ = c について d ( c ′ , y ) ≤ t + 1 d(\boldsymbol{c}', \boldsymbol{y}) \le t + 1 d ( c ′ , y ) ≤ t + 1 となる c , y \boldsymbol{c}, \boldsymbol{y} c , y が存在する。
証明(定理 2.4) (1) y ∈ C \boldsymbol{y} \in C y ∈ C なら、y ≠ c \boldsymbol{y} \ne \boldsymbol{c} y = c なので最小距離の定義から d ( c , y ) ≥ d d(\boldsymbol{c}, \boldsymbol{y}) \ge d d ( c , y ) ≥ d となり、仮定に反します。
(2) c ′ ∈ C \boldsymbol{c}' \in C c ′ ∈ C 、c ′ ≠ c \boldsymbol{c}' \ne \boldsymbol{c} c ′ = c とします。三角不等式(命題 2.2 の 3)より
d ( c ′ , y ) ≥ d ( c , c ′ ) − d ( c , y ) ≥ d − t ≥ t + 1 d(\boldsymbol{c}', \boldsymbol{y}) \ge d(\boldsymbol{c}, \boldsymbol{c}') - d(\boldsymbol{c}, \boldsymbol{y}) \ge d - t \ge t + 1 d ( c ′ , y ) ≥ d ( c , c ′ ) − d ( c , y ) ≥ d − t ≥ t + 1 です。最後の不等号は 2 t ≤ d − 1 2t \le d - 1 2 t ≤ d − 1 によります。
(3) 最小距離を実現する c , c ′ ∈ C \boldsymbol{c}, \boldsymbol{c}' \in C c , c ′ ∈ C (d ( c , c ′ ) = d d(\boldsymbol{c}, \boldsymbol{c}') = d d ( c , c ′ ) = d )を取ります。y = c ′ \boldsymbol{y} = \boldsymbol{c}' y = c ′ とすれば前半です。後半は、c \boldsymbol{c} c と c ′ \boldsymbol{c}' c ′ が異なる d d d 個の座標のうち t + 1 t + 1 t + 1 個(t + 1 ≤ d t + 1 \le d t + 1 ≤ d )で c \boldsymbol{c} c の成分を c ′ \boldsymbol{c}' c ′ の成分に書き換えたものを y \boldsymbol{y} y とします。d ( c , y ) = t + 1 d(\boldsymbol{c}, \boldsymbol{y}) = t + 1 d ( c , y ) = t + 1 、d ( c ′ , y ) = d − ( t + 1 ) d(\boldsymbol{c}', \boldsymbol{y}) = d - (t + 1) d ( c ′ , y ) = d − ( t + 1 ) で、d ≤ 2 t + 2 d \le 2t + 2 d ≤ 2 t + 2 なので d − ( t + 1 ) ≤ t + 1 d - (t + 1) \le t + 1 d − ( t + 1 ) ≤ t + 1 です。
∎
c c’ d = 5 t = 2
最小距離 d = 5 (t = 2 )の 2 つの符号語を中心とする半径 t の球の模式図。Hamming 距離を平面の距離に見立てた概念図で、球は交わらない。
(2) は「各符号語を中心とする半径 t t t の球が互いに交わらない」ことを言っています。d = 3 d = 3 d = 3 なら 1 個の誤りを訂正でき、d = 4 d = 4 d = 4 なら 1 個を訂正しつつ 2 個の誤りの存在を検出でき、d = 5 d = 5 d = 5 なら 2 個を訂正できます。
定義 3.1 (線形符号・生成行列 ) ↗
F q n \mathbb{F}_q^n F q n の部分空間 C C C を線形符号 という。dim C = k \dim C = k dim C = k のとき [ n , k ] q [n, k]_q [ n , k ] q 符号、さらに最小距離が d d d のとき [ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号という。C C C の基底 g 1 , … , g k \boldsymbol{g}_1, \ldots, \boldsymbol{g}_k g 1 , … , g k を行として並べた k × n k \times n k × n 行列 G G G を C C C の生成行列 という。
[ n , k ] q [n, k]_q [ n , k ] q 符号の符号語は q k q^k q k 個で、情報率は k / n k/n k / n です。生成行列を使うと、情報 u ∈ F q k \boldsymbol{u} \in \mathbb{F}_q^k u ∈ F q k を符号語 u G = ∑ i u i g i \boldsymbol{u}G = \sum_i u_i \boldsymbol{g}_i u G = ∑ i u i g i に写す符号化 F q k → C \mathbb{F}_q^k \to C F q k → C が線形同型として書けます。q k q^k q k 個の符号語を覚えておく代わりに、k k k 個の基底だけを持てば済むのが線形符号の第 1 の利点です。
命題 3.2 (最小距離は最小重み ) ✓
C ≠ { 0 } C \ne \{\boldsymbol{0}\} C = { 0 } を線形符号とすると、d ( C ) = min { w t ( c ) : c ∈ C , c ≠ 0 } d(C) = \min\{\, \mathrm{wt}(\boldsymbol{c}) : \boldsymbol{c} \in C,\ \boldsymbol{c} \ne \boldsymbol{0} \,\} d ( C ) = min { wt ( c ) : c ∈ C , c = 0 } である。
証明(命題 3.2) 右辺を w w w とします。c ≠ c ′ \boldsymbol{c} \ne \boldsymbol{c}' c = c ′ を符号語とすると、c − c ′ \boldsymbol{c} - \boldsymbol{c}' c − c ′ は C C C の 0 \boldsymbol{0} 0 でない元で、命題 2.2 の 4 より d ( c , c ′ ) = w t ( c − c ′ ) ≥ w d(\boldsymbol{c}, \boldsymbol{c}') = \mathrm{wt}(\boldsymbol{c} - \boldsymbol{c}') \ge w d ( c , c ′ ) = wt ( c − c ′ ) ≥ w です。よって d ( C ) ≥ w d(C) \ge w d ( C ) ≥ w です。逆に重み w w w の符号語 c \boldsymbol{c} c について d ( c , 0 ) = w d(\boldsymbol{c}, \boldsymbol{0}) = w d ( c , 0 ) = w で、0 ∈ C \boldsymbol{0} \in C 0 ∈ C なので d ( C ) ≤ w d(C) \le w d ( C ) ≤ w です。
∎
一般の符号では最小距離を求めるのに ( M 2 ) \binom{M}{2} ( 2 M ) 組の比較が要りますが、線形符号では M − 1 M - 1 M − 1 個の重みを見れば済みます。
証明(命題 3.3) 生成行列 G 0 G_0 G 0 から始めて、行基本変形(行の交換、行の 0 0 0 でない定数倍、ある行の定数倍を別の行に加える)と列の交換を行います。行基本変形は行の張る空間 C C C を変えず、行の一次独立性も保ちます。列の交換は座標の入れ替えです。
j = 1 , 2 , … , k j = 1, 2, \ldots, k j = 1 , 2 , … , k の順に次を行います。この時点で第 1 1 1 列から第 j − 1 j - 1 j − 1 列までは単位行列の対応する列になっているとします。第 j j j 行は 0 \boldsymbol{0} 0 でなく(行は一次独立)、第 1 , … , j − 1 1, \ldots, j - 1 1 , … , j − 1 成分は 0 0 0 なので、第 j j j 列以降に 0 0 0 でない成分があります。列を交換してそれを ( j , j ) (j, j) ( j , j ) 成分に移し、第 j j j 行を定数倍して ( j , j ) (j, j) ( j , j ) 成分を 1 1 1 にし、ほかの行から第 j j j 行の定数倍を引いて第 j j j 列のほかの成分を 0 0 0 にします。第 j j j 行の第 1 , … , j − 1 1, \ldots, j-1 1 , … , j − 1 成分は 0 0 0 なので、この操作ですでに整えた列は変わりません。k k k 回繰り返すと左の k k k 列が I k I_k I k になります。
∎
標準形では u G = ( u , u A ) \boldsymbol{u}G = (\boldsymbol{u}, \boldsymbol{u}A) u G = ( u , u A ) で、符号語の最初の k k k 成分が情報そのもの、残りの n − k n - k n − k 成分が検査記号になります。このような符号化を組織符号化 といいます。
x , y ∈ F q n \boldsymbol{x}, \boldsymbol{y} \in \mathbb{F}_q^n x , y ∈ F q n に対し x ⋅ y = ∑ i = 1 n x i y i ∈ F q \boldsymbol{x} \cdot \boldsymbol{y} = \sum_{i=1}^{n} x_i y_i \in \mathbb{F}_q x ⋅ y = ∑ i = 1 n x i y i ∈ F q と書きます。これは対称な双線形形式です。
定義 3.4 (双対符号・検査行列 ) ↗
線形符号 C ⊆ F q n C \subseteq \mathbb{F}_q^n C ⊆ F q n に対し
C ⊥ = { y ∈ F q n : x ⋅ y = 0 ( ∀ x ∈ C ) } C^{\perp} = \{\, \boldsymbol{y} \in \mathbb{F}_q^n : \boldsymbol{x} \cdot \boldsymbol{y} = 0\ (\forall \boldsymbol{x} \in C) \,\} C ⊥ = { y ∈ F q n : x ⋅ y = 0 ( ∀ x ∈ C ) } を C C C の双対符号 という。C ⊆ C ⊥ C \subseteq C^{\perp} C ⊆ C ⊥ のとき C C C は自己直交 、C = C ⊥ C = C^{\perp} C = C ⊥ のとき自己双対 であるという。
行が一次独立な行列 H H H が C = { x ∈ F q n : H x T = 0 } C = \{\boldsymbol{x} \in \mathbb{F}_q^n : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} C = { x ∈ F q n : H x T = 0 } を満たすとき、H H H を C C C の検査行列 という。
定理 3.5 (双対符号の次元と検査行列 ) ✓
C C C を [ n , k ] q [n, k]_q [ n , k ] q 符号、G G G をその生成行列とする。
C ⊥ C^{\perp} C ⊥ は [ n , n − k ] q [n, n - k]_q [ n , n − k ] q 符号である。
( C ⊥ ) ⊥ = C (C^{\perp})^{\perp} = C ( C ⊥ ) ⊥ = C 。
C ⊥ = { y : G y T = 0 } C^{\perp} = \{\boldsymbol{y} : G\boldsymbol{y}^{\mathsf{T}} = \boldsymbol{0}\} C ⊥ = { y : G y T = 0 } である。また、行列 H H H が C C C の検査行列であることと、H H H が C ⊥ C^{\perp} C ⊥ の生成行列であることは同値である。特に検査行列は ( n − k ) × n (n - k) \times n ( n − k ) × n 行列である。
G = [ I k ∣ A ] G = [\,I_k \mid A\,] G = [ I k ∣ A ] ならば、H = [ − A T ∣ I n − k ] H = [\,-A^{\mathsf{T}} \mid I_{n-k}\,] H = [ − A T ∣ I n − k ] は C C C の検査行列である。
この定理の証明の中心は、y \boldsymbol{y} y に「x \boldsymbol{x} x との内積を取る線形形式」を対応させる写像 Θ \Theta Θ です。Θ \Theta Θ が同型だと分かれば、C ⊥ C^{\perp} C ⊥ を双対空間の中の零化空間として捉えられ、次元が n − k n - k n − k だと既知の次元公式から読み取れます。
証明(定理 3.5) (1) V = F q n V = \mathbb{F}_q^n V = F q n とし、Θ : V → V ∗ \Theta : V \to V^{*} Θ : V → V ∗ を Θ ( y ) ( x ) = x ⋅ y \Theta(\boldsymbol{y})(\boldsymbol{x}) = \boldsymbol{x} \cdot \boldsymbol{y} Θ ( y ) ( x ) = x ⋅ y で定めます。Θ \Theta Θ は線形です。Θ ( y ) = 0 \Theta(\boldsymbol{y}) = 0 Θ ( y ) = 0 なら、標準基底 e i \boldsymbol{e}_i e i について y i = e i ⋅ y = 0 y_i = \boldsymbol{e}_i \cdot \boldsymbol{y} = 0 y i = e i ⋅ y = 0 なので y = 0 \boldsymbol{y} = \boldsymbol{0} y = 0 、つまり Θ \Theta Θ は単射です。dim V ∗ = n \dim V^{*} = n dim V ∗ = n (定理 2.3[双対空間と商空間] の 1)なので Θ \Theta Θ は線形同型です(系 7.5[ベクトル空間と線形変換] )。定義から、y ∈ C ⊥ \boldsymbol{y} \in C^{\perp} y ∈ C ⊥ は Θ ( y ) \Theta(\boldsymbol{y}) Θ ( y ) が C C C の上で 0 0 0 になること、つまり Θ ( y ) \Theta(\boldsymbol{y}) Θ ( y ) が C C C の零化空間 C 0 C^{0} C 0 (定義 3.3[双対空間と商空間] )に属することと同値です。よって C ⊥ = Θ − 1 ( C 0 ) C^{\perp} = \Theta^{-1}(C^{0}) C ⊥ = Θ − 1 ( C 0 ) は部分空間で、零化空間の次元公式(定理 3.4[双対空間と商空間] の 1)より dim C ⊥ = dim C 0 = n − k \dim C^{\perp} = \dim C^{0} = n - k dim C ⊥ = dim C 0 = n − k です。
(2) x ∈ C \boldsymbol{x} \in C x ∈ C はすべての y ∈ C ⊥ \boldsymbol{y} \in C^{\perp} y ∈ C ⊥ と直交するので C ⊆ ( C ⊥ ) ⊥ C \subseteq (C^{\perp})^{\perp} C ⊆ ( C ⊥ ) ⊥ です。(1) を C ⊥ C^{\perp} C ⊥ に使うと dim ( C ⊥ ) ⊥ = n − ( n − k ) = k = dim C \dim (C^{\perp})^{\perp} = n - (n - k) = k = \dim C dim ( C ⊥ ) ⊥ = n − ( n − k ) = k = dim C なので、両者は一致します(命題 5.7[ベクトル空間と線形変換] の 3)。
(3) G G G の行 g 1 , … , g k \boldsymbol{g}_1, \ldots, \boldsymbol{g}_k g 1 , … , g k は C C C を張るので、y \boldsymbol{y} y が C C C のすべての元と直交することは、すべての g i \boldsymbol{g}_i g i と直交することと同値です(x ⋅ y \boldsymbol{x} \cdot \boldsymbol{y} x ⋅ y は x \boldsymbol{x} x について線形)。G y T G\boldsymbol{y}^{\mathsf{T}} G y T の第 i i i 成分は g i ⋅ y \boldsymbol{g}_i \cdot \boldsymbol{y} g i ⋅ y なので、前半が出ます。
H H H が C ⊥ C^{\perp} C ⊥ の生成行列なら、前半を符号 C ⊥ C^{\perp} C ⊥ に使って { x : H x T = 0 } = ( C ⊥ ) ⊥ = C \{\boldsymbol{x} : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} = (C^{\perp})^{\perp} = C { x : H x T = 0 } = ( C ⊥ ) ⊥ = C で、H H H の行は一次独立なので H H H は C C C の検査行列です。逆に H H H を C C C の検査行列とし、H H H の行が張る空間を D D D とします。H H H は D D D の生成行列で、前半より D ⊥ = { x : H x T = 0 } = C D^{\perp} = \{\boldsymbol{x} : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} = C D ⊥ = { x : H x T = 0 } = C 、(2) より D = ( D ⊥ ) ⊥ = C ⊥ D = (D^{\perp})^{\perp} = C^{\perp} D = ( D ⊥ ) ⊥ = C ⊥ です。行数は dim C ⊥ = n − k \dim C^{\perp} = n - k dim C ⊥ = n − k です。
(4) H H H の右側の n − k n - k n − k 列が単位行列なので、H H H の行は一次独立です。H H H の行が張る空間を D D D とすると dim D = n − k \dim D = n - k dim D = n − k です。ブロックごとに計算して
H G T = [ − A T ∣ I n − k ] [ I k A T ] = − A T + A T = O H G^{\mathsf{T}} = [\,-A^{\mathsf{T}} \mid I_{n-k}\,] \begin{bmatrix} I_k \\ A^{\mathsf{T}} \end{bmatrix} = -A^{\mathsf{T}} + A^{\mathsf{T}} = O H G T = [ − A T ∣ I n − k ] [ I k A T ] = − A T + A T = O です。これは H H H の各行が G G G の各行と直交することを意味するので D ⊆ C ⊥ D \subseteq C^{\perp} D ⊆ C ⊥ で、次元が等しいので D = C ⊥ D = C^{\perp} D = C ⊥ です。(3) より H H H は C C C の検査行列です。
∎
注意
実数の内積では C ∩ C ⊥ = { 0 } C \cap C^{\perp} = \{\boldsymbol{0}\} C ∩ C ⊥ = { 0 } ですが、有限体の上ではそうとは限りません。x ⋅ x = 0 \boldsymbol{x} \cdot \boldsymbol{x} = 0 x ⋅ x = 0 となる 0 \boldsymbol{0} 0 でないベクトルがあるからです。たとえば F 2 2 \mathbb{F}_2^2 F 2 2 の符号 C = { 00 , 11 } C = \{00, 11\} C = { 00 , 11 } では 11 ⋅ 11 = 1 + 1 = 0 11 \cdot 11 = 1 + 1 = 0 11 ⋅ 11 = 1 + 1 = 0 で、C ⊥ = C C^{\perp} = C C ⊥ = C です。次元の等式 dim C + dim C ⊥ = n \dim C + \dim C^{\perp} = n dim C + dim C ⊥ = n はいつでも成り立ちますが、F q n = C ⊕ C ⊥ \mathbb{F}_q^n = C \oplus C^{\perp} F q n = C ⊕ C ⊥ は一般には成り立ちません。C ⊥ C^{\perp} C ⊥ は「直交補空間」ではなく、零化空間を Θ \Theta Θ で引き戻したものと考えるのが正確です。
例 3.6 (反復符号とパリティ検査符号 )
反復符号 R e p n = { ( a , a , … , a ) : a ∈ F q } \mathrm{Rep}_n = \{(a, a, \ldots, a) : a \in \mathbb{F}_q\} Rep n = {( a , a , … , a ) : a ∈ F q } は [ n , 1 , n ] q [n, 1, n]_q [ n , 1 , n ] q 符号で、生成行列は G = [ 1 1 ⋯ 1 ] G = [\,1\ 1\ \cdots\ 1\,] G = [ 1 1 ⋯ 1 ] です。⌊ ( n − 1 ) / 2 ⌋ \lfloor (n-1)/2 \rfloor ⌊( n − 1 ) /2 ⌋ 個の誤りを訂正しますが、情報率は 1 / n 1/n 1/ n です。
その双対は定理 3.5 の 3 より { y : y 1 + ⋯ + y n = 0 } \{\boldsymbol{y} : y_1 + \cdots + y_n = 0\} { y : y 1 + ⋯ + y n = 0 } で、q = 2 q = 2 q = 2 のときは重みが偶数のベクトルの全体です。これをパリティ検査符号 といいます。[ n , n − 1 , 2 ] q [n, n-1, 2]_q [ n , n − 1 , 2 ] q 符号で(重み 1 のベクトルは成分の和が 0 0 0 でないので含まれず、( 1 , − 1 , 0 , … , 0 ) (1, -1, 0, \ldots, 0) ( 1 , − 1 , 0 , … , 0 ) は含まれます)、情報率は ( n − 1 ) / n (n-1)/n ( n − 1 ) / n と高いですが、1 個の誤りを検出するだけで訂正はできません。
この 2 つは「情報率」と「最小距離」の両極端にあります。符号理論の主題は、その中間によい符号を見つけることです。
定理 3.7 (最小距離と検査行列の列 ) ✓
H H H を F q \mathbb{F}_q F q 成分で n n n 列の行列、h 1 , … , h n \boldsymbol{h}_1, \ldots, \boldsymbol{h}_n h 1 , … , h n をその列とし、C = { x ∈ F q n : H x T = 0 } C = \{\boldsymbol{x} \in \mathbb{F}_q^n : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} C = { x ∈ F q n : H x T = 0 } が { 0 } \{\boldsymbol{0}\} { 0 } でないとする。このとき C C C の最小距離は、H H H の列から一次従属な s s s 本を選べるような最小の s s s に等しい。特に、d ( C ) ≥ δ d(C) \ge \delta d ( C ) ≥ δ であることと、H H H のどの δ − 1 \delta - 1 δ − 1 本の列も一次独立であることは同値である。
証明(定理 3.7) H x T = ∑ i = 1 n x i h i H\boldsymbol{x}^{\mathsf{T}} = \sum_{i=1}^{n} x_i \boldsymbol{h}_i H x T = ∑ i = 1 n x i h i なので、x ∈ C \boldsymbol{x} \in C x ∈ C は ∑ i x i h i = 0 \sum_i x_i \boldsymbol{h}_i = \boldsymbol{0} ∑ i x i h i = 0 と同値です。
x ∈ C \boldsymbol{x} \in C x ∈ C を重み w ≥ 1 w \ge 1 w ≥ 1 の符号語とすると、∑ i ∈ s u p p ( x ) x i h i = 0 \sum_{i \in \mathrm{supp}(\boldsymbol{x})} x_i \boldsymbol{h}_i = \boldsymbol{0} ∑ i ∈ supp ( x ) x i h i = 0 は台に対応する w w w 本の列の自明でない一次関係なので、一次従属な w w w 本の列があります。逆に、s s s 本の列 h i 1 , … , h i s \boldsymbol{h}_{i_1}, \ldots, \boldsymbol{h}_{i_s} h i 1 , … , h i s が一次従属で、すべては 0 0 0 でない係数で ∑ j a j h i j = 0 \sum_j a_j \boldsymbol{h}_{i_j} = \boldsymbol{0} ∑ j a j h i j = 0 とすると、第 i j i_j i j 成分が a j a_j a j でほかが 0 0 0 のベクトルは C C C の 0 \boldsymbol{0} 0 でない元で、重みは s s s 以下です。
したがって、C C C の 0 \boldsymbol{0} 0 でない元の重みの最小値と、一次従属な列の本数の最小値は一致します。前者は 命題 3.2 より d ( C ) d(C) d ( C ) です。後半は前半の言い換えです(一次従属な列の集合に列を足しても一次従属なので、「δ − 1 \delta - 1 δ − 1 本以下のどの列も一次独立」は「どの δ − 1 \delta - 1 δ − 1 本も一次独立」と同じです)。
∎
この定理が線形符号の第 2 の利点です。最小距離という組合せ的な量が、行列の列の一次独立性という線形代数の条件に変わります。最小距離 3 3 3 の符号が欲しければ、「どの 2 本も一次独立」、つまり 0 \boldsymbol{0} 0 を含まず互いに定数倍でない列を集めればよいことになります。これをぎりぎりまで集めたのが §6 の Hamming 符号です。
定義 3.8 (符号の同値 ) ↗
2 つの線形符号 C , C ′ ⊆ F q n C, C' \subseteq \mathbb{F}_q^n C , C ′ ⊆ F q n が同値 であるとは、座標の置換と、各座標に 0 0 0 でない定数を掛ける操作の組み合わせで C C C が C ′ C' C ′ に写ることをいう。
どちらの操作も線形同型で、命題 2.2 の 4 と同じ理由で重みを変えないので、同値な符号は同じ n , k , d n, k, d n , k , d をもちます。
例 3.9 (ISBN の検査数字 )
ISBN-10。 10 桁の数字 x 1 x 2 ⋯ x 10 x_1 x_2 \cdots x_{10} x 1 x 2 ⋯ x 10 を F 11 \mathbb{F}_{11} F 11 の元の列とみて、条件
∑ i = 1 10 i x i = 0 ( F 11 において ) \sum_{i=1}^{10} i\, x_i = 0 \quad (\mathbb{F}_{11} \text{ において}) i = 1 ∑ 10 i x i = 0 ( F 11 において ) を課します(値 10 10 10 は文字 X で表し、最後の桁にだけ現れます)。これは検査行列 H = [ 1 2 ⋯ 10 ] H = [\,1\ 2\ \cdots\ 10\,] H = [ 1 2 ⋯ 10 ] の [ 10 , 9 ] 11 [10, 9]_{11} [ 10 , 9 ] 11 符号です。H H H の列はどれも 0 0 0 でなく(どの 1 本も一次独立)、どの 2 本も一次従属なので、定理 3.7 より最小距離は 2 2 2 で、1 個の誤りを検出します。さらに、異なる 2 つの桁 i , j i, j i , j の入れ替えも検出します。入れ替えによる左辺の変化は ( i − j ) ( x j − x i ) (i - j)(x_j - x_i) ( i − j ) ( x j − x i ) で、x i ≠ x j x_i \ne x_j x i = x j なら F 11 \mathbb{F}_{11} F 11 が体なので 0 0 0 になりません。10 ≡ − 1 10 \equiv -1 10 ≡ − 1 なので、最後の桁は x 10 = ∑ i = 1 9 i x i x_{10} = \sum_{i=1}^{9} i\,x_i x 10 = ∑ i = 1 9 i x i で決まります。たとえば最初の 9 桁が 123456789 123456789 123456789 なら ∑ i = 1 9 i 2 = 285 = 25 ⋅ 11 + 10 \sum_{i=1}^{9} i^2 = 285 = 25 \cdot 11 + 10 ∑ i = 1 9 i 2 = 285 = 25 ⋅ 11 + 10 で、検査数字は X です。
ISBN-13。 13 桁の数字に、Z / 10 Z \mathbb{Z}/10\mathbb{Z} Z /10 Z における条件 x 1 + 3 x 2 + x 3 + 3 x 4 + ⋯ + 3 x 12 + x 13 = 0 x_1 + 3x_2 + x_3 + 3x_4 + \cdots + 3x_{12} + x_{13} = 0 x 1 + 3 x 2 + x 3 + 3 x 4 + ⋯ + 3 x 12 + x 13 = 0 を課します。1 1 1 と 3 3 3 は 10 10 10 と互いに素なので、1 桁の誤りは左辺を変え、検出されます。しかし Z / 10 Z \mathbb{Z}/10\mathbb{Z} Z /10 Z は体ではないので、隣り合う桁の入れ替えは必ずしも検出されません。変化は ± 2 ( x i − x i + 1 ) \pm 2(x_i - x_{i+1}) ± 2 ( x i − x i + 1 ) で、x i − x i + 1 = ± 5 x_i - x_{i+1} = \pm 5 x i − x i + 1 = ± 5 のとき 0 0 0 になるからです(05 ↔ 50 05 \leftrightarrow 50 05 ↔ 50 、16 ↔ 61 16 \leftrightarrow 61 16 ↔ 61 など)。文字の集合を体に取ることの利点が、ここに現れています。
定義 4.1 (シンドローム・剰余類の代表元 ) ↗
C C C を [ n , k ] q [n, k]_q [ n , k ] q 符号、H H H をその検査行列とする。y ∈ F q n \boldsymbol{y} \in \mathbb{F}_q^n y ∈ F q n に対し S ( y ) = H y T ∈ F q n − k S(\boldsymbol{y}) = H\boldsymbol{y}^{\mathsf{T}} \in \mathbb{F}_q^{\,n-k} S ( y ) = H y T ∈ F q n − k を y \boldsymbol{y} y のシンドローム という。C C C の剰余類 y + C \boldsymbol{y} + C y + C の元のうち重みが最小のものの 1 つを、その剰余類の代表元 (coset leader)という。
定理 4.2 (シンドローム復号の正しさ ) ✓
C C C を [ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号、H H H を検査行列、t = ⌊ ( d − 1 ) / 2 ⌋ t = \lfloor (d-1)/2 \rfloor t = ⌊( d − 1 ) /2 ⌋ とする。
S ( y ) = S ( y ′ ) ⟺ y − y ′ ∈ C S(\boldsymbol{y}) = S(\boldsymbol{y}') \iff \boldsymbol{y} - \boldsymbol{y}' \in C S ( y ) = S ( y ′ ) ⟺ y − y ′ ∈ C 。S : F q n → F q n − k S : \mathbb{F}_q^n \to \mathbb{F}_q^{\,n-k} S : F q n → F q n − k は全射で、シンドロームと C C C の剰余類は 1 対 1 に対応する。剰余類は q n − k q^{n-k} q n − k 個ある。
各シンドローム s \boldsymbol{s} s に対し、対応する剰余類の代表元 e s \boldsymbol{e}_{\boldsymbol{s}} e s を 1 つ選んでおく。受信語 y \boldsymbol{y} y に対し c ^ = y − e S ( y ) \hat{\boldsymbol{c}} = \boldsymbol{y} - \boldsymbol{e}_{S(\boldsymbol{y})} c ^ = y − e S ( y ) を出力する復号は最小距離復号である。すなわち c ^ ∈ C \hat{\boldsymbol{c}} \in C c ^ ∈ C で、すべての c ′ ∈ C \boldsymbol{c}' \in C c ′ ∈ C について d ( c ^ , y ) ≤ d ( c ′ , y ) d(\hat{\boldsymbol{c}}, \boldsymbol{y}) \le d(\boldsymbol{c}', \boldsymbol{y}) d ( c ^ , y ) ≤ d ( c ′ , y ) 。
符号語 c \boldsymbol{c} c を送り y = c + e \boldsymbol{y} = \boldsymbol{c} + \boldsymbol{e} y = c + e を受け取ったとき、復号結果が c \boldsymbol{c} c になることと、e \boldsymbol{e} e が選んでおいた代表元の 1 つであることは同値である。w t ( e ) ≤ t \mathrm{wt}(\boldsymbol{e}) \le t wt ( e ) ≤ t ならば e \boldsymbol{e} e はその剰余類のただ 1 つの代表元で、復号結果は c \boldsymbol{c} c になる。
証明(定理 4.2) (1) S S S は線形で、核は C C C です。したがって S ( y ) = S ( y ′ ) ⟺ S ( y − y ′ ) = 0 ⟺ y − y ′ ∈ C S(\boldsymbol{y}) = S(\boldsymbol{y}') \iff S(\boldsymbol{y} - \boldsymbol{y}') = \boldsymbol{0} \iff \boldsymbol{y} - \boldsymbol{y}' \in C S ( y ) = S ( y ′ ) ⟺ S ( y − y ′ ) = 0 ⟺ y − y ′ ∈ C です。次元定理(定理 7.3[ベクトル空間と線形変換] )より像の次元は n − k n - k n − k で、行き先 F q n − k \mathbb{F}_q^{\,n-k} F q n − k の次元に等しいので S S S は全射です。シンドロームの値は q n − k q^{n-k} q n − k 個で、値ごとに剰余類が 1 つ対応します。
(2) S ( c ^ ) = S ( y ) − S ( e S ( y ) ) = 0 S(\hat{\boldsymbol{c}}) = S(\boldsymbol{y}) - S(\boldsymbol{e}_{S(\boldsymbol{y})}) = \boldsymbol{0} S ( c ^ ) = S ( y ) − S ( e S ( y ) ) = 0 なので c ^ ∈ C \hat{\boldsymbol{c}} \in C c ^ ∈ C です。c ′ ∈ C \boldsymbol{c}' \in C c ′ ∈ C とすると、y − c ′ \boldsymbol{y} - \boldsymbol{c}' y − c ′ は y \boldsymbol{y} y と同じ剰余類に属するので、代表元の定義から w t ( y − c ′ ) ≥ w t ( e S ( y ) ) \mathrm{wt}(\boldsymbol{y} - \boldsymbol{c}') \ge \mathrm{wt}(\boldsymbol{e}_{S(\boldsymbol{y})}) wt ( y − c ′ ) ≥ wt ( e S ( y ) ) です。左辺は d ( c ′ , y ) d(\boldsymbol{c}', \boldsymbol{y}) d ( c ′ , y ) 、右辺は d ( c ^ , y ) d(\hat{\boldsymbol{c}}, \boldsymbol{y}) d ( c ^ , y ) です。
(3) S ( y ) = S ( c ) + S ( e ) = S ( e ) S(\boldsymbol{y}) = S(\boldsymbol{c}) + S(\boldsymbol{e}) = S(\boldsymbol{e}) S ( y ) = S ( c ) + S ( e ) = S ( e ) なので、c ^ = c + e − e S ( e ) \hat{\boldsymbol{c}} = \boldsymbol{c} + \boldsymbol{e} - \boldsymbol{e}_{S(\boldsymbol{e})} c ^ = c + e − e S ( e ) です。これが c \boldsymbol{c} c に等しいのは e = e S ( e ) \boldsymbol{e} = \boldsymbol{e}_{S(\boldsymbol{e})} e = e S ( e ) のときに限ります。w t ( e ) ≤ t \mathrm{wt}(\boldsymbol{e}) \le t wt ( e ) ≤ t とし、e ′ \boldsymbol{e}' e ′ を同じ剰余類の元で w t ( e ′ ) ≤ w t ( e ) \mathrm{wt}(\boldsymbol{e}') \le \mathrm{wt}(\boldsymbol{e}) wt ( e ′ ) ≤ wt ( e ) なるものとします。e − e ′ ∈ C \boldsymbol{e} - \boldsymbol{e}' \in C e − e ′ ∈ C で、三角不等式より w t ( e − e ′ ) ≤ 2 t < d \mathrm{wt}(\boldsymbol{e} - \boldsymbol{e}') \le 2t < d wt ( e − e ′ ) ≤ 2 t < d なので e − e ′ = 0 \boldsymbol{e} - \boldsymbol{e}' = \boldsymbol{0} e − e ′ = 0 です。つまり e \boldsymbol{e} e はその剰余類で重みが最小のただ 1 つの元で、代表元として必ず選ばれています。
∎
復号器は、q n − k q^{n-k} q n − k 個のシンドロームと代表元の対応表を持てばよいことになります。q k q^k q k 個の符号語すべてと距離を比べるより、n − k n - k n − k が小さいときにはずっと少ない手間です。
例 4.3 ([7, 4, 3] Hamming 符号で 1 個の誤りを訂正する )
第 j j j 列が j j j の 2 進表示になっている行列
H = [ 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 ] H = \begin{bmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 & 1 & 0 & 1 \end{bmatrix} H = 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 を検査行列とする二元符号 C C C を考えます。H H H の行は一次独立(第 4, 2, 1 列が単位ベクトル)なので C C C は [ 7 , 4 ] 2 [7, 4]_2 [ 7 , 4 ] 2 符号です。列はすべて 0 \boldsymbol{0} 0 でなく相異なるので、どの 2 本も一次独立です。第 1, 2, 3 列は 001 + 010 + 011 = 000 001 + 010 + 011 = 000 001 + 010 + 011 = 000 で一次従属です。定理 3.7 より d = 3 d = 3 d = 3 で、1 個の誤りを訂正できます。
第 j j j 座標だけが 1 1 1 の誤り e j \boldsymbol{e}_j e j のシンドロームは H H H の第 j j j 列、つまり j j j の 2 進表示です。したがって復号は「シンドロームを 2 進数として読み、その番号のビットを反転する(000 000 000 なら何もしない)」で済みます。
c = 1010101 \boldsymbol{c} = 1010101 c = 1010101 は符号語です(第 1, 3, 5, 7 列の和は 001 + 011 + 101 + 111 = 000 001 + 011 + 101 + 111 = 000 001 + 011 + 101 + 111 = 000 )。第 5 ビットが反転して y = 1010001 \boldsymbol{y} = 1010001 y = 1010001 を受け取ったとします。シンドロームは第 1, 3, 7 列の和 001 + 011 + 111 = 101 001 + 011 + 111 = 101 001 + 011 + 111 = 101 で、2 進数として 5 5 5 です。第 5 ビットを反転して 1010101 1010101 1010101 に戻ります。
最小距離復号が「もっともらしい」復号であることを確かめておきます。q q q 元対称通信路 とは、各座標が独立に、確率 1 − p 1 - p 1 − p でそのまま届き、確率 p p p でほかの q − 1 q - 1 q − 1 個の文字のどれかに等確率で変わる通信路です。q = 2 q = 2 q = 2 のときを二元対称通信路 といいます。受信語 y \boldsymbol{y} y に対し、c \boldsymbol{c} c を送ったときに y \boldsymbol{y} y を受け取る確率 P ( y ∣ c ) P(\boldsymbol{y} \mid \boldsymbol{c}) P ( y ∣ c ) が最大になる符号語 c \boldsymbol{c} c を出力する復号を最尤復号 といいます。
命題 4.4 (対称通信路では最尤復号は最小距離復号 ) ✓
誤り率 p p p が 0 < p < ( q − 1 ) / q 0 < p < (q - 1)/q 0 < p < ( q − 1 ) / q を満たす q q q 元対称通信路では、P ( y ∣ c ) P(\boldsymbol{y} \mid \boldsymbol{c}) P ( y ∣ c ) は d ( c , y ) d(\boldsymbol{c}, \boldsymbol{y}) d ( c , y ) の狭義単調減少関数である。したがって最尤復号と最小距離復号は一致する。
証明(命題 4.4) w = d ( c , y ) w = d(\boldsymbol{c}, \boldsymbol{y}) w = d ( c , y ) とします。w w w 個の座標が指定された別の文字に変わり(各確率 p / ( q − 1 ) p/(q-1) p / ( q − 1 ) )、残りの n − w n - w n − w 個がそのまま届く(各確率 1 − p 1 - p 1 − p )ので、座標ごとの独立性から
P ( y ∣ c ) = ( p q − 1 ) w ( 1 − p ) n − w = ( 1 − p ) n ( p ( q − 1 ) ( 1 − p ) ) w P(\boldsymbol{y} \mid \boldsymbol{c}) = \Bigl(\frac{p}{q-1}\Bigr)^{w} (1 - p)^{n - w} = (1 - p)^n \Bigl(\frac{p}{(q-1)(1-p)}\Bigr)^{w} P ( y ∣ c ) = ( q − 1 p ) w ( 1 − p ) n − w = ( 1 − p ) n ( ( q − 1 ) ( 1 − p ) p ) w です。p < ( q − 1 ) / q p < (q-1)/q p < ( q − 1 ) / q は p q < q − 1 pq < q - 1 pq < q − 1 、すなわち p < ( q − 1 ) ( 1 − p ) p < (q - 1)(1 - p) p < ( q − 1 ) ( 1 − p ) と同値なので、括弧の中は 0 0 0 より大きく 1 1 1 より小さく、右辺は w w w について狭義単調減少です。
∎
n n n と d d d を決めたとき、符号語の個数 M M M (線形符号なら次元 k k k )はどこまで大きくできるでしょうか。上界を 4 つ、下界を 1 つ示します。証明はすべて数え上げです。
定義 5.1 (Hamming 球・完全符号・MDS 符号 ) ↗
x ∈ F q n \boldsymbol{x} \in \mathbb{F}_q^n x ∈ F q n と整数 r ≥ 0 r \ge 0 r ≥ 0 に対し、B ( x , r ) = { y ∈ F q n : d ( x , y ) ≤ r } B(\boldsymbol{x}, r) = \{\boldsymbol{y} \in \mathbb{F}_q^n : d(\boldsymbol{x}, \boldsymbol{y}) \le r\} B ( x , r ) = { y ∈ F q n : d ( x , y ) ≤ r } を中心 x \boldsymbol{x} x 、半径 r r r の Hamming 球 といい、
V q ( n , r ) = ∑ i = 0 min ( r , n ) ( n i ) ( q − 1 ) i V_q(n, r) = \sum_{i=0}^{\min(r, n)} \binom{n}{i} (q - 1)^i V q ( n , r ) = i = 0 ∑ m i n ( r , n ) ( i n ) ( q − 1 ) i とおく。最小距離 d d d の符号 C C C が、t = ⌊ ( d − 1 ) / 2 ⌋ t = \lfloor (d-1)/2 \rfloor t = ⌊( d − 1 ) /2 ⌋ について F q n = ⋃ c ∈ C B ( c , t ) \mathbb{F}_q^n = \bigcup_{\boldsymbol{c} \in C} B(\boldsymbol{c}, t) F q n = ⋃ c ∈ C B ( c , t ) を満たすとき完全符号 という。d = n − k + 1 d = n - k + 1 d = n − k + 1 を満たす [ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号を MDS 符号 (最大距離分離符号)という。
補題 5.2 (Hamming 球の体積 ) ✓
すべての x ∈ F q n \boldsymbol{x} \in \mathbb{F}_q^n x ∈ F q n と r ≥ 0 r \ge 0 r ≥ 0 について ∣ B ( x , r ) ∣ = V q ( n , r ) |B(\boldsymbol{x}, r)| = V_q(n, r) ∣ B ( x , r ) ∣ = V q ( n , r ) である。
証明(補題 5.2) d ( x , y ) = i d(\boldsymbol{x}, \boldsymbol{y}) = i d ( x , y ) = i となる y \boldsymbol{y} y を数えます。y \boldsymbol{y} y は、x \boldsymbol{x} x と異なる座標の集合(i i i 元部分集合。( n i ) \binom{n}{i} ( i n ) 通り。定義 7.1[数え上げと母関数] )と、その各座標での値(x j x_j x j 以外の q − 1 q - 1 q − 1 通り)で決まるので、( n i ) ( q − 1 ) i \binom{n}{i}(q-1)^i ( i n ) ( q − 1 ) i 個です。i = 0 , 1 , … , min ( r , n ) i = 0, 1, \ldots, \min(r, n) i = 0 , 1 , … , min ( r , n ) について足せば V q ( n , r ) V_q(n, r) V q ( n , r ) です。
∎
定理 5.3 (Singleton 限界 ) ✓
( n , M , d ) q (n, M, d)_q ( n , M , d ) q 符号について M ≤ q n − d + 1 M \le q^{\,n - d + 1} M ≤ q n − d + 1 である。特に [ n , k , d ] q [n, k, d]_q [ n , k , d ] q 線形符号について d ≤ n − k + 1 d \le n - k + 1 d ≤ n − k + 1 である。
証明(定理 5.3) 各符号語から最後の d − 1 d - 1 d − 1 個の座標を消す写像 π : C → F q n − d + 1 \pi : C \to \mathbb{F}_q^{\,n-d+1} π : C → F q n − d + 1 を考えます。異なる符号語は d d d 個以上の座標で異なるので、d − 1 d - 1 d − 1 個の座標を消しても残りのどこかで異なります。つまり π \pi π は単射で、M = ∣ C ∣ ≤ q n − d + 1 M = |C| \le q^{\,n-d+1} M = ∣ C ∣ ≤ q n − d + 1 です(定理 7.5[数え上げと母関数] の 1 の対偶)。線形符号では M = q k M = q^k M = q k なので k ≤ n − d + 1 k \le n - d + 1 k ≤ n − d + 1 です。
∎
定理 5.4 (Hamming 限界(球充填限界) ) ✓
( n , M , d ) q (n, M, d)_q ( n , M , d ) q 符号について、t = ⌊ ( d − 1 ) / 2 ⌋ t = \lfloor (d-1)/2 \rfloor t = ⌊( d − 1 ) /2 ⌋ とすると
M ⋅ V q ( n , t ) ≤ q n M \cdot V_q(n, t) \le q^n M ⋅ V q ( n , t ) ≤ q n である。等号が成り立つことと、符号が完全符号であることは同値である。
証明(定理 5.4) 定理 2.4 の 2 より、異なる符号語 c , c ′ \boldsymbol{c}, \boldsymbol{c}' c , c ′ について B ( c , t ) ∩ B ( c ′ , t ) = ∅ B(\boldsymbol{c}, t) \cap B(\boldsymbol{c}', t) = \varnothing B ( c , t ) ∩ B ( c ′ , t ) = ∅ です(共通の元 y \boldsymbol{y} y があれば d ( c , y ) ≤ t d(\boldsymbol{c}, \boldsymbol{y}) \le t d ( c , y ) ≤ t かつ d ( c ′ , y ) ≤ t d(\boldsymbol{c}', \boldsymbol{y}) \le t d ( c ′ , y ) ≤ t となり矛盾)。M M M 個の球は互いに交わらず、それぞれ V q ( n , t ) V_q(n, t) V q ( n , t ) 個の元をもつ(補題 5.2 )ので、合併は M ⋅ V q ( n , t ) M \cdot V_q(n, t) M ⋅ V q ( n , t ) 個の元をもち、これは ∣ F q n ∣ = q n |\mathbb{F}_q^n| = q^n ∣ F q n ∣ = q n 以下です。等号は合併が F q n \mathbb{F}_q^n F q n 全体であること、つまり完全符号であることと同値です。
∎
上界だけでは「よい符号が存在する」ことは分かりません。次の定理は、検査行列の列を 1 本ずつ選んでいく素朴な方法で、かなりよい符号が必ず作れることを示します。
定理 5.5 (Gilbert–Varshamov 限界 ) ✓
n , k , d n, k, d n , k , d を 1 ≤ k ≤ n − 1 1 \le k \le n - 1 1 ≤ k ≤ n − 1 、2 ≤ d ≤ n 2 \le d \le n 2 ≤ d ≤ n を満たす整数とする。
V q ( n − 1 , d − 2 ) < q n − k V_q(n - 1,\ d - 2) < q^{\,n-k} V q ( n − 1 , d − 2 ) < q n − k ならば、最小距離が d d d 以上の [ n , k ] q [n, k]_q [ n , k ] q 線形符号が存在する。
証明の方針は次のとおりです。定理 3.7 により、最小距離 d d d 以上の符号を作ることは、「どの d − 1 d - 1 d − 1 本も一次独立」な列を n n n 本集めることと同じです。列を 1 本ずつ足していくとき、新しい列として使えないのは、すでに選んだ列の d − 2 d - 2 d − 2 本以下の一次結合で書けるベクトルです。その個数を数えて F q n − k \mathbb{F}_q^{\,n-k} F q n − k の元の総数 q n − k q^{n-k} q n − k より少ないと示せば、使えるベクトルがまだ残っていることが分かり、最後の列まで選び続けられます。
証明(定理 5.5) r = n − k r = n - k r = n − k とします。F q r \mathbb{F}_q^{\,r} F q r のベクトル h 1 , … , h n \boldsymbol{h}_1, \ldots, \boldsymbol{h}_n h 1 , … , h n を、「どの d − 1 d - 1 d − 1 本以下も一次独立」という条件を保ちながら 1 本ずつ選びます。
h 1 , … , h j \boldsymbol{h}_1, \ldots, \boldsymbol{h}_j h 1 , … , h j (0 ≤ j ≤ n − 1 0 \le j \le n - 1 0 ≤ j ≤ n − 1 )がこの条件を満たすように選べたとします。h j + 1 \boldsymbol{h}_{j+1} h j + 1 として、h 1 , … , h j \boldsymbol{h}_1, \ldots, \boldsymbol{h}_j h 1 , … , h j のうち d − 2 d - 2 d − 2 本以下の一次結合で書けないベクトルを選びます。d − 2 d - 2 d − 2 本以下の一次結合は、使う列の集合(i i i 本、0 ≤ i ≤ d − 2 0 \le i \le d - 2 0 ≤ i ≤ d − 2 )と 0 0 0 でない係数(( q − 1 ) i (q - 1)^i ( q − 1 ) i 通り)で決まるので、高々
∑ i = 0 d − 2 ( j i ) ( q − 1 ) i = V q ( j , d − 2 ) ≤ V q ( n − 1 , d − 2 ) < q r \sum_{i=0}^{d-2} \binom{j}{i}(q-1)^i = V_q(j, d-2) \le V_q(n - 1, d - 2) < q^{\,r} i = 0 ∑ d − 2 ( i j ) ( q − 1 ) i = V q ( j , d − 2 ) ≤ V q ( n − 1 , d − 2 ) < q r 個です(j ≤ n − 1 j \le n - 1 j ≤ n − 1 なら ( j i ) ≤ ( n − 1 i ) \binom{j}{i} \le \binom{n-1}{i} ( i j ) ≤ ( i n − 1 ) )。F q r \mathbb{F}_q^{\,r} F q r の元は q r q^r q r 個あるので、そのような h j + 1 \boldsymbol{h}_{j+1} h j + 1 が選べます。
h 1 , … , h j + 1 \boldsymbol{h}_1, \ldots, \boldsymbol{h}_{j+1} h 1 , … , h j + 1 が条件を満たすことを確かめます。d − 1 d - 1 d − 1 本以下の列の自明でない一次関係があったとします。h j + 1 \boldsymbol{h}_{j+1} h j + 1 の係数が 0 0 0 なら、h 1 , … , h j \boldsymbol{h}_1, \ldots, \boldsymbol{h}_j h 1 , … , h j の d − 1 d - 1 d − 1 本以下の自明でない一次関係となり、帰納法の仮定に反します。0 0 0 でなければ、h j + 1 \boldsymbol{h}_{j+1} h j + 1 について解いて、h j + 1 \boldsymbol{h}_{j+1} h j + 1 がほかの d − 2 d - 2 d − 2 本以下の一次結合で書け、選び方に反します。
h 1 , … , h n \boldsymbol{h}_1, \ldots, \boldsymbol{h}_n h 1 , … , h n を列とする r × n r \times n r × n 行列を H H H とし、C 0 = { x : H x T = 0 } C_0 = \{\boldsymbol{x} : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} C 0 = { x : H x T = 0 } とします。次元定理(定理 7.3[ベクトル空間と線形変換] )より dim C 0 = n − dim I m ≥ n − r = k ≥ 1 \dim C_0 = n - \dim \mathrm{Im} \ge n - r = k \ge 1 dim C 0 = n − dim Im ≥ n − r = k ≥ 1 です。定理 3.7 より d ( C 0 ) ≥ d d(C_0) \ge d d ( C 0 ) ≥ d です。C 0 C_0 C 0 の k k k 次元部分空間 C C C を取ると、C C C の 0 \boldsymbol{0} 0 でない元は C 0 C_0 C 0 の元でもあるので重みは d d d 以上で、C C C が求める符号です。
∎
定理 5.6 (Plotkin 限界 ) ✓
θ = 1 − 1 / q \theta = 1 - 1/q θ = 1 − 1/ q とする。( n , M , d ) q (n, M, d)_q ( n , M , d ) q 符号が d > θ n d > \theta n d > θ n を満たすならば
M ≤ d d − θ n M \le \frac{d}{d - \theta n} M ≤ d − θ n d である。q = 2 q = 2 q = 2 のときは、2 d > n 2d > n 2 d > n ならば M ≤ 2 d 2 d − n M \le \dfrac{2d}{2d - n} M ≤ 2 d − n 2 d である。
証明(定理 5.6) S = ∑ d ( c , c ′ ) S = \sum d(\boldsymbol{c}, \boldsymbol{c}') S = ∑ d ( c , c ′ ) を、符号語の順序対 ( c , c ′ ) (\boldsymbol{c}, \boldsymbol{c}') ( c , c ′ ) 、c ≠ c ′ \boldsymbol{c} \ne \boldsymbol{c}' c = c ′ すべてにわたる和とします。順序対は M ( M − 1 ) M(M-1) M ( M − 1 ) 個で各項は d d d 以上なので S ≥ M ( M − 1 ) d S \ge M(M-1)\,d S ≥ M ( M − 1 ) d です。
S S S を座標ごとに数え直します。第 i i i 座標が a ∈ F q a \in \mathbb{F}_q a ∈ F q である符号語の個数を m a m_a m a とすると、∑ a m a = M \sum_a m_a = M ∑ a m a = M で、第 i i i 座標で異なる順序対の個数は
∑ a ∈ F q m a ( M − m a ) = M 2 − ∑ a m a 2 \sum_{a \in \mathbb{F}_q} m_a (M - m_a) = M^2 - \sum_{a} m_a^2 a ∈ F q ∑ m a ( M − m a ) = M 2 − a ∑ m a 2 です。∑ a ( m a − M / q ) 2 ≥ 0 \sum_a (m_a - M/q)^2 \ge 0 ∑ a ( m a − M / q ) 2 ≥ 0 を展開すると ∑ a m a 2 − 2 ( M / q ) M + q ( M / q ) 2 ≥ 0 \sum_a m_a^2 - 2(M/q) M + q\,(M/q)^2 \ge 0 ∑ a m a 2 − 2 ( M / q ) M + q ( M / q ) 2 ≥ 0 、つまり ∑ a m a 2 ≥ M 2 / q \sum_a m_a^2 \ge M^2/q ∑ a m a 2 ≥ M 2 / q なので、上の個数は M 2 − M 2 / q = θ M 2 M^2 - M^2/q = \theta M^2 M 2 − M 2 / q = θ M 2 以下です。n n n 個の座標について足して S ≤ n θ M 2 S \le n\theta M^2 S ≤ n θ M 2 です。
2 つの評価を合わせると M ( M − 1 ) d ≤ n θ M 2 M(M-1)\,d \le n \theta M^2 M ( M − 1 ) d ≤ n θ M 2 、M M M で割って ( M − 1 ) d ≤ n θ M (M - 1)\,d \le n\theta M ( M − 1 ) d ≤ n θ M 、すなわち M ( d − θ n ) ≤ d M\,(d - \theta n) \le d M ( d − θ n ) ≤ d です。d − θ n > 0 d - \theta n > 0 d − θ n > 0 で割れば結論です。q = 2 q = 2 q = 2 では θ = 1 / 2 \theta = 1/2 θ = 1/2 で、d / ( d − n / 2 ) = 2 d / ( 2 d − n ) d/(d - n/2) = 2d/(2d - n) d / ( d − n /2 ) = 2 d / ( 2 d − n ) です。
∎
Plotkin 限界は、相対距離 d / n d/n d / n が θ \theta θ を超えると符号語の個数が n n n によらない定数で抑えられることを示します。大きな符号を作りたければ、相対距離は 1 − 1 / q 1 - 1/q 1 − 1/ q 以下にせざるを得ません。
線形符号に限ると、次のより細かい限界が成り立ちます。⌈ x ⌉ \lceil x \rceil ⌈ x ⌉ は x x x 以上の最小の整数です。
補題 5.7 (剰余符号 ) ✓
k ≥ 2 k \ge 2 k ≥ 2 とし、[ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号が存在するとする。このとき、ある d ′ ≥ ⌈ d / q ⌉ d' \ge \lceil d/q \rceil d ′ ≥ ⌈ d / q ⌉ について [ n − d , k − 1 , d ′ ] q [n - d,\ k - 1,\ d']_q [ n − d , k − 1 , d ′ ] q 符号が存在する。
この補題は、直後の Griesmer 限界の帰納法で使う道具です。最小重みの符号語 c \boldsymbol{c} c の 0 0 0 でない座標を消した符号を考えると、符号の次元は 1 つ下がり、長さは d d d だけ短くなります。そのとき最小距離が ⌈ d / q ⌉ \lceil d/q \rceil ⌈ d / q ⌉ 以上に保たれることを示します。証明の冒頭の座標の入れ替えと逆元を掛ける操作は、c \boldsymbol{c} c を ( 1 , … , 1 , 0 , … , 0 ) (1, \ldots, 1, 0, \ldots, 0) ( 1 , … , 1 , 0 , … , 0 ) の形にそろえて、以降の計算を見やすくするためのものです。
証明(補題 5.7) C C C を [ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号、c ∈ C \boldsymbol{c} \in C c ∈ C を重み d d d の符号語とします。座標を入れ替え、c \boldsymbol{c} c の 0 0 0 でない各座標にその成分の逆元を掛けます。この操作は F q n \mathbb{F}_q^n F q n の線形同型で、各ベクトルの重みを変えない(a ≠ 0 a \ne 0 a = 0 なら a x i ≠ 0 ⟺ x i ≠ 0 a x_i \ne 0 \iff x_i \ne 0 a x i = 0 ⟺ x i = 0 )ので、C C C の像も [ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号です。したがって c = ( 1 , … , 1 , 0 , … , 0 ) \boldsymbol{c} = (1, \ldots, 1, 0, \ldots, 0) c = ( 1 , … , 1 , 0 , … , 0 ) (最初の d d d 個が 1 1 1 )としてよいです。π : C → F q n − d \pi : C \to \mathbb{F}_q^{\,n-d} π : C → F q n − d を最後の n − d n - d n − d 個の座標への射影とし、C ′ = π ( C ) C' = \pi(C) C ′ = π ( C ) とします。
x ∈ C \boldsymbol{x} \in C x ∈ C を c \boldsymbol{c} c の定数倍でない元とします。x 1 , … , x d x_1, \ldots, x_d x 1 , … , x d の d d d 個の値は q q q 通りのどれかなので、ある a ∈ F q a \in \mathbb{F}_q a ∈ F q が N a ≥ ⌈ d / q ⌉ N_a \ge \lceil d/q \rceil N a ≥ ⌈ d / q ⌉ 回現れます(⌈ d / q ⌉ = 1 \lceil d/q \rceil = 1 ⌈ d / q ⌉ = 1 のときは、x 1 x_1 x 1 の値を a a a とすればよい。⌈ d / q ⌉ ≥ 2 \lceil d/q \rceil \ge 2 ⌈ d / q ⌉ ≥ 2 のときは、定理 7.5[数え上げと母関数] の 1 を k = ⌈ d / q ⌉ − 1 ≥ 1 k = \lceil d/q \rceil - 1 \ge 1 k = ⌈ d / q ⌉ − 1 ≥ 1 に使う。d > q ( ⌈ d / q ⌉ − 1 ) d > q\,(\lceil d/q \rceil - 1) d > q (⌈ d / q ⌉ − 1 ) なので)。x − a c \boldsymbol{x} - a\boldsymbol{c} x − a c は C C C の 0 \boldsymbol{0} 0 でない元で、最初の d d d 個の座標のうち 0 0 0 でないのは d − N a d - N_a d − N a 個、最後の n − d n - d n − d 個の座標は π ( x ) \pi(\boldsymbol{x}) π ( x ) と同じなので
d ≤ w t ( x − a c ) = ( d − N a ) + w t ( π ( x ) ) d \le \mathrm{wt}(\boldsymbol{x} - a\boldsymbol{c}) = (d - N_a) + \mathrm{wt}(\pi(\boldsymbol{x})) d ≤ wt ( x − a c ) = ( d − N a ) + wt ( π ( x )) です。よって w t ( π ( x ) ) ≥ N a ≥ ⌈ d / q ⌉ ≥ 1 \mathrm{wt}(\pi(\boldsymbol{x})) \ge N_a \ge \lceil d/q \rceil \ge 1 wt ( π ( x )) ≥ N a ≥ ⌈ d / q ⌉ ≥ 1 です。
特に π ( x ) ≠ 0 \pi(\boldsymbol{x}) \ne \boldsymbol{0} π ( x ) = 0 なので、π \pi π の核は c \boldsymbol{c} c の定数倍の全体(1 次元)です。次元定理(定理 7.3[ベクトル空間と線形変換] )より dim C ′ = k − 1 ≥ 1 \dim C' = k - 1 \ge 1 dim C ′ = k − 1 ≥ 1 です。C ′ C' C ′ の 0 \boldsymbol{0} 0 でない元は、c \boldsymbol{c} c の定数倍でない x \boldsymbol{x} x による π ( x ) \pi(\boldsymbol{x}) π ( x ) なので、重みは ⌈ d / q ⌉ \lceil d/q \rceil ⌈ d / q ⌉ 以上です。
∎
定理 5.8 (Griesmer 限界 ) ✓
k ≥ 1 k \ge 1 k ≥ 1 とする。[ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号が存在するならば
n ≥ ∑ i = 0 k − 1 ⌈ d q i ⌉ n \ge \sum_{i=0}^{k-1} \Bigl\lceil \frac{d}{q^i} \Bigr\rceil n ≥ i = 0 ∑ k − 1 ⌈ q i d ⌉ である。
証明(定理 5.8) k k k についての帰納法で示します。k = 1 k = 1 k = 1 のとき、主張は n ≥ d n \ge d n ≥ d で、重みは n n n 以下なので成り立ちます。k ≥ 2 k \ge 2 k ≥ 2 とし、k − 1 k - 1 k − 1 では成り立つとします。補題 5.7 より [ n − d , k − 1 , d ′ ] q [n - d, k - 1, d']_q [ n − d , k − 1 , d ′ ] q 符号(d ′ ≥ ⌈ d / q ⌉ d' \ge \lceil d/q \rceil d ′ ≥ ⌈ d / q ⌉ )があるので、帰納法の仮定から
n − d ≥ ∑ i = 0 k − 2 ⌈ d ′ q i ⌉ ≥ ∑ i = 0 k − 2 ⌈ d q i + 1 ⌉ n - d \ge \sum_{i=0}^{k-2} \Bigl\lceil \frac{d'}{q^i} \Bigr\rceil \ge \sum_{i=0}^{k-2} \Bigl\lceil \frac{d}{q^{i+1}} \Bigr\rceil n − d ≥ i = 0 ∑ k − 2 ⌈ q i d ′ ⌉ ≥ i = 0 ∑ k − 2 ⌈ q i + 1 d ⌉ です。2 番目の不等号は d ′ / q i ≥ ⌈ d / q ⌉ / q i ≥ d / q i + 1 d'/q^i \ge \lceil d/q \rceil / q^i \ge d/q^{i+1} d ′ / q i ≥ ⌈ d / q ⌉ / q i ≥ d / q i + 1 と、⌈ ⌉ \lceil\ \rceil ⌈ ⌉ が単調であることによります。両辺に d = ⌈ d / q 0 ⌉ d = \lceil d/q^0 \rceil d = ⌈ d / q 0 ⌉ を加えれば k k k の場合です。
∎
例 5.9 (n = 10、d = 3 の二元線形符号 )
長さ 10 10 10 、最小距離 3 3 3 以上の二元線形符号の次元 k k k を、各限界で評価します(上界はどれも d d d が大きいほど厳しくなるので、d = 3 d = 3 d = 3 として計算すれば十分です)。
限界 条件 結論 Singleton 3 ≤ 10 − k + 1 3 \le 10 - k + 1 3 ≤ 10 − k + 1 k ≤ 8 k \le 8 k ≤ 8 Hamming 2 k ( 1 + 10 ) ≤ 2 10 = 1024 2^k (1 + 10) \le 2^{10} = 1024 2 k ( 1 + 10 ) ≤ 2 10 = 1024 2 k ≤ 93 2^k \le 93 2 k ≤ 93 、k ≤ 6 k \le 6 k ≤ 6 Plotkin 2 d > n 2d > n 2 d > n が必要だが 2 d = 6 < 10 2d = 6 < 10 2 d = 6 < 10 適用できない Griesmer 10 ≥ 3 + 2 + 1 + ⋯ + 1 ⏟ k − 2 = k + 3 10 \ge 3 + 2 + \underbrace{1 + \cdots + 1}_{k - 2} = k + 3 10 ≥ 3 + 2 + k − 2 1 + ⋯ + 1 = k + 3 k ≤ 7 k \le 7 k ≤ 7 Gilbert–Varshamov V 2 ( 9 , 1 ) = 10 < 2 10 − k V_2(9, 1) = 10 < 2^{10 - k} V 2 ( 9 , 1 ) = 10 < 2 10 − k k ≤ 6 k \le 6 k ≤ 6 なら存在する
Hamming 限界から k ≤ 6 k \le 6 k ≤ 6 、Gilbert–Varshamov 限界から k = 6 k = 6 k = 6 の符号が存在するので、最大の次元はちょうど 6 6 6 です。この例では上界と下界が一致しましたが、一般には両者の間に隙間があり、最良の符号のパラメータが分かっていない ( n , d ) (n, d) ( n , d ) は数多く残っています。
限界式は必要条件でしかないことにも注意してください。[ 5 , 2 , 4 ] 2 [5, 2, 4]_2 [ 5 , 2 , 4 ] 2 というパラメータは、Singleton 限界(4 ≤ 5 − 2 + 1 4 \le 5 - 2 + 1 4 ≤ 5 − 2 + 1 )も Hamming 限界(2 2 ( 1 + 5 ) = 24 ≤ 32 2^2 (1 + 5) = 24 \le 32 2 2 ( 1 + 5 ) = 24 ≤ 32 )も満たしますが、Griesmer 限界は 5 ≥ 4 + 2 = 6 5 \ge 4 + 2 = 6 5 ≥ 4 + 2 = 6 を要求するので、そのような符号は存在しません。
定義 6.1 (Hamming 符号・単体符号 ) ↗
r ≥ 2 r \ge 2 r ≥ 2 とし、n = ( q r − 1 ) / ( q − 1 ) n = (q^r - 1)/(q - 1) n = ( q r − 1 ) / ( q − 1 ) とする。F q r \mathbb{F}_q^{\,r} F q r の 1 次元部分空間のそれぞれから 0 \boldsymbol{0} 0 でないベクトルを 1 つずつ選び、それらを列として並べた r × n r \times n r × n 行列を H r H_r H r とする。H r H_r H r を検査行列とする符号 H a m ( r , q ) = { x ∈ F q n : H r x T = 0 } \mathrm{Ham}(r, q) = \{\boldsymbol{x} \in \mathbb{F}_q^n : H_r\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} Ham ( r , q ) = { x ∈ F q n : H r x T = 0 } を Hamming 符号 、その双対符号を単体符号 (シンプレックス符号)という。
F q r \mathbb{F}_q^{\,r} F q r の 0 \boldsymbol{0} 0 でないベクトルは q r − 1 q^r - 1 q r − 1 個で、各 1 次元部分空間は 0 \boldsymbol{0} 0 でないベクトルを q − 1 q - 1 q − 1 個含み、異なる 1 次元部分空間は 0 \boldsymbol{0} 0 以外を共有しないので、1 次元部分空間は ( q r − 1 ) / ( q − 1 ) (q^r - 1)/(q - 1) ( q r − 1 ) / ( q − 1 ) 個あります。代表元の選び方と列の順序を変えても、得られる符号は同値です。q = 2 q = 2 q = 2 では n = 2 r − 1 n = 2^r - 1 n = 2 r − 1 で、列は 0 \boldsymbol{0} 0 でないベクトル全部です(例 4.3 は r = 3 r = 3 r = 3 の場合)。
定理 6.2 (Hamming 符号と単体符号 ) ✓
r ≥ 2 r \ge 2 r ≥ 2 、n = ( q r − 1 ) / ( q − 1 ) n = (q^r - 1)/(q-1) n = ( q r − 1 ) / ( q − 1 ) とする。
H a m ( r , q ) \mathrm{Ham}(r, q) Ham ( r , q ) は [ n , n − r , 3 ] q [n,\ n - r,\ 3]_q [ n , n − r , 3 ] q 符号である。
H a m ( r , q ) \mathrm{Ham}(r, q) Ham ( r , q ) は完全符号である。
単体符号は [ n , r ] q [n, r]_q [ n , r ] q 符号で、0 \boldsymbol{0} 0 でない符号語の重みはすべて q r − 1 q^{r-1} q r − 1 である。特に最小距離は q r − 1 q^{r-1} q r − 1 である。
証明(定理 6.2) (1) H r H_r H r の列には標準基底 e 1 , … , e r \boldsymbol{e}_1, \ldots, \boldsymbol{e}_r e 1 , … , e r それぞれの定数倍が含まれるので、写像 x ↦ H r x T \boldsymbol{x} \mapsto H_r \boldsymbol{x}^{\mathsf{T}} x ↦ H r x T は F q n \mathbb{F}_q^n F q n から F q r \mathbb{F}_q^{\,r} F q r への全射です。次元定理(定理 7.3[ベクトル空間と線形変換] )より核の次元は n − r n - r n − r で、H r H_r H r の行は一次独立(一次従属なら像の次元が r r r より小さくなります)なので H r H_r H r は検査行列です。H r H_r H r の列はどれも 0 \boldsymbol{0} 0 でなく、異なる 2 本は異なる 1 次元部分空間に属するので互いに定数倍でなく、どの 2 本も一次独立です。一方、e 1 \boldsymbol{e}_1 e 1 、e 2 \boldsymbol{e}_2 e 2 、e 1 + e 2 \boldsymbol{e}_1 + \boldsymbol{e}_2 e 1 + e 2 の属する 3 つの 1 次元部分空間は相異なり、それらの代表である 3 本の列は 2 次元空間に含まれるので一次従属です。定理 3.7 より最小距離は 3 3 3 です。
(2) t = 1 t = 1 t = 1 で、V q ( n , 1 ) = 1 + n ( q − 1 ) = 1 + ( q r − 1 ) = q r V_q(n, 1) = 1 + n(q - 1) = 1 + (q^r - 1) = q^r V q ( n , 1 ) = 1 + n ( q − 1 ) = 1 + ( q r − 1 ) = q r です。符号語は q n − r q^{n-r} q n − r 個なので q n − r ⋅ V q ( n , 1 ) = q n q^{n-r} \cdot V_q(n, 1) = q^n q n − r ⋅ V q ( n , 1 ) = q n となり、定理 5.4 の等号が成り立ちます。
(3) 定理 3.5 の 3 より、単体符号は H r H_r H r を生成行列とする [ n , r ] q [n, r]_q [ n , r ] q 符号で、符号語は u H r = ( u ⋅ h 1 , … , u ⋅ h n ) \boldsymbol{u}H_r = (\boldsymbol{u}\cdot\boldsymbol{h}_1, \ldots, \boldsymbol{u}\cdot\boldsymbol{h}_n) u H r = ( u ⋅ h 1 , … , u ⋅ h n ) (u ∈ F q r \boldsymbol{u} \in \mathbb{F}_q^{\,r} u ∈ F q r 、h j \boldsymbol{h}_j h j は H r H_r H r の列)です。u ≠ 0 \boldsymbol{u} \ne \boldsymbol{0} u = 0 とします。U = { v ∈ F q r : u ⋅ v = 0 } U = \{\boldsymbol{v} \in \mathbb{F}_q^{\,r} : \boldsymbol{u} \cdot \boldsymbol{v} = 0\} U = { v ∈ F q r : u ⋅ v = 0 } は 0 0 0 でない線形写像 v ↦ u ⋅ v \boldsymbol{v} \mapsto \boldsymbol{u}\cdot\boldsymbol{v} v ↦ u ⋅ v の核なので、次元は r − 1 r - 1 r − 1 です(次元定理)。u H r \boldsymbol{u}H_r u H r の第 j j j 成分が 0 0 0 であることは h j ∈ U \boldsymbol{h}_j \in U h j ∈ U 、つまり h j \boldsymbol{h}_j h j の属する 1 次元部分空間が U U U に含まれることと同値です。U U U に含まれる 1 次元部分空間は ( q r − 1 − 1 ) / ( q − 1 ) (q^{r-1} - 1)/(q - 1) ( q r − 1 − 1 ) / ( q − 1 ) 個なので、
w t ( u H r ) = q r − 1 q − 1 − q r − 1 − 1 q − 1 = q r − q r − 1 q − 1 = q r − 1 \mathrm{wt}(\boldsymbol{u}H_r) = \frac{q^r - 1}{q - 1} - \frac{q^{r-1} - 1}{q - 1} = \frac{q^r - q^{r-1}}{q - 1} = q^{r-1} wt ( u H r ) = q − 1 q r − 1 − q − 1 q r − 1 − 1 = q − 1 q r − q r − 1 = q r − 1 です。
∎
単体符号は Griesmer 限界を等号で満たします: ∑ i = 0 r − 1 ⌈ q r − 1 / q i ⌉ = q r − 1 + q r − 2 + ⋯ + 1 = n \sum_{i=0}^{r-1} \lceil q^{r-1}/q^i \rceil = q^{r-1} + q^{r-2} + \cdots + 1 = n ∑ i = 0 r − 1 ⌈ q r − 1 / q i ⌉ = q r − 1 + q r − 2 + ⋯ + 1 = n 。Plotkin 限界も等号です: θ n = ( q r − 1 ) / q \theta n = (q^r - 1)/q θ n = ( q r − 1 ) / q なので d − θ n = 1 / q d - \theta n = 1/q d − θ n = 1/ q で、d / ( d − θ n ) = q r = M d/(d - \theta n) = q^r = M d / ( d − θ n ) = q r = M 。どの 2 つの符号語も同じ距離だけ離れている(正単体の頂点のような配置になっている)ことが名前の由来です。
既存の符号から新しい符号を作る操作を 3 つ定めます。
定義 6.3 (パリティ拡大・穴あけ・短縮 ) ↗
C C C を [ n , k ] q [n, k]_q [ n , k ] q 符号とする。
パリティ拡大 : C ^ = { ( c 1 , … , c n , c n + 1 ) : c ∈ C , c n + 1 = − ( c 1 + ⋯ + c n ) } \widehat{C} = \{(c_1, \ldots, c_n, c_{n+1}) : \boldsymbol{c} \in C,\ c_{n+1} = -(c_1 + \cdots + c_n)\} C = {( c 1 , … , c n , c n + 1 ) : c ∈ C , c n + 1 = − ( c 1 + ⋯ + c n )} 。長さ n + 1 n + 1 n + 1 、次元 k k k の符号。
穴あけ : 第 i i i 座標を消して得られる長さ n − 1 n - 1 n − 1 の符号。
短縮 : 第 i i i 座標が 0 0 0 である符号語だけを集め、その第 i i i 座標を消して得られる長さ n − 1 n - 1 n − 1 の符号。
穴あけでは各符号語の重みが高々 1 1 1 減ります。短縮では、集めた符号語は「第 i i i 座標」という線形写像の核なので k − 1 k - 1 k − 1 次元以上あり、0 0 0 の座標を消しても重みは変わらないので、[ n − 1 , ≥ k − 1 , ≥ d ] q [n - 1,\ \ge k - 1,\ \ge d]_q [ n − 1 , ≥ k − 1 , ≥ d ] q 符号が得られます。たとえば H a m ( 4 , 2 ) \mathrm{Ham}(4, 2) Ham ( 4 , 2 ) ([ 15 , 11 , 3 ] 2 [15, 11, 3]_2 [ 15 , 11 , 3 ] 2 )を 5 回短縮すると、例 5.9 で存在が保証された、最小距離 3 3 3 以上の [ 10 , 6 ] 2 [10, 6]_2 [ 10 , 6 ] 2 符号が具体的に得られます(次元は 6 6 6 以上で、Hamming 限界から 6 6 6 以下)。
例 6.4 ([8, 4, 4] 拡大 Hamming 符号は自己双対 )
例 4.3 の [ 7 , 4 , 3 ] 2 [7, 4, 3]_2 [ 7 , 4 , 3 ] 2 符号 C C C の符号語として 1110000 1110000 1110000 、1001100 1001100 1001100 、0101010 0101010 0101010 、1101001 1101001 1101001 が取れます(それぞれ H H H の第 { 1 , 2 , 3 } \{1,2,3\} { 1 , 2 , 3 } 、{ 1 , 4 , 5 } \{1,4,5\} { 1 , 4 , 5 } 、{ 2 , 4 , 6 } \{2,4,6\} { 2 , 4 , 6 } 、{ 1 , 2 , 4 , 7 } \{1,2,4,7\} { 1 , 2 , 4 , 7 } 列の和が 0 \boldsymbol{0} 0 )。第 3, 5, 6, 7 座標を見ると単位行列になっているので一次独立で、C C C の基底です。パリティ拡大 C ^ \widehat{C} C の基底は
g 1 = 11100001 , g 2 = 10011001 , g 3 = 01010101 , g 4 = 11010010 \boldsymbol{g}_1 = 11100001,\quad \boldsymbol{g}_2 = 10011001,\quad \boldsymbol{g}_3 = 01010101,\quad \boldsymbol{g}_4 = 11010010 g 1 = 11100001 , g 2 = 10011001 , g 3 = 01010101 , g 4 = 11010010 です。どの g i \boldsymbol{g}_i g i も重み 4 4 4 で、どの 2 つも 1 1 1 が重なる座標がちょうど 2 個です(たとえば g 1 \boldsymbol{g}_1 g 1 と g 2 \boldsymbol{g}_2 g 2 は第 1, 8 座標)。したがって g i ⋅ g j = 0 \boldsymbol{g}_i \cdot \boldsymbol{g}_j = 0 g i ⋅ g j = 0 がすべての i , j i, j i , j で成り立ち、C ^ ⊆ C ^ ⊥ \widehat{C} \subseteq \widehat{C}^{\perp} C ⊆ C ⊥ です。dim C ^ ⊥ = 8 − 4 = 4 = dim C ^ \dim \widehat{C}^{\perp} = 8 - 4 = 4 = \dim \widehat{C} dim C ⊥ = 8 − 4 = 4 = dim C なので C ^ = C ^ ⊥ \widehat{C} = \widehat{C}^{\perp} C = C ⊥ 、つまり自己双対です。
最小距離を求めます。二元ベクトルについて w t ( x + y ) = w t ( x ) + w t ( y ) − 2 ∣ s u p p ( x ) ∩ s u p p ( y ) ∣ \mathrm{wt}(\boldsymbol{x} + \boldsymbol{y}) = \mathrm{wt}(\boldsymbol{x}) + \mathrm{wt}(\boldsymbol{y}) - 2\,|\mathrm{supp}(\boldsymbol{x}) \cap \mathrm{supp}(\boldsymbol{y})| wt ( x + y ) = wt ( x ) + wt ( y ) − 2 ∣ supp ( x ) ∩ supp ( y ) ∣ で、x ⋅ y = 0 \boldsymbol{x} \cdot \boldsymbol{y} = 0 x ⋅ y = 0 は ∣ s u p p ( x ) ∩ s u p p ( y ) ∣ |\mathrm{supp}(\boldsymbol{x}) \cap \mathrm{supp}(\boldsymbol{y})| ∣ supp ( x ) ∩ supp ( y ) ∣ が偶数であることを意味します。したがって、重みが 4 4 4 の倍数で互いに直交する x , y \boldsymbol{x}, \boldsymbol{y} x , y の和の重みも 4 4 4 の倍数です。C ^ \widehat{C} C の元は g i \boldsymbol{g}_i g i の和で、C ^ \widehat{C} C は自己直交なので、和を 1 つずつ足していけば、すべての符号語の重みが 4 4 4 の倍数だと分かります。長さは 8 8 8 なので 0 \boldsymbol{0} 0 でない符号語の重みは 4 4 4 か 8 8 8 で、最小距離は 4 4 4 です。C ^ \widehat{C} C は [ 8 , 4 , 4 ] 2 [8, 4, 4]_2 [ 8 , 4 , 4 ] 2 符号で、1 個の誤りを訂正し、同時に 2 個の誤りを検出します。
例 6.5 (三元 [4, 2, 3] Hamming 符号(tetracode) )
q = 3 q = 3 q = 3 、r = 2 r = 2 r = 2 では n = ( 9 − 1 ) / 2 = 4 n = (9 - 1)/2 = 4 n = ( 9 − 1 ) /2 = 4 です。F 3 2 \mathbb{F}_3^2 F 3 2 の 4 つの 1 次元部分空間の代表として ( 1 , 0 ) , ( 0 , 1 ) , ( 1 , 1 ) , ( 1 , 2 ) (1,0), (0,1), (1,1), (1,2) ( 1 , 0 ) , ( 0 , 1 ) , ( 1 , 1 ) , ( 1 , 2 ) を取ると
H 2 = [ 1 0 1 1 0 1 1 2 ] H_2 = \begin{bmatrix} 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 2 \end{bmatrix} H 2 = [ 1 0 0 1 1 1 1 2 ] で、H a m ( 2 , 3 ) \mathrm{Ham}(2, 3) Ham ( 2 , 3 ) は [ 4 , 2 , 3 ] 3 [4, 2, 3]_3 [ 4 , 2 , 3 ] 3 符号です。完全符号であることは 3 2 ⋅ ( 1 + 4 ⋅ 2 ) = 81 = 3 4 3^2 \cdot (1 + 4 \cdot 2) = 81 = 3^4 3 2 ⋅ ( 1 + 4 ⋅ 2 ) = 81 = 3 4 で確かめられます。
H 2 H_2 H 2 の行 r 1 = 1011 \boldsymbol{r}_1 = 1011 r 1 = 1011 、r 2 = 0112 \boldsymbol{r}_2 = 0112 r 2 = 0112 について、r 1 ⋅ r 1 = 3 = 0 \boldsymbol{r}_1 \cdot \boldsymbol{r}_1 = 3 = 0 r 1 ⋅ r 1 = 3 = 0 、r 2 ⋅ r 2 = 1 + 1 + 4 = 6 = 0 \boldsymbol{r}_2 \cdot \boldsymbol{r}_2 = 1 + 1 + 4 = 6 = 0 r 2 ⋅ r 2 = 1 + 1 + 4 = 6 = 0 、r 1 ⋅ r 2 = 1 + 2 = 0 \boldsymbol{r}_1 \cdot \boldsymbol{r}_2 = 1 + 2 = 0 r 1 ⋅ r 2 = 1 + 2 = 0 です。行の張る空間(単体符号)D D D は自己直交で、dim D = 2 = 4 − 2 = dim D ⊥ \dim D = 2 = 4 - 2 = \dim D^{\perp} dim D = 2 = 4 − 2 = dim D ⊥ なので D = D ⊥ = H a m ( 2 , 3 ) D = D^{\perp} = \mathrm{Ham}(2, 3) D = D ⊥ = Ham ( 2 , 3 ) です。この符号は Hamming 符号であり、単体符号でもあり、自己双対です。定理 6.2 の 3 より、0 \boldsymbol{0} 0 でない 8 個の符号語の重みはすべて 3 3 3 です。この符号は tetracode と呼ばれ、三元 Golay 符号の構成に使われます。
符号長 n n n を大きくしていくとき、情報率 R = k / n R = k/n R = k / n と相対距離 δ = d / n \delta = d/n δ = d / n の両方を正に保てるでしょうか。Gilbert–Varshamov 限界は「保てる」と答えます。評価には Hamming 球の体積の指数的な大きさが必要です。
定義 7.1 (二元エントロピー関数 ) ↗
0 < λ < 1 0 < \lambda < 1 0 < λ < 1 に対し
H ( λ ) = − λ log 2 λ − ( 1 − λ ) log 2 ( 1 − λ ) H(\lambda) = -\lambda \log_2 \lambda - (1 - \lambda)\log_2(1 - \lambda) H ( λ ) = − λ log 2 λ − ( 1 − λ ) log 2 ( 1 − λ ) と定め、H ( 0 ) = H ( 1 ) = 0 H(0) = H(1) = 0 H ( 0 ) = H ( 1 ) = 0 とする。H H H を二元エントロピー関数 という。
H ( λ ) = H ( 1 − λ ) H(\lambda) = H(1 - \lambda) H ( λ ) = H ( 1 − λ ) で、H ( 1 / 2 ) = 1 H(1/2) = 1 H ( 1/2 ) = 1 です。2 − n H ( λ ) = λ λ n ( 1 − λ ) ( 1 − λ ) n 2^{-nH(\lambda)} = \lambda^{\lambda n}(1 - \lambda)^{(1 - \lambda)n} 2 − n H ( λ ) = λ λn ( 1 − λ ) ( 1 − λ ) n という形で使います。H H H は ( 0 , 1 ) (0, 1) ( 0 , 1 ) 上で連続です(対数関数の連続性から)。
補題 7.2 (エントロピーの最大値 ) ✓
0 ≤ λ ≤ 1 0 \le \lambda \le 1 0 ≤ λ ≤ 1 について H ( λ ) ≤ 1 H(\lambda) \le 1 H ( λ ) ≤ 1 で、等号は λ = 1 / 2 \lambda = 1/2 λ = 1/2 のときに限る。
証明(補題 7.2) λ = 0 , 1 \lambda = 0, 1 λ = 0 , 1 では H = 0 < 1 H = 0 < 1 H = 0 < 1 です。0 < λ < 1 0 < \lambda < 1 0 < λ < 1 とします。まず、x > 0 x > 0 x > 0 について log x ≤ x − 1 \log x \le x - 1 log x ≤ x − 1 (log \log log は自然対数)で、等号は x = 1 x = 1 x = 1 に限ることを示します。ϕ ( x ) = x − 1 − log x \phi(x) = x - 1 - \log x ϕ ( x ) = x − 1 − log x とすると ϕ ′ ( x ) = 1 − 1 / x \phi'(x) = 1 - 1/x ϕ ′ ( x ) = 1 − 1/ x で、x > 1 x > 1 x > 1 では正、0 < x < 1 0 < x < 1 0 < x < 1 では負です。系 3.4[平均値の定理とテイラーの定理] の 3 より ϕ \phi ϕ は [ 1 , ∞ ) [1, \infty) [ 1 , ∞ ) で狭義単調増加、− ϕ -\phi − ϕ は ( 0 , 1 ] (0, 1] ( 0 , 1 ] で狭義単調増加なので、x ≠ 1 x \ne 1 x = 1 なら ϕ ( x ) > ϕ ( 1 ) = 0 \phi(x) > \phi(1) = 0 ϕ ( x ) > ϕ ( 1 ) = 0 です。
log 2 y = log y / log 2 \log_2 y = \log y / \log 2 log 2 y = log y / log 2 と λ + ( 1 − λ ) = 1 \lambda + (1 - \lambda) = 1 λ + ( 1 − λ ) = 1 を使うと
H ( λ ) − 1 = λ log 2 1 2 λ + ( 1 − λ ) log 2 1 2 ( 1 − λ ) ≤ 1 log 2 [ λ ( 1 2 λ − 1 ) + ( 1 − λ ) ( 1 2 ( 1 − λ ) − 1 ) ] = 1 log 2 [ 1 2 − λ + 1 2 − ( 1 − λ ) ] = 0 H(\lambda) - 1 = \lambda \log_2 \frac{1}{2\lambda} + (1 - \lambda)\log_2 \frac{1}{2(1 - \lambda)} \le \frac{1}{\log 2}\Bigl[\lambda\Bigl(\frac{1}{2\lambda} - 1\Bigr) + (1 - \lambda)\Bigl(\frac{1}{2(1-\lambda)} - 1\Bigr)\Bigr] = \frac{1}{\log 2}\Bigl[\frac12 - \lambda + \frac12 - (1 - \lambda)\Bigr] = 0 H ( λ ) − 1 = λ log 2 2 λ 1 + ( 1 − λ ) log 2 2 ( 1 − λ ) 1 ≤ log 2 1 [ λ ( 2 λ 1 − 1 ) + ( 1 − λ ) ( 2 ( 1 − λ ) 1 − 1 ) ] = log 2 1 [ 2 1 − λ + 2 1 − ( 1 − λ ) ] = 0 です。等号は 1 / ( 2 λ ) = 1 1/(2\lambda) = 1 1/ ( 2 λ ) = 1 かつ 1 / ( 2 ( 1 − λ ) ) = 1 1/(2(1 - \lambda)) = 1 1/ ( 2 ( 1 − λ )) = 1 、つまり λ = 1 / 2 \lambda = 1/2 λ = 1/2 のときに限ります。
∎
補題 7.3 (Hamming 球の体積のエントロピー評価 ) ✓
0 < λ ≤ 1 / 2 0 < \lambda \le 1/2 0 < λ ≤ 1/2 とし、n ≥ 1 n \ge 1 n ≥ 1 とする。
V 2 ( n , ⌊ λ n ⌋ ) = ∑ 0 ≤ i ≤ λ n ( n i ) ≤ 2 n H ( λ ) . V_2(n, \lfloor \lambda n \rfloor) = \sum_{0 \le i \le \lambda n} \binom{n}{i} \le 2^{\,n H(\lambda)}. V 2 ( n , ⌊ λn ⌋) = 0 ≤ i ≤ λn ∑ ( i n ) ≤ 2 n H ( λ ) .
この補題は、Hamming 球の体積を 2 2 2 のべき乗で簡単に抑えるためのものです。二項定理の和 1 1 1 から出発して、i ≤ λ n i \le \lambda n i ≤ λn の項だけを残して下から評価します。
証明(補題 7.3) 二項定理(定理 7.3[数え上げと母関数] )より
1 = ( λ + ( 1 − λ ) ) n = ∑ i = 0 n ( n i ) λ i ( 1 − λ ) n − i ≥ ∑ 0 ≤ i ≤ λ n ( n i ) ( 1 − λ ) n ( λ 1 − λ ) i 1 = \bigl(\lambda + (1 - \lambda)\bigr)^n = \sum_{i=0}^{n} \binom{n}{i} \lambda^i (1 - \lambda)^{n - i} \ge \sum_{0 \le i \le \lambda n} \binom{n}{i} (1 - \lambda)^n \Bigl(\frac{\lambda}{1 - \lambda}\Bigr)^{i} 1 = ( λ + ( 1 − λ ) ) n = i = 0 ∑ n ( i n ) λ i ( 1 − λ ) n − i ≥ 0 ≤ i ≤ λn ∑ ( i n ) ( 1 − λ ) n ( 1 − λ λ ) i です。λ ≤ 1 / 2 \lambda \le 1/2 λ ≤ 1/2 なので 0 < λ / ( 1 − λ ) ≤ 1 0 < \lambda/(1 - \lambda) \le 1 0 < λ / ( 1 − λ ) ≤ 1 で、i ≤ λ n i \le \lambda n i ≤ λn なら ( λ / ( 1 − λ ) ) i ≥ ( λ / ( 1 − λ ) ) λ n \bigl(\lambda/(1-\lambda)\bigr)^i \ge \bigl(\lambda/(1-\lambda)\bigr)^{\lambda n} ( λ / ( 1 − λ ) ) i ≥ ( λ / ( 1 − λ ) ) λn です。したがって
1 ≥ ( 1 − λ ) n ( λ 1 − λ ) λ n ∑ 0 ≤ i ≤ λ n ( n i ) = λ λ n ( 1 − λ ) ( 1 − λ ) n ∑ 0 ≤ i ≤ λ n ( n i ) = 2 − n H ( λ ) ∑ 0 ≤ i ≤ λ n ( n i ) 1 \ge (1 - \lambda)^n \Bigl(\frac{\lambda}{1 - \lambda}\Bigr)^{\lambda n} \sum_{0 \le i \le \lambda n} \binom{n}{i} = \lambda^{\lambda n}(1 - \lambda)^{(1 - \lambda) n} \sum_{0 \le i \le \lambda n} \binom{n}{i} = 2^{-nH(\lambda)} \sum_{0 \le i \le \lambda n} \binom{n}{i} 1 ≥ ( 1 − λ ) n ( 1 − λ λ ) λn 0 ≤ i ≤ λn ∑ ( i n ) = λ λn ( 1 − λ ) ( 1 − λ ) n 0 ≤ i ≤ λn ∑ ( i n ) = 2 − n H ( λ ) 0 ≤ i ≤ λn ∑ ( i n ) です。両辺に 2 n H ( λ ) 2^{nH(\lambda)} 2 n H ( λ ) を掛ければ結論です。
∎
系 7.4 (漸近的 Gilbert–Varshamov 限界 ) ✓
0 < δ < 1 / 2 0 < \delta < 1/2 0 < δ < 1/2 、ε > 0 \varepsilon > 0 ε > 0 とする。十分大きいすべての n n n について、最小距離が δ n \delta n δ n 以上で、情報率が k / n ≥ 1 − H ( δ ) − ε k/n \ge 1 - H(\delta) - \varepsilon k / n ≥ 1 − H ( δ ) − ε を満たす二元線形 [ n , k ] 2 [n, k]_2 [ n , k ] 2 符号が存在する。
証明(系 7.4) d = ⌈ δ n ⌉ d = \lceil \delta n \rceil d = ⌈ δ n ⌉ 、k = n − ⌊ n H ( δ ) ⌋ − 1 k = n - \lfloor nH(\delta) \rfloor - 1 k = n − ⌊ n H ( δ )⌋ − 1 とします。補題 7.2 より H ( δ ) < 1 H(\delta) < 1 H ( δ ) < 1 なので、n n n が十分大きければ k ≥ n ( 1 − H ( δ ) ) − 1 ≥ 1 k \ge n(1 - H(\delta)) - 1 \ge 1 k ≥ n ( 1 − H ( δ )) − 1 ≥ 1 です。また k ≤ n − 1 k \le n - 1 k ≤ n − 1 で、n n n が十分大きければ 2 ≤ d ≤ n 2 \le d \le n 2 ≤ d ≤ n です。d − 2 < δ n d - 2 < \delta n d − 2 < δ n なので、補題 7.3 より
V 2 ( n − 1 , d − 2 ) ≤ V 2 ( n , ⌊ δ n ⌋ ) ≤ 2 n H ( δ ) < 2 ⌊ n H ( δ ) ⌋ + 1 = 2 n − k V_2(n - 1, d - 2) \le V_2(n, \lfloor \delta n \rfloor) \le 2^{\,nH(\delta)} < 2^{\,\lfloor nH(\delta) \rfloor + 1} = 2^{\,n - k} V 2 ( n − 1 , d − 2 ) ≤ V 2 ( n , ⌊ δ n ⌋) ≤ 2 n H ( δ ) < 2 ⌊ n H ( δ )⌋ + 1 = 2 n − k です。定理 5.5 より、最小距離が d ≥ δ n d \ge \delta n d ≥ δ n 以上の [ n , k ] 2 [n, k]_2 [ n , k ] 2 符号が存在します。k / n ≥ 1 − H ( δ ) − 1 / n k/n \ge 1 - H(\delta) - 1/n k / n ≥ 1 − H ( δ ) − 1/ n なので、n ≥ 1 / ε n \ge 1/\varepsilon n ≥ 1/ ε なら k / n ≥ 1 − H ( δ ) − ε k/n \ge 1 - H(\delta) - \varepsilon k / n ≥ 1 − H ( δ ) − ε です。
∎
たとえば δ = 0.11 \delta = 0.11 δ = 0.11 では H ( δ ) ≈ 0.5 H(\delta) \approx 0.5 H ( δ ) ≈ 0.5 なので、相対距離 0.11 0.11 0.11 、情報率ほぼ 1 / 2 1/2 1/2 の二元線形符号の列が存在します。H ( δ ) < 1 H(\delta) < 1 H ( δ ) < 1 なので、δ < 1 / 2 \delta < 1/2 δ < 1/2 である限り情報率を正に保てます。二元符号でこの限界を漸近的に上回る構成は、現在も知られていません。
最後に、確率的な誤りに対して符号がどこまで有効かを調べます。誤り率 p p p の二元対称通信路で長さ n n n の語を送ると、誤りベクトル e ∈ F 2 n \boldsymbol{e} \in \mathbb{F}_2^n e ∈ F 2 n が確率
P ( e ) = p w t ( e ) ( 1 − p ) n − w t ( e ) P(\boldsymbol{e}) = p^{\,\mathrm{wt}(\boldsymbol{e})} (1 - p)^{\,n - \mathrm{wt}(\boldsymbol{e})} P ( e ) = p wt ( e ) ( 1 − p ) n − wt ( e )
で生じます。これは有限集合 F 2 n \mathbb{F}_2^n F 2 n 上の確率です(二項定理より総和は ( p + 1 − p ) n = 1 (p + 1 - p)^n = 1 ( p + 1 − p ) n = 1 )。誤りはおよそ p n pn p n 個生じるので、最小距離による保証(定理 2.4 )で確実に訂正するには d > 2 p n d > 2pn d > 2 p n が必要で、Plotkin 限界から p ≥ 1 / 4 p \ge 1/4 p ≥ 1/4 では情報率を正に保てません。しかし「確実に」を「高い確率で」に緩めると、事情は一変します。
定理 8.1 (二元対称通信路の符号化定理(順方向) ) ✓
0 < p < 1 / 2 0 < p < 1/2 0 < p < 1/2 、0 < R < 1 − H ( p ) 0 < R < 1 - H(p) 0 < R < 1 − H ( p ) とする。各 n ≥ 1 n \ge 1 n ≥ 1 について、長さ n n n 、次元 k n = ⌈ R n ⌉ k_n = \lceil Rn \rceil k n = ⌈ R n ⌉ の二元線形符号 C n C_n C n と復号写像 D n : F 2 n → C n ∪ { 失敗 } D_n : \mathbb{F}_2^n \to C_n \cup \{\text{失敗}\} D n : F 2 n → C n ∪ { 失敗 } であって、
max c ∈ C n P ( D n ( c + e ) ≠ c ) ⟶ 0 ( n → ∞ ) \max_{\boldsymbol{c} \in C_n} P\bigl(D_n(\boldsymbol{c} + \boldsymbol{e}) \ne \boldsymbol{c}\bigr) \longrightarrow 0 \qquad (n \to \infty) c ∈ C n max P ( D n ( c + e ) = c ) ⟶ 0 ( n → ∞ ) を満たすものが存在する。ここで確率は誤り率 p p p の二元対称通信路の誤りベクトル e \boldsymbol{e} e についてのものである。
証明の発想は、よい符号を 1 つ設計するのではなく、生成行列 G G G を無作為に選んだときの復号誤り確率の平均を計算することです。平均が小さければ、平均以下の誤り確率をもつ G G G が少なくとも 1 つは存在します。これで、符号を具体的に作らなくても存在が言えます。
証明(定理 8.1) 準備。 H H H は連続なので、ε > 0 \varepsilon > 0 ε > 0 を小さく取って λ = p + ε < 1 / 2 \lambda = p + \varepsilon < 1/2 λ = p + ε < 1/2 かつ R < 1 − H ( λ ) R < 1 - H(\lambda) R < 1 − H ( λ ) とできます。n n n を固定し、k = ⌈ R n ⌉ k = \lceil Rn \rceil k = ⌈ R n ⌉ とします(R < 1 R < 1 R < 1 なので k ≤ n k \le n k ≤ n )。
k × n k \times n k × n 行列 G G G に対し、復号を次のように定めます。受信語 y \boldsymbol{y} y に対し、w t ( y − u G ) ≤ λ n \mathrm{wt}(\boldsymbol{y} - \boldsymbol{u}G) \le \lambda n wt ( y − u G ) ≤ λn となる u ∈ F 2 k \boldsymbol{u} \in \mathbb{F}_2^k u ∈ F 2 k がただ 1 つならその u \boldsymbol{u} u (対応する符号語 u G \boldsymbol{u}G u G )を出力し、そうでなければ失敗とします。
誤り事象。 情報 u \boldsymbol{u} u を送り y = u G + e \boldsymbol{y} = \boldsymbol{u}G + \boldsymbol{e} y = u G + e を受け取ったとします。復号が u \boldsymbol{u} u を正しく出力することは、次の 2 つがどちらも起きないことと同値です。
(a) w t ( e ) > λ n \mathrm{wt}(\boldsymbol{e}) > \lambda n wt ( e ) > λn 。
(b) ある w ∈ F 2 k \boldsymbol{w} \in \mathbb{F}_2^k w ∈ F 2 k 、w ≠ 0 \boldsymbol{w} \ne \boldsymbol{0} w = 0 について w t ( w G + e ) ≤ λ n \mathrm{wt}(\boldsymbol{w}G + \boldsymbol{e}) \le \lambda n wt ( w G + e ) ≤ λn 。
実際、y − u G = e \boldsymbol{y} - \boldsymbol{u}G = \boldsymbol{e} y − u G = e なので、u \boldsymbol{u} u が復号の条件を満たすことは (a) が起きないことと同値です。また u ′ = u + w \boldsymbol{u}' = \boldsymbol{u} + \boldsymbol{w} u ′ = u + w (w ≠ 0 \boldsymbol{w} \ne \boldsymbol{0} w = 0 )については y − u ′ G = e − w G = e + w G \boldsymbol{y} - \boldsymbol{u}'G = \boldsymbol{e} - \boldsymbol{w}G = \boldsymbol{e} + \boldsymbol{w}G y − u ′ G = e − w G = e + w G なので、u \boldsymbol{u} u 以外に条件を満たすものがないことは (b) が起きないことと同値です。(a)(b) は u \boldsymbol{u} u によらないので、復号誤り確率はどの u \boldsymbol{u} u を送っても同じ値 P e r r ( G ) = P ( (a) または (b) ) P_{\mathrm{err}}(G) = P\bigl(\text{(a) または (b)}\bigr) P err ( G ) = P ( (a) または (b) ) で、
P e r r ( G ) ≤ P ( w t ( e ) > λ n ) + ∑ w ≠ 0 P ( w t ( w G + e ) ≤ λ n ) P_{\mathrm{err}}(G) \le P\bigl(\mathrm{wt}(\boldsymbol{e}) > \lambda n\bigr) + \sum_{\boldsymbol{w} \ne \boldsymbol{0}} P\bigl(\mathrm{wt}(\boldsymbol{w}G + \boldsymbol{e}) \le \lambda n\bigr) P err ( G ) ≤ P ( wt ( e ) > λn ) + w = 0 ∑ P ( wt ( w G + e ) ≤ λn ) です(事象の合併の確率は確率の和以下)。
(a) の評価。 X i ( e ) = e i ∈ { 0 , 1 } X_i(\boldsymbol{e}) = e_i \in \{0, 1\} X i ( e ) = e i ∈ { 0 , 1 } とすると w t ( e ) = ∑ i X i \mathrm{wt}(\boldsymbol{e}) = \sum_i X_i wt ( e ) = ∑ i X i です。P P P の定義から、i ≠ j i \ne j i = j について P ( X i = 1 ) = p P(X_i = 1) = p P ( X i = 1 ) = p 、P ( X i = 1 , X j = 1 ) = p 2 P(X_i = 1, X_j = 1) = p^2 P ( X i = 1 , X j = 1 ) = p 2 です(ほかの座標について和を取ると 1 1 1 になります)。期待値(定義 4.1[確率変数と期待値] 。有限集合の上では値と確率の積の有限和)は E [ X i ] = p E[X_i] = p E [ X i ] = p 、分散と共分散(定義 5.1[確率変数と期待値] )は V a r ( X i ) = E [ X i 2 ] − p 2 = p ( 1 − p ) \mathrm{Var}(X_i) = E[X_i^2] - p^2 = p(1 - p) Var ( X i ) = E [ X i 2 ] − p 2 = p ( 1 − p ) 、C o v ( X i , X j ) = p 2 − p ⋅ p = 0 \mathrm{Cov}(X_i, X_j) = p^2 - p \cdot p = 0 Cov ( X i , X j ) = p 2 − p ⋅ p = 0 です。これは事象 { X i = 1 } \{X_i = 1\} { X i = 1 } と { X j = 1 } \{X_j = 1\} { X j = 1 } が独立(定義 6.1[確率空間とコルモゴロフの公理] )であることの帰結です。したがって E [ w t ( e ) ] = n p E[\mathrm{wt}(\boldsymbol{e})] = np E [ wt ( e )] = n p 、V a r ( w t ( e ) ) = n p ( 1 − p ) \mathrm{Var}(\mathrm{wt}(\boldsymbol{e})) = np(1-p) Var ( wt ( e )) = n p ( 1 − p ) (命題 5.3[確率変数と期待値] の 4)で、チェビシェフの不等式(系 6.2[確率変数と期待値] )より
P ( w t ( e ) > λ n ) ≤ P ( ∣ w t ( e ) − n p ∣ ≥ ε n ) ≤ n p ( 1 − p ) ε 2 n 2 ≤ 1 4 ε 2 n P\bigl(\mathrm{wt}(\boldsymbol{e}) > \lambda n\bigr) \le P\bigl(|\mathrm{wt}(\boldsymbol{e}) - np| \ge \varepsilon n\bigr) \le \frac{np(1 - p)}{\varepsilon^2 n^2} \le \frac{1}{4\varepsilon^2 n} P ( wt ( e ) > λn ) ≤ P ( ∣ wt ( e ) − n p ∣ ≥ ε n ) ≤ ε 2 n 2 n p ( 1 − p ) ≤ 4 ε 2 n 1 です。
(b) の評価:符号についての平均。 G G G を 2 k n 2^{kn} 2 k n 個の k × n k \times n k × n 行列全体から一様に選び、P e r r ( G ) P_{\mathrm{err}}(G) P err ( G ) の平均を評価します。w ≠ 0 \boldsymbol{w} \ne \boldsymbol{0} w = 0 と e \boldsymbol{e} e を固定します。写像 G ↦ w G G \mapsto \boldsymbol{w}G G ↦ w G は行列の空間 F 2 k × n \mathbb{F}_2^{\,k \times n} F 2 k × n から F 2 n \mathbb{F}_2^n F 2 n への線形写像で、全射です(w i = 1 w_i = 1 w i = 1 なる i i i を取り、第 i i i 行を任意のベクトル、ほかの行を 0 \boldsymbol{0} 0 とすればよい)。次元定理より核は 2 k n − n 2^{kn - n} 2 k n − n 個の元をもち、F 2 n \mathbb{F}_2^n F 2 n の各ベクトルはちょうど 2 k n − n 2^{kn-n} 2 k n − n 個の G G G の像になります。w t ( w G + e ) ≤ λ n \mathrm{wt}(\boldsymbol{w}G + \boldsymbol{e}) \le \lambda n wt ( w G + e ) ≤ λn は w G ∈ B ( e , ⌊ λ n ⌋ ) \boldsymbol{w}G \in B(\boldsymbol{e}, \lfloor \lambda n \rfloor) w G ∈ B ( e , ⌊ λn ⌋) と同値なので、これを満たす G G G の割合は V 2 ( n , ⌊ λ n ⌋ ) / 2 n V_2(n, \lfloor\lambda n\rfloor)/2^n V 2 ( n , ⌊ λn ⌋) / 2 n です(補題 5.2 )。e \boldsymbol{e} e について P ( e ) P(\boldsymbol{e}) P ( e ) の重みで平均しても同じ値です。したがって、補題 7.3 と合わせて
1 2 k n ∑ G P e r r ( G ) ≤ 1 4 ε 2 n + ( 2 k − 1 ) V 2 ( n , ⌊ λ n ⌋ ) 2 n ≤ 1 4 ε 2 n + 2 k − n + n H ( λ ) \frac{1}{2^{kn}} \sum_{G} P_{\mathrm{err}}(G) \le \frac{1}{4\varepsilon^2 n} + (2^k - 1)\,\frac{V_2(n, \lfloor \lambda n \rfloor)}{2^n} \le \frac{1}{4\varepsilon^2 n} + 2^{\,k - n + nH(\lambda)} 2 k n 1 G ∑ P err ( G ) ≤ 4 ε 2 n 1 + ( 2 k − 1 ) 2 n V 2 ( n , ⌊ λn ⌋) ≤ 4 ε 2 n 1 + 2 k − n + n H ( λ ) です。k < R n + 1 k < Rn + 1 k < R n + 1 なので、右辺を a n a_n a n とおくと a n < 1 4 ε 2 n + 2 ⋅ 2 − n ( 1 − H ( λ ) − R ) a_n < \dfrac{1}{4\varepsilon^2 n} + 2 \cdot 2^{-n(1 - H(\lambda) - R)} a n < 4 ε 2 n 1 + 2 ⋅ 2 − n ( 1 − H ( λ ) − R ) で、1 − H ( λ ) − R > 0 1 - H(\lambda) - R > 0 1 − H ( λ ) − R > 0 より a n → 0 a_n \to 0 a n → 0 です。
符号の選択。 平均が a n a_n a n 以下なので、P e r r ( G n ) ≤ a n P_{\mathrm{err}}(G_n) \le a_n P err ( G n ) ≤ a n となる行列 G n G_n G n があります。a n < 1 a_n < 1 a n < 1 のとき、G n G_n G n の行は一次独立です。もし w G n = 0 \boldsymbol{w}G_n = \boldsymbol{0} w G n = 0 となる w ≠ 0 \boldsymbol{w} \ne \boldsymbol{0} w = 0 があれば、w t ( e ) ≤ λ n \mathrm{wt}(\boldsymbol{e}) \le \lambda n wt ( e ) ≤ λn のときは u \boldsymbol{u} u と u + w \boldsymbol{u} + \boldsymbol{w} u + w がともに条件を満たして失敗し、w t ( e ) > λ n \mathrm{wt}(\boldsymbol{e}) > \lambda n wt ( e ) > λn のときは u \boldsymbol{u} u が条件を満たさないので、復号は常に誤り、P e r r ( G n ) = 1 P_{\mathrm{err}}(G_n) = 1 P err ( G n ) = 1 となるからです。よって G n G_n G n の行の張る空間 C n C_n C n は k k k 次元の線形符号で、u ↦ u G n \boldsymbol{u} \mapsto \boldsymbol{u}G_n u ↦ u G n は F 2 k \mathbb{F}_2^k F 2 k から C n C_n C n への全単射、上の復号は C n C_n C n への復号写像 D n D_n D n を定め、どの符号語を送っても誤り確率は a n a_n a n 以下です。a n ≥ 1 a_n \ge 1 a n ≥ 1 となる有限個の n n n については任意の k k k 次元符号を取ります。a n → 0 a_n \to 0 a n → 0 なので定理が示されました。
∎
証明は符号を 1 つも具体的に作っていません。「無作為に選んだ線形符号は平均的によい」ことから存在だけを導いています。p = 0.11 p = 0.11 p = 0.11 なら 1 − H ( p ) ≈ 0.5 1 - H(p) \approx 0.5 1 − H ( p ) ≈ 0.5 なので、情報率 1 / 2 1/2 1/2 弱で、11% のビットが反転する通信路をほぼ誤りなく使えることになります。同じ情報率で最小距離による保証を求めると、訂正できるのは Gilbert–Varshamov 限界の符号で相対距離 0.11 0.11 0.11 の半分、5.5 % 5.5\% 5.5% 程度の誤りまでです。確率的な保証のほうが、およそ 2 倍の誤りに耐えます。
演習 9.1 易
生成行列 G = [ 1 0 1 1 0 0 1 0 1 1 ] G = \begin{bmatrix} 1 & 0 & 1 & 1 & 0 \\ 0 & 1 & 0 & 1 & 1 \end{bmatrix} G = [ 1 0 0 1 1 0 1 1 0 1 ] の二元符号 C C C について、(a) 検査行列と最小距離を求めよ。(b) シンドロームと剰余類の代表元の表を作れ。(c) 2 個の誤りのうち、どれだけが正しく訂正されるか。
解答 (a) G = [ I 2 ∣ A ] G = [\,I_2 \mid A\,] G = [ I 2 ∣ A ] 、A = [ 1 1 0 0 1 1 ] A = \begin{bmatrix} 1 & 1 & 0 \\ 0 & 1 & 1 \end{bmatrix} A = [ 1 0 1 1 0 1 ] なので、定理 3.5 の 4 より(標数 2 2 2 では − A T = A T -A^{\mathsf{T}} = A^{\mathsf{T}} − A T = A T )
H = [ 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 ] H = \begin{bmatrix} 1 & 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 & 1 \end{bmatrix} H = 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1 です。符号語は 00000 , 10110 , 01011 , 11101 00000, 10110, 01011, 11101 00000 , 10110 , 01011 , 11101 で、最小重みは 3 3 3 です。C C C は [ 5 , 2 , 3 ] 2 [5, 2, 3]_2 [ 5 , 2 , 3 ] 2 符号です。
(b) 剰余類は 2 5 − 2 = 8 2^{5-2} = 8 2 5 − 2 = 8 個です。重み 1 1 1 の誤りのシンドロームは H H H の列 110 , 011 , 100 , 010 , 001 110, 011, 100, 010, 001 110 , 011 , 100 , 010 , 001 で、相異なります。残るシンドロームは 101 101 101 と 111 111 111 です。101 = 100 + 001 101 = 100 + 001 101 = 100 + 001 (第 3, 5 列)= 110 + 011 = 110 + 011 = 110 + 011 (第 1, 2 列)なので、代表元は 00101 00101 00101 か 11000 11000 11000 のどちらかを選びます。111 = 110 + 001 111 = 110 + 001 111 = 110 + 001 (第 1, 5 列)= 011 + 100 = 011 + 100 = 011 + 100 (第 2, 3 列)なので、代表元は 10001 10001 10001 か 01100 01100 01100 です。
シンドローム 000 110 011 100 010 001 101 111 代表元 00000 10000 01000 00100 00010 00001 00101 10001
(c) 定理 4.2 の 3 より、正しく訂正されるのは誤りベクトルが代表元であるときだけです。重み 2 2 2 の誤り ( 5 2 ) = 10 \binom{5}{2} = 10 ( 2 5 ) = 10 通りのうち、表に載っている 00101 00101 00101 と 10001 10001 10001 の 2 通りだけが訂正されます。1 個の誤りは 5 通りすべて訂正されます(t = 1 t = 1 t = 1 )。
演習 9.2 標準
[ 5 , 2 , 4 ] 2 [5, 2, 4]_2 [ 5 , 2 , 4 ] 2 符号が存在しないことを、限界式を使わずに直接示せ。また Plotkin 限界からも導け。
解答 直接。 x , y \boldsymbol{x}, \boldsymbol{y} x , y を重み 4 4 4 以上の相異なる符号語とします。長さ 5 5 5 なので、どちらも 0 0 0 の座標は高々 1 個で、s u p p ( x ) ∩ s u p p ( y ) \mathrm{supp}(\boldsymbol{x}) \cap \mathrm{supp}(\boldsymbol{y}) supp ( x ) ∩ supp ( y ) は 3 3 3 個以上の座標を含みます。x + y \boldsymbol{x} + \boldsymbol{y} x + y はその座標で 0 0 0 なので w t ( x + y ) ≤ 2 \mathrm{wt}(\boldsymbol{x} + \boldsymbol{y}) \le 2 wt ( x + y ) ≤ 2 です。2 2 2 次元の符号には 0 \boldsymbol{0} 0 でない符号語が 3 個あり、x , y , x + y \boldsymbol{x}, \boldsymbol{y}, \boldsymbol{x} + \boldsymbol{y} x , y , x + y がすべて重み 4 4 4 以上であることはできません。
Plotkin 限界。 2 d = 8 > 5 = n 2d = 8 > 5 = n 2 d = 8 > 5 = n なので 定理 5.6 が使え、M ≤ 8 / ( 8 − 5 ) = 8 / 3 M \le 8/(8 - 5) = 8/3 M ≤ 8/ ( 8 − 5 ) = 8/3 、つまり M ≤ 2 M \le 2 M ≤ 2 です。M = 2 2 = 4 M = 2^2 = 4 M = 2 2 = 4 は不可能です。
演習 9.3 標準
C 1 C_1 C 1 を [ n , k 1 , d 1 ] q [n, k_1, d_1]_q [ n , k 1 , d 1 ] q 符号、C 2 C_2 C 2 を [ n , k 2 , d 2 ] q [n, k_2, d_2]_q [ n , k 2 , d 2 ] q 符号とする。(a) C = { ( u , u + v ) : u ∈ C 1 , v ∈ C 2 } C = \{(\boldsymbol{u}, \boldsymbol{u} + \boldsymbol{v}) : \boldsymbol{u} \in C_1,\ \boldsymbol{v} \in C_2\} C = {( u , u + v ) : u ∈ C 1 , v ∈ C 2 } は [ 2 n , k 1 + k 2 , min ( 2 d 1 , d 2 ) ] q [2n,\ k_1 + k_2,\ \min(2d_1, d_2)]_q [ 2 n , k 1 + k 2 , min ( 2 d 1 , d 2 ) ] q 符号であることを示せ。(b) R M ( 1 , 1 ) = F 2 2 \mathrm{RM}(1, 1) = \mathbb{F}_2^2 RM ( 1 , 1 ) = F 2 2 とし、m ≥ 1 m \ge 1 m ≥ 1 について R M ( 1 , m + 1 ) \mathrm{RM}(1, m + 1) RM ( 1 , m + 1 ) を C 1 = R M ( 1 , m ) C_1 = \mathrm{RM}(1, m) C 1 = RM ( 1 , m ) 、C 2 = R e p 2 m C_2 = \mathrm{Rep}_{2^m} C 2 = Rep 2 m から (a) の構成で定める。R M ( 1 , m ) \mathrm{RM}(1, m) RM ( 1 , m ) が [ 2 m , m + 1 , 2 m − 1 ] 2 [2^m,\ m + 1,\ 2^{m-1}]_2 [ 2 m , m + 1 , 2 m − 1 ] 2 符号であることを示せ(1 次の Reed–Muller 符号)。
解答 (a) ( u , v ) ↦ ( u , u + v ) (\boldsymbol{u}, \boldsymbol{v}) \mapsto (\boldsymbol{u}, \boldsymbol{u} + \boldsymbol{v}) ( u , v ) ↦ ( u , u + v ) は C 1 × C 2 C_1 \times C_2 C 1 × C 2 から F q 2 n \mathbb{F}_q^{2n} F q 2 n への線形写像で、像が 0 \boldsymbol{0} 0 なら u = 0 \boldsymbol{u} = \boldsymbol{0} u = 0 、v = 0 \boldsymbol{v} = \boldsymbol{0} v = 0 なので単射です。よって dim C = k 1 + k 2 \dim C = k_1 + k_2 dim C = k 1 + k 2 です。( u , v ) ≠ ( 0 , 0 ) (\boldsymbol{u}, \boldsymbol{v}) \ne (\boldsymbol{0}, \boldsymbol{0}) ( u , v ) = ( 0 , 0 ) とします。v = 0 \boldsymbol{v} = \boldsymbol{0} v = 0 なら重みは 2 w t ( u ) ≥ 2 d 1 2\,\mathrm{wt}(\boldsymbol{u}) \ge 2d_1 2 wt ( u ) ≥ 2 d 1 です。v ≠ 0 \boldsymbol{v} \ne \boldsymbol{0} v = 0 なら、三角不等式(命題 2.2 )より w t ( u ) + w t ( u + v ) ≥ w t ( ( u + v ) − u ) = w t ( v ) ≥ d 2 \mathrm{wt}(\boldsymbol{u}) + \mathrm{wt}(\boldsymbol{u} + \boldsymbol{v}) \ge \mathrm{wt}\bigl((\boldsymbol{u} + \boldsymbol{v}) - \boldsymbol{u}\bigr) = \mathrm{wt}(\boldsymbol{v}) \ge d_2 wt ( u ) + wt ( u + v ) ≥ wt ( ( u + v ) − u ) = wt ( v ) ≥ d 2 です。よって最小重みは min ( 2 d 1 , d 2 ) \min(2d_1, d_2) min ( 2 d 1 , d 2 ) 以上です。C 1 C_1 C 1 の重み d 1 d_1 d 1 の元 u \boldsymbol{u} u による ( u , u ) (\boldsymbol{u}, \boldsymbol{u}) ( u , u ) と、C 2 C_2 C 2 の重み d 2 d_2 d 2 の元 v \boldsymbol{v} v による ( 0 , v ) (\boldsymbol{0}, \boldsymbol{v}) ( 0 , v ) が等号を与えます。
(b) m m m についての帰納法です。R M ( 1 , 1 ) = F 2 2 \mathrm{RM}(1, 1) = \mathbb{F}_2^2 RM ( 1 , 1 ) = F 2 2 は [ 2 , 2 , 1 ] 2 [2, 2, 1]_2 [ 2 , 2 , 1 ] 2 符号で、m = 1 m = 1 m = 1 の主張と合います。R M ( 1 , m ) \mathrm{RM}(1, m) RM ( 1 , m ) が [ 2 m , m + 1 , 2 m − 1 ] 2 [2^m, m + 1, 2^{m-1}]_2 [ 2 m , m + 1 , 2 m − 1 ] 2 なら、R e p 2 m \mathrm{Rep}_{2^m} Rep 2 m は [ 2 m , 1 , 2 m ] 2 [2^m, 1, 2^m]_2 [ 2 m , 1 , 2 m ] 2 なので、(a) より R M ( 1 , m + 1 ) \mathrm{RM}(1, m+1) RM ( 1 , m + 1 ) は長さ 2 m + 1 2^{m+1} 2 m + 1 、次元 m + 2 m + 2 m + 2 、最小距離 min ( 2 ⋅ 2 m − 1 , 2 m ) = 2 m \min(2 \cdot 2^{m-1}, 2^m) = 2^m min ( 2 ⋅ 2 m − 1 , 2 m ) = 2 m です。m = 3 m = 3 m = 3 の [ 8 , 4 , 4 ] 2 [8, 4, 4]_2 [ 8 , 4 , 4 ] 2 符号は 例 6.4 の符号と同じパラメータをもちます。
演習 9.4 標準
C C C を [ n , k , d ] 2 [n, k, d]_2 [ n , k , d ] 2 符号とし、d d d が奇数であるとする。パリティ拡大 C ^ \widehat{C} C は [ n + 1 , k , d + 1 ] 2 [n + 1, k, d + 1]_2 [ n + 1 , k , d + 1 ] 2 符号であることを示せ。これを使って、r ≥ 2 r \ge 2 r ≥ 2 について [ 2 r , 2 r − 1 − r , 4 ] 2 [2^r,\ 2^r - 1 - r,\ 4]_2 [ 2 r , 2 r − 1 − r , 4 ] 2 符号が存在することを示せ。
解答 c ↦ c ^ = ( c , c 1 + ⋯ + c n ) \boldsymbol{c} \mapsto \widehat{\boldsymbol{c}} = (\boldsymbol{c}, c_1 + \cdots + c_n) c ↦ c = ( c , c 1 + ⋯ + c n ) は線形で単射なので dim C ^ = k \dim \widehat{C} = k dim C = k です。c ^ \widehat{\boldsymbol{c}} c の成分の和は 0 0 0 なので、w t ( c ^ ) \mathrm{wt}(\widehat{\boldsymbol{c}}) wt ( c ) は偶数です。w t ( c ) \mathrm{wt}(\boldsymbol{c}) wt ( c ) が奇数なら w t ( c ^ ) = w t ( c ) + 1 \mathrm{wt}(\widehat{\boldsymbol{c}}) = \mathrm{wt}(\boldsymbol{c}) + 1 wt ( c ) = wt ( c ) + 1 、偶数なら w t ( c ^ ) = w t ( c ) \mathrm{wt}(\widehat{\boldsymbol{c}}) = \mathrm{wt}(\boldsymbol{c}) wt ( c ) = wt ( c ) です。c ≠ 0 \boldsymbol{c} \ne \boldsymbol{0} c = 0 なら w t ( c ) ≥ d \mathrm{wt}(\boldsymbol{c}) \ge d wt ( c ) ≥ d で、w t ( c ^ ) \mathrm{wt}(\widehat{\boldsymbol{c}}) wt ( c ) は d d d 以上の偶数、d d d が奇数なので d + 1 d + 1 d + 1 以上です。重み d d d の符号語は重み d + 1 d + 1 d + 1 に写るので、最小距離はちょうど d + 1 d + 1 d + 1 です。
H a m ( r , 2 ) \mathrm{Ham}(r, 2) Ham ( r , 2 ) は 定理 6.2 より [ 2 r − 1 , 2 r − 1 − r , 3 ] 2 [2^r - 1,\ 2^r - 1 - r,\ 3]_2 [ 2 r − 1 , 2 r − 1 − r , 3 ] 2 符号なので、そのパリティ拡大が求める符号です。r = 3 r = 3 r = 3 のときが 例 6.4 です。
F. J. MacWilliams, N. J. A. Sloane, The Theory of Error-Correcting Codes , North-Holland, 1977 — 第 1 章(線形符号)、第 17 章(符号の限界式)。
J. H. van Lint, Introduction to Coding Theory , 3rd ed., Graduate Texts in Mathematics 86, Springer, 1999 — 第 2 章(Shannon の定理)、第 3 章(線形符号)、第 5 章(符号の限界式)。
W. C. Huffman, V. Pless, Fundamentals of Error-Correcting Codes , Cambridge University Press, 2003 — 第 1 章・第 2 章。
R. W. Hamming, “Error detecting and error correcting codes”, Bell System Technical Journal 29 (1950), 147–160。
C. E. Shannon, “A mathematical theory of communication”, Bell System Technical Journal 27 (1948), 379–423, 623–656。
T. M. Cover, J. A. Thomas, Elements of Information Theory , 2nd ed., Wiley, 2006 — 第 7 章(通信路容量。符号化定理の逆を含む)。
執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12