この 章の 目標
ハミング距離と 最小距離から、符号が 何個の 誤りを 検出・訂正できるかを 証明できる
線形符号を 生成行列・検査行列で 表し、シンドロームと 剰余類代表に よる 復号が 正しい ことを 証明できる
ハミング符号を 構成し、それが 完全符号である ことを 証明できる
シングルトン限界・ハミング限界・ギルバート–ヴァルシャモフ限界を 証明し、作れる 符号の 範囲を 見積もれる
二元対称通信路の 容量 1 − H ( p ) 1 - H(p) 1 − H ( p ) と、シャノンの 通信路符号化定理が 何を 保証し何を 保証しないかを 説明できる
前提 :02-linear-algebra 第3章 (核と 像・次元定理・商空間)、 04-algebra 第8章 (有限体 F q \mathbb{F}_q F q )。5.7 節では 大数の 法則( 11-probability 第2章 )を 直観的な 説明にだけ 使う。暗号を 扱う 第1〜4章とは 独立に 読める。
QR コードは、一部が 汚れたり欠けたりしていても 読み取れる。ディスクや メモリ、無線の 通信でも、途中で 起きた ビットの 誤りが、利用者の 気づかないうちに 直されている。これを 支えているのが 誤り訂正符号 (error-correcting code) である。送りたい データに 冗長性(余分な 記号)を 加えて おき、受け取った 側で「ありえない 受信語」から 誤りを 見つけて 直す。
冗長性の 分だけ、送れる データの 量は 減る。少ない 冗長性で 多くの 誤りを 直すには どう 設計すれば よいか、どこまでが 原理的に 可能か ―― これが 符号理論の 中心の 問いである。本章では、距離の 幾何(5.2 節)、有限体上の 線形代数(5.3〜5.5 節)、数え上げ(5.6 節)で この 問いに 答え、確率モデルのもとでの 限界である シャノンの 定理(5.7 節)を 紹介する。符号理論は、シャノンの 論文(1948 年)と ハミングの 論文(1950 年)に 始まった。効率よく 復号できる 実用的な 符号は 第6章で 扱う。
本章では q q q は 素数べき、 F q \mathbb{F}_q F q は q q q 元体である(04-algebra 第8章 定理 8.41)。ベクトルは 行ベクトルとし、 x ⊤ x^{\top} x ⊤ は 転置( 02-linear-algebra の t x {}^tx t x と 同じ もの)を 表す。
5.1 符号と 冗長性
4 ビットの データを そのまま 送ると、1 ビットでも 反転すれば 別の 正しい データと して 受け取られ、誤りに 気づく ことすらできない。冗長性を 加える 素朴な 方法を 2 つ 見よう。
例 5.1 (繰り返し符号)各ビットを 3 回ずつ 送る : 0 ↦ 000 0 \mapsto 000 0 ↦ 000 , 1 ↦ 111 1 \mapsto 111 1 ↦ 111 。受け取った 3 ビットの 多数決を とれば、1 ビットまでの 反転は 正しく 直る。2 ビットが 反転すると、誤った 値に「直して」しまう。代償と して、送る ビット数は 3 倍に なる。
例 5.2 (パリティ検査符号)k k k ビットの データ u 1 ⋯ u k u_1 \cdots u_k u 1 ⋯ u k の 後ろに u 1 + ⋯ + u k m o d 2 u_1 + \cdots + u_k \bmod 2 u 1 + ⋯ + u k mod 2 を 付けて 送る。受信語の 1 1 1 の 個数が 奇数なら 誤りが あったと わかる。しかし、どの ビットが 誤ったかは わからないので 訂正は できない。
定義 5.3 (符号, code)q q q 個の 元からなる 集合 A A A (アルファベット 。多くの 場合 A = F q A = \mathbb{F}_q A = F q )に ついて、2 個以上の 元を もつ 部分集合 C ⊂ A n C \subset A^n C ⊂ A n を 長さ n n n の 符号と いい、その 元を 符号語 (codeword)、n n n を 符号長 (length)、R = ( log q ∣ C ∣ ) / n R = (\log_q \lvert C \rvert)/n R = ( log q ∣ C ∣) / n を 情報率 (rate) と いう。 q = 2 q = 2 q = 2 の とき 2 元符号 (binary code) と いう。
∣ C ∣ = q k \lvert C \rvert = q^k ∣ C ∣ = q k なら、k k k 個の 記号の 情報を n n n 個の 記号で 送ることになり、 R = k / n R = k/n R = k / n である。繰り返し符号は R = 1 / 3 R = 1/3 R = 1/3 、パリティ検査符号は R = k / ( k + 1 ) R = k/(k + 1) R = k / ( k + 1 ) である。冗長性を 増やすほど 誤りに 強く できそうだが、情報率と 誤りへの 強さは どこまで 両立できるだろうか。
5.2 ハミング距離と 最小距離
定義 5.4 (ハミング距離・重み)x , y ∈ A n x, y \in A^n x , y ∈ A n の ハミング距離 (Hamming distance) を、成分が 異なる 位置の 個数 d ( x , y ) = ∣ { i ∣ x i ≠ y i } ∣ d(x, y) = \lvert \lbrace i \mid x_i \neq y_i \rbrace \rvert d ( x , y ) = ∣{ i ∣ x i = y i }∣ で 定める。 x ∈ F q n x \in \mathbb{F}_q^n x ∈ F q n の 重み (weight) を wt ( x ) = d ( x , 0 ) \operatorname{wt}(x) = d(x, 0) wt ( x ) = d ( x , 0 ) (0 0 0 でない 成分の 個数)と する。
命題 5.5 d d d は A n A^n A n 上の 距離である。すな わち d ( x , y ) ≥ 0 d(x, y) \geq 0 d ( x , y ) ≥ 0 で 等号は x = y x = y x = y の ときに 限り、 d ( x , y ) = d ( y , x ) d(x, y) = d(y, x) d ( x , y ) = d ( y , x ) と 三角不等式 d ( x , z ) ≤ d ( x , y ) + d ( y , z ) d(x, z) \leq d(x, y) + d(y, z) d ( x , z ) ≤ d ( x , y ) + d ( y , z ) が 成り立つ。また x , y ∈ F q n x, y \in \mathbb{F}_q^n x , y ∈ F q n なら d ( x , y ) = wt ( x − y ) d(x, y) = \operatorname{wt}(x - y) d ( x , y ) = wt ( x − y ) である。
証明. 三角不等式以外は 定義から 明らかである。 x i ≠ z i x_i \neq z_i x i = z i なら x i ≠ y i x_i \neq y_i x i = y i と y i ≠ z i y_i \neq z_i y i = z i の 少なくとも 一方が 成り立つので、 { i ∣ x i ≠ z i } ⊂ { i ∣ x i ≠ y i } ∪ { i ∣ y i ≠ z i } \lbrace i \mid x_i \neq z_i \rbrace \subset \lbrace i \mid x_i \neq y_i \rbrace \cup \lbrace i \mid y_i \neq z_i \rbrace { i ∣ x i = z i } ⊂ { i ∣ x i = y i } ∪ { i ∣ y i = z i } であり、元の 個数を 比べればよい。最後の 主張は x i ≠ y i ⟺ x i − y i ≠ 0 x_i \neq y_i \iff x_i - y_i \neq 0 x i = y i ⟺ x i − y i = 0 に よる。 □ \square □
定義 5.6 (最小距離)符号 C C C の 最小距離 (minimum distance) を d ( C ) = min { d ( c , c ′ ) ∣ c , c ′ ∈ C , c ≠ c ′ } d(C) = \min \lbrace d(c, c') \mid c, c' \in C,\ c \neq c' \rbrace d ( C ) = min { d ( c , c ′ ) ∣ c , c ′ ∈ C , c = c ′ } と する。符号長 n n n 、符号語の 個数 M M M 、最小距離 d d d の 符号を ( n , M , d ) (n, M, d) ( n , M , d ) 符号と いう。 x ∈ A n x \in A^n x ∈ A n を 中心と する 半径 r r r の 球 を B ( x , r ) = { y ∈ A n ∣ d ( x , y ) ≤ r } B(x, r) = \lbrace y \in A^n \mid d(x, y) \leq r \rbrace B ( x , r ) = { y ∈ A n ∣ d ( x , y ) ≤ r } と する。
x x x との 距離が ちょうど i i i の 元は、異なる 位置 i i i 個の 選び方と 各位置の 値の 選び方( q − 1 q - 1 q − 1 通りずつ)で 決まるので、球の 元の 個数は 中心に よらず
V q ( n , r ) = ∑ i = 0 r ( n i ) ( q − 1 ) i V_q(n, r) = \sum_{i=0}^{r} \binom{n}{i}(q - 1)^i V q ( n , r ) = i = 0 ∑ r ( i n ) ( q − 1 ) i
である。
符号語 c c c を 送って y ∈ A n y \in A^n y ∈ A n を 受け取った とき、 d ( c , y ) d(c, y) d ( c , y ) を 誤りの 個数と いう。受信者は c c c を 知らない。
誤り 検出 :受信者は y ∉ C y \notin C y ∈ / C の とき「誤り あり」と 判定する。 1 ≤ d ( c , y ) ≤ s 1 \leq d(c, y) \leq s 1 ≤ d ( c , y ) ≤ s と なる どんな c ∈ C c \in C c ∈ C と y y y に ついても y ∉ C y \notin C y ∈ / C の とき、 C C C は s s s 個までの 誤りを 検出できると いう。
誤り 訂正 :受信者は y y y に 最も 近い 符号語(複数あれば その どれか)を、送られた 符号語と 推定する( 最小距離復号 , minimum distance decoding)。d ( c , y ) ≤ t d(c, y) \leq t d ( c , y ) ≤ t と なる どんな c c c と y y y に ついても、 y y y に 最も 近い 符号語が ただ 一つで c c c に 等しい とき、 C C C は t t t 個までの 誤りを 訂正できると いう。
消失訂正 :どの 位置の 記号が 読めなかったか( 消失 , erasure)を 受信者が 知っている 場合も ある。傷で 読めない 記号や、故障した ディスクの データが その 例である。
定理 5.7 (検出能力と 訂正能力)符号 C C C の 最小距離を d d d とし、t = ⌊ ( d − 1 ) / 2 ⌋ t = \lfloor (d - 1)/2 \rfloor t = ⌊( d − 1 ) /2 ⌋ と する。
C C C は d − 1 d - 1 d − 1 個までの 誤りを 検出できる。 d d d 個の 誤りで 検出されない ものが ある。
C C C は 最小距離復号で t t t 個までの 誤りを 訂正できる。 t + 1 t + 1 t + 1 個の 誤りで、 y y y に 最も 近い 符号語が c c c だけとは 限らない ものが ある。
消失した 位置が d − 1 d - 1 d − 1 個以下なら、残りの 位置の 記号から 符号語が ただ 一つに 決まる。
証明. (1) 1 ≤ d ( c , y ) ≤ d − 1 1 \leq d(c, y) \leq d - 1 1 ≤ d ( c , y ) ≤ d − 1 で y ∈ C y \in C y ∈ C なら、y y y は c c c との 距離が d d d 未満の 別の 符号語と なり、最小距離の 定義に 反する。一方、 d ( c , c ′ ) = d d(c, c') = d d ( c , c ′ ) = d と なる 符号語 c ≠ c ′ c \neq c' c = c ′ を とり、 c c c を 送って c ′ c' c ′ を 受け取れば、 d d d 個の 誤りは 検出されない。
(2) d ≥ 2 t + 1 d \geq 2t + 1 d ≥ 2 t + 1 である。d ( c , y ) ≤ t d(c, y) \leq t d ( c , y ) ≤ t とし、c ′ ∈ C c' \in C c ′ ∈ C , c ′ ≠ c c' \neq c c ′ = c と すると、三角不等式より
d ( c ′ , y ) ≥ d ( c , c ′ ) − d ( c , y ) ≥ ( 2 t + 1 ) − t = t + 1 > d ( c , y ) d(c', y) \geq d(c, c') - d(c, y) \geq (2t + 1) - t = t + 1 > d(c, y) d ( c ′ , y ) ≥ d ( c , c ′ ) − d ( c , y ) ≥ ( 2 t + 1 ) − t = t + 1 > d ( c , y )
と なり、 c c c が ただ 一つの 最も 近い 符号語である。逆に、 d ( c , c ′ ) = d d(c, c') = d d ( c , c ′ ) = d と なる c ≠ c ′ c \neq c' c = c ′ を とり、両者が 異なる d d d 個の 位置の うち t + 1 t + 1 t + 1 個では c ′ c' c ′ の 値、ほかの 位置では c c c の 値を とる y y y を 作ると、 d ( c , y ) = t + 1 d(c, y) = t + 1 d ( c , y ) = t + 1 かつ d ( c ′ , y ) = d − t − 1 ≤ t + 1 d(c', y) = d - t - 1 \leq t + 1 d ( c ′ , y ) = d − t − 1 ≤ t + 1 である(t ≥ ( d − 2 ) / 2 t \geq (d - 2)/2 t ≥ ( d − 2 ) /2 だから)。
(3) 消失していない 位置で 一致する 2 つの 符号語は、高々 d − 1 d - 1 d − 1 個の 位置でしか異ならないので 等しい。 □ \square □
例 5.8 繰り返し符号 { 000 , 111 } \lbrace 000, 111 \rbrace { 000 , 111 } は d = 3 d = 3 d = 3 なので、2 個までの 誤りを 検出でき、1 個までの 誤りを 訂正できる。パリティ検査符号は d = 2 d = 2 d = 2 で、1 個の 誤りを 検出できるが 訂正は できない。ただし、検出能力と 訂正能力を 同時に 使い切る ことは できない。繰り返し符号で 訂正を 行うと、2 個の 誤りは 検出されずに 誤った 値に 訂正される。
一般に、整数 0 ≤ a ≤ b 0 \leq a \leq b 0 ≤ a ≤ b が a + b ≤ d − 1 a + b \leq d - 1 a + b ≤ d − 1 を みたせば、「距離 a a a 以内に 符号語が あれば それに 訂正し、なければ 誤り ありと 判定する」と いう 復号で、 a a a 個までの 誤りを 訂正し、同時に b b b 個までの 誤りを(誤訂正せずに)検出できる。実際、 2 a + 1 ≤ a + b + 1 ≤ d 2a + 1 \leq a + b + 1 \leq d 2 a + 1 ≤ a + b + 1 ≤ d なので、a a a 個以下の 誤りは 定理 5.7(2) の 証明と 同じ 理由で 正しく 訂正される。 a < d ( c , y ) ≤ b a < d(c, y) \leq b a < d ( c , y ) ≤ b なら、c c c 以外の 符号語 c ′ c' c ′ に ついて d ( c ′ , y ) ≥ d ( c , c ′ ) − d ( c , y ) ≥ d − b ≥ a + 1 d(c', y) \geq d(c, c') - d(c, y) \geq d - b \geq a + 1 d ( c ′ , y ) ≥ d ( c , c ′ ) − d ( c , y ) ≥ d − b ≥ a + 1 なので、距離 a a a 以内に 符号語は なく、誤りが 検出される。問題 5.5 の 符号は d = 4 d = 4 d = 4 , a = 1 a = 1 a = 1 , b = 2 b = 2 b = 2 の 例である。誤りと 消失が 混在する 場合は 問題 5.4 で 扱う。
5.3 線形符号
一般の 符号は 符号語の 一覧で 与えるしかなく、 ∣ C ∣ \lvert C \rvert ∣ C ∣ が 大きいと 符号化も 復号も 現実的でない。符号を F q n \mathbb{F}_q^n F q n の 部分 空間にとると、行列で 簡潔に 記述でき、線形代数が 使える。
定義 5.9 (線形符号)F q n \mathbb{F}_q^n F q n の k k k 次元部分 空間 C C C (k ≥ 1 k \geq 1 k ≥ 1 )を、長さ n n n 、次元 k k k の 線形符号 (linear code) あるいは [ n , k ] [n, k] [ n , k ] 符号と いい、最小距離が d d d の とき [ n , k , d ] [n, k, d] [ n , k , d ] 符号と いう。 ∣ C ∣ = q k \lvert C \rvert = q^k ∣ C ∣ = q k で、情報率は k / n k/n k / n である。
命題 5.10 線形符号 C C C の 最小距離は、 0 0 0 でない 符号語の 重みの 最小値に 等しい。
証明. c ≠ c ′ c \neq c' c = c ′ なら d ( c , c ′ ) = wt ( c − c ′ ) d(c, c') = \operatorname{wt}(c - c') d ( c , c ′ ) = wt ( c − c ′ ) で c − c ′ ∈ C ∖ { 0 } c - c' \in C \setminus \lbrace 0 \rbrace c − c ′ ∈ C ∖ { 0 } 。逆に c ≠ 0 c \neq 0 c = 0 なら wt ( c ) = d ( c , 0 ) \operatorname{wt}(c) = d(c, 0) wt ( c ) = d ( c , 0 ) で 0 ∈ C 0 \in C 0 ∈ C 。□ \square □
定義 5.11 (生成行列・検査行列)[ n , k ] [n, k] [ n , k ] 符号 C C C に ついて、行が C C C の 基底を なす k × n k \times n k × n 行列 G G G を 生成行列 (generator matrix) と いう。この とき C = { u G ∣ u ∈ F q k } C = \lbrace uG \mid u \in \mathbb{F}_q^k \rbrace C = { u G ∣ u ∈ F q k } で、u ↦ u G u \mapsto uG u ↦ u G を 符号化に 使う。階数 n − k n - k n − k の ( n − k ) × n (n - k) \times n ( n − k ) × n 行列 H H H で C = { x ∈ F q n ∣ H x ⊤ = 0 } C = \lbrace x \in \mathbb{F}_q^n \mid Hx^{\top} = 0 \rbrace C = { x ∈ F q n ∣ H x ⊤ = 0 } と なる ものを 検査行列 (parity-check matrix) と いう。 G = ( I k ∣ A ) G = (I_k \mid A) G = ( I k ∣ A ) の 形の 生成行列を 標準形と いう。
標準形の 生成行列で 符号化すると、符号語の 最初の k k k 個の 成分は 情報 u u u その ものに なる。このように 情報が そのまま 符号語に 現れる 符号化を 組織的 (systematic) と いう。
定理 5.12 (生成行列と 検査行列) C C C を [ n , k ] [n, k] [ n , k ] 符号(k < n k < n k < n )と する。
C C C の 生成行列 G G G と、階数 n − k n - k n − k の ( n − k ) × n (n - k) \times n ( n − k ) × n 行列 H H H に ついて、 H H H が C C C の 検査行列である ことと G H ⊤ = O GH^{\top} = O G H ⊤ = O は 同値である。
G = ( I k ∣ A ) G = (I_k \mid A) G = ( I k ∣ A ) が C C C の 生成行列なら、 H = ( − A ⊤ ∣ I n − k ) H = (-A^{\top} \mid I_{n-k}) H = ( − A ⊤ ∣ I n − k ) は C C C の 検査行列である。
座標の 順番を 適当に 入れかえると、 C C C は 標準形の 生成行列を もつ。特に、 C C C は 検査行列を もつ。
証明. (1) H H H が 検査行列なら、 G G G の 各行 g g g は C C C に 属するので H g ⊤ = 0 Hg^{\top} = 0 H g ⊤ = 0 、すな わち G H ⊤ = O GH^{\top} = O G H ⊤ = O 。逆に G H ⊤ = O GH^{\top} = O G H ⊤ = O なら C ⊂ C ′ : = { x ∣ H x ⊤ = 0 } C \subset C' := \lbrace x \mid Hx^{\top} = 0 \rbrace C ⊂ C ′ := { x ∣ H x ⊤ = 0 } であり、次元定理(02-linear-algebra 第3章 定理 3.9)より dim C ′ = n − rank H = k = dim C \dim C' = n - \operatorname{rank} H = k = \dim C dim C ′ = n − rank H = k = dim C なので C = C ′ C = C' C = C ′ 。
(2) H H H は I n − k I_{n-k} I n − k を 含むので 階数 n − k n - k n − k で、G H ⊤ = I k ( − A ) + A I n − k = O GH^{\top} = I_k(-A) + AI_{n-k} = O G H ⊤ = I k ( − A ) + A I n − k = O 。(1) を 使えばよい。
(3) C C C の 生成行列に 行基本変形を 施して 簡約階段行列 G ′ G' G ′ に する。行の 張る 空間は 変わらないので、 G ′ G' G ′ も C C C の 生成行列である。 G ′ G' G ′ の 各行の 先頭の 1 1 1 を 含む k k k 本の 列を 前に 並べるように 座標を 入れかえると、生成行列は ( I k ∣ A ) (I_k \mid A) ( I k ∣ A ) の 形に なる。入れかえた 符号の 検査行列を (2) で 作り、列を 元の 順に 戻せば C C C の 検査行列に なる。 □ \square □
座標の 入れかえは 重みを 変えないので、入れかえて 得られる 符号( 同値な 符号 と いう)は 同じ [ n , k , d ] [n, k, d] [ n , k , d ] を もつ。最小距離は 検査行列の 列から 読み取れる。これが 以下の 符号の 設計の 基本に なる。
定理 5.13 (検査行列の 列と 最小距離) H H H を m × n m \times n m × n 行列とし、C = { x ∈ F q n ∣ H x ⊤ = 0 } ≠ { 0 } C = \lbrace x \in \mathbb{F}_q^n \mid Hx^{\top} = 0 \rbrace \neq \lbrace 0 \rbrace C = { x ∈ F q n ∣ H x ⊤ = 0 } = { 0 } と する( H H H の 階数は 問わない)。 C C C の 最小距離は、一次従属に なる H H H の 列の 最小の 本数に 等しい。特に、 H H H の どの d − 1 d - 1 d − 1 本の 列も 一次独立なら d ( C ) ≥ d d(C) \geq d d ( C ) ≥ d である。
証明. H H H の 列を h 1 , … , h n h_1, \dots, h_n h 1 , … , h n と すると H x ⊤ = ∑ i x i h i Hx^{\top} = \sum_i x_ih_i H x ⊤ = ∑ i x i h i である。重み w w w の 符号語 x ≠ 0 x \neq 0 x = 0 の 0 0 0 でない 成分の 位置の 集合を S S S と すると ∑ i ∈ S x i h i = 0 \sum_{i \in S} x_ih_i = 0 ∑ i ∈ S x i h i = 0 なので、w w w 本の 列 h i h_i h i (i ∈ S i \in S i ∈ S )は 一次従属である。逆に w w w 本の 列が 一次従属で ∑ j a j h i j = 0 \sum_j a_jh_{i_j} = 0 ∑ j a j h i j = 0 (a j a_j a j の どれかは 0 0 0 でない)なら、第 i j i_j i j 成分が a j a_j a j で ほかが 0 0 0 の ベクトルは、重みが 1 1 1 以上 w w w 以下の 符号語である。命題 5.10 より 主張が 従う。 □ \square □
例 5.14 (2 元 [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] 符号)
G = ( 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 1 ) , H = ( 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 ) G = \begin{pmatrix} 1 & 0 & 0 & 0 & 1 & 1 & 0 \\ 0 & 1 & 0 & 0 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 & 1 & 1 & 1 \end{pmatrix}, \qquad H = \begin{pmatrix} 1 & 1 & 0 & 1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 1 & 0 & 1 & 0 \\ 0 & 1 & 1 & 1 & 0 & 0 & 1 \end{pmatrix} G = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 , H = 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1
と する。 G = ( I 4 ∣ A ) G = (I_4 \mid A) G = ( I 4 ∣ A ) で、F 2 \mathbb{F}_2 F 2 では − A ⊤ = A ⊤ -A^{\top} = A^{\top} − A ⊤ = A ⊤ なので、H = ( A ⊤ ∣ I 3 ) H = (A^{\top} \mid I_3) H = ( A ⊤ ∣ I 3 ) は G G G で 生成される 符号 C C C の 検査行列である(定理 5.12(2))。 H H H の 7 本の 列 h 1 , … , h 7 h_1, \dots, h_7 h 1 , … , h 7 は F 2 3 \mathbb{F}_2^3 F 2 3 の 0 0 0 でない ベクトル 7 個すべてである。 F 2 \mathbb{F}_2 F 2 上の 2 本の ベクトルが 一次従属なのは、どちらかが 0 0 0 か 両者が 等しい ときに 限るので、どの 2 本の 列も 一次独立である。一方 h 1 = h 5 + h 6 h_1 = h_5 + h_6 h 1 = h 5 + h 6 である。定理 5.13 より d ( C ) = 3 d(C) = 3 d ( C ) = 3 。16 個の 符号語の 重みは、 0 0 0 が 1 個、3 3 3 が 7 個、4 4 4 が 7 個、7 7 7 が 1 個である(計算機で 確かめた)。
5.4 シンドローム復号
最小距離復号を 素朴に 行うと、 q k q^k q k 個の 符号語すべてと 距離を 比べる ことになる。検査行列を 使うと、手間を q n − k q^{n-k} q n − k 行の 表に 移せる。以下 C C C を [ n , k ] [n, k] [ n , k ] 符号、H H H を その 検査行列と する。
定義 5.15 (シンドローム・剰余類代表)y ∈ F q n y \in \mathbb{F}_q^n y ∈ F q n に 対し s ( y ) = H y ⊤ ∈ F q n − k s(y) = Hy^{\top} \in \mathbb{F}_q^{n-k} s ( y ) = H y ⊤ ∈ F q n − k を y y y の シンドローム (syndrome) と いう。 C C C に よる 剰余類( 02-linear-algebra 第3章 定義 3.32)y + C y + C y + C の 中で 重みが 最小の 元を、その 剰余類の 剰余類代表(coset leader。コセットリーダーとも いう)と いう。
命題 5.16 s ( y ) = s ( y ′ ) ⟺ y − y ′ ∈ C ⟺ y + C = y ′ + C s(y) = s(y') \iff y - y' \in C \iff y + C = y' + C s ( y ) = s ( y ′ ) ⟺ y − y ′ ∈ C ⟺ y + C = y ′ + C 。y + C ↦ s ( y ) y + C \mapsto s(y) y + C ↦ s ( y ) は 剰余類全体から F q n − k \mathbb{F}_q^{n-k} F q n − k への 全単射であり、剰余類は ちょうど q n − k q^{n-k} q n − k 個ある。
証明. s s s は 線形写像で Ker s = C \operatorname{Ker} s = C Ker s = C だから 最初の 同値が 成り立ち、2 つめは 剰余類の 定義 その ものである。 rank H = n − k \operatorname{rank} H = n - k rank H = n − k より s s s は 全射なので、 y + C ↦ s ( y ) y + C \mapsto s(y) y + C ↦ s ( y ) は well-defined な 全単射である( 02-linear-algebra 第3章 定理 3.34 の 特別な 場合)。 □ \square □
シンドローム復号 (syndrome decoding):各 σ ∈ F q n − k \sigma \in \mathbb{F}_q^{n-k} σ ∈ F q n − k に ついて、シンドロームが σ \sigma σ の 剰余類の 代表 e σ e_\sigma e σ を 1 つ 選んで 表に しておく。 y y y を 受け取ったら σ = s ( y ) \sigma = s(y) σ = s ( y ) を 計算し、 c ^ = y − e σ \hat{c} = y - e_\sigma c ^ = y − e σ を 出力する。
定理 5.17 (シンドローム復号の 正しさ) c ∈ C c \in C c ∈ C を 送って y = c + e y = c + e y = c + e を 受け取ったとし、 t = ⌊ ( d ( C ) − 1 ) / 2 ⌋ t = \lfloor (d(C) - 1)/2 \rfloor t = ⌊( d ( C ) − 1 ) /2 ⌋ と する。
c ^ \hat{c} c ^ は C C C の 元であり、 y y y に 最も 近い 符号語の 一つである。すな わち、シンドローム復号は 最小距離復号である。
c ^ = c \hat{c} = c c ^ = c と なるのは、誤り e e e が 表に 選んだ 代表 e s ( y ) e_{s(y)} e s ( y ) に 一致する ときに 限る。
wt ( e ) ≤ t \operatorname{wt}(e) \leq t wt ( e ) ≤ t なら、e e e は 剰余類 e + C e + C e + C の ただ 一つの 剰余類代表である。したがって、シンドローム復号は t t t 個までの 誤りを すべて 訂正する。
証明. (1) σ = s ( y ) \sigma = s(y) σ = s ( y ) と すると s ( e σ ) = σ s(e_\sigma) = \sigma s ( e σ ) = σ なので、命題 5.16 より c ^ = y − e σ ∈ C \hat{c} = y - e_\sigma \in C c ^ = y − e σ ∈ C 。任意の c ′ ∈ C c' \in C c ′ ∈ C に ついて y − c ′ ∈ y + C y - c' \in y + C y − c ′ ∈ y + C なので、代表の 最小性より d ( y , c ′ ) = wt ( y − c ′ ) ≥ wt ( e σ ) = d ( y , c ^ ) d(y, c') = \operatorname{wt}(y - c') \geq \operatorname{wt}(e_\sigma) = d(y, \hat{c}) d ( y , c ′ ) = wt ( y − c ′ ) ≥ wt ( e σ ) = d ( y , c ^ ) 。
(2) e = y − c ∈ y + C e = y - c \in y + C e = y − c ∈ y + C より s ( e ) = s ( y ) s(e) = s(y) s ( e ) = s ( y ) であり、c ^ = c ⟺ y − e s ( y ) = y − e ⟺ e = e s ( y ) \hat{c} = c \iff y - e_{s(y)} = y - e \iff e = e_{s(y)} c ^ = c ⟺ y − e s ( y ) = y − e ⟺ e = e s ( y ) 。
(3) e ′ ∈ e + C e' \in e + C e ′ ∈ e + C , e ′ ≠ e e' \neq e e ′ = e と すると、 e ′ − e e' - e e ′ − e は 0 0 0 でない 符号語なので wt ( e ′ − e ) ≥ 2 t + 1 \operatorname{wt}(e' - e) \geq 2t + 1 wt ( e ′ − e ) ≥ 2 t + 1 であり、三角不等式より wt ( e ′ ) ≥ wt ( e ′ − e ) − wt ( e ) ≥ t + 1 > wt ( e ) \operatorname{wt}(e') \geq \operatorname{wt}(e' - e) - \operatorname{wt}(e) \geq t + 1 > \operatorname{wt}(e) wt ( e ′ ) ≥ wt ( e ′ − e ) − wt ( e ) ≥ t + 1 > wt ( e ) 。□ \square □
(2) から、誤りが 確率的に 起こる 通信路で 正しく 復号される 確率は、「誤りが 表の 代表の どれかに 一致する 確率」に 等しい(例 5.30)。
例 5.18 ([ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] 符号の シンドローム復号)例 5.14 の 符号で、情報 u = ( 1 , 0 , 1 , 1 ) u = (1, 0, 1, 1) u = ( 1 , 0 , 1 , 1 ) を c = u G = ( 1 , 0 , 1 , 1 , 0 , 1 , 0 ) c = uG = (1, 0, 1, 1, 0, 1, 0) c = u G = ( 1 , 0 , 1 , 1 , 0 , 1 , 0 ) に 符号化して 送り、第 6 成分が 反転して y = ( 1 , 0 , 1 , 1 , 0 , 0 , 0 ) y = (1, 0, 1, 1, 0, 0, 0) y = ( 1 , 0 , 1 , 1 , 0 , 0 , 0 ) を 受け取ったとする。 y y y の 1 1 1 の 位置は 第 1, 3, 4 成分なので
s ( y ) = h 1 + h 3 + h 4 = ( 1 1 0 ) + ( 0 1 1 ) + ( 1 1 1 ) = ( 0 1 0 ) = h 6 s(y) = h_1 + h_3 + h_4 = \begin{pmatrix} 1 \\ 1 \\ 0 \end{pmatrix} + \begin{pmatrix} 0 \\ 1 \\ 1 \end{pmatrix} + \begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix} = \begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix} = h_6 s ( y ) = h 1 + h 3 + h 4 = 1 1 0 + 0 1 1 + 1 1 1 = 0 1 0 = h 6
である。第 j j j 成分だけが 1 1 1 の ベクトル ε j \varepsilon_j ε j の シンドロームは h j h_j h j で、H H H の 列は 0 0 0 でない ベクトルを ちょうど 1 回ずつ 尽くすので、8 個の 剰余類の 代表は 0 0 0 と ε 1 , … , ε 7 \varepsilon_1, \dots, \varepsilon_7 ε 1 , … , ε 7 である。したがって 復号は「シンドロームに 等しい 列の 位置を 反転する」だけで よい。第 6 成分を 反転して c c c が 復元され、最初の 4 成 分から u u u を 得る。 H H H の 列を、第 j j j 列が j j j の 2 進表示に なるように 並べかえておけば、シンドロームを 2 進数と して 読むと 誤りの 位置が わかる(ハミングの 元々の 構成)。
補足
剰余類代表の 表は q n − k q^{n-k} q n − k 行あるので、n − k n - k n − k が 大きい 符号では 作れない。実際、一般の 線形符号の 最小距離復号は NP 困難な 問題である(Berlekamp, McEliece, van Tilborg, 1978 年)。実用の 符号は、効率よく 復号できる 代数的な 構造を もつように 作る( 第6章 )。逆に、構造を 隠した 線形符号の 復号の 難しさは、マックエリス暗号などの「符号に 基づく 暗号」の 安全性の 根拠と して 使われている。
5.5 ハミング符号と 完全符号
例 5.14 の 符号は、検査行列の 列に 0 0 0 でない ベクトルを 重複なく 全部 並べた ものだった。これを 一般化する。
定義 5.19 (ハミング符号, Hamming code)r ≥ 2 r \geq 2 r ≥ 2 と する。 F q r \mathbb{F}_q^r F q r の 1 次元部分 空間 それぞれから 0 0 0 でない ベクトルを 1 つずつ選ぶ。1 次元部分 空間は n = ( q r − 1 ) / ( q − 1 ) n = (q^r - 1)/(q - 1) n = ( q r − 1 ) / ( q − 1 ) 個ある(0 0 0 でない q r − 1 q^r - 1 q r − 1 個の ベクトルが q − 1 q - 1 q − 1 個ずつに 分かれる)。選んだ ベクトルを 列と する r × n r \times n r × n 行列 H r H_r H r に ついて、 Ham q ( r ) = { x ∈ F q n ∣ H r x ⊤ = 0 } \operatorname{Ham}_q(r) = \lbrace x \in \mathbb{F}_q^n \mid H_rx^{\top} = 0 \rbrace Ham q ( r ) = { x ∈ F q n ∣ H r x ⊤ = 0 } を ハミング符号と いう。 q = 2 q = 2 q = 2 なら H r H_r H r の 列は F 2 r \mathbb{F}_2^r F 2 r の 0 0 0 でない ベクトル全部で、 n = 2 r − 1 n = 2^r - 1 n = 2 r − 1 である。
定義 5.20 (完全符号, perfect code)最小距離 d = 2 t + 1 d = 2t + 1 d = 2 t + 1 の 符号 C ⊂ A n C \subset A^n C ⊂ A n に ついて、半径 t t t の 球 B ( c , t ) B(c, t) B ( c , t ) (c ∈ C c \in C c ∈ C )の 和集合が A n A^n A n 全体に なる とき、 C C C を 完全符号と いう。
これらの 球は どの 2 つも 交わらない。 y ∈ B ( c , t ) ∩ B ( c ′ , t ) y \in B(c, t) \cap B(c', t) y ∈ B ( c , t ) ∩ B ( c ′ , t ) なら d ( c , c ′ ) ≤ 2 t < d d(c, c') \leq 2t < d d ( c , c ′ ) ≤ 2 t < d だからである。したがって 完全符号では、どの 受信語にも 距離 t t t 以内の 符号語が ちょうど 一つ ある。
定理 5.21 ハミング符号 Ham q ( r ) \operatorname{Ham}_q(r) Ham q ( r ) は [ n , n − r , 3 ] [n, n - r, 3] [ n , n − r , 3 ] 符号(n = ( q r − 1 ) / ( q − 1 ) n = (q^r - 1)/(q - 1) n = ( q r − 1 ) / ( q − 1 ) )であり、完全符号である。
証明. 基本ベクトル e i e_i e i の 張る 1 次元部分 空間を 代表する 列 a i e i a_ie_i a i e i (a i ≠ 0 a_i \neq 0 a i = 0 )が 各 i i i に ついてあるので、 rank H r = r \operatorname{rank} H_r = r rank H r = r であり、次元定理より dim Ham q ( r ) = n − r \dim \operatorname{Ham}_q(r) = n - r dim Ham q ( r ) = n − r 。H r H_r H r の どの 2 本の 列も、 0 0 0 でなく 異なる 1 次元部分 空間に 属するので 一次独立である。一方、 ⟨ e 1 ⟩ \langle e_1 \rangle ⟨ e 1 ⟩ , ⟨ e 2 ⟩ \langle e_2 \rangle ⟨ e 2 ⟩ , ⟨ e 1 + e 2 ⟩ \langle e_1 + e_2 \rangle ⟨ e 1 + e 2 ⟩ を 代表する 列 a e 1 ae_1 a e 1 , b e 2 be_2 b e 2 , c ( e 1 + e 2 ) c(e_1 + e_2) c ( e 1 + e 2 ) は c a − 1 ( a e 1 ) + c b − 1 ( b e 2 ) − c ( e 1 + e 2 ) = 0 ca^{-1}(ae_1) + cb^{-1}(be_2) - c(e_1 + e_2) = 0 c a − 1 ( a e 1 ) + c b − 1 ( b e 2 ) − c ( e 1 + e 2 ) = 0 を みたす。定理 5.13 より d = 3 d = 3 d = 3 、t = 1 t = 1 t = 1 。半径 1 の 球は 互いに 交わらず、元の 個数の 合計は
q n − r ⋅ V q ( n , 1 ) = q n − r ( 1 + n ( q − 1 ) ) = q n − r ⋅ q r = q n q^{n-r} \cdot V_q(n, 1) = q^{n-r}\bigl(1 + n(q - 1)\bigr) = q^{n-r} \cdot q^r = q^n q n − r ⋅ V q ( n , 1 ) = q n − r ( 1 + n ( q − 1 ) ) = q n − r ⋅ q r = q n
なので、球の 和集合は F q n \mathbb{F}_q^n F q n 全体である。□ \square □
復号は 例 5.18 と 同じで、 0 0 0 でない シンドローム σ \sigma σ は H r H_r H r の ただ 一つの 列 h j h_j h j の 定数倍 λ h j \lambda h_j λ h j なので、第 j j j 成 分から λ \lambda λ を 引けばよい。 Ham 2 ( 3 ) \operatorname{Ham}_2(3) Ham 2 ( 3 ) は 例 5.14 の [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] 符号(と 同値な 符号)、 Ham 2 ( 4 ) \operatorname{Ham}_2(4) Ham 2 ( 4 ) は [ 15 , 11 , 3 ] [15, 11, 3] [ 15 , 11 , 3 ] 符号である。
注意
「1 個の 誤りを 訂正できる」符号に 2 個の 誤りが 起きると、復号器は 気づかずに 誤った 答えを 出しうる。 [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] 符号は 完全符号なので、 d ( c , y ) = 2 d(c, y) = 2 d ( c , y ) = 2 の y y y にも 距離 1 の 符号語 c ′ ≠ c c' \neq c c ′ = c が ちょうど 一つ あり、復号結果は 必ず c ′ c' c ′ に なる。たとえば 例 5.18 の c c c の 第 2, 5 成分が 反転すると、シンドロームは h 7 h_7 h 7 で、復号結果は 1111111 1111111 1111111 に なる。2 個の 誤りの 21 通りすべてが このように 誤訂正される(計算機で 確かめた)。
2 12 ( 1 + 23 + ( 23 2 ) + ( 23 3 ) ) = 2 12 ⋅ 2 11 , 3 6 ( 1 + 2 ⋅ 11 + 2 2 ( 11 2 ) ) = 3 6 ⋅ 3 5 2^{12}\left(1 + 23 + \binom{23}{2} + \binom{23}{3}\right) = 2^{12} \cdot 2^{11}, \qquad 3^6\left(1 + 2 \cdot 11 + 2^2\binom{11}{2}\right) = 3^6 \cdot 3^5 2 12 ( 1 + 23 + ( 2 23 ) + ( 3 23 ) ) = 2 12 ⋅ 2 11 , 3 6 ( 1 + 2 ⋅ 11 + 2 2 ( 2 11 ) ) = 3 6 ⋅ 3 5
2 元ゴレイ符号は、x 23 − 1 x^{23} - 1 x 23 − 1 の 11 次の 既約因子 x 11 + x 9 + x 7 + x 6 + x 5 + x + 1 x^{11} + x^9 + x^7 + x^6 + x^5 + x + 1 x 11 + x 9 + x 7 + x 6 + x 5 + x + 1 を 生成多項式と する 巡回符号( 第6章 )と して 作れる(最小距離 7 は 計算機で 確かめた)。 q q q が 素数べきの とき、非自明な 完全符号は ハミング符号か ゴレイ符号と 同じ パラメータ ( n , M , d ) (n, M, d) ( n , M , d ) を もつ ものに 限る(ヴァン・リントらの 先行研究を 受けて、1973 年に ティエタヴァイネンと、独立に ジノヴィエフと レオンチェフが 証明した。主張のみ。証明は MacWilliams–Sloane の 第6章や van Lint の 教科書の 第7章を 参照)。
ヒント
実務では
サーバーなどの ECC メモリでは、64 ビットの データに 8 ビットの 検査ビットを 加えた 72 ビット単位の 符号が 広く 使われてきた。たとえば Ham 2 ( 7 ) \operatorname{Ham}_2(7) Ham 2 ( 7 ) ([ 127 , 120 , 3 ] [127, 120, 3] [ 127 , 120 , 3 ] )の 情報ビットを 64 個に 減らした( 短縮 した)[ 71 , 64 , 3 ] [71, 64, 3] [ 71 , 64 , 3 ] 符号に 全体の パリティを 1 ビット加えると [ 72 , 64 , 4 ] [72, 64, 4] [ 72 , 64 , 4 ] 符号に なり、1 ビットの 誤りを 訂正し 2 ビットの 誤りを 検出できる(SEC-DED。問題 5.5)。訂正できた 誤りも 記録しておき、同じ 場所で 訂正が 繰り返されるなら 故障を 疑う、と いう 運用が 一般的である。
5.6 符号の 限界
q q q 元の アルファベット上の 長さ n n n 、最小距離 d d d 以上の 符号の 符号語の 個数の 最大値を A q ( n , d ) A_q(n, d) A q ( n , d ) と する。訂正能力と 情報率の 交換条件を 定量化するのが、次の 限界式である。
定理 5.23 (シングルトン限界, Singleton bound)q q q 元の ( n , M , d ) (n, M, d) ( n , M , d ) 符号に ついて M ≤ q n − d + 1 M \leq q^{n-d+1} M ≤ q n − d + 1 。特に [ n , k , d ] [n, k, d] [ n , k , d ] 線形符号に ついて d ≤ n − k + 1 d \leq n - k + 1 d ≤ n − k + 1 。
証明. 各符号語の 最後の d − 1 d - 1 d − 1 個の 成分を 取り除く 写像 C → A n − d + 1 C \to A^{n-d+1} C → A n − d + 1 は 単射である。像が 等しい 2 つの 符号語は 高々 d − 1 d - 1 d − 1 個の 位置でしか異ならないからである。よって M ≤ q n − d + 1 M \leq q^{n-d+1} M ≤ q n − d + 1 。□ \square □
定義 5.24 (MDS 符号)d = n − k + 1 d = n - k + 1 d = n − k + 1 を みたす [ n , k , d ] [n, k, d] [ n , k , d ] 線形符号を MDS 符号 (maximum distance separable code)と いう。
F q n \mathbb{F}_q^n F q n 全体([ n , n , 1 ] [n, n, 1] [ n , n , 1 ] )、{ x ∣ ∑ i x i = 0 } \lbrace x \mid \sum_i x_i = 0 \rbrace { x ∣ ∑ i x i = 0 } ([ n , n − 1 , 2 ] [n, n - 1, 2] [ n , n − 1 , 2 ] )、繰り返し符号([ n , 1 , n ] [n, 1, n] [ n , 1 , n ] )は MDS 符号である。2 元では これら 以外に MDS 符号は ない(問題 5.6)。 第6章 の リード–ソロモン符号は、 n ≤ q n \leq q n ≤ q の 範囲で 任意の k k k に ついて MDS 符号を 与える。
定理 5.25 (ハミング限界, Hamming bound)q q q 元の ( n , M , d ) (n, M, d) ( n , M , d ) 符号に ついて、 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) \leq q^n M ⋅ V q ( n , t ) ≤ q n 。等号が 成り立つのは 完全符号の ときに 限る。
証明. 半径 t t t の 球 B ( c , t ) B(c, t) B ( c , t ) (c ∈ C c \in C c ∈ C )は 互いに 交わらない(定義 5.20 の 後の 注意)ので、元の 個数の 和 M ⋅ V q ( n , t ) M \cdot V_q(n, t) M ⋅ V q ( n , t ) は q n q^n q n 以下で、等号は 球が 全体を 覆う ときに 限る。 d = 2 t + 2 d = 2t + 2 d = 2 t + 2 なら球は 全体を 覆わない。実際、 d ( c , c ′ ) = d d(c, c') = d d ( c , c ′ ) = d と なる c , c ′ c, c' c , c ′ に ついて、両者が 異なる 位置の うち t + 1 t + 1 t + 1 個で c ′ c' c ′ の 値、ほかで c c c の 値を とる y y y は、d ( c , y ) = t + 1 d(c, y) = t + 1 d ( c , y ) = t + 1 で、c ′ ′ ≠ c c'' \neq c c ′′ = c なら d ( y , c ′ ′ ) ≥ d − ( t + 1 ) = t + 1 d(y, c'') \geq d - (t + 1) = t + 1 d ( y , c ′′ ) ≥ d − ( t + 1 ) = t + 1 なので、どの 球にも 入らない。よって 等号は d d d が 奇数で 完全符号の ときに 限る。 □ \square □
ハミング限界は 球充填限界 (sphere-packing bound) とも いう。ここまでの 2 つは「これより 良い 符号は ない」と いう 上界である。逆に、良い 符号の 存在を 保証するのが 次の 定理である。
定理 5.26 (ギルバート–ヴァルシャモフ限界, Gilbert–Varshamov bound)
(ギルバートの 限界。一般の 符号) 1 ≤ d ≤ n 1 \leq d \leq n 1 ≤ d ≤ n なら A q ( n , d ) ≥ q n / V q ( n , d − 1 ) A_q(n, d) \geq q^n/V_q(n, d - 1) A q ( n , d ) ≥ q n / V q ( n , d − 1 ) 。
(ヴァルシャモフの 限界。線形符号) 2 ≤ d ≤ n 2 \leq d \leq n 2 ≤ d ≤ n , 1 ≤ k < n 1 \leq k < n 1 ≤ k < 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 ] [n, k] [ n , k ] 線形符号が 存在する。
証明. (1) 最小距離 d d d 以上の 符号の うち符号語が 最も 多い もの C C C を とる。ある y ∈ A n y \in A^n y ∈ A n が すべての c ∈ C c \in C c ∈ C と 距離 d d d 以上なら、C ∪ { y } C \cup \lbrace y \rbrace C ∪ { y } も 最小距離 d d d 以上で、最大性に 反する。よって A n = ⋃ c ∈ C B ( c , d − 1 ) A^n = \bigcup_{c \in C} B(c, d - 1) A n = ⋃ c ∈ C B ( c , d − 1 ) であり、q n ≤ ∣ C ∣ ⋅ V q ( n , d − 1 ) q^n \leq \lvert C \rvert \cdot V_q(n, d - 1) q n ≤ ∣ C ∣ ⋅ V q ( n , d − 1 ) 。
(2) 列 h 1 , … , h n ∈ F q n − k h_1, \dots, h_n \in \mathbb{F}_q^{n-k} h 1 , … , h n ∈ F q n − k を、どの d − 1 d - 1 d − 1 本も 一次独立に なるように 順に 選ぶ。 h 1 , … , h j − 1 h_1, \dots, h_{j-1} h 1 , … , h j − 1 (1 ≤ j ≤ n 1 \leq j \leq n 1 ≤ j ≤ n )が この 性質を もつとする。それらの うち高々 d − 2 d - 2 d − 2 本の 一次結合で 書ける ベクトルは、 0 0 0 でない 係数を もつ列と 係数の 選び方を 数えて、高々
∑ i = 0 d − 2 ( j − 1 i ) ( q − 1 ) i ≤ V q ( n − 1 , d − 2 ) < q n − k \sum_{i=0}^{d-2}\binom{j - 1}{i}(q - 1)^i \leq V_q(n - 1, d - 2) < q^{n-k} i = 0 ∑ d − 2 ( i j − 1 ) ( q − 1 ) i ≤ V q ( n − 1 , d − 2 ) < q n − k
個しかない(i = 0 i = 0 i = 0 の 項は 零ベクトル)。そこで h j h_j h j を それら 以外から 選ぶ。 h 1 , … , h j h_1, \dots, h_j h 1 , … , h j の 中の 高々 d − 1 d - 1 d − 1 本に 非自明な 一次関係が あったとすると、帰納法の 仮定より それは h j h_j h j を 0 0 0 でない 係数で 含むので、 h j h_j h j が ほかの 高々 d − 2 d - 2 d − 2 本の 一次 結合に なり、選び方に 反する。こうして 作った H = ( h 1 ⋯ h n ) H = (h_1 \ \cdots \ h_n) H = ( h 1 ⋯ h n ) に ついて、 C = { x ∣ H x ⊤ = 0 } C = \lbrace x \mid Hx^{\top} = 0 \rbrace C = { x ∣ H x ⊤ = 0 } は 次元定理より dim C ≥ k \dim C \geq k dim C ≥ k で、定理 5.13 より 最小距離は d d d 以上である。C C C の k k k 次元部分 空間を とればよい(最小距離は 減らない)。 □ \square □
(1) と (2) を まとめて GV 限界と 呼ぶことが 多い。本章では、一般の 符号に ついての (1) と、線形符号に ついての (2) の 両方を 証明した。
例 5.27 (限界の 比較)2 元線形符号に ついて、長さ n n n と 最小距離 d d d を 与えた ときの 次元 k k k を 比べる(数値は 計算機で 確かめた)。
( n , d ) (n, d) ( n , d )
シングルトン限界
ハミング限界
ヴァルシャモフの 限界で 存在が 保証される k k k
知られている 符号
( 7 , 3 ) (7, 3) ( 7 , 3 )
k ≤ 5 k \leq 5 k ≤ 5
k ≤ 4 k \leq 4 k ≤ 4
4 4 4
ハミング符号 [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ]
( 15 , 5 ) (15, 5) ( 15 , 5 )
k ≤ 11 k \leq 11 k ≤ 11
k ≤ 8 k \leq 8 k ≤ 8
6 6 6
BCH 符号 [ 15 , 7 , 5 ] [15, 7, 5] [ 15 , 7 , 5 ] (第6章)
( 23 , 7 ) (23, 7) ( 23 , 7 )
k ≤ 17 k \leq 17 k ≤ 17
k ≤ 12 k \leq 12 k ≤ 12
7 7 7
ゴレイ符号 [ 23 , 12 , 7 ] [23, 12, 7] [ 23 , 12 , 7 ]
( 31 , 5 ) (31, 5) ( 31 , 5 )
k ≤ 27 k \leq 27 k ≤ 27
k ≤ 22 k \leq 22 k ≤ 22
18 18 18
BCH 符号 [ 31 , 21 , 5 ] [31, 21, 5] [ 31 , 21 , 5 ] (第6章)
たとえば ( 15 , 5 ) (15, 5) ( 15 , 5 ) では、ハミング限界は 2 k ⋅ V 2 ( 15 , 2 ) = 2 k ⋅ 121 ≤ 2 15 2^k \cdot V_2(15, 2) = 2^k \cdot 121 \leq 2^{15} 2 k ⋅ V 2 ( 15 , 2 ) = 2 k ⋅ 121 ≤ 2 15 より k ≤ 8 k \leq 8 k ≤ 8 を 与え、ヴァルシャモフの 限界は V 2 ( 14 , 3 ) = 470 < 2 9 V_2(14, 3) = 470 < 2^9 V 2 ( 14 , 3 ) = 470 < 2 9 より n − k = 9 n - k = 9 n − k = 9 で 成り立つ。上界と 下界の 間には すき間が あり、その間の どこに 最良の 符号が あるかは、一般には 分かっていない。
符号長を 大きくした ときの 振る 舞いは、 2 元エントロピー関数
H ( x ) = − x log 2 x − ( 1 − x ) log 2 ( 1 − x ) ( 0 < x < 1 ) , H ( 0 ) = H ( 1 ) = 0 H(x) = -x\log_2 x - (1 - x)\log_2(1 - x) \quad (0 < x < 1), \qquad H(0) = H(1) = 0 H ( x ) = − x log 2 x − ( 1 − x ) log 2 ( 1 − x ) ( 0 < x < 1 ) , H ( 0 ) = H ( 1 ) = 0
で 表される。ヴァルシャモフの 限界から、相対距離 d / n ≥ δ d/n \geq \delta d / n ≥ δ (0 < δ ≤ 1 / 2 0 < \delta \leq 1/2 0 < δ ≤ 1/2 )で 情報率が ほぼ 1 − H ( δ ) 1 - H(\delta) 1 − H ( δ ) 以上の 2 元線形符号が 存在する(問題 5.7)。相対距離 δ \delta δ を 保ったまま 1 − H ( δ ) 1 - H(\delta) 1 − H ( δ ) より 真に 大きい 情報率を 達成する、いくらでも 長い 2 元符号の 族が あるか どうかは、有名な 未解決問題である( q ≥ 49 q \geq 49 q ≥ 49 が 平方数の ときは、代数曲線を 使う 符号(代数幾何符号)が、相対距離の ある 範囲で q q q 元の GV 限界を 超える ことが 知られている。最初の 例は 1982 年の ツファスマン、ヴラドゥツ、ジンクの 結果である)。
5.7 二元対称通信路と シャノンの 定理
ここまでは「t t t 個までの 誤りなら 必ず直す」と いう 最悪の 場合の 保証を 考えてきた。実際の 通信路では 誤りは 確率的に 起こるので、確率の モデルを 置くと 別の 限界が 見えてくる。
定義 5.28 (二元対称通信路, binary symmetric channel)0 ≤ p < 1 / 2 0 \leq p < 1/2 0 ≤ p < 1/2 と する。送った 各ビットが、ほかの ビットと 独立に 確率 p p p で 反転する 通信路を、反転確率 p p p の 二元対称通信路と いい、 B S C ( p ) \mathrm{BSC}(p) BSC ( p ) と 書く。
c ∈ F 2 n c \in \mathbb{F}_2^n c ∈ F 2 n を 送って y y y を 受け取る 確率は P ( y ∣ c ) = p d ( c , y ) ( 1 − p ) n − d ( c , y ) P(y \mid c) = p^{d(c, y)}(1 - p)^{n - d(c, y)} P ( y ∣ c ) = p d ( c , y ) ( 1 − p ) n − d ( c , y ) である。
命題 5.29 (最尤復号と 最小距離復号) 0 < p < 1 / 2 0 < p < 1/2 0 < p < 1/2 と する。受信語 y y y に ついて P ( y ∣ c ) P(y \mid c) P ( y ∣ c ) を 最大に する 符号語 c c c を 選ぶこと( 最尤復号 , maximum likelihood decoding)は、y y y に 最も 近い 符号語を 選ぶことと 同じである。
証明. P ( y ∣ c ) = ( 1 − p ) n ( p / ( 1 − p ) ) d ( c , y ) P(y \mid c) = (1 - p)^n\bigl(p/(1 - p)\bigr)^{d(c, y)} P ( y ∣ c ) = ( 1 − p ) n ( p / ( 1 − p ) ) d ( c , y ) で 0 < p / ( 1 − p ) < 1 0 < p/(1 - p) < 1 0 < p / ( 1 − p ) < 1 なので、P ( y ∣ c ) P(y \mid c) P ( y ∣ c ) は d ( c , y ) d(c, y) d ( c , y ) に ついて 狭義単調減少である。 □ \square □
例 5.30 (誤り率の 比較) B S C ( 0.01 ) \mathrm{BSC}(0.01) BSC ( 0.01 ) で 4 ビットの 情報を 送る。
符号化しない :4 ビットの どれかが 反転する 確率は 1 − 0.99 4 ≈ 0.0394 1 - 0.99^4 \approx 0.0394 1 − 0.9 9 4 ≈ 0.0394 。
[ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] 符号:剰余類代表は 重み 1 以下の ベクトル全部なので(例 5.18)、定理 5.17(2) より 正しく 復号される 確率は ( 1 − p ) 7 + 7 p ( 1 − p ) 6 (1 - p)^7 + 7p(1 - p)^6 ( 1 − p ) 7 + 7 p ( 1 − p ) 6 で、誤る 確率は 約 0.00203 0.00203 0.00203 (20 万ブロックを 送る シミュレーションでも、誤った ブロックの 割合は およそ 0.002 0.002 0.002 に なる)。情報率は 4 / 7 4/7 4/7 。
各ビットを 3 回繰り返す:1 ビットあたりの 誤り確率は 3 p 2 ( 1 − p ) + p 3 ≈ 0.000298 3p^2(1 - p) + p^3 \approx 0.000298 3 p 2 ( 1 − p ) + p 3 ≈ 0.000298 で、4 ビットの どれかを 誤る 確率は 約 0.00119 0.00119 0.00119 。ただし情報率は 1 / 3 1/3 1/3 。
繰り返しの 回数を 増やせば 誤り確率は いくらでも 小さくなるが、情報率は 0 0 0 に 近づく。情報率を 一定に 保ったまま、誤り確率を 0 0 0 に 近づける ことは できるだろうか。シャノンの 答えは「ある 値までの 情報率なら 可能」である。 B S C ( p ) \mathrm{BSC}(p) BSC ( p ) の 通信路容量 (channel capacity) を、5.6 節の H H H を 使って 1 − H ( p ) 1 - H(p) 1 − H ( p ) と 定める。 1 − H ( 0.01 ) ≈ 0.919 1 - H(0.01) \approx 0.919 1 − H ( 0.01 ) ≈ 0.919 , 1 − H ( 0.05 ) ≈ 0.714 1 - H(0.05) \approx 0.714 1 − H ( 0.05 ) ≈ 0.714 , 1 − H ( 0.1 ) ≈ 0.531 1 - H(0.1) \approx 0.531 1 − H ( 0.1 ) ≈ 0.531 である。
定理 5.31 (シャノンの 通信路符号化定理, noisy-channel coding theorem。 B S C ( p ) \mathrm{BSC}(p) BSC ( p ) の 場合) 0 ≤ p < 1 / 2 0 \leq p < 1/2 0 ≤ p < 1/2 と する。
(達成 可能性) R < 1 − H ( p ) R < 1 - H(p) R < 1 − H ( p ) と ε > 0 \varepsilon > 0 ε > 0 を 任意にとると、十分 大きい すべての n n n に ついて、符号語を 2 R n 2^{Rn} 2 R n 個以上 も つ長さ n n n の 2 元符号で、最尤復号の 誤り 確率が、どの 符号語を 送った 場合にも ε \varepsilon ε 未満に なる ものが 存在する。
(逆定理)R > 1 − H ( p ) R > 1 - H(p) R > 1 − H ( p ) ならば、ある η > 0 \eta > 0 η > 0 が あって、符号語を 2 R n 2^{Rn} 2 R n 個以上 も つ長さ n n n の どんな 符号と どんな 復号法に ついても、送る 符号語を 一様に 選んだ ときの 誤り確率は、十分 大きい n n n で η \eta η 以上に なる。
本章では この 定理を 証明しない(主張のみ。BSC の 場合の 証明は van Lint の 教科書の 第2章に ある)。逆定理の 状況では、誤り確率は 実は 1 1 1 に 近づく ことも 知られている(強い 逆定理)。証明ではないが、定理の 意味を 直観的に 述べておく。
長さ n n n の ブロックで 反転する ビットの 個数は、大数の 法則( 11-probability 第2章 )より、ほとんどの 場合 n p np n p 前後である。そのような 誤りの パターンは およそ 2 n H ( p ) 2^{nH(p)} 2 n H ( p ) 通り ある(問題 5.7 の 評価と 比べよ)。
正しく 復号するには、各符号語の まわりの「ありそうな 受信語」約 2 n H ( p ) 2^{nH(p)} 2 n H ( p ) 個の 集まりが ほとんど 重ならない 必要が ある。受信語は 全部で 2 n 2^n 2 n 個なので、符号語は 高々 2 n ( 1 − H ( p ) ) 2^{n(1 - H(p))} 2 n ( 1 − H ( p )) 個程度しか 置けない。これが 逆定理の 直観である。
シャノンは、符号語を ランダムに 選んだ 符号の 誤り確率の 平均が、 R < 1 − H ( p ) R < 1 - H(p) R < 1 − H ( p ) なら n → ∞ n \to \infty n → ∞ で 0 0 0 に 近づく ことを 示した。平均が 小さいので、誤り 確率が 小さい 符号が 存在する(ランダムな 線形符号でも よい)。
注意
シャノンの 定理は 存在定理であり、(i) 必要な 符号長、(ii) 効率の よい 符号化・復号法、(iii) 誤りが 独立でない 通信路(バースト誤り)や 敵対的な 誤りに ついては 何も 述べない。また、この 定理の 符号は「ランダムに 起こる n p np n p 個前後の 誤り」を 高い 確率で 直すのであって、「 n p np n p 個以下の どんな 誤りも 直す」わけではない。後者には 最小距離が 2 n p 2np 2 n p を 超える 必要が あり、たとえば p ≥ 1 / 4 p \geq 1/4 p ≥ 1/4 なら そのような 2 元符号の 情報率は n → ∞ n \to \infty n → ∞ で 0 0 0 に 近づく(プロトキン限界。証明は 省略する)。
ヒント
実務では
シャノンの 限界に 近い 性能を 実用的な 計算量で 達成する 符号が 現れたのは 1990 年代以降である(ターボ符号、1960 年代に ギャラガーが 考案し再発見された LDPC 符号、2009 年に アリカンが 提案した 極符号など)。5G の 移動通信規格(3GPP NR)では、データに LDPC 符号、制御情報に 極符号が 採用されている。一方、誤りが まとまって 起こる 記録媒体や QR コードでは、 第6章 の リード–ソロモン符号が 使われる。通信路の モデル(独立な 誤りか、バーストか、消失か)を 見誤ると、理論上の 性能は 出ない。
まとめ
最小距離 d d d の 符号は、 d − 1 d - 1 d − 1 個までの 誤りを 検出し、 ⌊ ( d − 1 ) / 2 ⌋ \lfloor (d - 1)/2 \rfloor ⌊( d − 1 ) /2 ⌋ 個までの 誤りを 訂正し、 d − 1 d - 1 d − 1 個までの 消失を 訂正できる。検出能力と 訂正能力は 同時には 使い切れない( a ≤ b a \leq b a ≤ b , a + b ≤ d − 1 a + b \leq d - 1 a + b ≤ d − 1 なら、a a a 個までの 訂正と b b b 個までの 検出を 両立できる)。
線形符号 [ n , k , d ] [n, k, d] [ n , k , d ] は 生成行列 G G G と 検査行列 H H H (G H ⊤ = O GH^{\top} = O G H ⊤ = O )で 表される。最小距離は 0 0 0 でない 符号語の 最小の 重みであり、一次従属に なる H H H の 列の 最小の 本数でもある。
シンドローム H y ⊤ Hy^{\top} H y ⊤ は 剰余類 y + C y + C y + C を 決める。剰余類代表を 引く シンドローム復号は 最小距離復号であり、正しく 復号されるのは 誤りが 表の 代表に 一致する ときに 限る。
ハミング符号 [ n , n − r , 3 ] [n, n - r, 3] [ n , n − r , 3 ] (n = ( q r − 1 ) / ( q − 1 ) n = (q^r - 1)/(q - 1) n = ( q r − 1 ) / ( q − 1 ) )は 完全符号で、シンドロームが 誤りの 位置を 直接示す。
シングルトン限界 d ≤ n − k + 1 d \leq n - k + 1 d ≤ n − k + 1 (等号は MDS 符号)と ハミング限界 M ⋅ V q ( n , t ) ≤ q n M \cdot V_q(n, t) \leq q^n M ⋅ V q ( n , t ) ≤ q n (等号は 完全符号)は 上界、ギルバート–ヴァルシャモフ限界は 存在を 保証する 下界である。
B S C ( p ) \mathrm{BSC}(p) BSC ( p ) では 最尤復号は 最小距離復号に 一致する。容量 1 − H ( p ) 1 - H(p) 1 − H ( p ) 未満の 情報率なら 誤り確率を いくらでも 小さく でき、超えると できない(シャノン。主張のみ)。
訂正能力を 超える 誤りは 気づかれずに 誤訂正されうる。シャノンの 定理は 独立な 誤りの モデルでの 存在定理であり、符号長・復号法・ バースト誤りに ついては 何も 言わない。
演習問題
問題 5.1 ★ 例 5.14 の [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] 符号で、受信語 y = ( 0 , 1 , 0 , 0 , 1 , 1 , 0 ) y = (0, 1, 0, 0, 1, 1, 0) y = ( 0 , 1 , 0 , 0 , 1 , 1 , 0 ) と y ′ = ( 1 , 1 , 1 , 0 , 0 , 0 , 1 ) y' = (1, 1, 1, 0, 0, 0, 1) y ′ = ( 1 , 1 , 1 , 0 , 0 , 0 , 1 ) を シンドローム復号し、送られた 情報 u u u を 求めよ(誤りは 高々 1 個と する)。
解答
y y y の 1 1 1 の 位置は 第 2, 5, 6 成分なので、 s ( y ) = h 2 + h 5 + h 6 = ( 1 , 0 , 1 ) ⊤ + ( 1 , 0 , 0 ) ⊤ + ( 0 , 1 , 0 ) ⊤ = ( 0 , 1 , 1 ) ⊤ = h 3 s(y) = h_2 + h_5 + h_6 = (1, 0, 1)^{\top} + (1, 0, 0)^{\top} + (0, 1, 0)^{\top} = (0, 1, 1)^{\top} = h_3 s ( y ) = h 2 + h 5 + h 6 = ( 1 , 0 , 1 ) ⊤ + ( 1 , 0 , 0 ) ⊤ + ( 0 , 1 , 0 ) ⊤ = ( 0 , 1 , 1 ) ⊤ = h 3 。第 3 成分を 反転して c = ( 0 , 1 , 1 , 0 , 1 , 1 , 0 ) c = (0, 1, 1, 0, 1, 1, 0) c = ( 0 , 1 , 1 , 0 , 1 , 1 , 0 ) 、u = ( 0 , 1 , 1 , 0 ) u = (0, 1, 1, 0) u = ( 0 , 1 , 1 , 0 ) 。検算:u G uG u G は G G G の 第 2 行と 第 3 行の 和で、 c c c に 一致する。
y ′ y' y ′ の 1 1 1 の 位置は 第 1, 2, 3, 7 成分なので、 s ( y ′ ) = ( 1 , 1 , 0 ) ⊤ + ( 1 , 0 , 1 ) ⊤ + ( 0 , 1 , 1 ) ⊤ + ( 0 , 0 , 1 ) ⊤ = ( 0 , 0 , 1 ) ⊤ = h 7 s(y') = (1, 1, 0)^{\top} + (1, 0, 1)^{\top} + (0, 1, 1)^{\top} + (0, 0, 1)^{\top} = (0, 0, 1)^{\top} = h_7 s ( y ′ ) = ( 1 , 1 , 0 ) ⊤ + ( 1 , 0 , 1 ) ⊤ + ( 0 , 1 , 1 ) ⊤ + ( 0 , 0 , 1 ) ⊤ = ( 0 , 0 , 1 ) ⊤ = h 7 。第 7 成分を 反転して c ′ = ( 1 , 1 , 1 , 0 , 0 , 0 , 0 ) c' = (1, 1, 1, 0, 0, 0, 0) c ′ = ( 1 , 1 , 1 , 0 , 0 , 0 , 0 ) 、u = ( 1 , 1 , 1 , 0 ) u = (1, 1, 1, 0) u = ( 1 , 1 , 1 , 0 ) 。検算:G G G の 第 1〜3 行の 後半 3 成分の 和は ( 1 , 1 , 0 ) + ( 1 , 0 , 1 ) + ( 0 , 1 , 1 ) = ( 0 , 0 , 0 ) (1, 1, 0) + (1, 0, 1) + (0, 1, 1) = (0, 0, 0) ( 1 , 1 , 0 ) + ( 1 , 0 , 1 ) + ( 0 , 1 , 1 ) = ( 0 , 0 , 0 ) である。
問題 5.2 ★ (1) 2 個の 誤りを 訂正できる 2 元 [ 10 , 6 ] [10, 6] [ 10 , 6 ] 線形符号は 存在しない ことを 示せ。(2) 2 元 [ 10 , 6 , 3 ] [10, 6, 3] [ 10 , 6 , 3 ] 線形符号は 存在する ことを 示せ。
解答
(1) 2 個の 誤りを 訂正できるなら d ≥ 5 d \geq 5 d ≥ 5 である(定理 5.7(2) の 後半より、 d ≤ 4 d \leq 4 d ≤ 4 では 2 個の 誤りの 訂正は 保証されない)。ハミング限界( t = 2 t = 2 t = 2 )より 2 6 ⋅ V 2 ( 10 , 2 ) ≤ 2 10 2^6 \cdot V_2(10, 2) \leq 2^{10} 2 6 ⋅ V 2 ( 10 , 2 ) ≤ 2 10 が 必要だが、 V 2 ( 10 , 2 ) = 1 + 10 + 45 = 56 V_2(10, 2) = 1 + 10 + 45 = 56 V 2 ( 10 , 2 ) = 1 + 10 + 45 = 56 で 2 6 ⋅ 56 = 3584 > 1024 2^6 \cdot 56 = 3584 > 1024 2 6 ⋅ 56 = 3584 > 1024 。
(2) ヴァルシャモフの 限界( n = 10 n = 10 n = 10 , k = 6 k = 6 k = 6 , d = 3 d = 3 d = 3 )で V 2 ( 9 , 1 ) = 10 < 2 4 V_2(9, 1) = 10 < 2^4 V 2 ( 9 , 1 ) = 10 < 2 4 なので、最小距離 3 以上の [ 10 , 6 ] [10, 6] [ 10 , 6 ] 符号が 存在する。具体的には、 F 2 4 \mathbb{F}_2^4 F 2 4 の 0 0 0 でない 相異なる 10 個の ベクトル(基本ベクトル e 1 , … , e 4 e_1, \dots, e_4 e 1 , … , e 4 と e 1 + e 2 e_1 + e_2 e 1 + e 2 を 含める)を 列と する 4 × 10 4 \times 10 4 × 10 行列を 検査行列と すればよい。階数は 4 で、どの 2 本の 列も 一次独立なので d ≥ 3 d \geq 3 d ≥ 3 、列 e 1 , e 2 , e 1 + e 2 e_1, e_2, e_1 + e_2 e 1 , e 2 , e 1 + e 2 は 一次従属なので d = 3 d = 3 d = 3 である(定理 5.13)。
問題 5.3 ★ ★ 2 元 [ 5 , 2 ] [5, 2] [ 5 , 2 ] 符号 C C C の 生成行列を G = ( I 2 ∣ A ) G = (I_2 \mid A) G = ( I 2 ∣ A ) とし、A A A の 2 つの 行を ( 1 , 1 , 0 ) (1, 1, 0) ( 1 , 1 , 0 ) と ( 0 , 1 , 1 ) (0, 1, 1) ( 0 , 1 , 1 ) と する。 C C C の 符号語と 最小距離を 求め、剰余類代表の 表を 作れ。代表が 一意でない 剰余類が ある ことを 確かめ、受信語 y = 11000 y = 11000 y = 11000 を 最小距離復号すると どうなるかを 答えよ。
解答
C = { 00000 , 10110 , 01011 , 11101 } C = \lbrace 00000, 10110, 01011, 11101 \rbrace C = { 00000 , 10110 , 01011 , 11101 } で、0 0 0 でない 符号語の 重みは 3 , 3 , 4 3, 3, 4 3 , 3 , 4 なので d = 3 d = 3 d = 3 。検査行列は H = ( A ⊤ ∣ I 3 ) H = (A^{\top} \mid I_3) H = ( A ⊤ ∣ I 3 ) で、その 列は h 1 = 110 h_1 = 110 h 1 = 110 , h 2 = 011 h_2 = 011 h 2 = 011 , h 3 = 100 h_3 = 100 h 3 = 100 , h 4 = 010 h_4 = 010 h 4 = 010 , h 5 = 001 h_5 = 001 h 5 = 001 (縦ベクトルを 横に 書いた)である。剰余類は 2 3 = 8 2^3 = 8 2 3 = 8 個あり、重み 1 の ε j \varepsilon_j ε j の シンドローム h j h_j h j は 相異なる。残る 2 つの シンドロームは 101 = h 3 + h 5 = h 1 + h 2 101 = h_3 + h_5 = h_1 + h_2 101 = h 3 + h 5 = h 1 + h 2 と 111 = h 2 + h 3 = h 1 + h 5 111 = h_2 + h_3 = h_1 + h_5 111 = h 2 + h 3 = h 1 + h 5 で、代表には 重み 2 の ものが 2 つずつある。
シンドローム
代表
000 000 000
00000 00000 00000
h 1 , … , h 5 h_1, \dots, h_5 h 1 , … , h 5
ε 1 , … , ε 5 \varepsilon_1, \dots, \varepsilon_5 ε 1 , … , ε 5 (10000 , … , 00001 10000, \dots, 00001 10000 , … , 00001 )
101 101 101
00101 00101 00101 または 11000 11000 11000
111 111 111
01100 01100 01100 または 10001 10001 10001
4 ⋅ V 2 ( 5 , 1 ) = 24 < 32 4 \cdot V_2(5, 1) = 24 < 32 4 ⋅ V 2 ( 5 , 1 ) = 24 < 32 なので C C C は 完全符号でなく、重み 1 以下の 代表だけでは 剰余類を 尽くせない ことと 整合する。 y = 11000 y = 11000 y = 11000 の シンドロームは h 1 + h 2 = 101 h_1 + h_2 = 101 h 1 + h 2 = 101 で、代表に 00101 00101 00101 を 選べば 11101 11101 11101 、11000 11000 11000 を 選べば 00000 00000 00000 に 復号される。実際 d ( y , 00000 ) = d ( y , 11101 ) = 2 d(y, 00000) = d(y, 11101) = 2 d ( y , 00000 ) = d ( y , 11101 ) = 2 , d ( y , 10110 ) = d ( y , 01011 ) = 3 d(y, 10110) = d(y, 01011) = 3 d ( y , 10110 ) = d ( y , 01011 ) = 3 で、最も 近い 符号語が 2 つある。 t = 1 t = 1 t = 1 なので 2 個の 誤りは 訂正できない。
問題 5.4 ★ ★ 最小距離 d d d の 符号で、 e e e 個の 消失(位置は 既知)と t t t 個の 誤りが 同時に 起きたとする。 2 t + e ≤ d − 1 2t + e \leq d - 1 2 t + e ≤ d − 1 なら、正しく 復号できる ことを 示せ。(ヒント:消失した 位置を 取り除いた 符号を 考える。)
解答
消失した 位置の 集合を E E E とし、x ∈ A n x \in A^n x ∈ A n から E E E の 成分を 取り除いた ものを x ′ x' x ′ と する。相異なる c , c ~ ∈ C c, \tilde{c} \in C c , c ~ ∈ C に ついて d ( c ′ , c ~ ′ ) ≥ d ( c , c ~ ) − e ≥ d − e ≥ 2 t + 1 d(c', \tilde{c}') \geq d(c, \tilde{c}) - e \geq d - e \geq 2t + 1 d ( c ′ , c ~ ′ ) ≥ d ( c , c ~ ) − e ≥ d − e ≥ 2 t + 1 なので、c ↦ c ′ c \mapsto c' c ↦ c ′ は 単射で、 C ′ = { c ′ ∣ c ∈ C } C' = \lbrace c' \mid c \in C \rbrace C ′ = { c ′ ∣ c ∈ C } は 最小距離 2 t + 1 2t + 1 2 t + 1 以上の 符号である。受信語の 読めた 部分 y ′ y' y ′ は、送った 符号語の c ′ c' c ′ と E E E の 外の 誤りの 位置でだけ異なるので d ( c ′ , y ′ ) ≤ t d(c', y') \leq t d ( c ′ , y ′ ) ≤ t 。C ′ C' C ′ に 定理 5.7(2) を 使うと、 c ′ c' c ′ は y ′ y' y ′ に 最も 近いただ 一つの 符号語であり、単射性から c c c が 決まる。 e = 0 e = 0 e = 0 が 定理 5.7(2)、 t = 0 t = 0 t = 0 が 定理 5.7(3) である。
問題 5.5 ★ ★ d d d が 奇数の 2 元 [ n , k , d ] [n, k, d] [ n , k , d ] 符号の 各符号語の 末尾に 全体の パリティ(成分の 和)を 付け加えた 符号は、 [ n + 1 , k , d + 1 ] [n + 1, k, d + 1] [ n + 1 , k , d + 1 ] 符号である ことを 示せ。また、 [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] 符号から 得られる [ 8 , 4 , 4 ] [8, 4, 4] [ 8 , 4 , 4 ] 符号で、受信語 y y y に ついて σ = H ( y 1 , … , y 7 ) ⊤ \sigma = H(y_1, \dots, y_7)^{\top} σ = H ( y 1 , … , y 7 ) ⊤ と π = y 1 + ⋯ + y 8 \pi = y_1 + \cdots + y_8 π = y 1 + ⋯ + y 8 を 計算し、「 π = 1 \pi = 1 π = 1 なら 誤りは 1 個と して、 σ = 0 \sigma = 0 σ = 0 なら 第 8 成分を、 σ = h j \sigma = h_j σ = h j なら 第 j j j 成分を 反転する。 π = 0 \pi = 0 π = 0 かつ σ ≠ 0 \sigma \neq 0 σ = 0 なら 2 個の 誤りを 検出したと 報告する」と いう 復号法が、1 個の 誤りを すべて 訂正し、2 個の 誤りを すべて 誤訂正せずに 検出する ことを 示せ。
解答
付け加えた 後の 重みは、元の 重み以上の 最小の 偶数である。 0 0 0 でない 符号語の 重みは d d d 以上で d d d は 奇数なので、付け加えた 後の 重みは d + 1 d + 1 d + 1 以上であり、重み d d d の 符号語からは 重み d + 1 d + 1 d + 1 の 符号語が できる。付け加える 写像は 単射な 線形写像なので、 [ n + 1 , k , d + 1 ] [n + 1, k, d + 1] [ n + 1 , k , d + 1 ] 符号を 得る。
[ 8 , 4 , 4 ] [8, 4, 4] [ 8 , 4 , 4 ] 符号の 符号語は σ = 0 \sigma = 0 σ = 0 , π = 0 \pi = 0 π = 0 を みたす。1 個の 誤りなら π = 1 \pi = 1 π = 1 で、それが 第 j j j 成分(j ≤ 7 j \leq 7 j ≤ 7 )なら σ = h j \sigma = h_j σ = h j 、第 8 成分なら σ = 0 \sigma = 0 σ = 0 なので、正しく 訂正される。2 個の 誤りなら π = 0 \pi = 0 π = 0 である。それが 第 i , j i, j i , j 成分(i , j ≤ 7 i, j \leq 7 i , j ≤ 7 )なら σ = h i + h j ≠ 0 \sigma = h_i + h_j \neq 0 σ = h i + h j = 0 (列は 相異なる)、一方が 第 8 成分なら σ = h j ≠ 0 \sigma = h_j \neq 0 σ = h j = 0 。いずれも「2 個の 誤りを 検出」と 報告される。
問題 5.6 ★ ★ 2 ≤ k ≤ n − 2 2 \leq k \leq n - 2 2 ≤ k ≤ n − 2 の とき、2 元 [ n , k , n − k + 1 ] [n, k, n - k + 1] [ n , k , n − k + 1 ] 線形符号(MDS 符号)は 存在しない ことを 示せ。
解答
そのような 符号 C C C が あったとする。座標の 入れかえは 重みを 変えないので、定理 5.12(3) より 生成行列は G = ( I k ∣ A ) G = (I_k \mid A) G = ( I k ∣ A ) と して よい。 G G G の 第 i i i 行の 重みは 1 + wt ( a i ) 1 + \operatorname{wt}(a_i) 1 + wt ( a i ) (a i a_i a i は A A A の 第 i i i 行で、長さ n − k n - k n − k )で、これが n − k + 1 n - k + 1 n − k + 1 以上なので wt ( a i ) = n − k \operatorname{wt}(a_i) = n - k wt ( a i ) = n − k 、すな わち A A A の 成分は すべて 1 1 1 である。すると 第 1 行と 第 2 行の 和( k ≥ 2 k \geq 2 k ≥ 2 )は ( 1 , 1 , 0 , … , 0 ) (1, 1, 0, \dots, 0) ( 1 , 1 , 0 , … , 0 ) で、重みは 2 2 2 である。しかし n − k ≥ 2 n - k \geq 2 n − k ≥ 2 より d = n − k + 1 ≥ 3 d = n - k + 1 \geq 3 d = n − k + 1 ≥ 3 なので 矛盾する。
問題 5.7 ★ ★ (1) 0 < λ ≤ 1 / 2 0 < \lambda \leq 1/2 0 < λ ≤ 1/2 なら V 2 ( n , ⌊ λ n ⌋ ) ≤ 2 n H ( λ ) V_2(n, \lfloor \lambda n \rfloor) \leq 2^{nH(\lambda)} V 2 ( n , ⌊ λn ⌋) ≤ 2 n H ( λ ) である ことを 示せ。(ヒント: 1 = ( λ + ( 1 − λ ) ) n 1 = (\lambda + (1 - \lambda))^n 1 = ( λ + ( 1 − λ ) ) n を 二項展開する。)
(2) 0 < δ ≤ 1 / 2 0 < \delta \leq 1/2 0 < δ ≤ 1/2 かつ n ( 1 − H ( δ ) ) > 1 n(1 - H(\delta)) > 1 n ( 1 − H ( δ )) > 1 と する。最小距離が δ n \delta n δ n 以上で k ≥ n ( 1 − H ( δ ) ) − 1 k \geq n(1 - H(\delta)) - 1 k ≥ n ( 1 − H ( δ )) − 1 と なる 2 元 [ n , k ] [n, k] [ n , k ] 線形符号が 存在する ことを 示せ。
解答
(1) m = ⌊ λ n ⌋ m = \lfloor \lambda n \rfloor m = ⌊ λn ⌋ と する。 λ / ( 1 − λ ) ≤ 1 \lambda/(1 - \lambda) \leq 1 λ / ( 1 − λ ) ≤ 1 なので、i ≤ m ≤ λ n i \leq m \leq \lambda n i ≤ m ≤ λn なら ( λ / ( 1 − λ ) ) i ≥ ( λ / ( 1 − λ ) ) λ n \bigl(\lambda/(1 - \lambda)\bigr)^i \geq \bigl(\lambda/(1 - \lambda)\bigr)^{\lambda n} ( λ / ( 1 − λ ) ) i ≥ ( λ / ( 1 − λ ) ) λn 。よって
1 ≥ ∑ i = 0 m ( n i ) λ i ( 1 − λ ) n − i = ( 1 − λ ) n ∑ i = 0 m ( n i ) ( λ 1 − λ ) i ≥ λ λ n ( 1 − λ ) ( 1 − λ ) n V 2 ( n , m ) 1 \geq \sum_{i=0}^{m}\binom{n}{i}\lambda^i(1 - \lambda)^{n-i} = (1 - \lambda)^n\sum_{i=0}^{m}\binom{n}{i}\left(\frac{\lambda}{1 - \lambda}\right)^i \geq \lambda^{\lambda n}(1 - \lambda)^{(1 - \lambda)n}V_2(n, m) 1 ≥ i = 0 ∑ m ( i n ) λ i ( 1 − λ ) n − i = ( 1 − λ ) n i = 0 ∑ m ( i n ) ( 1 − λ λ ) i ≥ λ λn ( 1 − λ ) ( 1 − λ ) n V 2 ( n , m )
で、λ λ n ( 1 − λ ) ( 1 − λ ) n = 2 − n H ( λ ) \lambda^{\lambda n}(1 - \lambda)^{(1 - \lambda)n} = 2^{-nH(\lambda)} λ λn ( 1 − λ ) ( 1 − λ ) n = 2 − n H ( λ ) である。
(2) d = ⌈ δ n ⌉ d = \lceil \delta n \rceil d = ⌈ δ n ⌉ と する。 d ≤ 1 d \leq 1 d ≤ 1 なら [ n , n − 1 , 2 ] [n, n - 1, 2] [ n , n − 1 , 2 ] 符号で よい。 d ≥ 2 d \geq 2 d ≥ 2 とし、k = ⌈ n ( 1 − H ( δ ) ) ⌉ − 1 k = \lceil n(1 - H(\delta)) \rceil - 1 k = ⌈ n ( 1 − H ( δ ))⌉ − 1 と おくと、仮定より 1 ≤ k ≤ n − 1 1 \leq k \leq n - 1 1 ≤ k ≤ n − 1 、また d ≤ n d \leq n d ≤ n 。d − 2 < δ n − 1 < ⌊ δ n ⌋ d - 2 < \delta n - 1 < \lfloor \delta n \rfloor d − 2 < δ n − 1 < ⌊ δ n ⌋ なので、(1) より V 2 ( n − 1 , d − 2 ) ≤ V 2 ( n , ⌊ δ n ⌋ ) ≤ 2 n H ( δ ) V_2(n - 1, d - 2) \leq V_2(n, \lfloor \delta n \rfloor) \leq 2^{nH(\delta)} V 2 ( n − 1 , d − 2 ) ≤ V 2 ( n , ⌊ δ n ⌋) ≤ 2 n H ( δ ) 。一方 n − k = n + 1 − ⌈ n ( 1 − H ( δ ) ) ⌉ > n H ( δ ) n - k = n + 1 - \lceil n(1 - H(\delta)) \rceil > nH(\delta) n − k = n + 1 − ⌈ n ( 1 − H ( δ ))⌉ > n H ( δ ) なので 2 n − k > 2 n H ( δ ) 2^{n-k} > 2^{nH(\delta)} 2 n − k > 2 n H ( δ ) 。定理 5.26(2) より、最小距離 d d d 以上(したがって δ n \delta n δ n 以上)の [ n , k ] [n, k] [ n , k ] 線形符号が 存在し、 k ≥ n ( 1 − H ( δ ) ) − 1 k \geq n(1 - H(\delta)) - 1 k ≥ n ( 1 − H ( δ )) − 1 である。
問題 5.8 ★ ★ ある 担当者が「誤り率 10% の 通信路なので、情報率 0.6 の 符号を 使い、符号長を 十分 大きく すれば、ブロック誤り率を 10 − 9 10^{-9} 1 0 − 9 以下に できる。シャノンの 定理が 保証している」と 提案した。この 主張を 評価せよ。誤り率が 5% なら どうか。
解答
通信路を B S C ( 0.1 ) \mathrm{BSC}(0.1) BSC ( 0.1 ) と みなすと、容量は 1 − H ( 0.1 ) ≈ 0.531 1 - H(0.1) \approx 0.531 1 − H ( 0.1 ) ≈ 0.531 で、情報率 0.6 0.6 0.6 は これを 超える。定理 5.31(2) より、符号長を いくら 大きくしても 誤り確率は ある 正の 数より 小さく できない(実際には 1 1 1 に 近づく)。提案は 誤りで、シャノンの 定理は むしろ 不 可能性を 示している。
誤り率 5% なら 容量は 約 0.714 > 0.6 0.714 > 0.6 0.714 > 0.6 なので、定理 5.31(1) より、十分長い 符号で 誤り確率を 10 − 9 10^{-9} 1 0 − 9 未満に できる 符号は 存在する。ただし (i) 必要な 符号長、(ii) 実用的な 時間で 復号できるかは 定理から 分からないので、具体的な 符号と 復号法で 評価する 必要が ある。(iii) 定理は 誤りが 独立に 起こると いう 仮定に 依存しており、実際の 通信路で 誤りが まとまって 起こるなら、その 対策(インターリーブなど。第6章)も 要る。