コンテンツにスキップ

線形符号:生成行列・検査行列・符号の限界式

対象読者: 本テーマ第 1 章の有限体の構造と、学部の線形代数(基底・次元・行列の核)、双対空間を学んだ人。符号理論は未習でよく、確率は二項係数と対数を使える程度です。

前提となる記事:有限体の構造:部分体・Frobenius 自己同型・既約多項式の個数、双対空間と商空間:線形写像を「測る側」と「割る側」から見る

生 Markdown

0 と 1 の列を、ときどきビットが反転する通信路で送るとき、列に余分な情報を付けておけば、受け取った側で誤りに気づいたり直したりできます。この記事では、余分な情報の付け方(符号)をどう決めればよいか、またどれだけうまく付けられるかには限界があるのか、を数え上げと線形代数で調べます。読み終えると、符号の「強さ」を表す数を計算でき、7 ビットの符号で 1 ビットの誤りを実際に直せるようになります。

  • 符号は Fqn\mathbb{F}_q^n の部分集合で、符号語どうしの Hamming 距離の最小値 dd が性能を決めます。最小距離 dd の符号は d−1d - 1 個までの誤りを検出し、⌊(d−1)/2⌋\lfloor (d-1)/2 \rfloor 個までの誤りを訂正します。
  • 線形符号は Fqn\mathbb{F}_q^n の部分空間です。生成行列 GG(基底を並べた行列)と検査行列 HH(符号を核とする行列)の 2 通りで記述でき、HH は双対符号 C⊥C^{\perp} の生成行列です。
  • 最小距離は、検査行列の列のうち一次従属になる最小の本数に等しくなります。符号の設計は「どの d−1d - 1 本も一次独立な列を集める」問題になります。
  • 符号長 nn、次元 kk、最小距離 dd は同時には大きくできません。Singleton 限界 d≤n−k+1d \le n - k + 1、Hamming 限界(球充填)、Plotkin 限界、Griesmer 限界が上から抑え、Gilbert–Varshamov 限界が「ここまでは必ず作れる」ことを保証します。
  • Hamming 符号は Hamming 限界を等号で満たす完全符号(符号語を中心とする球で空間をすき間なく埋め尽くす符号。§5 で定義します)で、双対の単体符号はすべての符号語の重みが等しくなります。
  • 誤り率 p<1/2p < 1/2 の二元対称通信路(各ビットが独立に確率 pp で反転する通信路)では、情報率が 1−H(p)1 - H(p)(HH は §7 の二元エントロピー関数)より小さければ、復号誤り確率をいくらでも小さくする線形符号が存在します(Shannon の符号化定理の順方向)。

00 と 11 の列を、ときどきビットが反転する通信路で送るとします。そのまま送れば、受け取った側は誤りがあったかどうかも分かりません。そこで送る列に冗長な部分を付け加えます。最も素朴なのは同じビットを 3 回送る方法で、0↦0000 \mapsto 000、1↦1111 \mapsto 111 とすれば、1 個のビットが反転しても多数決で直せます。ただし通信量は 3 倍になります。

もっと上手な方法があります。4 ビットの情報に 3 ビットの検査ビットを付け加えた 7 ビットを送ると、どの 1 ビットが反転しても直せます(Hamming 符号)。通信量は 7/47/4 倍で済みます。違いを生むのは、冗長な部分の作り方、つまり「送ってよい列の集合」の選び方です。

この記事の問いは 2 つです。第 1 に、よい符号とは何で、どう記述するか。答えは「符号語どうしが Hamming 距離で遠く離れた集合」で、それを部分空間に限ると線形代数の言葉(生成行列・検査行列)で書けます。第 2 に、符号の良さにはどんな限界があるか。答えは数え上げによるいくつかの不等式です。

文字の集合は 第 1 章 の有限体 Fq\mathbb{F}_q(q=peq = p^e 個の元をもつ体。命題 2.4[有限体の構造])とします。ここで定める語彙は、第 4 章 の巡回符号と 第 5 章 の重み分布でそのまま使います。Singleton 限界を等号で満たすのが Reed–Solomon 符号、Hamming 限界を等号で満たすのが Hamming 符号と Golay 符号です。

Fqn\mathbb{F}_q^n の元は行ベクトル x=(x1,…,xn)\boldsymbol{x} = (x_1, \ldots, x_n) で書き、誤解のないときは成分を並べて 10111011 のようにも書きます。

定義 2.1(Hamming 距離・Hamming 重み)↗

x,y∈Fqn\boldsymbol{x}, \boldsymbol{y} \in \mathbb{F}_q^n に対し、

d(x,y)=#{ i:xi≠yi },wt(x)=#{ i:xi≠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})

をそれぞれ Hamming 距離、Hamming 重みという。{i:xi≠0}\{i : x_i \ne 0\} を x\boldsymbol{x} の台といい supp(x)\mathrm{supp}(\boldsymbol{x}) と書く。

命題 2.2(Hamming 距離は距離)✓

すべての x,y,z∈Fqn\boldsymbol{x}, \boldsymbol{y}, \boldsymbol{z} \in \mathbb{F}_q^n について次が成り立つ。

  1. d(x,y)≥0d(\boldsymbol{x}, \boldsymbol{y}) \ge 0 で、d(x,y)=0  ⟺  x=yd(\boldsymbol{x}, \boldsymbol{y}) = 0 \iff \boldsymbol{x} = \boldsymbol{y}。
  2. d(x,y)=d(y,x)d(\boldsymbol{x}, \boldsymbol{y}) = d(\boldsymbol{y}, \boldsymbol{x})。
  3. 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})。
  4. d(x+z,y+z)=d(x,y)=wt(x−y)d(\boldsymbol{x} + \boldsymbol{z}, \boldsymbol{y} + \boldsymbol{z}) = d(\boldsymbol{x}, \boldsymbol{y}) = \mathrm{wt}(\boldsymbol{x} - \boldsymbol{y})。また a∈Fq×a \in \mathbb{F}_q^{\times} なら wt(ax)=wt(x)\mathrm{wt}(a\boldsymbol{x}) = \mathrm{wt}(\boldsymbol{x})。
証明(命題 2.2)

(1)(2) は定義から直接分かります(成分が 1 つも異ならないことは 2 つのベクトルが等しいことです)。

(3) xi≠zix_i \ne z_i なら、xi≠yix_i \ne y_i または yi≠ziy_i \ne z_i です(どちらも等しければ xi=yi=zix_i = y_i = z_i)。したがって {i:xi≠zi}⊆{i:xi≠yi}∪{i:yi≠zi}\{i : x_i \ne z_i\} \subseteq \{i : x_i \ne y_i\} \cup \{i : y_i \ne z_i\} で、元の個数を比べれば不等式が出ます。

(4) xi+zi≠yi+zi  ⟺  xi≠yi  ⟺  xi−yi≠0x_i + z_i \ne y_i + z_i \iff x_i \ne y_i \iff x_i - y_i \ne 0 です。a≠0a \ne 0 なら axi≠0  ⟺  xi≠0a x_i \ne 0 \iff x_i \ne 0 です。

定義 2.3(符号・最小距離)↗

Fqn\mathbb{F}_q^n の空でない部分集合 CC を(Fq\mathbb{F}_q 上の)長さ nn の符号、その元を符号語という。∣C∣≥2|C| \ge 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}' \,\}

を CC の最小距離という。長さ nn、符号語の個数 MM、最小距離 dd の符号を (n,M,d)q(n, M, d)_q 符号という。R=log⁡qMnR = \dfrac{\log_q M}{n} を情報率、δ=d/n\delta = d/n を相対距離という。

受信語 y∈Fqn\boldsymbol{y} \in \mathbb{F}_q^n に対し、d(c,y)d(\boldsymbol{c}, \boldsymbol{y}) が最小になる符号語 c\boldsymbol{c} の 1 つを出力する復号を最小距離復号という。

符号語 c\boldsymbol{c} を送って y\boldsymbol{y} を受け取ったとき、e=y−c\boldsymbol{e} = \boldsymbol{y} - \boldsymbol{c} を誤りベクトルといい、wt(e)=d(c,y)\mathrm{wt}(\boldsymbol{e}) = d(\boldsymbol{c}, \boldsymbol{y}) を誤りの個数といいます。

定理 2.4(最小距離と誤り検出・誤り訂正)✓

CC を最小距離 dd の符号とし、t=⌊(d−1)/2⌋t = \lfloor (d - 1)/2 \rfloor とする。c∈C\boldsymbol{c} \in C、y∈Fqn\boldsymbol{y} \in \mathbb{F}_q^n とする。

  1. (検出)1≤d(c,y)≤d−11 \le d(\boldsymbol{c}, \boldsymbol{y}) \le d - 1 ならば y∉C\boldsymbol{y} \notin C である。
  2. (訂正)d(c,y)≤td(\boldsymbol{c}, \boldsymbol{y}) \le t ならば、c\boldsymbol{c} 以外のすべての符号語 c′\boldsymbol{c}' について d(c′,y)>t≥d(c,y)d(\boldsymbol{c}', \boldsymbol{y}) > t \ge d(\boldsymbol{c}, \boldsymbol{y}) である。したがって最小距離復号は c\boldsymbol{c} を出力する。
  3. (限界)d(c,y)=dd(\boldsymbol{c}, \boldsymbol{y}) = d かつ y∈C\boldsymbol{y} \in C となる c,y\boldsymbol{c}, \boldsymbol{y} が存在する。また、d(c,y)=t+1d(\boldsymbol{c}, \boldsymbol{y}) = t + 1 かつ、ある符号語 c′≠c\boldsymbol{c}' \ne \boldsymbol{c} について d(c′,y)≤t+1d(\boldsymbol{c}', \boldsymbol{y}) \le t + 1 となる c,y\boldsymbol{c}, \boldsymbol{y} が存在する。
証明(定理 2.4)

(1) y∈C\boldsymbol{y} \in C なら、y≠c\boldsymbol{y} \ne \boldsymbol{c} なので最小距離の定義から d(c,y)≥dd(\boldsymbol{c}, \boldsymbol{y}) \ge d となり、仮定に反します。

(2) c′∈C\boldsymbol{c}' \in C、c′≠c\boldsymbol{c}' \ne \boldsymbol{c} とします。三角不等式(命題 2.2 の 3)より

d(c′,y)≥d(c,c′)−d(c,y)≥d−t≥t+1d(\boldsymbol{c}', \boldsymbol{y}) \ge d(\boldsymbol{c}, \boldsymbol{c}') - d(\boldsymbol{c}, \boldsymbol{y}) \ge d - t \ge t + 1

です。最後の不等号は 2t≤d−12t \le d - 1 によります。

(3) 最小距離を実現する c,c′∈C\boldsymbol{c}, \boldsymbol{c}' \in C(d(c,c′)=dd(\boldsymbol{c}, \boldsymbol{c}') = d)を取ります。y=c′\boldsymbol{y} = \boldsymbol{c}' とすれば前半です。後半は、c\boldsymbol{c} と c′\boldsymbol{c}' が異なる dd 個の座標のうち t+1t + 1 個(t+1≤dt + 1 \le d)で c\boldsymbol{c} の成分を c′\boldsymbol{c}' の成分に書き換えたものを y\boldsymbol{y} とします。d(c,y)=t+1d(\boldsymbol{c}, \boldsymbol{y}) = t + 1、d(c′,y)=d−(t+1)d(\boldsymbol{c}', \boldsymbol{y}) = d - (t + 1) で、d≤2t+2d \le 2t + 2 なので d−(t+1)≤t+1d - (t + 1) \le t + 1 です。

cc’d = 5t = 2
最小距離 ()の 2 つの符号語を中心とする半径 の球の模式図。Hamming 距離を平面の距離に見立てた概念図で、球は交わらない。

(2) は「各符号語を中心とする半径 tt の球が互いに交わらない」ことを言っています。d=3d = 3 なら 1 個の誤りを訂正でき、d=4d = 4 なら 1 個を訂正しつつ 2 個の誤りの存在を検出でき、d=5d = 5 なら 2 個を訂正できます。

定義 3.1(線形符号・生成行列)↗

Fqn\mathbb{F}_q^n の部分空間 CC を線形符号という。dim⁡C=k\dim C = k のとき [n,k]q[n, k]_q 符号、さらに最小距離が dd のとき [n,k,d]q[n, k, d]_q 符号という。CC の基底 g1,…,gk\boldsymbol{g}_1, \ldots, \boldsymbol{g}_k を行として並べた k×nk \times n 行列 GG を CC の生成行列という。

[n,k]q[n, k]_q 符号の符号語は qkq^k 個で、情報率は k/nk/n です。生成行列を使うと、情報 u∈Fqk\boldsymbol{u} \in \mathbb{F}_q^k を符号語 uG=∑iuigi\boldsymbol{u}G = \sum_i u_i \boldsymbol{g}_i に写す符号化 Fqk→C\mathbb{F}_q^k \to C が線形同型として書けます。qkq^k 個の符号語を覚えておく代わりに、kk 個の基底だけを持てば済むのが線形符号の第 1 の利点です。

命題 3.2(最小距離は最小重み)✓

C≠{0}C \ne \{\boldsymbol{0}\} を線形符号とすると、d(C)=min⁡{ wt(c):c∈C, c≠0 }d(C) = \min\{\, \mathrm{wt}(\boldsymbol{c}) : \boldsymbol{c} \in C,\ \boldsymbol{c} \ne \boldsymbol{0} \,\} である。

証明(命題 3.2)

右辺を ww とします。c≠c′\boldsymbol{c} \ne \boldsymbol{c}' を符号語とすると、c−c′\boldsymbol{c} - \boldsymbol{c}' は CC の 0\boldsymbol{0} でない元で、命題 2.2 の 4 より d(c,c′)=wt(c−c′)≥wd(\boldsymbol{c}, \boldsymbol{c}') = \mathrm{wt}(\boldsymbol{c} - \boldsymbol{c}') \ge w です。よって d(C)≥wd(C) \ge w です。逆に重み ww の符号語 c\boldsymbol{c} について d(c,0)=wd(\boldsymbol{c}, \boldsymbol{0}) = w で、0∈C\boldsymbol{0} \in C なので d(C)≤wd(C) \le w です。

一般の符号では最小距離を求めるのに (M2)\binom{M}{2} 組の比較が要りますが、線形符号では M−1M - 1 個の重みを見れば済みます。

命題 3.3(標準形の生成行列)✓

CC を [n,k]q[n, k]_q 符号とする。座標の順序を適当に入れ替えると、CC は G=[ Ik∣A ]G = [\,I_k \mid A\,](IkI_k は kk 次単位行列、AA は k×(n−k)k \times (n - k) 行列)の形の生成行列をもつ。

証明(命題 3.3)

生成行列 G0G_0 から始めて、行基本変形(行の交換、行の 00 でない定数倍、ある行の定数倍を別の行に加える)と列の交換を行います。行基本変形は行の張る空間 CC を変えず、行の一次独立性も保ちます。列の交換は座標の入れ替えです。

j=1,2,…,kj = 1, 2, \ldots, k の順に次を行います。この時点で第 11 列から第 j−1j - 1 列までは単位行列の対応する列になっているとします。第 jj 行は 0\boldsymbol{0} でなく(行は一次独立)、第 1,…,j−11, \ldots, j - 1 成分は 00 なので、第 jj 列以降に 00 でない成分があります。列を交換してそれを (j,j)(j, j) 成分に移し、第 jj 行を定数倍して (j,j)(j, j) 成分を 11 にし、ほかの行から第 jj 行の定数倍を引いて第 jj 列のほかの成分を 00 にします。第 jj 行の第 1,…,j−11, \ldots, j-1 成分は 00 なので、この操作ですでに整えた列は変わりません。kk 回繰り返すと左の kk 列が IkI_k になります。

標準形では uG=(u,uA)\boldsymbol{u}G = (\boldsymbol{u}, \boldsymbol{u}A) で、符号語の最初の kk 成分が情報そのもの、残りの n−kn - k 成分が検査記号になります。このような符号化を組織符号化といいます。

x,y∈Fqn\boldsymbol{x}, \boldsymbol{y} \in \mathbb{F}_q^n に対し x⋅y=∑i=1nxiyi∈Fq\boldsymbol{x} \cdot \boldsymbol{y} = \sum_{i=1}^{n} x_i y_i \in \mathbb{F}_q と書きます。これは対称な双線形形式です。

定義 3.4(双対符号・検査行列)↗

線形符号 C⊆FqnC \subseteq \mathbb{F}_q^n に対し

C⊥={ y∈Fqn: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) \,\}

を CC の双対符号という。C⊆C⊥C \subseteq C^{\perp} のとき CC は自己直交、C=C⊥C = C^{\perp} のとき自己双対であるという。

行が一次独立な行列 HH が C={x∈Fqn:HxT=0}C = \{\boldsymbol{x} \in \mathbb{F}_q^n : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} を満たすとき、HH を CC の検査行列という。

定理 3.5(双対符号の次元と検査行列)✓

CC を [n,k]q[n, k]_q 符号、GG をその生成行列とする。

  1. C⊥C^{\perp} は [n,n−k]q[n, n - k]_q 符号である。
  2. (C⊥)⊥=C(C^{\perp})^{\perp} = C。
  3. C⊥={y:GyT=0}C^{\perp} = \{\boldsymbol{y} : G\boldsymbol{y}^{\mathsf{T}} = \boldsymbol{0}\} である。また、行列 HH が CC の検査行列であることと、HH が C⊥C^{\perp} の生成行列であることは同値である。特に検査行列は (n−k)×n(n - k) \times n 行列である。
  4. G=[ Ik∣A ]G = [\,I_k \mid A\,] ならば、H=[ −AT∣In−k ]H = [\,-A^{\mathsf{T}} \mid I_{n-k}\,] は CC の検査行列である。

この定理の証明の中心は、y\boldsymbol{y} に「x\boldsymbol{x} との内積を取る線形形式」を対応させる写像 Θ\Theta です。Θ\Theta が同型だと分かれば、C⊥C^{\perp} を双対空間の中の零化空間として捉えられ、次元が n−kn - k だと既知の次元公式から読み取れます。

証明(定理 3.5)

(1) V=FqnV = \mathbb{F}_q^n とし、Θ:V→V∗\Theta : V \to V^{*} を Θ(y)(x)=x⋅y\Theta(\boldsymbol{y})(\boldsymbol{x}) = \boldsymbol{x} \cdot \boldsymbol{y} で定めます。Θ\Theta は線形です。Θ(y)=0\Theta(\boldsymbol{y}) = 0 なら、標準基底 ei\boldsymbol{e}_i について yi=ei⋅y=0y_i = \boldsymbol{e}_i \cdot \boldsymbol{y} = 0 なので y=0\boldsymbol{y} = \boldsymbol{0}、つまり Θ\Theta は単射です。dim⁡V∗=n\dim V^{*} = n(定理 2.3[双対空間と商空間] の 1)なので Θ\Theta は線形同型です(系 7.5[ベクトル空間と線形変換])。定義から、y∈C⊥\boldsymbol{y} \in C^{\perp} は Θ(y)\Theta(\boldsymbol{y}) が CC の上で 00 になること、つまり Θ(y)\Theta(\boldsymbol{y}) が CC の零化空間 C0C^{0}(定義 3.3[双対空間と商空間])に属することと同値です。よって C⊥=Θ−1(C0)C^{\perp} = \Theta^{-1}(C^{0}) は部分空間で、零化空間の次元公式(定理 3.4[双対空間と商空間] の 1)より dim⁡C⊥=dim⁡C0=n−k\dim C^{\perp} = \dim C^{0} = n - k です。

(2) x∈C\boldsymbol{x} \in C はすべての y∈C⊥\boldsymbol{y} \in C^{\perp} と直交するので C⊆(C⊥)⊥C \subseteq (C^{\perp})^{\perp} です。(1) を C⊥C^{\perp} に使うと dim⁡(C⊥)⊥=n−(n−k)=k=dim⁡C\dim (C^{\perp})^{\perp} = n - (n - k) = k = \dim C なので、両者は一致します(命題 5.7[ベクトル空間と線形変換] の 3)。

(3) GG の行 g1,…,gk\boldsymbol{g}_1, \ldots, \boldsymbol{g}_k は CC を張るので、y\boldsymbol{y} が CC のすべての元と直交することは、すべての gi\boldsymbol{g}_i と直交することと同値です(x⋅y\boldsymbol{x} \cdot \boldsymbol{y} は x\boldsymbol{x} について線形)。GyTG\boldsymbol{y}^{\mathsf{T}} の第 ii 成分は gi⋅y\boldsymbol{g}_i \cdot \boldsymbol{y} なので、前半が出ます。

HH が C⊥C^{\perp} の生成行列なら、前半を符号 C⊥C^{\perp} に使って {x:HxT=0}=(C⊥)⊥=C\{\boldsymbol{x} : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} = (C^{\perp})^{\perp} = C で、HH の行は一次独立なので HH は CC の検査行列です。逆に HH を CC の検査行列とし、HH の行が張る空間を DD とします。HH は DD の生成行列で、前半より D⊥={x:HxT=0}=CD^{\perp} = \{\boldsymbol{x} : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} = C、(2) より D=(D⊥)⊥=C⊥D = (D^{\perp})^{\perp} = C^{\perp} です。行数は dim⁡C⊥=n−k\dim C^{\perp} = n - k です。

(4) HH の右側の n−kn - k 列が単位行列なので、HH の行は一次独立です。HH の行が張る空間を DD とすると dim⁡D=n−k\dim D = n - k です。ブロックごとに計算して

HGT=[ −AT∣In−k ][IkAT]=−AT+AT=OH 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

です。これは HH の各行が GG の各行と直交することを意味するので D⊆C⊥D \subseteq C^{\perp} で、次元が等しいので D=C⊥D = C^{\perp} です。(3) より HH は CC の検査行列です。

例 3.6(反復符号とパリティ検査符号)

反復符号 Repn={(a,a,…,a):a∈Fq}\mathrm{Rep}_n = \{(a, a, \ldots, a) : a \in \mathbb{F}_q\} は [n,1,n]q[n, 1, n]_q 符号で、生成行列は G=[ 1 1 ⋯ 1 ]G = [\,1\ 1\ \cdots\ 1\,] です。⌊(n−1)/2⌋\lfloor (n-1)/2 \rfloor 個の誤りを訂正しますが、情報率は 1/n1/n です。

その双対は定理 3.5 の 3 より {y:y1+⋯+yn=0}\{\boldsymbol{y} : y_1 + \cdots + y_n = 0\} で、q=2q = 2 のときは重みが偶数のベクトルの全体です。これをパリティ検査符号といいます。[n,n−1,2]q[n, n-1, 2]_q 符号で(重み 1 のベクトルは成分の和が 00 でないので含まれず、(1,−1,0,…,0)(1, -1, 0, \ldots, 0) は含まれます)、情報率は (n−1)/n(n-1)/n と高いですが、1 個の誤りを検出するだけで訂正はできません。

この 2 つは「情報率」と「最小距離」の両極端にあります。符号理論の主題は、その中間によい符号を見つけることです。

定理 3.7(最小距離と検査行列の列)✓

HH を Fq\mathbb{F}_q 成分で nn 列の行列、h1,…,hn\boldsymbol{h}_1, \ldots, \boldsymbol{h}_n をその列とし、C={x∈Fqn:HxT=0}C = \{\boldsymbol{x} \in \mathbb{F}_q^n : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} が {0}\{\boldsymbol{0}\} でないとする。このとき CC の最小距離は、HH の列から一次従属な ss 本を選べるような最小の ss に等しい。特に、d(C)≥δd(C) \ge \delta であることと、HH のどの δ−1\delta - 1 本の列も一次独立であることは同値である。

証明(定理 3.7)

HxT=∑i=1nxihiH\boldsymbol{x}^{\mathsf{T}} = \sum_{i=1}^{n} x_i \boldsymbol{h}_i なので、x∈C\boldsymbol{x} \in C は ∑ixihi=0\sum_i x_i \boldsymbol{h}_i = \boldsymbol{0} と同値です。

x∈C\boldsymbol{x} \in C を重み w≥1w \ge 1 の符号語とすると、∑i∈supp(x)xihi=0\sum_{i \in \mathrm{supp}(\boldsymbol{x})} x_i \boldsymbol{h}_i = \boldsymbol{0} は台に対応する ww 本の列の自明でない一次関係なので、一次従属な ww 本の列があります。逆に、ss 本の列 hi1,…,his\boldsymbol{h}_{i_1}, \ldots, \boldsymbol{h}_{i_s} が一次従属で、すべては 00 でない係数で ∑jajhij=0\sum_j a_j \boldsymbol{h}_{i_j} = \boldsymbol{0} とすると、第 iji_j 成分が aja_j でほかが 00 のベクトルは CC の 0\boldsymbol{0} でない元で、重みは ss 以下です。

したがって、CC の 0\boldsymbol{0} でない元の重みの最小値と、一次従属な列の本数の最小値は一致します。前者は 命題 3.2 より d(C)d(C) です。後半は前半の言い換えです(一次従属な列の集合に列を足しても一次従属なので、「δ−1\delta - 1 本以下のどの列も一次独立」は「どの δ−1\delta - 1 本も一次独立」と同じです)。

この定理が線形符号の第 2 の利点です。最小距離という組合せ的な量が、行列の列の一次独立性という線形代数の条件に変わります。最小距離 33 の符号が欲しければ、「どの 2 本も一次独立」、つまり 0\boldsymbol{0} を含まず互いに定数倍でない列を集めればよいことになります。これをぎりぎりまで集めたのが §6 の Hamming 符号です。

定義 3.8(符号の同値)↗

2 つの線形符号 C,C′⊆FqnC, C' \subseteq \mathbb{F}_q^n が同値であるとは、座標の置換と、各座標に 00 でない定数を掛ける操作の組み合わせで CC が C′C' に写ることをいう。

どちらの操作も線形同型で、命題 2.2 の 4 と同じ理由で重みを変えないので、同値な符号は同じ n,k,dn, k, d をもちます。

例 3.9(ISBN の検査数字)

ISBN-10。 10 桁の数字 x1x2⋯x10x_1 x_2 \cdots x_{10} を F11\mathbb{F}_{11} の元の列とみて、条件

∑i=110i xi=0(F11 において)\sum_{i=1}^{10} i\, x_i = 0 \quad (\mathbb{F}_{11} \text{ において})

を課します(値 1010 は文字 X で表し、最後の桁にだけ現れます)。これは検査行列 H=[ 1 2 ⋯ 10 ]H = [\,1\ 2\ \cdots\ 10\,] の [10,9]11[10, 9]_{11} 符号です。HH の列はどれも 00 でなく(どの 1 本も一次独立)、どの 2 本も一次従属なので、定理 3.7 より最小距離は 22 で、1 個の誤りを検出します。さらに、異なる 2 つの桁 i,ji, j の入れ替えも検出します。入れ替えによる左辺の変化は (i−j)(xj−xi)(i - j)(x_j - x_i) で、xi≠xjx_i \ne x_j なら F11\mathbb{F}_{11} が体なので 00 になりません。10≡−110 \equiv -1 なので、最後の桁は x10=∑i=19i xix_{10} = \sum_{i=1}^{9} i\,x_i で決まります。たとえば最初の 9 桁が 123456789123456789 なら ∑i=19i2=285=25⋅11+10\sum_{i=1}^{9} i^2 = 285 = 25 \cdot 11 + 10 で、検査数字は X です。

ISBN-13。 13 桁の数字に、Z/10Z\mathbb{Z}/10\mathbb{Z} における条件 x1+3x2+x3+3x4+⋯+3x12+x13=0x_1 + 3x_2 + x_3 + 3x_4 + \cdots + 3x_{12} + x_{13} = 0 を課します。11 と 33 は 1010 と互いに素なので、1 桁の誤りは左辺を変え、検出されます。しかし Z/10Z\mathbb{Z}/10\mathbb{Z} は体ではないので、隣り合う桁の入れ替えは必ずしも検出されません。変化は ±2(xi−xi+1)\pm 2(x_i - x_{i+1}) で、xi−xi+1=±5x_i - x_{i+1} = \pm 5 のとき 00 になるからです(05↔5005 \leftrightarrow 50、16↔6116 \leftrightarrow 61 など)。文字の集合を体に取ることの利点が、ここに現れています。

定義 4.1(シンドローム・剰余類の代表元)↗

CC を [n,k]q[n, k]_q 符号、HH をその検査行列とする。y∈Fqn\boldsymbol{y} \in \mathbb{F}_q^n に対し S(y)=HyT∈Fq n−kS(\boldsymbol{y}) = H\boldsymbol{y}^{\mathsf{T}} \in \mathbb{F}_q^{\,n-k} を y\boldsymbol{y} のシンドロームという。CC の剰余類 y+C\boldsymbol{y} + C の元のうち重みが最小のものの 1 つを、その剰余類の代表元(coset leader)という。

定理 4.2(シンドローム復号の正しさ)✓

CC を [n,k,d]q[n, k, d]_q 符号、HH を検査行列、t=⌊(d−1)/2⌋t = \lfloor (d-1)/2 \rfloor とする。

  1. S(y)=S(y′)  ⟺  y−y′∈CS(\boldsymbol{y}) = S(\boldsymbol{y}') \iff \boldsymbol{y} - \boldsymbol{y}' \in C。S:Fqn→Fq n−kS : \mathbb{F}_q^n \to \mathbb{F}_q^{\,n-k} は全射で、シンドロームと CC の剰余類は 1 対 1 に対応する。剰余類は qn−kq^{n-k} 個ある。
  2. 各シンドローム s\boldsymbol{s} に対し、対応する剰余類の代表元 es\boldsymbol{e}_{\boldsymbol{s}} を 1 つ選んでおく。受信語 y\boldsymbol{y} に対し c^=y−eS(y)\hat{\boldsymbol{c}} = \boldsymbol{y} - \boldsymbol{e}_{S(\boldsymbol{y})} を出力する復号は最小距離復号である。すなわち c^∈C\hat{\boldsymbol{c}} \in C で、すべての c′∈C\boldsymbol{c}' \in C について d(c^,y)≤d(c′,y)d(\hat{\boldsymbol{c}}, \boldsymbol{y}) \le d(\boldsymbol{c}', \boldsymbol{y})。
  3. 符号語 c\boldsymbol{c} を送り y=c+e\boldsymbol{y} = \boldsymbol{c} + \boldsymbol{e} を受け取ったとき、復号結果が c\boldsymbol{c} になることと、e\boldsymbol{e} が選んでおいた代表元の 1 つであることは同値である。wt(e)≤t\mathrm{wt}(\boldsymbol{e}) \le t ならば e\boldsymbol{e} はその剰余類のただ 1 つの代表元で、復号結果は c\boldsymbol{c} になる。
証明(定理 4.2)

(1) SS は線形で、核は CC です。したがって S(y)=S(y′)  ⟺  S(y−y′)=0  ⟺  y−y′∈CS(\boldsymbol{y}) = S(\boldsymbol{y}') \iff S(\boldsymbol{y} - \boldsymbol{y}') = \boldsymbol{0} \iff \boldsymbol{y} - \boldsymbol{y}' \in C です。次元定理(定理 7.3[ベクトル空間と線形変換])より像の次元は n−kn - k で、行き先 Fq n−k\mathbb{F}_q^{\,n-k} の次元に等しいので SS は全射です。シンドロームの値は qn−kq^{n-k} 個で、値ごとに剰余類が 1 つ対応します。

(2) S(c^)=S(y)−S(eS(y))=0S(\hat{\boldsymbol{c}}) = S(\boldsymbol{y}) - S(\boldsymbol{e}_{S(\boldsymbol{y})}) = \boldsymbol{0} なので c^∈C\hat{\boldsymbol{c}} \in C です。c′∈C\boldsymbol{c}' \in C とすると、y−c′\boldsymbol{y} - \boldsymbol{c}' は y\boldsymbol{y} と同じ剰余類に属するので、代表元の定義から wt(y−c′)≥wt(eS(y))\mathrm{wt}(\boldsymbol{y} - \boldsymbol{c}') \ge \mathrm{wt}(\boldsymbol{e}_{S(\boldsymbol{y})}) です。左辺は d(c′,y)d(\boldsymbol{c}', \boldsymbol{y})、右辺は d(c^,y)d(\hat{\boldsymbol{c}}, \boldsymbol{y}) です。

(3) S(y)=S(c)+S(e)=S(e)S(\boldsymbol{y}) = S(\boldsymbol{c}) + S(\boldsymbol{e}) = S(\boldsymbol{e}) なので、c^=c+e−eS(e)\hat{\boldsymbol{c}} = \boldsymbol{c} + \boldsymbol{e} - \boldsymbol{e}_{S(\boldsymbol{e})} です。これが c\boldsymbol{c} に等しいのは e=eS(e)\boldsymbol{e} = \boldsymbol{e}_{S(\boldsymbol{e})} のときに限ります。wt(e)≤t\mathrm{wt}(\boldsymbol{e}) \le t とし、e′\boldsymbol{e}' を同じ剰余類の元で wt(e′)≤wt(e)\mathrm{wt}(\boldsymbol{e}') \le \mathrm{wt}(\boldsymbol{e}) なるものとします。e−e′∈C\boldsymbol{e} - \boldsymbol{e}' \in C で、三角不等式より wt(e−e′)≤2t<d\mathrm{wt}(\boldsymbol{e} - \boldsymbol{e}') \le 2t < d なので e−e′=0\boldsymbol{e} - \boldsymbol{e}' = \boldsymbol{0} です。つまり e\boldsymbol{e} はその剰余類で重みが最小のただ 1 つの元で、代表元として必ず選ばれています。

復号器は、qn−kq^{n-k} 個のシンドロームと代表元の対応表を持てばよいことになります。qkq^k 個の符号語すべてと距離を比べるより、n−kn - k が小さいときにはずっと少ない手間です。

例 4.3([7, 4, 3] Hamming 符号で 1 個の誤りを訂正する)

第 jj 列が jj の 2 進表示になっている行列

H=[000111101100111010101]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}

を検査行列とする二元符号 CC を考えます。HH の行は一次独立(第 4, 2, 1 列が単位ベクトル)なので CC は [7,4]2[7, 4]_2 符号です。列はすべて 0\boldsymbol{0} でなく相異なるので、どの 2 本も一次独立です。第 1, 2, 3 列は 001+010+011=000001 + 010 + 011 = 000 で一次従属です。定理 3.7 より d=3d = 3 で、1 個の誤りを訂正できます。

第 jj 座標だけが 11 の誤り ej\boldsymbol{e}_j のシンドロームは HH の第 jj 列、つまり jj の 2 進表示です。したがって復号は「シンドロームを 2 進数として読み、その番号のビットを反転する(000000 なら何もしない)」で済みます。

c=1010101\boldsymbol{c} = 1010101 は符号語です(第 1, 3, 5, 7 列の和は 001+011+101+111=000001 + 011 + 101 + 111 = 000)。第 5 ビットが反転して y=1010001\boldsymbol{y} = 1010001 を受け取ったとします。シンドロームは第 1, 3, 7 列の和 001+011+111=101001 + 011 + 111 = 101 で、2 進数として 55 です。第 5 ビットを反転して 10101011010101 に戻ります。

最小距離復号が「もっともらしい」復号であることを確かめておきます。qq 元対称通信路とは、各座標が独立に、確率 1−p1 - p でそのまま届き、確率 pp でほかの q−1q - 1 個の文字のどれかに等確率で変わる通信路です。q=2q = 2 のときを二元対称通信路といいます。受信語 y\boldsymbol{y} に対し、c\boldsymbol{c} を送ったときに y\boldsymbol{y} を受け取る確率 P(y∣c)P(\boldsymbol{y} \mid \boldsymbol{c}) が最大になる符号語 c\boldsymbol{c} を出力する復号を最尤復号といいます。

命題 4.4(対称通信路では最尤復号は最小距離復号)✓

誤り率 pp が 0<p<(q−1)/q0 < p < (q - 1)/q を満たす qq 元対称通信路では、P(y∣c)P(\boldsymbol{y} \mid \boldsymbol{c}) は d(c,y)d(\boldsymbol{c}, \boldsymbol{y}) の狭義単調減少関数である。したがって最尤復号と最小距離復号は一致する。

証明(命題 4.4)

w=d(c,y)w = d(\boldsymbol{c}, \boldsymbol{y}) とします。ww 個の座標が指定された別の文字に変わり(各確率 p/(q−1)p/(q-1))、残りの n−wn - w 個がそのまま届く(各確率 1−p1 - p)ので、座標ごとの独立性から

P(y∣c)=(pq−1)w(1−p)n−w=(1−p)n(p(q−1)(1−p))wP(\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<(q−1)/qp < (q-1)/q は pq<q−1pq < q - 1、すなわち p<(q−1)(1−p)p < (q - 1)(1 - p) と同値なので、括弧の中は 00 より大きく 11 より小さく、右辺は ww について狭義単調減少です。

nn と dd を決めたとき、符号語の個数 MM(線形符号なら次元 kk)はどこまで大きくできるでしょうか。上界を 4 つ、下界を 1 つ示します。証明はすべて数え上げです。

定義 5.1(Hamming 球・完全符号・MDS 符号)↗

x∈Fqn\boldsymbol{x} \in \mathbb{F}_q^n と整数 r≥0r \ge 0 に対し、B(x,r)={y∈Fqn:d(x,y)≤r}B(\boldsymbol{x}, r) = \{\boldsymbol{y} \in \mathbb{F}_q^n : d(\boldsymbol{x}, \boldsymbol{y}) \le r\} を中心 x\boldsymbol{x}、半径 rr の Hamming 球といい、

Vq(n,r)=∑i=0min⁡(r,n)(ni)(q−1)iV_q(n, r) = \sum_{i=0}^{\min(r, n)} \binom{n}{i} (q - 1)^i

とおく。最小距離 dd の符号 CC が、t=⌊(d−1)/2⌋t = \lfloor (d-1)/2 \rfloor について Fqn=⋃c∈CB(c,t)\mathbb{F}_q^n = \bigcup_{\boldsymbol{c} \in C} B(\boldsymbol{c}, t) を満たすとき完全符号という。d=n−k+1d = n - k + 1 を満たす [n,k,d]q[n, k, d]_q 符号を MDS 符号(最大距離分離符号)という。

補題 5.2(Hamming 球の体積)✓

すべての x∈Fqn\boldsymbol{x} \in \mathbb{F}_q^n と r≥0r \ge 0 について ∣B(x,r)∣=Vq(n,r)|B(\boldsymbol{x}, r)| = V_q(n, r) である。

証明(補題 5.2)

d(x,y)=id(\boldsymbol{x}, \boldsymbol{y}) = i となる y\boldsymbol{y} を数えます。y\boldsymbol{y} は、x\boldsymbol{x} と異なる座標の集合(ii 元部分集合。(ni)\binom{n}{i} 通り。定義 7.1[数え上げと母関数])と、その各座標での値(xjx_j 以外の q−1q - 1 通り)で決まるので、(ni)(q−1)i\binom{n}{i}(q-1)^i 個です。i=0,1,…,min⁡(r,n)i = 0, 1, \ldots, \min(r, n) について足せば Vq(n,r)V_q(n, r) です。

定理 5.3(Singleton 限界)✓

(n,M,d)q(n, M, d)_q 符号について M≤q n−d+1M \le q^{\,n - d + 1} である。特に [n,k,d]q[n, k, d]_q 線形符号について d≤n−k+1d \le n - k + 1 である。

証明(定理 5.3)

各符号語から最後の d−1d - 1 個の座標を消す写像 π:C→Fq n−d+1\pi : C \to \mathbb{F}_q^{\,n-d+1} を考えます。異なる符号語は dd 個以上の座標で異なるので、d−1d - 1 個の座標を消しても残りのどこかで異なります。つまり π\pi は単射で、M=∣C∣≤q n−d+1M = |C| \le q^{\,n-d+1} です(定理 7.5[数え上げと母関数] の 1 の対偶)。線形符号では M=qkM = q^k なので k≤n−d+1k \le n - d + 1 です。

定理 5.4(Hamming 限界(球充填限界))✓

(n,M,d)q(n, M, d)_q 符号について、t=⌊(d−1)/2⌋t = \lfloor (d-1)/2 \rfloor とすると

M⋅Vq(n,t)≤qnM \cdot V_q(n, t) \le q^n

である。等号が成り立つことと、符号が完全符号であることは同値である。

証明(定理 5.4)

定理 2.4 の 2 より、異なる符号語 c,c′\boldsymbol{c}, \boldsymbol{c}' について B(c,t)∩B(c′,t)=∅B(\boldsymbol{c}, t) \cap B(\boldsymbol{c}', t) = \varnothing です(共通の元 y\boldsymbol{y} があれば d(c,y)≤td(\boldsymbol{c}, \boldsymbol{y}) \le t かつ d(c′,y)≤td(\boldsymbol{c}', \boldsymbol{y}) \le t となり矛盾)。MM 個の球は互いに交わらず、それぞれ Vq(n,t)V_q(n, t) 個の元をもつ(補題 5.2)ので、合併は M⋅Vq(n,t)M \cdot V_q(n, t) 個の元をもち、これは ∣Fqn∣=qn|\mathbb{F}_q^n| = q^n 以下です。等号は合併が Fqn\mathbb{F}_q^n 全体であること、つまり完全符号であることと同値です。

上界だけでは「よい符号が存在する」ことは分かりません。次の定理は、検査行列の列を 1 本ずつ選んでいく素朴な方法で、かなりよい符号が必ず作れることを示します。

定理 5.5(Gilbert–Varshamov 限界)✓

n,k,dn, k, d を 1≤k≤n−11 \le k \le n - 1、2≤d≤n2 \le d \le n を満たす整数とする。

Vq(n−1, d−2)<q n−kV_q(n - 1,\ d - 2) < q^{\,n-k}

ならば、最小距離が dd 以上の [n,k]q[n, k]_q 線形符号が存在する。

証明の方針は次のとおりです。定理 3.7 により、最小距離 dd 以上の符号を作ることは、「どの d−1d - 1 本も一次独立」な列を nn 本集めることと同じです。列を 1 本ずつ足していくとき、新しい列として使えないのは、すでに選んだ列の d−2d - 2 本以下の一次結合で書けるベクトルです。その個数を数えて Fq n−k\mathbb{F}_q^{\,n-k} の元の総数 qn−kq^{n-k} より少ないと示せば、使えるベクトルがまだ残っていることが分かり、最後の列まで選び続けられます。

証明(定理 5.5)

r=n−kr = n - k とします。Fq r\mathbb{F}_q^{\,r} のベクトル h1,…,hn\boldsymbol{h}_1, \ldots, \boldsymbol{h}_n を、「どの d−1d - 1 本以下も一次独立」という条件を保ちながら 1 本ずつ選びます。

h1,…,hj\boldsymbol{h}_1, \ldots, \boldsymbol{h}_j(0≤j≤n−10 \le j \le n - 1)がこの条件を満たすように選べたとします。hj+1\boldsymbol{h}_{j+1} として、h1,…,hj\boldsymbol{h}_1, \ldots, \boldsymbol{h}_j のうち d−2d - 2 本以下の一次結合で書けないベクトルを選びます。d−2d - 2 本以下の一次結合は、使う列の集合(ii 本、0≤i≤d−20 \le i \le d - 2)と 00 でない係数((q−1)i(q - 1)^i 通り)で決まるので、高々

∑i=0d−2(ji)(q−1)i=Vq(j,d−2)≤Vq(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}

個です(j≤n−1j \le n - 1 なら (ji)≤(n−1i)\binom{j}{i} \le \binom{n-1}{i})。Fq r\mathbb{F}_q^{\,r} の元は qrq^r 個あるので、そのような hj+1\boldsymbol{h}_{j+1} が選べます。

h1,…,hj+1\boldsymbol{h}_1, \ldots, \boldsymbol{h}_{j+1} が条件を満たすことを確かめます。d−1d - 1 本以下の列の自明でない一次関係があったとします。hj+1\boldsymbol{h}_{j+1} の係数が 00 なら、h1,…,hj\boldsymbol{h}_1, \ldots, \boldsymbol{h}_j の d−1d - 1 本以下の自明でない一次関係となり、帰納法の仮定に反します。00 でなければ、hj+1\boldsymbol{h}_{j+1} について解いて、hj+1\boldsymbol{h}_{j+1} がほかの d−2d - 2 本以下の一次結合で書け、選び方に反します。

h1,…,hn\boldsymbol{h}_1, \ldots, \boldsymbol{h}_n を列とする r×nr \times n 行列を HH とし、C0={x:HxT=0}C_0 = \{\boldsymbol{x} : H\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} とします。次元定理(定理 7.3[ベクトル空間と線形変換])より dim⁡C0=n−dim⁡Im≥n−r=k≥1\dim C_0 = n - \dim \mathrm{Im} \ge n - r = k \ge 1 です。定理 3.7 より d(C0)≥dd(C_0) \ge d です。C0C_0 の kk 次元部分空間 CC を取ると、CC の 0\boldsymbol{0} でない元は C0C_0 の元でもあるので重みは dd 以上で、CC が求める符号です。

定理 5.6(Plotkin 限界)✓

θ=1−1/q\theta = 1 - 1/q とする。(n,M,d)q(n, M, d)_q 符号が d>θnd > \theta n を満たすならば

M≤dd−θnM \le \frac{d}{d - \theta n}

である。q=2q = 2 のときは、2d>n2d > n ならば M≤2d2d−nM \le \dfrac{2d}{2d - n} である。

証明(定理 5.6)

S=∑d(c,c′)S = \sum d(\boldsymbol{c}, \boldsymbol{c}') を、符号語の順序対 (c,c′)(\boldsymbol{c}, \boldsymbol{c}')、c≠c′\boldsymbol{c} \ne \boldsymbol{c}' すべてにわたる和とします。順序対は M(M−1)M(M-1) 個で各項は dd 以上なので S≥M(M−1) dS \ge M(M-1)\,d です。

SS を座標ごとに数え直します。第 ii 座標が a∈Fqa \in \mathbb{F}_q である符号語の個数を mam_a とすると、∑ama=M\sum_a m_a = M で、第 ii 座標で異なる順序対の個数は

∑a∈Fqma(M−ma)=M2−∑ama2\sum_{a \in \mathbb{F}_q} m_a (M - m_a) = M^2 - \sum_{a} m_a^2

です。∑a(ma−M/q)2≥0\sum_a (m_a - M/q)^2 \ge 0 を展開すると ∑ama2−2(M/q)M+q (M/q)2≥0\sum_a m_a^2 - 2(M/q) M + q\,(M/q)^2 \ge 0、つまり ∑ama2≥M2/q\sum_a m_a^2 \ge M^2/q なので、上の個数は M2−M2/q=θM2M^2 - M^2/q = \theta M^2 以下です。nn 個の座標について足して S≤nθM2S \le n\theta M^2 です。

2 つの評価を合わせると M(M−1) d≤nθM2M(M-1)\,d \le n \theta M^2、MM で割って (M−1) d≤nθM(M - 1)\,d \le n\theta M、すなわち M (d−θn)≤dM\,(d - \theta n) \le d です。d−θn>0d - \theta n > 0 で割れば結論です。q=2q = 2 では θ=1/2\theta = 1/2 で、d/(d−n/2)=2d/(2d−n)d/(d - n/2) = 2d/(2d - n) です。

Plotkin 限界は、相対距離 d/nd/n が θ\theta を超えると符号語の個数が nn によらない定数で抑えられることを示します。大きな符号を作りたければ、相対距離は 1−1/q1 - 1/q 以下にせざるを得ません。

線形符号に限ると、次のより細かい限界が成り立ちます。⌈x⌉\lceil x \rceil は xx 以上の最小の整数です。

補題 5.7(剰余符号)✓

k≥2k \ge 2 とし、[n,k,d]q[n, k, d]_q 符号が存在するとする。このとき、ある d′≥⌈d/q⌉d' \ge \lceil d/q \rceil について [n−d, k−1, d′]q[n - d,\ k - 1,\ d']_q 符号が存在する。

この補題は、直後の Griesmer 限界の帰納法で使う道具です。最小重みの符号語 c\boldsymbol{c} の 00 でない座標を消した符号を考えると、符号の次元は 1 つ下がり、長さは dd だけ短くなります。そのとき最小距離が ⌈d/q⌉\lceil d/q \rceil 以上に保たれることを示します。証明の冒頭の座標の入れ替えと逆元を掛ける操作は、c\boldsymbol{c} を (1,…,1,0,…,0)(1, \ldots, 1, 0, \ldots, 0) の形にそろえて、以降の計算を見やすくするためのものです。

証明(補題 5.7)

CC を [n,k,d]q[n, k, d]_q 符号、c∈C\boldsymbol{c} \in C を重み dd の符号語とします。座標を入れ替え、c\boldsymbol{c} の 00 でない各座標にその成分の逆元を掛けます。この操作は Fqn\mathbb{F}_q^n の線形同型で、各ベクトルの重みを変えない(a≠0a \ne 0 なら axi≠0  ⟺  xi≠0a x_i \ne 0 \iff x_i \ne 0)ので、CC の像も [n,k,d]q[n, k, d]_q 符号です。したがって c=(1,…,1,0,…,0)\boldsymbol{c} = (1, \ldots, 1, 0, \ldots, 0)(最初の dd 個が 11)としてよいです。π:C→Fq n−d\pi : C \to \mathbb{F}_q^{\,n-d} を最後の n−dn - d 個の座標への射影とし、C′=π(C)C' = \pi(C) とします。

x∈C\boldsymbol{x} \in C を c\boldsymbol{c} の定数倍でない元とします。x1,…,xdx_1, \ldots, x_d の dd 個の値は qq 通りのどれかなので、ある a∈Fqa \in \mathbb{F}_q が Na≥⌈d/q⌉N_a \ge \lceil d/q \rceil 回現れます(⌈d/q⌉=1\lceil d/q \rceil = 1 のときは、x1x_1 の値を aa とすればよい。⌈d/q⌉≥2\lceil d/q \rceil \ge 2 のときは、定理 7.5[数え上げと母関数] の 1 を k=⌈d/q⌉−1≥1k = \lceil d/q \rceil - 1 \ge 1 に使う。d>q (⌈d/q⌉−1)d > q\,(\lceil d/q \rceil - 1) なので)。x−ac\boldsymbol{x} - a\boldsymbol{c} は CC の 0\boldsymbol{0} でない元で、最初の dd 個の座標のうち 00 でないのは d−Nad - N_a 個、最後の n−dn - d 個の座標は π(x)\pi(\boldsymbol{x}) と同じなので

d≤wt(x−ac)=(d−Na)+wt(π(x))d \le \mathrm{wt}(\boldsymbol{x} - a\boldsymbol{c}) = (d - N_a) + \mathrm{wt}(\pi(\boldsymbol{x}))

です。よって wt(π(x))≥Na≥⌈d/q⌉≥1\mathrm{wt}(\pi(\boldsymbol{x})) \ge N_a \ge \lceil d/q \rceil \ge 1 です。

特に π(x)≠0\pi(\boldsymbol{x}) \ne \boldsymbol{0} なので、π\pi の核は c\boldsymbol{c} の定数倍の全体(1 次元)です。次元定理(定理 7.3[ベクトル空間と線形変換])より dim⁡C′=k−1≥1\dim C' = k - 1 \ge 1 です。C′C' の 0\boldsymbol{0} でない元は、c\boldsymbol{c} の定数倍でない x\boldsymbol{x} による π(x)\pi(\boldsymbol{x}) なので、重みは ⌈d/q⌉\lceil d/q \rceil 以上です。

定理 5.8(Griesmer 限界)✓

k≥1k \ge 1 とする。[n,k,d]q[n, k, d]_q 符号が存在するならば

n≥∑i=0k−1⌈dqi⌉n \ge \sum_{i=0}^{k-1} \Bigl\lceil \frac{d}{q^i} \Bigr\rceil

である。

証明(定理 5.8)

kk についての帰納法で示します。k=1k = 1 のとき、主張は n≥dn \ge d で、重みは nn 以下なので成り立ちます。k≥2k \ge 2 とし、k−1k - 1 では成り立つとします。補題 5.7 より [n−d,k−1,d′]q[n - d, k - 1, d']_q 符号(d′≥⌈d/q⌉d' \ge \lceil d/q \rceil)があるので、帰納法の仮定から

n−d≥∑i=0k−2⌈d′qi⌉≥∑i=0k−2⌈dqi+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

です。2 番目の不等号は d′/qi≥⌈d/q⌉/qi≥d/qi+1d'/q^i \ge \lceil d/q \rceil / q^i \ge d/q^{i+1} と、⌈ ⌉\lceil\ \rceil が単調であることによります。両辺に d=⌈d/q0⌉d = \lceil d/q^0 \rceil を加えれば kk の場合です。

例 5.9(n = 10、d = 3 の二元線形符号)

長さ 1010、最小距離 33 以上の二元線形符号の次元 kk を、各限界で評価します(上界はどれも dd が大きいほど厳しくなるので、d=3d = 3 として計算すれば十分です)。

限界条件結論
Singleton3≤10−k+13 \le 10 - k + 1k≤8k \le 8
Hamming2k(1+10)≤210=10242^k (1 + 10) \le 2^{10} = 10242k≤932^k \le 93、k≤6k \le 6
Plotkin2d>n2d > n が必要だが 2d=6<102d = 6 < 10適用できない
Griesmer10≥3+2+1+⋯+1⏟k−2=k+310 \ge 3 + 2 + \underbrace{1 + \cdots + 1}_{k - 2} = k + 3k≤7k \le 7
Gilbert–VarshamovV2(9,1)=10<210−kV_2(9, 1) = 10 < 2^{10 - k}k≤6k \le 6 なら存在する

Hamming 限界から k≤6k \le 6、Gilbert–Varshamov 限界から k=6k = 6 の符号が存在するので、最大の次元はちょうど 66 です。この例では上界と下界が一致しましたが、一般には両者の間に隙間があり、最良の符号のパラメータが分かっていない (n,d)(n, d) は数多く残っています。

限界式は必要条件でしかないことにも注意してください。[5,2,4]2[5, 2, 4]_2 というパラメータは、Singleton 限界(4≤5−2+14 \le 5 - 2 + 1)も Hamming 限界(22(1+5)=24≤322^2 (1 + 5) = 24 \le 32)も満たしますが、Griesmer 限界は 5≥4+2=65 \ge 4 + 2 = 6 を要求するので、そのような符号は存在しません。

定義 6.1(Hamming 符号・単体符号)↗

r≥2r \ge 2 とし、n=(qr−1)/(q−1)n = (q^r - 1)/(q - 1) とする。Fq r\mathbb{F}_q^{\,r} の 1 次元部分空間のそれぞれから 0\boldsymbol{0} でないベクトルを 1 つずつ選び、それらを列として並べた r×nr \times n 行列を HrH_r とする。HrH_r を検査行列とする符号 Ham(r,q)={x∈Fqn:HrxT=0}\mathrm{Ham}(r, q) = \{\boldsymbol{x} \in \mathbb{F}_q^n : H_r\boldsymbol{x}^{\mathsf{T}} = \boldsymbol{0}\} を Hamming 符号、その双対符号を単体符号(シンプレックス符号)という。

Fq r\mathbb{F}_q^{\,r} の 0\boldsymbol{0} でないベクトルは qr−1q^r - 1 個で、各 1 次元部分空間は 0\boldsymbol{0} でないベクトルを q−1q - 1 個含み、異なる 1 次元部分空間は 0\boldsymbol{0} 以外を共有しないので、1 次元部分空間は (qr−1)/(q−1)(q^r - 1)/(q - 1) 個あります。代表元の選び方と列の順序を変えても、得られる符号は同値です。q=2q = 2 では n=2r−1n = 2^r - 1 で、列は 0\boldsymbol{0} でないベクトル全部です(例 4.3 は r=3r = 3 の場合)。

定理 6.2(Hamming 符号と単体符号)✓

r≥2r \ge 2、n=(qr−1)/(q−1)n = (q^r - 1)/(q-1) とする。

  1. Ham(r,q)\mathrm{Ham}(r, q) は [n, n−r, 3]q[n,\ n - r,\ 3]_q 符号である。
  2. Ham(r,q)\mathrm{Ham}(r, q) は完全符号である。
  3. 単体符号は [n,r]q[n, r]_q 符号で、0\boldsymbol{0} でない符号語の重みはすべて qr−1q^{r-1} である。特に最小距離は qr−1q^{r-1} である。
証明(定理 6.2)

(1) HrH_r の列には標準基底 e1,…,er\boldsymbol{e}_1, \ldots, \boldsymbol{e}_r それぞれの定数倍が含まれるので、写像 x↦HrxT\boldsymbol{x} \mapsto H_r \boldsymbol{x}^{\mathsf{T}} は Fqn\mathbb{F}_q^n から Fq r\mathbb{F}_q^{\,r} への全射です。次元定理(定理 7.3[ベクトル空間と線形変換])より核の次元は n−rn - r で、HrH_r の行は一次独立(一次従属なら像の次元が rr より小さくなります)なので HrH_r は検査行列です。HrH_r の列はどれも 0\boldsymbol{0} でなく、異なる 2 本は異なる 1 次元部分空間に属するので互いに定数倍でなく、どの 2 本も一次独立です。一方、e1\boldsymbol{e}_1、e2\boldsymbol{e}_2、e1+e2\boldsymbol{e}_1 + \boldsymbol{e}_2 の属する 3 つの 1 次元部分空間は相異なり、それらの代表である 3 本の列は 2 次元空間に含まれるので一次従属です。定理 3.7 より最小距離は 33 です。

(2) t=1t = 1 で、Vq(n,1)=1+n(q−1)=1+(qr−1)=qrV_q(n, 1) = 1 + n(q - 1) = 1 + (q^r - 1) = q^r です。符号語は qn−rq^{n-r} 個なので qn−r⋅Vq(n,1)=qnq^{n-r} \cdot V_q(n, 1) = q^n となり、定理 5.4 の等号が成り立ちます。

(3) 定理 3.5 の 3 より、単体符号は HrH_r を生成行列とする [n,r]q[n, r]_q 符号で、符号語は uHr=(u⋅h1,…,u⋅hn)\boldsymbol{u}H_r = (\boldsymbol{u}\cdot\boldsymbol{h}_1, \ldots, \boldsymbol{u}\cdot\boldsymbol{h}_n)(u∈Fq r\boldsymbol{u} \in \mathbb{F}_q^{\,r}、hj\boldsymbol{h}_j は HrH_r の列)です。u≠0\boldsymbol{u} \ne \boldsymbol{0} とします。U={v∈Fq r:u⋅v=0}U = \{\boldsymbol{v} \in \mathbb{F}_q^{\,r} : \boldsymbol{u} \cdot \boldsymbol{v} = 0\} は 00 でない線形写像 v↦u⋅v\boldsymbol{v} \mapsto \boldsymbol{u}\cdot\boldsymbol{v} の核なので、次元は r−1r - 1 です(次元定理)。uHr\boldsymbol{u}H_r の第 jj 成分が 00 であることは hj∈U\boldsymbol{h}_j \in U、つまり hj\boldsymbol{h}_j の属する 1 次元部分空間が UU に含まれることと同値です。UU に含まれる 1 次元部分空間は (qr−1−1)/(q−1)(q^{r-1} - 1)/(q - 1) 個なので、

wt(uHr)=qr−1q−1−qr−1−1q−1=qr−qr−1q−1=qr−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}

です。

単体符号は Griesmer 限界を等号で満たします: ∑i=0r−1⌈qr−1/qi⌉=qr−1+qr−2+⋯+1=n\sum_{i=0}^{r-1} \lceil q^{r-1}/q^i \rceil = q^{r-1} + q^{r-2} + \cdots + 1 = n。Plotkin 限界も等号です: θn=(qr−1)/q\theta n = (q^r - 1)/q なので d−θn=1/qd - \theta n = 1/q で、d/(d−θn)=qr=Md/(d - \theta n) = q^r = M。どの 2 つの符号語も同じ距離だけ離れている(正単体の頂点のような配置になっている)ことが名前の由来です。

既存の符号から新しい符号を作る操作を 3 つ定めます。

定義 6.3(パリティ拡大・穴あけ・短縮)↗

CC を [n,k]q[n, k]_q 符号とする。

  1. パリティ拡大: C^={(c1,…,cn,cn+1):c∈C, cn+1=−(c1+⋯+cn)}\widehat{C} = \{(c_1, \ldots, c_n, c_{n+1}) : \boldsymbol{c} \in C,\ c_{n+1} = -(c_1 + \cdots + c_n)\}。長さ n+1n + 1、次元 kk の符号。
  2. 穴あけ: 第 ii 座標を消して得られる長さ n−1n - 1 の符号。
  3. 短縮: 第 ii 座標が 00 である符号語だけを集め、その第 ii 座標を消して得られる長さ n−1n - 1 の符号。

穴あけでは各符号語の重みが高々 11 減ります。短縮では、集めた符号語は「第 ii 座標」という線形写像の核なので k−1k - 1 次元以上あり、00 の座標を消しても重みは変わらないので、[n−1, ≥k−1, ≥d]q[n - 1,\ \ge k - 1,\ \ge d]_q 符号が得られます。たとえば Ham(4,2)\mathrm{Ham}(4, 2)([15,11,3]2[15, 11, 3]_2)を 5 回短縮すると、例 5.9 で存在が保証された、最小距離 33 以上の [10,6]2[10, 6]_2 符号が具体的に得られます(次元は 66 以上で、Hamming 限界から 66 以下)。

例 6.4([8, 4, 4] 拡大 Hamming 符号は自己双対)

例 4.3 の [7,4,3]2[7, 4, 3]_2 符号 CC の符号語として 11100001110000、10011001001100、01010100101010、11010011101001 が取れます(それぞれ HH の第 {1,2,3}\{1,2,3\}、{1,4,5}\{1,4,5\}、{2,4,6}\{2,4,6\}、{1,2,4,7}\{1,2,4,7\} 列の和が 0\boldsymbol{0})。第 3, 5, 6, 7 座標を見ると単位行列になっているので一次独立で、CC の基底です。パリティ拡大 C^\widehat{C} の基底は

g1=11100001,g2=10011001,g3=01010101,g4=11010010\boldsymbol{g}_1 = 11100001,\quad \boldsymbol{g}_2 = 10011001,\quad \boldsymbol{g}_3 = 01010101,\quad \boldsymbol{g}_4 = 11010010

です。どの gi\boldsymbol{g}_i も重み 44 で、どの 2 つも 11 が重なる座標がちょうど 2 個です(たとえば g1\boldsymbol{g}_1 と g2\boldsymbol{g}_2 は第 1, 8 座標)。したがって gi⋅gj=0\boldsymbol{g}_i \cdot \boldsymbol{g}_j = 0 がすべての i,ji, j で成り立ち、C^⊆C^⊥\widehat{C} \subseteq \widehat{C}^{\perp} です。dim⁡C^⊥=8−4=4=dim⁡C^\dim \widehat{C}^{\perp} = 8 - 4 = 4 = \dim \widehat{C} なので C^=C^⊥\widehat{C} = \widehat{C}^{\perp}、つまり自己双対です。

最小距離を求めます。二元ベクトルについて wt(x+y)=wt(x)+wt(y)−2 ∣supp(x)∩supp(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})| で、x⋅y=0\boldsymbol{x} \cdot \boldsymbol{y} = 0 は ∣supp(x)∩supp(y)∣|\mathrm{supp}(\boldsymbol{x}) \cap \mathrm{supp}(\boldsymbol{y})| が偶数であることを意味します。したがって、重みが 44 の倍数で互いに直交する x,y\boldsymbol{x}, \boldsymbol{y} の和の重みも 44 の倍数です。C^\widehat{C} の元は gi\boldsymbol{g}_i の和で、C^\widehat{C} は自己直交なので、和を 1 つずつ足していけば、すべての符号語の重みが 44 の倍数だと分かります。長さは 88 なので 0\boldsymbol{0} でない符号語の重みは 44 か 88 で、最小距離は 44 です。C^\widehat{C} は [8,4,4]2[8, 4, 4]_2 符号で、1 個の誤りを訂正し、同時に 2 個の誤りを検出します。

例 6.5(三元 [4, 2, 3] Hamming 符号(tetracode))

q=3q = 3、r=2r = 2 では n=(9−1)/2=4n = (9 - 1)/2 = 4 です。F32\mathbb{F}_3^2 の 4 つの 1 次元部分空間の代表として (1,0),(0,1),(1,1),(1,2)(1,0), (0,1), (1,1), (1,2) を取ると

H2=[10110112]H_2 = \begin{bmatrix} 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 2 \end{bmatrix}

で、Ham(2,3)\mathrm{Ham}(2, 3) は [4,2,3]3[4, 2, 3]_3 符号です。完全符号であることは 32⋅(1+4⋅2)=81=343^2 \cdot (1 + 4 \cdot 2) = 81 = 3^4 で確かめられます。

H2H_2 の行 r1=1011\boldsymbol{r}_1 = 1011、r2=0112\boldsymbol{r}_2 = 0112 について、r1⋅r1=3=0\boldsymbol{r}_1 \cdot \boldsymbol{r}_1 = 3 = 0、r2⋅r2=1+1+4=6=0\boldsymbol{r}_2 \cdot \boldsymbol{r}_2 = 1 + 1 + 4 = 6 = 0、r1⋅r2=1+2=0\boldsymbol{r}_1 \cdot \boldsymbol{r}_2 = 1 + 2 = 0 です。行の張る空間(単体符号)DD は自己直交で、dim⁡D=2=4−2=dim⁡D⊥\dim D = 2 = 4 - 2 = \dim D^{\perp} なので D=D⊥=Ham(2,3)D = D^{\perp} = \mathrm{Ham}(2, 3) です。この符号は Hamming 符号であり、単体符号でもあり、自己双対です。定理 6.2 の 3 より、0\boldsymbol{0} でない 8 個の符号語の重みはすべて 33 です。この符号は tetracode と呼ばれ、三元 Golay 符号の構成に使われます。

7. エントロピー関数と漸近的な限界

Section titled “7. エントロピー関数と漸近的な限界”

符号長 nn を大きくしていくとき、情報率 R=k/nR = k/n と相対距離 δ=d/n\delta = d/n の両方を正に保てるでしょうか。Gilbert–Varshamov 限界は「保てる」と答えます。評価には Hamming 球の体積の指数的な大きさが必要です。

定義 7.1(二元エントロピー関数)↗

0<λ<10 < \lambda < 1 に対し

H(λ)=−λlog⁡2λ−(1−λ)log⁡2(1−λ)H(\lambda) = -\lambda \log_2 \lambda - (1 - \lambda)\log_2(1 - \lambda)

と定め、H(0)=H(1)=0H(0) = H(1) = 0 とする。HH を二元エントロピー関数という。

H(λ)=H(1−λ)H(\lambda) = H(1 - \lambda) で、H(1/2)=1H(1/2) = 1 です。2−nH(λ)=λλn(1−λ)(1−λ)n2^{-nH(\lambda)} = \lambda^{\lambda n}(1 - \lambda)^{(1 - \lambda)n} という形で使います。HH は (0,1)(0, 1) 上で連続です(対数関数の連続性から)。

補題 7.2(エントロピーの最大値)✓

0≤λ≤10 \le \lambda \le 1 について H(λ)≤1H(\lambda) \le 1 で、等号は λ=1/2\lambda = 1/2 のときに限る。

証明(補題 7.2)

λ=0,1\lambda = 0, 1 では H=0<1H = 0 < 1 です。0<λ<10 < \lambda < 1 とします。まず、x>0x > 0 について log⁡x≤x−1\log x \le x - 1(log⁡\log は自然対数)で、等号は x=1x = 1 に限ることを示します。ϕ(x)=x−1−log⁡x\phi(x) = x - 1 - \log x とすると ϕ′(x)=1−1/x\phi'(x) = 1 - 1/x で、x>1x > 1 では正、0<x<10 < x < 1 では負です。系 3.4[平均値の定理とテイラーの定理] の 3 より ϕ\phi は [1,∞)[1, \infty) で狭義単調増加、−ϕ-\phi は (0,1](0, 1] で狭義単調増加なので、x≠1x \ne 1 なら ϕ(x)>ϕ(1)=0\phi(x) > \phi(1) = 0 です。

log⁡2y=log⁡y/log⁡2\log_2 y = \log y / \log 2 と λ+(1−λ)=1\lambda + (1 - \lambda) = 1 を使うと

H(λ)−1=λlog⁡212λ+(1−λ)log⁡212(1−λ)≤1log⁡2[λ(12λ−1)+(1−λ)(12(1−λ)−1)]=1log⁡2[12−λ+12−(1−λ)]=0H(\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

です。等号は 1/(2λ)=11/(2\lambda) = 1 かつ 1/(2(1−λ))=11/(2(1 - \lambda)) = 1、つまり λ=1/2\lambda = 1/2 のときに限ります。

補題 7.3(Hamming 球の体積のエントロピー評価)✓

0<λ≤1/20 < \lambda \le 1/2 とし、n≥1n \ge 1 とする。

V2(n,⌊λn⌋)=∑0≤i≤λn(ni)≤2 nH(λ).V_2(n, \lfloor \lambda n \rfloor) = \sum_{0 \le i \le \lambda n} \binom{n}{i} \le 2^{\,n H(\lambda)}.

この補題は、Hamming 球の体積を 22 のべき乗で簡単に抑えるためのものです。二項定理の和 11 から出発して、i≤λni \le \lambda n の項だけを残して下から評価します。

証明(補題 7.3)

二項定理(定理 7.3[数え上げと母関数])より

1=(λ+(1−λ))n=∑i=0n(ni)λi(1−λ)n−i≥∑0≤i≤λn(ni)(1−λ)n(λ1−λ)i1 = \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/2\lambda \le 1/2 なので 0<λ/(1−λ)≤10 < \lambda/(1 - \lambda) \le 1 で、i≤λni \le \lambda n なら (λ/(1−λ))i≥(λ/(1−λ))λn\bigl(\lambda/(1-\lambda)\bigr)^i \ge \bigl(\lambda/(1-\lambda)\bigr)^{\lambda n} です。したがって

1≥(1−λ)n(λ1−λ)λn∑0≤i≤λn(ni)=λλn(1−λ)(1−λ)n∑0≤i≤λn(ni)=2−nH(λ)∑0≤i≤λn(ni)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}

です。両辺に 2nH(λ)2^{nH(\lambda)} を掛ければ結論です。

系 7.4(漸近的 Gilbert–Varshamov 限界)✓

0<δ<1/20 < \delta < 1/2、ε>0\varepsilon > 0 とする。十分大きいすべての nn について、最小距離が δn\delta n 以上で、情報率が k/n≥1−H(δ)−εk/n \ge 1 - H(\delta) - \varepsilon を満たす二元線形 [n,k]2[n, k]_2 符号が存在する。

証明(系 7.4)

d=⌈δn⌉d = \lceil \delta n \rceil、k=n−⌊nH(δ)⌋−1k = n - \lfloor nH(\delta) \rfloor - 1 とします。補題 7.2 より H(δ)<1H(\delta) < 1 なので、nn が十分大きければ k≥n(1−H(δ))−1≥1k \ge n(1 - H(\delta)) - 1 \ge 1 です。また k≤n−1k \le n - 1 で、nn が十分大きければ 2≤d≤n2 \le d \le n です。d−2<δnd - 2 < \delta n なので、補題 7.3 より

V2(n−1,d−2)≤V2(n,⌊δn⌋)≤2 nH(δ)<2 ⌊nH(δ)⌋+1=2 n−kV_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}

です。定理 5.5 より、最小距離が d≥δnd \ge \delta n 以上の [n,k]2[n, k]_2 符号が存在します。k/n≥1−H(δ)−1/nk/n \ge 1 - H(\delta) - 1/n なので、n≥1/εn \ge 1/\varepsilon なら k/n≥1−H(δ)−εk/n \ge 1 - H(\delta) - \varepsilon です。

たとえば δ=0.11\delta = 0.11 では H(δ)≈0.5H(\delta) \approx 0.5 なので、相対距離 0.110.11、情報率ほぼ 1/21/2 の二元線形符号の列が存在します。H(δ)<1H(\delta) < 1 なので、δ<1/2\delta < 1/2 である限り情報率を正に保てます。二元符号でこの限界を漸近的に上回る構成は、現在も知られていません。

8. 二元対称通信路の符号化定理

Section titled “8. 二元対称通信路の符号化定理”

最後に、確率的な誤りに対して符号がどこまで有効かを調べます。誤り率 pp の二元対称通信路で長さ nn の語を送ると、誤りベクトル e∈F2n\boldsymbol{e} \in \mathbb{F}_2^n が確率

P(e)=p wt(e)(1−p) n−wt(e)P(\boldsymbol{e}) = p^{\,\mathrm{wt}(\boldsymbol{e})} (1 - p)^{\,n - \mathrm{wt}(\boldsymbol{e})}

で生じます。これは有限集合 F2n\mathbb{F}_2^n 上の確率です(二項定理より総和は (p+1−p)n=1(p + 1 - p)^n = 1)。誤りはおよそ pnpn 個生じるので、最小距離による保証(定理 2.4)で確実に訂正するには d>2pnd > 2pn が必要で、Plotkin 限界から p≥1/4p \ge 1/4 では情報率を正に保てません。しかし「確実に」を「高い確率で」に緩めると、事情は一変します。

定理 8.1(二元対称通信路の符号化定理(順方向))✓

0<p<1/20 < p < 1/2、0<R<1−H(p)0 < R < 1 - H(p) とする。各 n≥1n \ge 1 について、長さ nn、次元 kn=⌈Rn⌉k_n = \lceil Rn \rceil の二元線形符号 CnC_n と復号写像 Dn:F2n→Cn∪{失敗}D_n : \mathbb{F}_2^n \to C_n \cup \{\text{失敗}\} であって、

max⁡c∈CnP(Dn(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)

を満たすものが存在する。ここで確率は誤り率 pp の二元対称通信路の誤りベクトル e\boldsymbol{e} についてのものである。

証明の発想は、よい符号を 1 つ設計するのではなく、生成行列 GG を無作為に選んだときの復号誤り確率の平均を計算することです。平均が小さければ、平均以下の誤り確率をもつ GG が少なくとも 1 つは存在します。これで、符号を具体的に作らなくても存在が言えます。

証明(定理 8.1)

準備。 HH は連続なので、ε>0\varepsilon > 0 を小さく取って λ=p+ε<1/2\lambda = p + \varepsilon < 1/2 かつ R<1−H(λ)R < 1 - H(\lambda) とできます。nn を固定し、k=⌈Rn⌉k = \lceil Rn \rceil とします(R<1R < 1 なので k≤nk \le n)。

k×nk \times n 行列 GG に対し、復号を次のように定めます。受信語 y\boldsymbol{y} に対し、wt(y−uG)≤λn\mathrm{wt}(\boldsymbol{y} - \boldsymbol{u}G) \le \lambda n となる u∈F2k\boldsymbol{u} \in \mathbb{F}_2^k がただ 1 つならその u\boldsymbol{u}(対応する符号語 uG\boldsymbol{u}G)を出力し、そうでなければ失敗とします。

誤り事象。 情報 u\boldsymbol{u} を送り y=uG+e\boldsymbol{y} = \boldsymbol{u}G + \boldsymbol{e} を受け取ったとします。復号が u\boldsymbol{u} を正しく出力することは、次の 2 つがどちらも起きないことと同値です。

  • (a) wt(e)>λn\mathrm{wt}(\boldsymbol{e}) > \lambda n。
  • (b) ある w∈F2k\boldsymbol{w} \in \mathbb{F}_2^k、w≠0\boldsymbol{w} \ne \boldsymbol{0} について wt(wG+e)≤λn\mathrm{wt}(\boldsymbol{w}G + \boldsymbol{e}) \le \lambda n。

実際、y−uG=e\boldsymbol{y} - \boldsymbol{u}G = \boldsymbol{e} なので、u\boldsymbol{u} が復号の条件を満たすことは (a) が起きないことと同値です。また u′=u+w\boldsymbol{u}' = \boldsymbol{u} + \boldsymbol{w}(w≠0\boldsymbol{w} \ne \boldsymbol{0})については y−u′G=e−wG=e+wG\boldsymbol{y} - \boldsymbol{u}'G = \boldsymbol{e} - \boldsymbol{w}G = \boldsymbol{e} + \boldsymbol{w}G なので、u\boldsymbol{u} 以外に条件を満たすものがないことは (b) が起きないことと同値です。(a)(b) は u\boldsymbol{u} によらないので、復号誤り確率はどの u\boldsymbol{u} を送っても同じ値 Perr(G)=P((a) または (b))P_{\mathrm{err}}(G) = P\bigl(\text{(a) または (b)}\bigr) で、

Perr(G)≤P(wt(e)>λn)+∑w≠0P(wt(wG+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)

です(事象の合併の確率は確率の和以下)。

(a) の評価。 Xi(e)=ei∈{0,1}X_i(\boldsymbol{e}) = e_i \in \{0, 1\} とすると wt(e)=∑iXi\mathrm{wt}(\boldsymbol{e}) = \sum_i X_i です。PP の定義から、i≠ji \ne j について P(Xi=1)=pP(X_i = 1) = p、P(Xi=1,Xj=1)=p2P(X_i = 1, X_j = 1) = p^2 です(ほかの座標について和を取ると 11 になります)。期待値(定義 4.1[確率変数と期待値]。有限集合の上では値と確率の積の有限和)は E[Xi]=pE[X_i] = p、分散と共分散(定義 5.1[確率変数と期待値])は Var(Xi)=E[Xi2]−p2=p(1−p)\mathrm{Var}(X_i) = E[X_i^2] - p^2 = p(1 - p)、Cov(Xi,Xj)=p2−p⋅p=0\mathrm{Cov}(X_i, X_j) = p^2 - p \cdot p = 0 です。これは事象 {Xi=1}\{X_i = 1\} と {Xj=1}\{X_j = 1\} が独立(定義 6.1[確率空間とコルモゴロフの公理])であることの帰結です。したがって E[wt(e)]=npE[\mathrm{wt}(\boldsymbol{e})] = np、Var(wt(e))=np(1−p)\mathrm{Var}(\mathrm{wt}(\boldsymbol{e})) = np(1-p)(命題 5.3[確率変数と期待値] の 4)で、チェビシェフの不等式(系 6.2[確率変数と期待値])より

P(wt(e)>λn)≤P(∣wt(e)−np∣≥εn)≤np(1−p)ε2n2≤14ε2nP\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}

です。

(b) の評価:符号についての平均。 GG を 2kn2^{kn} 個の k×nk \times n 行列全体から一様に選び、Perr(G)P_{\mathrm{err}}(G) の平均を評価します。w≠0\boldsymbol{w} \ne \boldsymbol{0} と e\boldsymbol{e} を固定します。写像 G↦wGG \mapsto \boldsymbol{w}G は行列の空間 F2 k×n\mathbb{F}_2^{\,k \times n} から F2n\mathbb{F}_2^n への線形写像で、全射です(wi=1w_i = 1 なる ii を取り、第 ii 行を任意のベクトル、ほかの行を 0\boldsymbol{0} とすればよい)。次元定理より核は 2kn−n2^{kn - n} 個の元をもち、F2n\mathbb{F}_2^n の各ベクトルはちょうど 2kn−n2^{kn-n} 個の GG の像になります。wt(wG+e)≤λn\mathrm{wt}(\boldsymbol{w}G + \boldsymbol{e}) \le \lambda n は wG∈B(e,⌊λn⌋)\boldsymbol{w}G \in B(\boldsymbol{e}, \lfloor \lambda n \rfloor) と同値なので、これを満たす GG の割合は V2(n,⌊λn⌋)/2nV_2(n, \lfloor\lambda n\rfloor)/2^n です(補題 5.2)。e\boldsymbol{e} について P(e)P(\boldsymbol{e}) の重みで平均しても同じ値です。したがって、補題 7.3 と合わせて

12kn∑GPerr(G)≤14ε2n+(2k−1) V2(n,⌊λn⌋)2n≤14ε2n+2 k−n+nH(λ)\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)}

です。k<Rn+1k < Rn + 1 なので、右辺を ana_n とおくと an<14ε2n+2⋅2−n(1−H(λ)−R)a_n < \dfrac{1}{4\varepsilon^2 n} + 2 \cdot 2^{-n(1 - H(\lambda) - R)} で、1−H(λ)−R>01 - H(\lambda) - R > 0 より an→0a_n \to 0 です。

符号の選択。 平均が ana_n 以下なので、Perr(Gn)≤anP_{\mathrm{err}}(G_n) \le a_n となる行列 GnG_n があります。an<1a_n < 1 のとき、GnG_n の行は一次独立です。もし wGn=0\boldsymbol{w}G_n = \boldsymbol{0} となる w≠0\boldsymbol{w} \ne \boldsymbol{0} があれば、wt(e)≤λn\mathrm{wt}(\boldsymbol{e}) \le \lambda n のときは u\boldsymbol{u} と u+w\boldsymbol{u} + \boldsymbol{w} がともに条件を満たして失敗し、wt(e)>λn\mathrm{wt}(\boldsymbol{e}) > \lambda n のときは u\boldsymbol{u} が条件を満たさないので、復号は常に誤り、Perr(Gn)=1P_{\mathrm{err}}(G_n) = 1 となるからです。よって GnG_n の行の張る空間 CnC_n は kk 次元の線形符号で、u↦uGn\boldsymbol{u} \mapsto \boldsymbol{u}G_n は F2k\mathbb{F}_2^k から CnC_n への全単射、上の復号は CnC_n への復号写像 DnD_n を定め、どの符号語を送っても誤り確率は ana_n 以下です。an≥1a_n \ge 1 となる有限個の nn については任意の kk 次元符号を取ります。an→0a_n \to 0 なので定理が示されました。

証明は符号を 1 つも具体的に作っていません。「無作為に選んだ線形符号は平均的によい」ことから存在だけを導いています。p=0.11p = 0.11 なら 1−H(p)≈0.51 - H(p) \approx 0.5 なので、情報率 1/21/2 弱で、11% のビットが反転する通信路をほぼ誤りなく使えることになります。同じ情報率で最小距離による保証を求めると、訂正できるのは Gilbert–Varshamov 限界の符号で相対距離 0.110.11 の半分、5.5%5.5\% 程度の誤りまでです。確率的な保証のほうが、およそ 2 倍の誤りに耐えます。

注意 8.2

1−H(p)1 - H(p) を誤り率 pp の二元対称通信路の通信路容量といいます。定理 8.1 の逆、すなわち「情報率が R>1−H(p)R > 1 - H(p) の符号の列では、どんな復号を使っても復号誤り確率は 00 に近づかない」も成り立ちます(符号化定理の逆)。証明には相互情報量と Fano の不等式が必要で、この記事の範囲を超えるので、主張と出典だけを記します。Shannon の原論文と、Cover–Thomas の教科書の通信路容量の章(参考文献)を参照してください。この記事の定理や証明は、この逆を使っていません。

演習 9.1易

生成行列 G=[1011001011]G = \begin{bmatrix} 1 & 0 & 1 & 1 & 0 \\ 0 & 1 & 0 & 1 & 1 \end{bmatrix} の二元符号 CC について、(a) 検査行列と最小距離を求めよ。(b) シンドロームと剰余類の代表元の表を作れ。(c) 2 個の誤りのうち、どれだけが正しく訂正されるか。

解答

(a) G=[ I2∣A ]G = [\,I_2 \mid A\,]、A=[110011]A = \begin{bmatrix} 1 & 1 & 0 \\ 0 & 1 & 1 \end{bmatrix} なので、定理 3.5 の 4 より(標数 22 では −AT=AT-A^{\mathsf{T}} = A^{\mathsf{T}})

H=[101001101001001]H = \begin{bmatrix} 1 & 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 & 1 \end{bmatrix}

です。符号語は 00000,10110,01011,1110100000, 10110, 01011, 11101 で、最小重みは 33 です。CC は [5,2,3]2[5, 2, 3]_2 符号です。

(b) 剰余類は 25−2=82^{5-2} = 8 個です。重み 11 の誤りのシンドロームは HH の列 110,011,100,010,001110, 011, 100, 010, 001 で、相異なります。残るシンドロームは 101101 と 111111 です。101=100+001101 = 100 + 001(第 3, 5 列)=110+011= 110 + 011(第 1, 2 列)なので、代表元は 0010100101 か 1100011000 のどちらかを選びます。111=110+001111 = 110 + 001(第 1, 5 列)=011+100= 011 + 100(第 2, 3 列)なので、代表元は 1000110001 か 0110001100 です。

シンドローム000110011100010001101111
代表元0000010000010000010000010000010010110001

(c) 定理 4.2 の 3 より、正しく訂正されるのは誤りベクトルが代表元であるときだけです。重み 22 の誤り (52)=10\binom{5}{2} = 10 通りのうち、表に載っている 0010100101 と 1000110001 の 2 通りだけが訂正されます。1 個の誤りは 5 通りすべて訂正されます(t=1t = 1)。

演習 9.2標準

[5,2,4]2[5, 2, 4]_2 符号が存在しないことを、限界式を使わずに直接示せ。また Plotkin 限界からも導け。

解答

直接。 x,y\boldsymbol{x}, \boldsymbol{y} を重み 44 以上の相異なる符号語とします。長さ 55 なので、どちらも 00 の座標は高々 1 個で、supp(x)∩supp(y)\mathrm{supp}(\boldsymbol{x}) \cap \mathrm{supp}(\boldsymbol{y}) は 33 個以上の座標を含みます。x+y\boldsymbol{x} + \boldsymbol{y} はその座標で 00 なので wt(x+y)≤2\mathrm{wt}(\boldsymbol{x} + \boldsymbol{y}) \le 2 です。22 次元の符号には 0\boldsymbol{0} でない符号語が 3 個あり、x,y,x+y\boldsymbol{x}, \boldsymbol{y}, \boldsymbol{x} + \boldsymbol{y} がすべて重み 44 以上であることはできません。

Plotkin 限界。 2d=8>5=n2d = 8 > 5 = n なので 定理 5.6 が使え、M≤8/(8−5)=8/3M \le 8/(8 - 5) = 8/3、つまり M≤2M \le 2 です。M=22=4M = 2^2 = 4 は不可能です。

演習 9.3標準

C1C_1 を [n,k1,d1]q[n, k_1, d_1]_q 符号、C2C_2 を [n,k2,d2]q[n, k_2, d_2]_q 符号とする。(a) C={(u,u+v):u∈C1, v∈C2}C = \{(\boldsymbol{u}, \boldsymbol{u} + \boldsymbol{v}) : \boldsymbol{u} \in C_1,\ \boldsymbol{v} \in C_2\} は [2n, k1+k2, min⁡(2d1,d2)]q[2n,\ k_1 + k_2,\ \min(2d_1, d_2)]_q 符号であることを示せ。(b) RM(1,1)=F22\mathrm{RM}(1, 1) = \mathbb{F}_2^2 とし、m≥1m \ge 1 について RM(1,m+1)\mathrm{RM}(1, m + 1) を C1=RM(1,m)C_1 = \mathrm{RM}(1, m)、C2=Rep2mC_2 = \mathrm{Rep}_{2^m} から (a) の構成で定める。RM(1,m)\mathrm{RM}(1, m) が [2m, m+1, 2m−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}) は C1×C2C_1 \times C_2 から Fq2n\mathbb{F}_q^{2n} への線形写像で、像が 0\boldsymbol{0} なら u=0\boldsymbol{u} = \boldsymbol{0}、v=0\boldsymbol{v} = \boldsymbol{0} なので単射です。よって dim⁡C=k1+k2\dim C = k_1 + k_2 です。(u,v)≠(0,0)(\boldsymbol{u}, \boldsymbol{v}) \ne (\boldsymbol{0}, \boldsymbol{0}) とします。v=0\boldsymbol{v} = \boldsymbol{0} なら重みは 2 wt(u)≥2d12\,\mathrm{wt}(\boldsymbol{u}) \ge 2d_1 です。v≠0\boldsymbol{v} \ne \boldsymbol{0} なら、三角不等式(命題 2.2)より wt(u)+wt(u+v)≥wt((u+v)−u)=wt(v)≥d2\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 です。よって最小重みは min⁡(2d1,d2)\min(2d_1, d_2) 以上です。C1C_1 の重み d1d_1 の元 u\boldsymbol{u} による (u,u)(\boldsymbol{u}, \boldsymbol{u}) と、C2C_2 の重み d2d_2 の元 v\boldsymbol{v} による (0,v)(\boldsymbol{0}, \boldsymbol{v}) が等号を与えます。

(b) mm についての帰納法です。RM(1,1)=F22\mathrm{RM}(1, 1) = \mathbb{F}_2^2 は [2,2,1]2[2, 2, 1]_2 符号で、m=1m = 1 の主張と合います。RM(1,m)\mathrm{RM}(1, m) が [2m,m+1,2m−1]2[2^m, m + 1, 2^{m-1}]_2 なら、Rep2m\mathrm{Rep}_{2^m} は [2m,1,2m]2[2^m, 1, 2^m]_2 なので、(a) より RM(1,m+1)\mathrm{RM}(1, m+1) は長さ 2m+12^{m+1}、次元 m+2m + 2、最小距離 min⁡(2⋅2m−1,2m)=2m\min(2 \cdot 2^{m-1}, 2^m) = 2^m です。m=3m = 3 の [8,4,4]2[8, 4, 4]_2 符号は 例 6.4 の符号と同じパラメータをもちます。

演習 9.4標準

CC を [n,k,d]2[n, k, d]_2 符号とし、dd が奇数であるとする。パリティ拡大 C^\widehat{C} は [n+1,k,d+1]2[n + 1, k, d + 1]_2 符号であることを示せ。これを使って、r≥2r \ge 2 について [2r, 2r−1−r, 4]2[2^r,\ 2^r - 1 - r,\ 4]_2 符号が存在することを示せ。

解答

c↦c^=(c,c1+⋯+cn)\boldsymbol{c} \mapsto \widehat{\boldsymbol{c}} = (\boldsymbol{c}, c_1 + \cdots + c_n) は線形で単射なので dim⁡C^=k\dim \widehat{C} = k です。c^\widehat{\boldsymbol{c}} の成分の和は 00 なので、wt(c^)\mathrm{wt}(\widehat{\boldsymbol{c}}) は偶数です。wt(c)\mathrm{wt}(\boldsymbol{c}) が奇数なら wt(c^)=wt(c)+1\mathrm{wt}(\widehat{\boldsymbol{c}}) = \mathrm{wt}(\boldsymbol{c}) + 1、偶数なら wt(c^)=wt(c)\mathrm{wt}(\widehat{\boldsymbol{c}}) = \mathrm{wt}(\boldsymbol{c}) です。c≠0\boldsymbol{c} \ne \boldsymbol{0} なら wt(c)≥d\mathrm{wt}(\boldsymbol{c}) \ge d で、wt(c^)\mathrm{wt}(\widehat{\boldsymbol{c}}) は dd 以上の偶数、dd が奇数なので d+1d + 1 以上です。重み dd の符号語は重み d+1d + 1 に写るので、最小距離はちょうど d+1d + 1 です。

Ham(r,2)\mathrm{Ham}(r, 2) は 定理 6.2 より [2r−1, 2r−1−r, 3]2[2^r - 1,\ 2^r - 1 - r,\ 3]_2 符号なので、そのパリティ拡大が求める符号です。r=3r = 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 章(通信路容量。符号化定理の逆を含む)。

このテーマの 100 本ノック(50 問)

執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。