データを送ったり保存したりすると、ノイズや傷で一部が壊れることがあります。そこで元のデータに余分な情報を付けておき、壊れた箇所を見つけて直せるようにする仕組みが誤り訂正符号です。この記事では、符号を「多項式の割り算」という身近な道具で設計し、CD や QR コードに使われる Reed–Solomon 符号が、なぜ多くの誤りを直せるのかを証明します。読み終えると、符号の最小距離を設計の段階で保証する方法と、受信した語から誤りを取り除く手順が分かります。
長さ n n n の巡回符号 は、剰余環 R n = F q [ x ] / ( x n − 1 ) R_n = \mathbb{F}_q[x]/(x^n-1) R n = F q [ x ] / ( x n − 1 ) のイデアルと同じものです。各巡回符号は x n − 1 x^n - 1 x n − 1 のモニックな約数 g g g (生成多項式 )でただ 1 通りに表され、次元は n − deg g n - \deg g n − deg g です。gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 なら巡回符号は 2 t 2^{t} 2 t 個(t t t は x n − 1 x^n-1 x n − 1 の既約因子の個数)です。
g g g の根の指数の集合(定義集合 )で符号を指定すると、「連続する δ − 1 \delta - 1 δ − 1 個の冪 α b , … , α b + δ − 2 \alpha^b, \ldots, \alpha^{b+\delta-2} α b , … , α b + δ − 2 が零点なら最小距離は δ \delta δ 以上」という BCH 限界 が Vandermonde 行列式から出ます。
Reed–Solomon 符号 は、次数 k k k 未満の多項式を n n n 個の点で評価して作る [ n , k , n − k + 1 ] q [n, k, n-k+1]_q [ n , k , n − k + 1 ] q 符号で、Singleton 限界の等号を達成します(MDS 符号 。最小距離が理論上の上限に届いている符号のこと)。n = q − 1 n = q - 1 n = q − 1 のときは零点 α , α 2 , … , α n − k \alpha, \alpha^2, \ldots, \alpha^{n-k} α , α 2 , … , α n − k をもつ BCH 符号と一致します。
復号は 2 通り示します。Berlekamp–Welch の方法 は連立一次方程式を 1 つ解くだけで ⌊ ( n − k ) / 2 ⌋ \lfloor (n-k)/2 \rfloor ⌊( n − k ) /2 ⌋ 個までの誤りを訂正します。鍵方程式 σ ( x ) S ( x ) ≡ ω ( x ) ( m o d x 2 t ) \sigma(x) S(x) \equiv \omega(x) \pmod{x^{2t}} σ ( x ) S ( x ) ≡ ω ( x ) ( mod x 2 t ) は拡張 Euclid の互除法で解け(Sugiyama の方法)、誤りの値は Forney の公式で求まります。
巡回 [ n , k ] [n, k] [ n , k ] 符号は長さ n − k n - k n − k 以下のバースト誤りをすべて検出し、長さ b b b 以下のバーストをすべて訂正できる線形符号は n − k ≥ 2 b n - k \ge 2b n − k ≥ 2 b を満たします。
この記事で使う事前知識
線形符号と最小距離 : 符号語の全体が部分空間をなす符号が線形符号で、異なる符号語どうしの距離の最小値が最小距離。→ 線形符号 、最小距離
検査行列とシンドローム : 検査行列は符号語を 0 0 0 にうつす行列で、受信語に掛けた結果がシンドローム。→ 検査行列 、シンドローム
最小多項式と共役元 : α \alpha α を根にもつ最低次のモニック多項式が最小多項式で、その他の根(α \alpha α の q q q 乗など)が共役元。→ 最小多項式 、共役元
円分剰余類 : 指数 i i i に q q q を掛けては n n n で割った余りを取る操作でつながる指数の集まり。→ 有限体上の多項式
単項イデアル整域 : すべてのイデアルが 1 つの元で生成される整域。F q [ x ] \mathbb{F}_q[x] F q [ x ] がその例。→ 単項イデアル整域
行列式 : 正方行列が正則かどうかを判定する量。→ 行列式
第 3 章 では、線形符号を「F q n \mathbb{F}_q^n F q n の部分空間」として扱い、最小距離の上界(Singleton 限界・Hamming 限界)と、ランダムな構成による下界(Gilbert–Varshamov 限界)を示しました。しかし、部分空間を 1 つ与えられても、その最小距離を求めるには一般にすべての符号語を調べるしかありません。次元 k k k が 100 を超えると、これは実行できません。
そこで、符号に代数的な構造を課して、最小距離を設計の段階で 保証することを考えます。この章で課す構造は「座標の巡回シフトで不変」という 1 つだけです。語 ( c 0 , … , c n − 1 ) (c_0, \ldots, c_{n-1}) ( c 0 , … , c n − 1 ) を多項式 c 0 + c 1 x + ⋯ + c n − 1 x n − 1 c_0 + c_1 x + \cdots + c_{n-1}x^{n-1} c 0 + c 1 x + ⋯ + c n − 1 x n − 1 と同一視すると、巡回シフトは x x x を掛けて x n = 1 x^n = 1 x n = 1 とみなす操作になり、符号は環 F q [ x ] / ( x n − 1 ) \mathbb{F}_q[x]/(x^n-1) F q [ x ] / ( x n − 1 ) のイデアルになります。すると符号の分類は「x n − 1 x^n - 1 x n − 1 の約数の分類」になり、これは 第 2 章 で済んでいます。さらに、約数を根の集合で指定すれば、符号語であることが「いくつかの点で値が 0 0 0 になる多項式であること」に言い換えられ、最小距離の評価が「次数の低い多項式は根を多くもてない」という事実に帰着します。
この見方から、BCH 符号(Bose–Ray-Chaudhuri 1960、Hocquenghem 1959)と Reed–Solomon 符号(1960)が出てきます。後者は CD・QR コード・深宇宙通信・分散ストレージで今も使われている符号です。
この章が前の章のどの定理に乗っているかを先にまとめます。
この章の定理 使う前の章の定理 巡回符号の個数(定理 3.3 ) 第 2 章の x n − 1 x^n - 1 x n − 1 の分解 零点による記述(命題 4.2 )、BCH 符号の次元(命題 4.6 ) 第 2 章の最小多項式と共役元 双対符号(定理 3.5 )、MDS 符号の特徴づけ(定理 5.5 ) 第 3 章の双対符号の次元、検査行列と最小距離 Reed–Solomon 符号(定理 5.2 ) 第 3 章の Singleton 限界
q q q は素数冪、F q \mathbb{F}_q F q は q q q 元体です。語 c = ( c 0 , c 1 , … , c n − 1 ) ∈ F q n c = (c_0, c_1, \ldots, c_{n-1}) \in \mathbb{F}_q^n c = ( c 0 , c 1 , … , c n − 1 ) ∈ F q n の座標は 0 0 0 から数え、c c c に多項式
c ( x ) = c 0 + c 1 x + ⋯ + c n − 1 x n − 1 ∈ F q [ x ] c(x) = c_0 + c_1 x + \cdots + c_{n-1}x^{n-1} \in \mathbb{F}_q[x] c ( x ) = c 0 + c 1 x + ⋯ + c n − 1 x n − 1 ∈ F q [ x ]
を対応させます。Hamming 重み wt ( c ) \operatorname{wt}(c) wt ( c ) 、最小距離 d ( C ) d(C) d ( C ) 、双対符号 C ⊥ C^{\perp} C ⊥ 、[ n , k , d ] q [n, k, d]_q [ n , k , d ] q 符号という言葉は第 3 章のとおりです。F q n \mathbb{F}_q^n F q n の標準的な双線形形式を c ⋅ u = ∑ i c i u i c \cdot u = \sum_{i} c_i u_i c ⋅ u = ∑ i c i u i と書きます。
多項式の割り算と「次数 d d d の多項式の根は d d d 個以下」という事実は、この章の証明のほとんどで使います。体 K K K の上で述べ直しておきます。
補題 2.1 (除法の原理と根の個数 ) ✓
K K K を体とする。
a , b ∈ K [ x ] a, b \in K[x] a , b ∈ K [ x ] 、b ≠ 0 b \ne 0 b = 0 に対し、a = s b + r a = sb + r a = s b + r 、deg r < deg b \deg r < \deg b deg r < deg b (または r = 0 r = 0 r = 0 )を満たす s , r ∈ K [ x ] s, r \in K[x] s , r ∈ K [ x ] がただ 1 組ある。
f ∈ K [ x ] f \in K[x] f ∈ K [ x ] と β ∈ K \beta \in K β ∈ K について、f ( β ) = 0 f(\beta) = 0 f ( β ) = 0 であることと x − β x - \beta x − β が f f f を割り切ることは同値である。
0 0 0 でない f ∈ K [ x ] f \in K[x] f ∈ K [ x ] の相異なる根は deg f \deg f deg f 個以下である。とくに、次数が d d d 以下の多項式が d + 1 d + 1 d + 1 個の相異なる点で 0 0 0 になれば、零多項式である。
証明(補題 2.1) (1) 存在を deg a \deg a deg a についての帰納法で示します。a = 0 a = 0 a = 0 または deg a < deg b \deg a < \deg b deg a < deg b なら s = 0 s = 0 s = 0 、r = a r = a r = a とします。deg a ≥ deg b \deg a \ge \deg b deg a ≥ deg b のとき、a , b a, b a , b の最高次の係数を a m , b l a_m, b_l a m , b l (m = deg a m = \deg a m = deg a 、l = deg b l = \deg b l = deg b )とすると、a ′ = a − ( a m / b l ) x m − l b a' = a - (a_m/b_l)x^{m-l} b a ′ = a − ( a m / b l ) x m − l b は x m x^m x m の項が消えるので a ′ = 0 a' = 0 a ′ = 0 または deg a ′ < m \deg a' < m deg a ′ < m です。帰納法の仮定で a ′ = s ′ b + r a' = s'b + r a ′ = s ′ b + r と書け、a = ( s ′ + ( a m / b l ) x m − l ) b + r a = (s' + (a_m/b_l)x^{m-l})b + r a = ( s ′ + ( a m / b l ) x m − l ) b + r となります。一意性: s b + r = s ′ b + r ′ sb + r = s'b + r' s b + r = s ′ b + r ′ なら ( s − s ′ ) b = r ′ − r (s - s')b = r' - r ( s − s ′ ) b = r ′ − r です。s ≠ s ′ s \ne s' s = s ′ とすると、K [ x ] K[x] K [ x ] は整域で次数は積で加法的(定理 6.2[環と体の基礎] )なので左辺の次数は deg b \deg b deg b 以上ですが、右辺は 0 0 0 か次数が deg b \deg b deg b 未満で、矛盾します。よって s = s ′ s = s' s = s ′ 、r = r ′ r = r' r = r ′ です。
(2) (1) を b = x − β b = x - \beta b = x − β に使うと f = s ⋅ ( x − β ) + r f = s\cdot(x - \beta) + r f = s ⋅ ( x − β ) + r で、r r r は定数です。x = β x = \beta x = β を代入すると r = f ( β ) r = f(\beta) r = f ( β ) なので、f ( β ) = 0 f(\beta) = 0 f ( β ) = 0 は r = 0 r = 0 r = 0 、つまり x − β x - \beta x − β が f f f を割り切ることと同値です。
(3) deg f \deg f deg f についての帰納法です。deg f = 0 \deg f = 0 deg f = 0 なら f f f は 0 0 0 でない定数で根をもちません。deg f = d ≥ 1 \deg f = d \ge 1 deg f = d ≥ 1 で根 β \beta β があれば、(2) により f = ( x − β ) f 1 f = (x - \beta)f_1 f = ( x − β ) f 1 、deg f 1 = d − 1 \deg f_1 = d - 1 deg f 1 = d − 1 です。β \beta β と異なる根 β ′ \beta' β ′ は ( β ′ − β ) f 1 ( β ′ ) = 0 (\beta' - \beta)f_1(\beta') = 0 ( β ′ − β ) f 1 ( β ′ ) = 0 と K K K が整域であること(定理 5.2[環と体の基礎] )から f 1 f_1 f 1 の根で、帰納法の仮定によりそれは d − 1 d - 1 d − 1 個以下です。したがって f f f の根は d d d 個以下です。後半は対偶です。
∎
補題 2.2 (Vandermonde 行列式 ) ✓
R R R を可換環、x 1 , … , x m ∈ R x_1, \ldots, x_m \in R x 1 , … , x m ∈ R とする。m m m 次正方行列 V ( x 1 , … , x m ) = ( x j i ) 0 ≤ i ≤ m − 1 , 1 ≤ j ≤ m V(x_1, \ldots, x_m) = (x_j^{\,i})_{0 \le i \le m-1,\ 1 \le j \le m} V ( x 1 , … , x m ) = ( x j i ) 0 ≤ i ≤ m − 1 , 1 ≤ j ≤ m (第 i i i 行が i i i 乗を並べた行)について
det V ( x 1 , … , x m ) = ∏ 1 ≤ i < j ≤ m ( x j − x i ) \det V(x_1, \ldots, x_m) = \prod_{1 \le i < j \le m} (x_j - x_i) det V ( x 1 , … , x m ) = 1 ≤ i < j ≤ m ∏ ( x j − x i ) が成り立つ。とくに R R R が体で x 1 , … , x m x_1, \ldots, x_m x 1 , … , x m が相異なれば V V V は正則である。
証明(補題 2.2) 体の場合。 R = K R = K R = K が体のとき、m m m についての帰納法で示します。m = 1 m = 1 m = 1 では両辺とも 1 1 1 です(空な積は 1 1 1 )。m ≥ 2 m \ge 2 m ≥ 2 とします。i = m − 1 , m − 2 , … , 1 i = m-1, m-2, \ldots, 1 i = m − 1 , m − 2 , … , 1 の順に、第 i i i 行から第 i − 1 i-1 i − 1 行の x 1 x_1 x 1 倍を引きます。この操作で行列式は変わりません(命題 4.3[行列式とその性質] の 3 と 5)。操作のあと、第 0 0 0 行はすべて 1 1 1 のまま、第 i i i 行(i ≥ 1 i \ge 1 i ≥ 1 )の第 j j j 成分は
x j i − x 1 x j i − 1 = x j i − 1 ( x j − x 1 ) x_j^{\,i} - x_1 x_j^{\,i-1} = x_j^{\,i-1}(x_j - x_1) x j i − x 1 x j i − 1 = x j i − 1 ( x j − x 1 ) で、第 1 列は上から 1 , 0 , … , 0 1, 0, \ldots, 0 1 , 0 , … , 0 になります。第 1 列で余因子展開すると(定理 5.2[行列式とその性質] )、行列式は、成分が x j i − 1 ( x j − x 1 ) x_j^{\,i-1}(x_j - x_1) x j i − 1 ( x j − x 1 ) (1 ≤ i ≤ m − 1 1 \le i \le m-1 1 ≤ i ≤ m − 1 、2 ≤ j ≤ m 2 \le j \le m 2 ≤ j ≤ m )の m − 1 m - 1 m − 1 次行列の行列式に等しくなります。この行列の第 j j j 列から共通因子 x j − x 1 x_j - x_1 x j − x 1 をくくり出すと(同命題の 2)
det V ( x 1 , … , x m ) = ∏ j = 2 m ( x j − x 1 ) ⋅ det V ( x 2 , … , x m ) \det V(x_1, \ldots, x_m) = \prod_{j=2}^{m}(x_j - x_1)\cdot \det V(x_2, \ldots, x_m) det V ( x 1 , … , x m ) = j = 2 ∏ m ( x j − x 1 ) ⋅ det V ( x 2 , … , x m ) で、帰納法の仮定から主張が従います。
可換環の場合。 m m m 個の不定元の整数係数多項式環 A = Z [ X 1 , … , X m ] A = \mathbb{Z}[X_1, \ldots, X_m] A = Z [ X 1 , … , X m ] は整域で、その商体 K K K は体です。体の場合を K K K の元 X 1 , … , X m X_1, \ldots, X_m X 1 , … , X m に使うと、det V ( X 1 , … , X m ) = ∏ i < j ( X j − X i ) \det V(X_1, \ldots, X_m) = \prod_{i<j}(X_j - X_i) det V ( X 1 , … , X m ) = ∏ i < j ( X j − X i ) が K K K の中で、したがって両辺が属する A A A の中で成り立ちます。行列式は成分の整数係数多項式(Leibniz の公式、定義 3.1[行列式とその性質] )なので、X j ↦ x j X_j \mapsto x_j X j ↦ x j で定まる環準同型 A → R A \to R A → R でこの等式を写すと、R R R での等式になります。
正則性。 K K K が体で x j x_j x j が相異なれば右辺は 0 0 0 でない元の積で 0 0 0 でなく、V V V は正則です(定理 7.1[行列式とその性質] )。
∎
実数の場合の同じ式は 多項式補間 で補間多項式の一意性に使いました。有限体の上でも役割は同じで、「相異なる点での値が多項式を決める」ことの行列による表現です。
定義 3.1 (巡回符号 ) ↗
線形符号 C ⊆ F q n C \subseteq \mathbb{F}_q^n C ⊆ F q n が巡回符号 であるとは、( c 0 , c 1 , … , c n − 1 ) ∈ C (c_0, c_1, \ldots, c_{n-1}) \in C ( c 0 , c 1 , … , c n − 1 ) ∈ C ならば、その巡回シフト ( c n − 1 , c 0 , c 1 , … , c n − 2 ) (c_{n-1}, c_0, c_1, \ldots, c_{n-2}) ( c n − 1 , c 0 , c 1 , … , c n − 2 ) も C C C に属することをいう。
R n = F q [ x ] / ( x n − 1 ) R_n = \mathbb{F}_q[x]/(x^n - 1) R n = F q [ x ] / ( x n − 1 ) とおきます。補題 2.1 の 1 により、R n R_n R n の各剰余類は次数 n n n 未満の多項式をちょうど 1 つ含むので、π : F q n → R n \pi : \mathbb{F}_q^n \to R_n π : F q n → R n 、c ↦ c ( x ) m o d ( x n − 1 ) c \mapsto c(x) \bmod (x^n - 1) c ↦ c ( x ) mod ( x n − 1 ) は F q \mathbb{F}_q F q 線形な全単射です。以後、π \pi π で F q n \mathbb{F}_q^n F q n と R n R_n R n を同一視します。
定理 3.2 (巡回符号とイデアル ) ✓
線形符号 C ⊆ F q n C \subseteq \mathbb{F}_q^n C ⊆ F q n が巡回符号であることと、π ( C ) \pi(C) π ( C ) が環 R n R_n R n のイデアルであることは同値である。
証明(定理 3.2) R n R_n R n の中で x n = 1 x^n = 1 x n = 1 なので
x ⋅ c ( x ) = c 0 x + c 1 x 2 + ⋯ + c n − 2 x n − 1 + c n − 1 x n = c n − 1 + c 0 x + ⋯ + c n − 2 x n − 1 x \cdot c(x) = c_0 x + c_1 x^2 + \cdots + c_{n-2}x^{n-1} + c_{n-1}x^n = c_{n-1} + c_0 x + \cdots + c_{n-2}x^{n-1} x ⋅ c ( x ) = c 0 x + c 1 x 2 + ⋯ + c n − 2 x n − 1 + c n − 1 x n = c n − 1 + c 0 x + ⋯ + c n − 2 x n − 1 です。つまり、R n R_n R n で x x x を掛けることが巡回シフトです。
π ( C ) \pi(C) π ( C ) がイデアルなら、x x x 倍で閉じているので C C C は巡回シフトで閉じています。逆に C C C が巡回符号なら、π ( C ) \pi(C) π ( C ) は F q \mathbb{F}_q F q 部分空間で x x x 倍で閉じているので、繰り返して x i x^i x i 倍で閉じ、線形性から任意の多項式 ∑ i a i x i \sum_i a_i x^i ∑ i a i x i 倍で閉じます。R n R_n R n の元はすべて多項式の類なので、π ( C ) \pi(C) π ( C ) は加法で閉じ、R n R_n R n の元を掛けても閉じる部分集合、すなわちイデアルです(命題 3.2[イデアルと剰余環] )。
∎
定理 3.3 (生成多項式と巡回符号の分類 ) ✓
C ⊆ F q n C \subseteq \mathbb{F}_q^n C ⊆ F q n を巡回符号とする。
x n − 1 x^n - 1 x n − 1 のモニックな約数 g ( x ) g(x) g ( x ) で、C = { a ( x ) g ( x ) m o d ( x n − 1 ) : a ∈ F q [ x ] } C = \{\, a(x)g(x) \bmod (x^n-1) : a \in \mathbb{F}_q[x] \,\} C = { a ( x ) g ( x ) mod ( x n − 1 ) : a ∈ F q [ x ] } となるものがただ 1 つある。これを C C C の生成多項式 という。
k = n − deg g k = n - \deg g k = n − deg g とおくと、C = { a ( x ) g ( x ) : deg a < k } C = \{\, a(x)g(x) : \deg a < k \,\} C = { a ( x ) g ( x ) : deg a < k } (k = 0 k = 0 k = 0 のときは C = { 0 } C = \{0\} C = { 0 } )で、g , x g , … , x k − 1 g g, xg, \ldots, x^{k-1}g g , xg , … , x k − 1 g が C C C の基底である。とくに dim C = n − deg g \dim C = n - \deg g dim C = n − deg g 。
逆に、x n − 1 x^n - 1 x n − 1 のモニックな約数 g g g はどれも、ある巡回符号の生成多項式である。したがって長さ n n n の巡回符号は x n − 1 x^n - 1 x n − 1 のモニックな約数と 1 対 1 に対応する。
gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 で、x n − 1 x^n - 1 x n − 1 の F q \mathbb{F}_q F q 上の相異なるモニック既約因子が t t t 個あれば、長さ n n n の巡回符号はちょうど 2 t 2^{t} 2 t 個ある。
証明(定理 3.3) (1) I = { f ∈ F q [ x ] : f m o d ( x n − 1 ) ∈ C } I = \{ f \in \mathbb{F}_q[x] : f \bmod (x^n - 1) \in C \} I = { f ∈ F q [ x ] : f mod ( x n − 1 ) ∈ C } とおきます。これはイデアル π ( C ) \pi(C) π ( C ) (定理 3.2 )の、自然な全射準同型 F q [ x ] → R n \mathbb{F}_q[x] \to R_n F q [ x ] → R n による逆像で、和と F q [ x ] \mathbb{F}_q[x] F q [ x ] の元による積で閉じるので F q [ x ] \mathbb{F}_q[x] F q [ x ] のイデアルです。x n − 1 ∈ I x^n - 1 \in I x n − 1 ∈ I なので I ≠ { 0 } I \ne \{0\} I = { 0 } です。F q [ x ] \mathbb{F}_q[x] F q [ x ] は単項イデアル整域なので(命題 7.2[イデアルと剰余環] )I = ( g ) I = (g) I = ( g ) と書け、最高次の係数で割って g g g をモニックに取れます。x n − 1 ∈ ( g ) x^n - 1 \in (g) x n − 1 ∈ ( g ) なので g g g は x n − 1 x^n - 1 x n − 1 を割り切り、C C C は I I I の像なので C = { a g m o d ( x n − 1 ) } C = \{ ag \bmod (x^n - 1) \} C = { a g mod ( x n − 1 )} です。
一意性: モニックな約数 g ′ g' g ′ も同じ性質をもつとします。g ′ m o d ( x n − 1 ) ∈ C g' \bmod (x^n-1) \in C g ′ mod ( x n − 1 ) ∈ C なので g ′ ∈ I = ( g ) g' \in I = (g) g ′ ∈ I = ( g ) 、つまり g ∣ g ′ g \mid g' g ∣ g ′ です。逆に g m o d ( x n − 1 ) ∈ C g \bmod (x^n - 1) \in C g mod ( x n − 1 ) ∈ C なので g ≡ a g ′ ( m o d x n − 1 ) g \equiv a g' \pmod{x^n - 1} g ≡ a g ′ ( mod x n − 1 ) となる a a a があり、g ′ ∣ x n − 1 g' \mid x^n - 1 g ′ ∣ x n − 1 と合わせて g ′ ∣ g g' \mid g g ′ ∣ g です。互いに割り切るモニック多項式は、次数が等しく商が定数 1 1 1 なので一致します。
(2) h = ( x n − 1 ) / g h = (x^n - 1)/g h = ( x n − 1 ) / g とおくと deg h = k \deg h = k deg h = k です。C C C の元を次数 n n n 未満の多項式 c c c で表すと、c ∈ I c \in I c ∈ I なので c = b g c = bg c = b g (b ∈ F q [ x ] b \in \mathbb{F}_q[x] b ∈ F q [ x ] )と書けます。c ≠ 0 c \ne 0 c = 0 なら deg b = deg c − deg g < n − deg g = k \deg b = \deg c - \deg g < n - \deg g = k deg b = deg c − deg g < n − deg g = k です。逆に deg a < k \deg a < k deg a < k なら deg ( a g ) < n \deg(ag) < n deg ( a g ) < n で、a g ag a g はそのまま C C C の元を表す次数 n n n 未満の多項式です。よって C = { a g : deg a < k } C = \{ ag : \deg a < k\} C = { a g : deg a < k } で、これは g , x g , … , x k − 1 g g, xg, \ldots, x^{k-1}g g , xg , … , x k − 1 g で張られます。これら k k k 個は次数が deg g , deg g + 1 , … , n − 1 \deg g, \deg g + 1, \ldots, n - 1 deg g , deg g + 1 , … , n − 1 と相異なるので一次独立です(一次結合が 0 0 0 なら、最高次の項を比べて係数が順に 0 0 0 になります)。
(3) モニックな約数 g g g に対し、C g = { a g m o d ( x n − 1 ) } C_g = \{ ag \bmod (x^n - 1) \} C g = { a g mod ( x n − 1 )} は R n R_n R n のイデアルなので巡回符号です(定理 3.2 )。g g g は (1) の性質をもつので、(1) の一意性から C g C_g C g の生成多項式は g g g です。対応 C ↦ g C \mapsto g C ↦ g と g ↦ C g g \mapsto C_g g ↦ C g は互いに逆です。
(4) gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 のとき、x n − 1 = f 1 f 2 ⋯ f t x^n - 1 = f_1 f_2 \cdots f_t x n − 1 = f 1 f 2 ⋯ f t と相異なるモニック既約多項式の積に分解します(定理 2.4[有限体上の多項式] )。F q [ x ] \mathbb{F}_q[x] F q [ x ] は一意分解整域なので(定理 2.5[多項式環と体の拡大] )、モニックな約数は { f 1 , … , f t } \{f_1, \ldots, f_t\} { f 1 , … , f t } の部分集合の積で、異なる部分集合は異なる積を与えます。部分集合は 2 t 2^{t} 2 t 個です。
∎
g ( x ) = g 0 + g 1 x + ⋯ + g n − k x n − k g(x) = g_0 + g_1 x + \cdots + g_{n-k}x^{n-k} g ( x ) = g 0 + g 1 x + ⋯ + g n − k x n − k のとき、(2) の基底を行に並べた
G = ( g 0 g 1 ⋯ g n − k g 0 g 1 ⋯ g n − k ⋱ ⋱ g 0 g 1 ⋯ g n − k ) G = \begin{pmatrix}
g_0 & g_1 & \cdots & g_{n-k} & & & \\
& g_0 & g_1 & \cdots & g_{n-k} & & \\
& & \ddots & & & \ddots & \\
& & & g_0 & g_1 & \cdots & g_{n-k}
\end{pmatrix} G = g 0 g 1 g 0 ⋯ g 1 ⋱ g n − k ⋯ g 0 g n − k g 1 ⋱ ⋯ g n − k
が生成行列です(空欄は 0 0 0 )。k × n k \times n k × n 行列を覚える代わりに、次数 n − k n - k n − k の多項式 1 つを覚えれば済みます。これが巡回符号の実装上の利点です。
例 3.4 (長さ 7 の二元巡回符号 8 個 )
F 2 \mathbb{F}_2 F 2 上で x 7 − 1 = ( x + 1 ) ( x 3 + x + 1 ) ( x 3 + x 2 + 1 ) x^7 - 1 = (x+1)(x^3+x+1)(x^3+x^2+1) x 7 − 1 = ( x + 1 ) ( x 3 + x + 1 ) ( x 3 + x 2 + 1 ) です(右辺を展開して確かめられます)。既約因子は t = 3 t = 3 t = 3 個なので、巡回符号は 2 3 = 8 2^3 = 8 2 3 = 8 個です。
生成多項式 g g g [ n , k , d ] [n, k, d] [ n , k , d ] 符号 1 1 1 [ 7 , 7 , 1 ] [7, 7, 1] [ 7 , 7 , 1 ] 全空間 x + 1 x + 1 x + 1 [ 7 , 6 , 2 ] [7, 6, 2] [ 7 , 6 , 2 ] 偶数重みの語全体(パリティ検査符号) x 3 + x + 1 x^3 + x + 1 x 3 + x + 1 [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] Hamming 符号 x 3 + x 2 + 1 x^3 + x^2 + 1 x 3 + x 2 + 1 [ 7 , 4 , 3 ] [7, 4, 3] [ 7 , 4 , 3 ] Hamming 符号(座標を逆順にしたもの) ( x + 1 ) ( x 3 + x + 1 ) = x 4 + x 3 + x 2 + 1 (x+1)(x^3+x+1) = x^4+x^3+x^2+1 ( x + 1 ) ( x 3 + x + 1 ) = x 4 + x 3 + x 2 + 1 [ 7 , 3 , 4 ] [7, 3, 4] [ 7 , 3 , 4 ] 単体符号 ( x + 1 ) ( x 3 + x 2 + 1 ) = x 4 + x 2 + x + 1 (x+1)(x^3+x^2+1) = x^4+x^2+x+1 ( x + 1 ) ( x 3 + x 2 + 1 ) = x 4 + x 2 + x + 1 [ 7 , 3 , 4 ] [7, 3, 4] [ 7 , 3 , 4 ] 単体符号 ( x 3 + x + 1 ) ( x 3 + x 2 + 1 ) = x 6 + x 5 + ⋯ + 1 (x^3+x+1)(x^3+x^2+1) = x^6 + x^5 + \cdots + 1 ( x 3 + x + 1 ) ( x 3 + x 2 + 1 ) = x 6 + x 5 + ⋯ + 1 [ 7 , 1 , 7 ] [7, 1, 7] [ 7 , 1 , 7 ] 反復符号 x 7 − 1 x^7 - 1 x 7 − 1 [ 7 , 0 , − ] [7, 0, -] [ 7 , 0 , − ] { 0 } \{0\} { 0 }
最小距離は次のように分かります。g = x + 1 g = x+1 g = x + 1 のとき、符号語 a ( x ) ( x + 1 ) a(x)(x+1) a ( x ) ( x + 1 ) は x = 1 x = 1 x = 1 で 0 0 0 、つまり係数の和が 0 0 0 なので偶数重みで、次元が 6 6 6 なので偶数重みの語全体です。g = x 3 + x + 1 g = x^3+x+1 g = x 3 + x + 1 が Hamming 符号を与えることは 命題 4.8 で示します。次元 3 3 3 の 2 つは、Hamming 符号の偶数重みの部分符号で、Hamming 符号の重みは 0 , 3 , 4 , 7 0, 3, 4, 7 0 , 3 , 4 , 7 なので(第 5 章 で重み多項式を計算します)、0 0 0 でない語の重みはすべて 4 4 4 です。
h ( x ) = ( x n − 1 ) / g ( x ) h(x) = (x^n - 1)/g(x) h ( x ) = ( x n − 1 ) / g ( x ) を C C C の検査多項式 といいます。c = a g c = ag c = a g なら c h = a ( x n − 1 ) ≡ 0 c h = a(x^n - 1) \equiv 0 c h = a ( x n − 1 ) ≡ 0 なので、C C C の元は R n R_n R n の中で h h h を掛けると 0 0 0 になります。この関係を係数で書くと、双対符号が読み取れます。次数 m m m の多項式 f f f (f ( 0 ) ≠ 0 f(0) \ne 0 f ( 0 ) = 0 )の相反多項式 を f ∗ ( x ) = x m f ( 1 / x ) f^{*}(x) = x^{m} f(1/x) f ∗ ( x ) = x m f ( 1/ x ) と定めます。f = ∑ i = 0 m f i x i f = \sum_{i=0}^m f_i x^i f = ∑ i = 0 m f i x i なら f ∗ = ∑ i = 0 m f m − i x i f^{*} = \sum_{i=0}^m f_{m-i}x^i f ∗ = ∑ i = 0 m f m − i x i で、係数を逆順に並べたものです。次の定理のねらいは、双対符号(もとの符号と直交する語の全体)もまた巡回符号になり、その生成多項式が h h h の係数を逆順にしたものから読み取れる、ということです。証明は、h h h の係数の並びが符号語との内積で 0 0 0 になることを見て、そのシフトが C ⊥ C^{\perp} C ⊥ の基底になると次元で確かめる、という順に進みます。
定理 3.5 (巡回符号の双対符号 ) ✓
C C C を生成多項式 g g g 、検査多項式 h = ( x n − 1 ) / g h = (x^n - 1)/g h = ( x n − 1 ) / g の巡回 [ n , k ] [n, k] [ n , k ] 符号とする(k = deg h k = \deg h k = deg h )。このとき C ⊥ C^{\perp} C ⊥ も巡回符号で、その生成多項式は h ∗ ( x ) / h ( 0 ) h^{*}(x)/h(0) h ∗ ( x ) / h ( 0 ) である。
証明(定理 3.5) g h = x n − 1 gh = x^n - 1 g h = x n − 1 の定数項を比べると g ( 0 ) h ( 0 ) = − 1 g(0)h(0) = -1 g ( 0 ) h ( 0 ) = − 1 なので、g ( 0 ) ≠ 0 g(0) \ne 0 g ( 0 ) = 0 、h ( 0 ) ≠ 0 h(0) \ne 0 h ( 0 ) = 0 です。h = ∑ j = 0 k h j x j h = \sum_{j=0}^{k} h_j x^j h = ∑ j = 0 k h j x j と書きます。
h ∗ h^{*} h ∗ のシフトは C C C と直交する。 c ∈ C c \in C c ∈ C を c = a g c = ag c = a g 、deg a < k \deg a < k deg a < k と書きます(定理 3.3 の 2)。多項式として c ( x ) h ( x ) = a ( x ) ( x n − 1 ) = a ( x ) x n − a ( x ) c(x)h(x) = a(x)(x^n - 1) = a(x)x^n - a(x) c ( x ) h ( x ) = a ( x ) ( x n − 1 ) = a ( x ) x n − a ( x ) です。deg a < k \deg a < k deg a < k なので、右辺の x m x^m x m の係数は k ≤ m ≤ n − 1 k \le m \le n - 1 k ≤ m ≤ n − 1 で 0 0 0 です。左辺の x m x^m x m の係数は ∑ i c i h m − i \sum_{i} c_i h_{m-i} ∑ i c i h m − i (0 ≤ m − i ≤ k 0 \le m - i \le k 0 ≤ m − i ≤ k の範囲の和)なので
∑ i = m − k m c i h m − i = 0 ( k ≤ m ≤ n − 1 ) \sum_{i=m-k}^{m} c_i\, h_{m-i} = 0 \qquad (k \le m \le n-1) i = m − k ∑ m c i h m − i = 0 ( k ≤ m ≤ n − 1 ) です。m = k + s m = k + s m = k + s (0 ≤ s ≤ n − k − 1 0 \le s \le n-k-1 0 ≤ s ≤ n − k − 1 )とおくと、これは c c c と、多項式 x s h ∗ ( x ) = ∑ i = s s + k h k + s − i x i x^{s}h^{*}(x) = \sum_{i=s}^{s+k} h_{k+s-i}\,x^{i} x s h ∗ ( x ) = ∑ i = s s + k h k + s − i x i の係数ベクトルとの標準的な双線形形式の値が 0 0 0 であることを述べています。よって x s h ∗ x^s h^{*} x s h ∗ (0 ≤ s ≤ n − k − 1 0 \le s \le n - k - 1 0 ≤ s ≤ n − k − 1 )はすべて C ⊥ C^{\perp} C ⊥ に属します。
次元の比較。 h ∗ h^{*} h ∗ の最高次の係数は h 0 = h ( 0 ) ≠ 0 h_0 = h(0) \ne 0 h 0 = h ( 0 ) = 0 なので deg h ∗ = k \deg h^{*} = k deg h ∗ = k で、x s h ∗ x^s h^{*} x s h ∗ (0 ≤ s ≤ n − k − 1 0 \le s \le n-k-1 0 ≤ s ≤ n − k − 1 )は次数が k , … , n − 1 k, \ldots, n-1 k , … , n − 1 と相異なり一次独立です。dim C ⊥ = n − k \dim C^{\perp} = n - k dim C ⊥ = n − k なので(定理 3.5[線形符号] )、これらが C ⊥ C^{\perp} C ⊥ の基底です。
生成多項式であること。 g ∗ ( x ) h ∗ ( x ) = x n − k g ( 1 / x ) ⋅ x k h ( 1 / x ) = x n ( ( 1 / x ) n − 1 ) = 1 − x n g^{*}(x)h^{*}(x) = x^{n-k}g(1/x)\cdot x^{k}h(1/x) = x^n\bigl((1/x)^n - 1\bigr) = 1 - x^n g ∗ ( x ) h ∗ ( x ) = x n − k g ( 1/ x ) ⋅ x k h ( 1/ x ) = x n ( ( 1/ x ) n − 1 ) = 1 − x n なので、h ∗ / h ( 0 ) h^{*}/h(0) h ∗ / h ( 0 ) は x n − 1 x^n - 1 x n − 1 のモニックな約数で、次数は k k k です。これを生成多項式とする巡回符号は { b h ∗ : deg b < n − k } \{ b\,h^{*} : \deg b < n - k \} { b h ∗ : deg b < n − k } (定理 3.3 の 2)で、上で求めた C ⊥ C^{\perp} C ⊥ の基底が張る空間と一致します。
∎
gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 のとき、巡回符号には生成多項式とは別の標準的な生成元があります。次の命題は、符号 C C C を環 R n R_n R n のイデアルとして見たとき、C C C の中だけで掛け算を考えると「1 1 1 に当たる元」e e e があり、C C C のどの元に掛けても変わらない、と述べています。この e e e 自身が C C C を生成します。
命題 3.7 (冪等生成元 ) ✓
gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 とし、C C C を長さ n n n の巡回符号とする。R n R_n R n の元 e e e で、e 2 = e e^2 = e e 2 = e かつ C = { a e : a ∈ R n } C = \{ ae : a \in R_n \} C = { a e : a ∈ R n } を満たすものがただ 1 つある。これを C C C の冪等生成元 という。e e e は環 C C C の乗法の単位元である。
証明(命題 3.7) g g g を生成多項式、h = ( x n − 1 ) / g h = (x^n - 1)/g h = ( x n − 1 ) / g とします。x n − 1 x^n - 1 x n − 1 は相異なる既約多項式の積なので(定理 2.4[有限体上の多項式] )、g g g と h h h に共通の既約因子はありません。イデアル ( g ) + ( h ) (g) + (h) ( g ) + ( h ) は単項で(命題 7.2[イデアルと剰余環] )、その生成元は g g g と h h h の共通の約数なので定数です。よって u g + v h = 1 ug + vh = 1 ug + v h = 1 となる u , v ∈ F q [ x ] u, v \in \mathbb{F}_q[x] u , v ∈ F q [ x ] があります。e = u g m o d ( x n − 1 ) e = ug \bmod (x^n - 1) e = ug mod ( x n − 1 ) とおきます。
R n R_n R n の中で g h = 0 gh = 0 g h = 0 なので、e 2 = e ( 1 − v h ) = e − u v g h = e e^2 = e(1 - vh) = e - uv\,gh = e e 2 = e ( 1 − v h ) = e − uv g h = e です。e ∈ C e \in C e ∈ C で、g = g ( u g + v h ) = g e + v g h = g e g = g(ug + vh) = ge + v\,gh = ge g = g ( ug + v h ) = g e + v g h = g e なので g g g は e e e の倍元です。よって e e e が生成するイデアルは g g g が生成するイデアル C C C と一致します。
c ∈ C c \in C c ∈ C を c = a e c = ae c = a e と書くと c e = a e 2 = a e = c ce = ae^2 = ae = c ce = a e 2 = a e = c なので、e e e は C C C の乗法の単位元です。冪等生成元 e ′ e' e ′ がもう 1 つあれば、同じ計算で e ′ e' e ′ も C C C の単位元なので、e = e e ′ = e ′ e = ee' = e' e = e e ′ = e ′ です。
∎
以後この節では gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 とします。m m m を q m ≡ 1 ( m o d n ) q^m \equiv 1 \pmod n q m ≡ 1 ( mod n ) となる最小の正の整数(n n n を法とする q q q の位数)とすると、n n n は q m − 1 q^m - 1 q m − 1 を割り切ります。F q m × \mathbb{F}_{q^m}^{\times} F q m × は位数 q m − 1 q^m - 1 q m − 1 の巡回群なので(定理 7.3[多項式環と体の拡大] )、位数がちょうど n n n の元 α \alpha α (1 の原始 n n n 乗根 )があります。x n − 1 x^n - 1 x n − 1 の根は 1 , α , … , α n − 1 1, \alpha, \ldots, \alpha^{n-1} 1 , α , … , α n − 1 の n n n 個で、F q m \mathbb{F}_{q^m} F q m で x n − 1 = ∏ i = 0 n − 1 ( x − α i ) x^n - 1 = \prod_{i=0}^{n-1}(x - \alpha^i) x n − 1 = ∏ i = 0 n − 1 ( x − α i ) です(補題 2.1 )。α \alpha α を 1 つ固定します。
定義 4.1 (零点と定義集合 ) ↗
生成多項式 g g g の巡回符号 C C C に対し、T = { i ∈ Z / n Z : g ( α i ) = 0 } T = \{\, i \in \mathbb{Z}/n\mathbb{Z} : g(\alpha^i) = 0 \,\} T = { i ∈ Z / n Z : g ( α i ) = 0 } を C C C の(α \alpha α に関する)定義集合 、α i \alpha^i α i (i ∈ T i \in T i ∈ T )を C C C の零点 という。
g g g は x n − 1 x^n - 1 x n − 1 の約数なので g = ∏ i ∈ T ( x − α i ) g = \prod_{i \in T}(x - \alpha^i) g = ∏ i ∈ T ( x − α i ) で、∣ T ∣ = deg g |T| = \deg g ∣ T ∣ = deg g です。g g g の係数は F q \mathbb{F}_q F q に属するので、g ( α i ) = 0 g(\alpha^i) = 0 g ( α i ) = 0 なら g ( α i q ) = g ( α i ) q = 0 g(\alpha^{iq}) = g(\alpha^i)^q = 0 g ( α i q ) = g ( α i ) q = 0 です。つまり T T T は q q q 倍で閉じていて、n n n を法とする q q q -円分剰余類 { i , i q , i q 2 , … } \{ i, iq, iq^2, \ldots \} { i , i q , i q 2 , … } の合併です。逆に、円分剰余類の合併 T T T に対して ∏ i ∈ T ( x − α i ) \prod_{i \in T}(x - \alpha^i) ∏ i ∈ T ( x − α i ) は F q \mathbb{F}_q F q 係数です。各円分剰余類に対応する積が α i \alpha^i α i の F q \mathbb{F}_q F q 上の最小多項式だからです(定理 2.2[有限体上の多項式] )。こうして
巡回符号 ⟷ x n − 1 のモニックな約数 ⟷ q -円分剰余類の合併 T ⊆ Z / n Z \text{巡回符号} \;\longleftrightarrow\; x^n - 1 \text{ のモニックな約数} \;\longleftrightarrow\; q\text{-円分剰余類の合併 } T \subseteq \mathbb{Z}/n\mathbb{Z} 巡回符号 ⟷ x n − 1 のモニックな約数 ⟷ q - 円分剰余類の合併 T ⊆ Z / n Z
という 3 つの見方がそろいます。
n = 7、q = 2 のとき。1 の 7 乗根 α⁰, …, α⁶ は 2 乗写像の軌道(円分剰余類){0}、{1, 2, 4}、{3, 5, 6} に分かれ、それぞれが x⁷ − 1 の既約因子 x + 1、x³ + x + 1、x³ + x² + 1 の根の集合になる(α は x³ + x + 1 の根)。巡回符号は、この 3 つの軌道のどれを零点にするかで決まる。
命題 4.2 (符号語は零点で消える多項式 ) ✓
C C C を定義集合 T T T の巡回符号とする。次数 n n n 未満の c ( x ) ∈ F q [ x ] c(x) \in \mathbb{F}_q[x] c ( x ) ∈ F q [ x ] について
c ∈ C ⟺ c ( α i ) = 0 ( すべての i ∈ T ) c \in C \iff c(\alpha^i) = 0 \quad (\text{すべての } i \in T) c ∈ C ⟺ c ( α i ) = 0 ( すべての i ∈ T ) が成り立つ。また dim C = n − ∣ T ∣ \dim C = n - |T| dim C = n − ∣ T ∣ である。
証明(命題 4.2) c ∈ C c \in C c ∈ C なら c = a g c = ag c = a g で(定理 3.3 )、c ( α i ) = a ( α i ) g ( α i ) = 0 c(\alpha^i) = a(\alpha^i)g(\alpha^i) = 0 c ( α i ) = a ( α i ) g ( α i ) = 0 (i ∈ T i \in T i ∈ T )です。逆に、c ( α i ) = 0 c(\alpha^i) = 0 c ( α i ) = 0 がすべての i ∈ T i \in T i ∈ T で成り立つとします。F q [ x ] \mathbb{F}_q[x] F q [ x ] の中で c = s g + r c = sg + r c = s g + r 、deg r < deg g \deg r < \deg g deg r < deg g (または r = 0 r = 0 r = 0 )と割ると(補題 2.1 の 1)、r ( α i ) = c ( α i ) − s ( α i ) g ( α i ) = 0 r(\alpha^i) = c(\alpha^i) - s(\alpha^i)g(\alpha^i) = 0 r ( α i ) = c ( α i ) − s ( α i ) g ( α i ) = 0 が ∣ T ∣ = deg g |T| = \deg g ∣ T ∣ = deg g 個の相異なる点 α i \alpha^i α i で成り立ちます。r r r の次数は deg g \deg g deg g 未満なので、補題 2.1 の 3 を体 F q m \mathbb{F}_{q^m} F q m の上で使って r = 0 r = 0 r = 0 です。よって c = s g ∈ C c = sg \in C c = s g ∈ C です。次元は 定理 3.3 の 2 と ∣ T ∣ = deg g |T| = \deg g ∣ T ∣ = deg g から出ます。
∎
この命題は、F q m \mathbb{F}_{q^m} F q m に成分をもつ行列 H = ( α i j ) i ∈ T , 0 ≤ j ≤ n − 1 H = (\alpha^{ij})_{i \in T,\ 0 \le j \le n-1} H = ( α ij ) i ∈ T , 0 ≤ j ≤ n − 1 について C = { c ∈ F q n : H c T = 0 } C = \{ c \in \mathbb{F}_q^n : Hc^{\mathsf{T}} = 0 \} C = { c ∈ F q n : H c T = 0 } であることを述べています。H H H は拡大体の上の「検査行列」です。
系 4.3 (双対符号の定義集合 ) ✓
定義集合 T T T の巡回符号 C C C の双対符号 C ⊥ C^{\perp} C ⊥ の定義集合は { − i m o d n : i ∉ T } \{\, -i \bmod n : i \notin T \,\} { − i mod n : i ∈ / T } である。
証明(系 4.3) 検査多項式 h = ( x n − 1 ) / g h = (x^n - 1)/g h = ( x n − 1 ) / g の根は α i \alpha^i α i (i ∉ T i \notin T i ∈ / T )です。C ⊥ C^{\perp} C ⊥ の生成多項式は h ∗ / h ( 0 ) h^{*}/h(0) h ∗ / h ( 0 ) で(定理 3.5 )、β ≠ 0 \beta \ne 0 β = 0 に対し h ∗ ( β ) = β k h ( 1 / β ) h^{*}(\beta) = \beta^{k}h(1/\beta) h ∗ ( β ) = β k h ( 1/ β ) なので、h ∗ h^{*} h ∗ の根は h h h の根の逆元 α − i \alpha^{-i} α − i (i ∉ T i \notin T i ∈ / T )です。
∎
定理 4.4 (BCH 限界 ) ✓
gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 、α \alpha α を 1 の原始 n n n 乗根、2 ≤ δ ≤ n 2 \le \delta \le n 2 ≤ δ ≤ n とする。巡回符号 C ⊆ F q n C \subseteq \mathbb{F}_q^n C ⊆ F q n の定義集合が、ある整数 b b b について連続する δ − 1 \delta - 1 δ − 1 個の指数 b , b + 1 , … , b + δ − 2 b, b+1, \ldots, b+\delta-2 b , b + 1 , … , b + δ − 2 (n n n を法として)を含むならば、C C C の 0 0 0 でない符号語の重みは δ \delta δ 以上である。すなわち d ( C ) ≥ δ d(C) \ge \delta d ( C ) ≥ δ 。
証明(定理 4.4) 重みが δ − 1 \delta - 1 δ − 1 以下の 0 0 0 でない符号語 c c c があると仮定します。δ − 1 ≤ n − 1 \delta - 1 \le n - 1 δ − 1 ≤ n − 1 なので、c c c の台(c j ≠ 0 c_j \ne 0 c j = 0 となる j j j の集合)を含む δ − 1 \delta - 1 δ − 1 元集合 J = { j 1 , … , j δ − 1 } ⊆ { 0 , … , n − 1 } J = \{ j_1, \ldots, j_{\delta-1} \} \subseteq \{0, \ldots, n-1\} J = { j 1 , … , j δ − 1 } ⊆ { 0 , … , n − 1 } が取れます。命題 4.2 により c ( α b + i ) = 0 c(\alpha^{b+i}) = 0 c ( α b + i ) = 0 (0 ≤ i ≤ δ − 2 0 \le i \le \delta - 2 0 ≤ i ≤ δ − 2 )なので
∑ l = 1 δ − 1 c j l α ( b + i ) j l = 0 ( 0 ≤ i ≤ δ − 2 ) \sum_{l=1}^{\delta-1} c_{j_l}\,\alpha^{(b+i)j_l} = 0 \qquad (0 \le i \le \delta-2) l = 1 ∑ δ − 1 c j l α ( b + i ) j l = 0 ( 0 ≤ i ≤ δ − 2 ) です。x l = α j l x_l = \alpha^{j_l} x l = α j l とおくと、これは δ − 1 \delta - 1 δ − 1 次正方行列 M = ( x l b x l i ) i , l M = (x_l^{\,b}\, x_l^{\,i})_{i, l} M = ( x l b x l i ) i , l と列ベクトル ( c j 1 , … , c j δ − 1 ) T (c_{j_1}, \ldots, c_{j_{\delta-1}})^{\mathsf{T}} ( c j 1 , … , c j δ − 1 ) T の積が 0 0 0 であることを述べています。M M M は Vandermonde 行列 V ( x 1 , … , x δ − 1 ) V(x_1, \ldots, x_{\delta-1}) V ( x 1 , … , x δ − 1 ) の第 l l l 列を x l b x_l^{\,b} x l b 倍したものなので
det M = ∏ l = 1 δ − 1 x l b ⋅ ∏ 1 ≤ l < l ′ ≤ δ − 1 ( x l ′ − x l ) \det M = \prod_{l=1}^{\delta-1} x_l^{\,b} \cdot \prod_{1 \le l < l' \le \delta-1}(x_{l'} - x_l) det M = l = 1 ∏ δ − 1 x l b ⋅ 1 ≤ l < l ′ ≤ δ − 1 ∏ ( x l ′ − x l ) です(補題 2.2 、命題 4.3[行列式とその性質] の 2)。α \alpha α の位数は n n n で j l j_l j l は 0 0 0 以上 n n n 未満の相異なる整数なので、x l = α j l x_l = \alpha^{j_l} x l = α j l は相異なり、0 0 0 でもありません。よって det M ≠ 0 \det M \ne 0 det M = 0 で、M v = 0 M\boldsymbol{v} = 0 M v = 0 の解は v = 0 \boldsymbol{v} = 0 v = 0 だけです(定理 7.1[行列式とその性質] )。すると c j l = 0 c_{j_l} = 0 c j l = 0 がすべての l l l で成り立ち、c = 0 c = 0 c = 0 となって矛盾します。
∎
証明が使ったのは「連続する δ − 1 \delta - 1 δ − 1 個の零点」だけです。そこで、これだけを要求して最大の符号を取ります。
定義 4.5 (BCH 符号 ) ↗
gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 、α \alpha α を 1 の原始 n n n 乗根、2 ≤ δ ≤ n 2 \le \delta \le n 2 ≤ δ ≤ n 、b b b を整数とする。α b , α b + 1 , … , α b + δ − 2 \alpha^{b}, \alpha^{b+1}, \ldots, \alpha^{b+\delta-2} α b , α b + 1 , … , α b + δ − 2 の F q \mathbb{F}_q F q 上の最小多項式の最小公倍数を生成多項式とする巡回符号を、設計距離 δ \delta δ の BCH 符号 という。b = 1 b = 1 b = 1 のとき狭義 、n = q m − 1 n = q^m - 1 n = q m − 1 のとき原始 という。
言い換えると、BCH 符号は、b , … , b + δ − 2 b, \ldots, b+\delta-2 b , … , b + δ − 2 を含む最小の「円分剰余類の合併」を定義集合とする巡回符号です。定理 4.4 により最小距離は δ \delta δ 以上です。
命題 4.6 (BCH 符号の次元 ) ✓
長さ n n n 、設計距離 δ \delta δ の BCH 符号の次元 k k k は、m m m を n n n を法とする q q q の位数として
k ≥ n − m ( δ − 1 ) k \ge n - m(\delta - 1) k ≥ n − m ( δ − 1 ) を満たす。q = 2 q = 2 q = 2 、b = 1 b = 1 b = 1 、δ = 2 t + 1 \delta = 2t + 1 δ = 2 t + 1 のときは k ≥ n − m t k \ge n - mt k ≥ n − m t である。
証明(命題 4.6) i i i の q q q -円分剰余類は { i q j m o d n : j ≥ 0 } \{ i q^j \bmod n : j \ge 0 \} { i q j mod n : j ≥ 0 } です。q m ≡ 1 ( m o d n ) q^m \equiv 1 \pmod n q m ≡ 1 ( mod n ) なので j j j は 0 ≤ j ≤ m − 1 0 \le j \le m-1 0 ≤ j ≤ m − 1 だけ考えればよく、各剰余類の元は m m m 個以下です。定義集合 T T T は b , … , b + δ − 2 b, \ldots, b+\delta-2 b , … , b + δ − 2 の剰余類の合併なので ∣ T ∣ ≤ m ( δ − 1 ) |T| \le m(\delta - 1) ∣ T ∣ ≤ m ( δ − 1 ) で、k = n − ∣ T ∣ k = n - |T| k = n − ∣ T ∣ (命題 4.2 )から第 1 の不等式が出ます。
q = 2 q = 2 q = 2 、b = 1 b = 1 b = 1 、δ = 2 t + 1 \delta = 2t+1 δ = 2 t + 1 のとき、指数 1 , 2 , … , 2 t 1, 2, \ldots, 2t 1 , 2 , … , 2 t のうち偶数 2 i 2i 2 i は i i i と同じ 2 2 2 -円分剰余類に属します。よって T T T は奇数 1 , 3 , … , 2 t − 1 1, 3, \ldots, 2t-1 1 , 3 , … , 2 t − 1 の剰余類 t t t 個の合併で、∣ T ∣ ≤ m t |T| \le mt ∣ T ∣ ≤ m t です。
∎
例 4.7 (長さ 15 の二元 BCH 符号 )
n = 15 n = 15 n = 15 、q = 2 q = 2 q = 2 、m = 4 m = 4 m = 4 です。F 16 = F 2 [ x ] / ( x 4 + x + 1 ) \mathbb{F}_{16} = \mathbb{F}_2[x]/(x^4 + x + 1) F 16 = F 2 [ x ] / ( x 4 + x + 1 ) とし、α \alpha α を x x x の類とします(α 4 = α + 1 \alpha^4 = \alpha + 1 α 4 = α + 1 。α \alpha α の位数は 15 15 15 )。15 15 15 を法とする 2 2 2 -円分剰余類と最小多項式は
剰余類 最小多項式 { 0 } \{0\} { 0 } x + 1 x + 1 x + 1 { 1 , 2 , 4 , 8 } \{1, 2, 4, 8\} { 1 , 2 , 4 , 8 } m 1 = x 4 + x + 1 m_1 = x^4 + x + 1 m 1 = x 4 + x + 1 { 3 , 6 , 12 , 9 } \{3, 6, 12, 9\} { 3 , 6 , 12 , 9 } m 3 = x 4 + x 3 + x 2 + x + 1 m_3 = x^4 + x^3 + x^2 + x + 1 m 3 = x 4 + x 3 + x 2 + x + 1 { 5 , 10 } \{5, 10\} { 5 , 10 } m 5 = x 2 + x + 1 m_5 = x^2 + x + 1 m 5 = x 2 + x + 1 { 7 , 14 , 13 , 11 } \{7, 14, 13, 11\} { 7 , 14 , 13 , 11 } m 7 = x 4 + x 3 + 1 m_7 = x^4 + x^3 + 1 m 7 = x 4 + x 3 + 1
です。狭義の BCH 符号は次のとおりです。
設計距離 定義集合 生成多項式 パラメータ δ = 3 \delta = 3 δ = 3 { 1 , 2 , 4 , 8 } \{1,2,4,8\} { 1 , 2 , 4 , 8 } m 1 m_1 m 1 [ 15 , 11 , 3 ] [15, 11, 3] [ 15 , 11 , 3 ] δ = 5 \delta = 5 δ = 5 { 1 , 2 , 3 , 4 , 6 , 8 , 9 , 12 } \{1,2,3,4,6,8,9,12\} { 1 , 2 , 3 , 4 , 6 , 8 , 9 , 12 } m 1 m 3 = x 8 + x 7 + x 6 + x 4 + 1 m_1 m_3 = x^8+x^7+x^6+x^4+1 m 1 m 3 = x 8 + x 7 + x 6 + x 4 + 1 [ 15 , 7 , 5 ] [15, 7, 5] [ 15 , 7 , 5 ] δ = 7 \delta = 7 δ = 7 上に { 5 , 10 } \{5, 10\} { 5 , 10 } を足す m 1 m 3 m 5 = x 10 + x 8 + x 5 + x 4 + x 2 + x + 1 m_1 m_3 m_5 = x^{10}+x^8+x^5+x^4+x^2+x+1 m 1 m 3 m 5 = x 10 + x 8 + x 5 + x 4 + x 2 + x + 1 [ 15 , 5 , 7 ] [15, 5, 7] [ 15 , 5 , 7 ]
最小距離が設計距離に等しいことは、生成多項式そのものが重み 3 3 3 、5 5 5 、7 7 7 の符号語であることから分かります(δ = 3 \delta = 3 δ = 3 では m 1 m_1 m 1 の項が 3 個)。次元は 命題 4.6 の下界 15 − 4 t 15 - 4t 15 − 4 t (t = 1 , 2 t = 1, 2 t = 1 , 2 )と一致し、t = 3 t = 3 t = 3 では剰余類 { 5 , 10 } \{5, 10\} { 5 , 10 } が小さいぶん下界 3 3 3 より大きい 5 5 5 になります。
命題 4.8 (Hamming 符号は巡回符号 ) ✓
r ≥ 2 r \ge 2 r ≥ 2 、n = ( q r − 1 ) / ( q − 1 ) n = (q^r - 1)/(q - 1) n = ( q r − 1 ) / ( q − 1 ) とし、gcd ( r , q − 1 ) = 1 \gcd(r, q - 1) = 1 g cd( r , q − 1 ) = 1 とする。β \beta β を F q r × \mathbb{F}_{q^r}^{\times} F q r × の生成元、α = β q − 1 \alpha = \beta^{q-1} α = β q − 1 とすると、α \alpha α は 1 の原始 n n n 乗根で、α \alpha α の F q \mathbb{F}_q F q 上の最小多項式を生成多項式とする長さ n n n の巡回符号は、[ n , n − r , 3 ] q [n, n - r, 3]_q [ n , n − r , 3 ] q Hamming 符号である。
証明(命題 4.8) β \beta β の位数は q r − 1 = n ( q − 1 ) q^r - 1 = n(q-1) q r − 1 = n ( q − 1 ) なので α \alpha α の位数は n n n です。n = 1 + q + ⋯ + q r − 1 ≡ 1 ( m o d q ) n = 1 + q + \cdots + q^{r-1} \equiv 1 \pmod q n = 1 + q + ⋯ + q r − 1 ≡ 1 ( mod q ) なので gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 です。
α \alpha α の最小多項式 g g g の根は α , α q , α q 2 , … \alpha, \alpha^q, \alpha^{q^2}, \ldots α , α q , α q 2 , … で(定理 2.2[有限体上の多項式] )、命題 4.2 と c ( α q j ) = c ( α ) q j c(\alpha^{q^j}) = c(\alpha)^{q^j} c ( α q j ) = c ( α ) q j から、符号は C = { c ∈ F q n : c ( α ) = 0 } C = \{ c \in \mathbb{F}_q^n : c(\alpha) = 0 \} C = { c ∈ F q n : c ( α ) = 0 } です。F q r \mathbb{F}_{q^r} F q r の F q \mathbb{F}_q F q 上の基底を 1 つ取り、α j \alpha^j α j の座標ベクトルを h j ∈ F q r \boldsymbol{h}_j \in \mathbb{F}_q^r h j ∈ F q r とすると、c ( α ) = ∑ j c j α j = 0 c(\alpha) = \sum_j c_j \alpha^j = 0 c ( α ) = ∑ j c j α j = 0 は ∑ j c j h j = 0 \sum_j c_j \boldsymbol{h}_j = 0 ∑ j c j h j = 0 と同値です。つまり H = ( h 0 ⋯ h n − 1 ) H = (\boldsymbol{h}_0\ \cdots\ \boldsymbol{h}_{n-1}) H = ( h 0 ⋯ h n − 1 ) が C C C の検査条件を与える r × n r \times n r × n 行列です。
H H H のどの 2 列も一次独立であることを示します。0 ≤ i < j ≤ n − 1 0 \le i < j \le n-1 0 ≤ i < j ≤ n − 1 で h i \boldsymbol{h}_i h i と h j \boldsymbol{h}_j h j が一次従属なら、α j = λ α i \alpha^j = \lambda\alpha^i α j = λ α i となる λ ∈ F q × \lambda \in \mathbb{F}_q^{\times} λ ∈ F q × があり、α j − i = λ \alpha^{j-i} = \lambda α j − i = λ です。λ q − 1 = 1 \lambda^{q-1} = 1 λ q − 1 = 1 なので α ( j − i ) ( q − 1 ) = 1 \alpha^{(j-i)(q-1)} = 1 α ( j − i ) ( q − 1 ) = 1 、つまり n n n が ( j − i ) ( q − 1 ) (j-i)(q-1) ( j − i ) ( q − 1 ) を割り切ります。ところが n = ∑ l = 0 r − 1 q l ≡ r ( m o d q − 1 ) n = \sum_{l=0}^{r-1} q^l \equiv r \pmod{q-1} n = ∑ l = 0 r − 1 q l ≡ r ( mod q − 1 ) なので gcd ( n , q − 1 ) = gcd ( r , q − 1 ) = 1 \gcd(n, q-1) = \gcd(r, q-1) = 1 g cd( n , q − 1 ) = g cd( r , q − 1 ) = 1 で、n n n は j − i j - i j − i を割り切ります。これは 0 < j − i < n 0 < j - i < n 0 < j − i < n に反します。
F q r \mathbb{F}_q^r F q r の 1 次元部分空間は ( q r − 1 ) / ( q − 1 ) = n (q^r - 1)/(q-1) = n ( q r − 1 ) / ( q − 1 ) = n 個です。H H H の n n n 本の列は 0 0 0 でなく、どの 2 本も比例しないので、各 1 次元部分空間からちょうど 1 本ずつ代表元を取ったものになっています。これは Hamming 符号の検査行列の定義そのもので、H H H の階数は r r r 、C C C は [ n , n − r , 3 ] q [n, n-r, 3]_q [ n , n − r , 3 ] q 符号です(定理 6.2[線形符号] )。
∎
q = 2 q = 2 q = 2 のときは条件 gcd ( r , 1 ) = 1 \gcd(r, 1) = 1 g cd( r , 1 ) = 1 がいつも成り立つので、二元 Hamming 符号はすべて巡回符号(原始元の最小多項式が生成する、設計距離 3 3 3 の原始 BCH 符号)です。例 3.4 の g = x 3 + x + 1 g = x^3+x+1 g = x 3 + x + 1 は r = 3 r = 3 r = 3 の場合です。
定義 5.1 (Reed–Solomon 符号・一般化 Reed–Solomon 符号 ) ↗
1 ≤ k ≤ n ≤ q 1 \le k \le n \le q 1 ≤ k ≤ n ≤ q とし、a 1 , … , a n a_1, \ldots, a_n a 1 , … , a n を F q \mathbb{F}_q F q の相異なる元、v 1 , … , v n v_1, \ldots, v_n v 1 , … , v n を F q \mathbb{F}_q F q の 0 0 0 でない元とする。
G R S k ( a , v ) = { ( v 1 f ( a 1 ) , … , v n f ( a n ) ) : f ∈ F q [ x ] , deg f < k } \mathrm{GRS}_k(a, v) = \bigl\{\, (v_1 f(a_1), \ldots, v_n f(a_n)) : f \in \mathbb{F}_q[x],\ \deg f < k \,\bigr\} GRS k ( a , v ) = { ( v 1 f ( a 1 ) , … , v n f ( a n )) : f ∈ F q [ x ] , deg f < k } を一般化 Reed–Solomon 符号 という。v 1 = ⋯ = v n = 1 v_1 = \cdots = v_n = 1 v 1 = ⋯ = v n = 1 のとき R S k ( a ) \mathrm{RS}_k(a) RS k ( a ) と書き、Reed–Solomon 符号 という(零多項式の次数は k k k 未満とみなす)。
定理 5.2 (Reed–Solomon 符号は MDS 符号 ) ✓
G R S k ( a , v ) \mathrm{GRS}_k(a, v) GRS k ( a , v ) は [ n , k , n − k + 1 ] q [n, k, n-k+1]_q [ n , k , n − k + 1 ] q 符号である。
証明(定理 5.2) 評価写像 e v : f ↦ ( v i f ( a i ) ) i \mathrm{ev} : f \mapsto (v_i f(a_i))_i ev : f ↦ ( v i f ( a i ) ) i は、次数 k k k 未満の多項式のなす k k k 次元空間から F q n \mathbb{F}_q^n F q n への線形写像で、像が符号です。f ≠ 0 f \ne 0 f = 0 、deg f < k \deg f < k deg f < k とすると、f f f の根は k − 1 k - 1 k − 1 個以下なので(補題 2.1 の 3)、f ( a i ) = 0 f(a_i) = 0 f ( a i ) = 0 となる i i i は k − 1 k - 1 k − 1 個以下で、v i ≠ 0 v_i \ne 0 v i = 0 から wt ( e v ( f ) ) ≥ n − ( k − 1 ) = n − k + 1 ≥ 1 \operatorname{wt}(\mathrm{ev}(f)) \ge n - (k-1) = n - k + 1 \ge 1 wt ( ev ( f )) ≥ n − ( k − 1 ) = n − k + 1 ≥ 1 です。とくに e v \mathrm{ev} ev は単射で、符号の次元は k k k 、最小重みは n − k + 1 n - k + 1 n − k + 1 以上です。Singleton 限界 d ≤ n − k + 1 d \le n - k + 1 d ≤ n − k + 1 (定理 5.3[線形符号] )と合わせて d = n − k + 1 d = n - k + 1 d = n − k + 1 です。
∎
証明は 2 行ですが、これで「どんな n ≤ q n \le q n ≤ q と k k k に対しても Singleton 限界を達成する符号がある」ことが分かりました。代償は、符号長がアルファベットの大きさ q q q 以下に限られることです。
n n n が q − 1 q - 1 q − 1 の約数のとき、位数 n n n の元 α ∈ F q \alpha \in \mathbb{F}_q α ∈ F q があり、評価点を a j = α j a_j = \alpha^{j} a j = α j (0 ≤ j ≤ n − 1 0 \le j \le n - 1 0 ≤ j ≤ n − 1 、座標は 0 0 0 から数える)と取れます。このとき評価写像は有限体の上の離散 Fourier 変換です。次の補題のねらいは、多項式 f f f を n n n 個の点で評価して並べた語 c c c を、さらに α i \alpha^i α i で評価すると、f f f の係数が 1 つだけ取り出される(定数倍を除く)ことを示すことです。これにより、評価で作った符号が連続する零点をもつことが次の定理で分かります。
補題 5.3 (1 の冪根の和と離散 Fourier 変換 ) ✓
n n n を q − 1 q - 1 q − 1 の約数、α ∈ F q \alpha \in \mathbb{F}_q α ∈ F q を位数 n n n の元とする。
整数 s s s について、∑ j = 0 n − 1 α j s \sum_{j=0}^{n-1}\alpha^{js} ∑ j = 0 n − 1 α j s は n ∣ s n \mid s n ∣ s のとき n ⋅ 1 n \cdot 1 n ⋅ 1 、そうでないとき 0 0 0 である。n ⋅ 1 n \cdot 1 n ⋅ 1 は F q \mathbb{F}_q F q で 0 0 0 でない。
f = ∑ l = 0 n − 1 f l x l ∈ F q [ x ] f = \sum_{l=0}^{n-1} f_l x^l \in \mathbb{F}_q[x] f = ∑ l = 0 n − 1 f l x l ∈ F q [ x ] に対し c j = f ( α j ) c_j = f(\alpha^j) c j = f ( α j ) 、c ( x ) = ∑ j = 0 n − 1 c j x j c(x) = \sum_{j=0}^{n-1}c_j x^j c ( x ) = ∑ j = 0 n − 1 c j x j とおくと、すべての整数 i i i について c ( α i ) = n f l c(\alpha^{i}) = n\, f_{l} c ( α i ) = n f l (l l l は 0 ≤ l ≤ n − 1 0 \le l \le n-1 0 ≤ l ≤ n − 1 、l ≡ − i ( m o d n ) l \equiv -i \pmod n l ≡ − i ( mod n ) で定まる添字)である。
証明(補題 5.3) (1) n ∣ s n \mid s n ∣ s なら各項が 1 1 1 で和は n ⋅ 1 n \cdot 1 n ⋅ 1 です。n ∤ s n \nmid s n ∤ s なら α s ≠ 1 \alpha^s \ne 1 α s = 1 で、等比数列の和の式 ( α s − 1 ) ∑ j = 0 n − 1 α j s = α s n − 1 = 0 (\alpha^s - 1)\sum_{j=0}^{n-1}\alpha^{js} = \alpha^{sn} - 1 = 0 ( α s − 1 ) ∑ j = 0 n − 1 α j s = α s n − 1 = 0 と F q \mathbb{F}_q F q が整域であることから和は 0 0 0 です。n n n は q − 1 q - 1 q − 1 の約数なので標数 p p p で割り切れず、n ⋅ 1 ≠ 0 n \cdot 1 \ne 0 n ⋅ 1 = 0 です。
(2) c ( α i ) = ∑ j c j α i j = ∑ j ∑ l ′ f l ′ α j l ′ α i j = ∑ l ′ f l ′ ∑ j = 0 n − 1 α j ( l ′ + i ) c(\alpha^i) = \sum_{j} c_j \alpha^{ij} = \sum_{j}\sum_{l'} f_{l'}\alpha^{jl'}\alpha^{ij} = \sum_{l'} f_{l'}\sum_{j=0}^{n-1}\alpha^{j(l'+i)} c ( α i ) = ∑ j c j α ij = ∑ j ∑ l ′ f l ′ α j l ′ α ij = ∑ l ′ f l ′ ∑ j = 0 n − 1 α j ( l ′ + i ) です。(1) により内側の和は n ∣ l ′ + i n \mid l' + i n ∣ l ′ + i のとき n n n 、そうでないとき 0 0 0 で、0 ≤ l ′ ≤ n − 1 0 \le l' \le n-1 0 ≤ l ′ ≤ n − 1 の範囲で l ′ ≡ − i l' \equiv -i l ′ ≡ − i となる l ′ l' l ′ はちょうど 1 つです。
∎
定理 5.4 (評価による定義と BCH 符号としての定義の一致 ) ✓
n n n を q − 1 q - 1 q − 1 の約数、α ∈ F q \alpha \in \mathbb{F}_q α ∈ F q を位数 n n n の元、1 ≤ k ≤ n − 1 1 \le k \le n - 1 1 ≤ k ≤ n − 1 とする。評価点を a j = α j a_j = \alpha^j a j = α j (0 ≤ j ≤ n − 1 0 \le j \le n-1 0 ≤ j ≤ n − 1 )とした R S k ( a ) \mathrm{RS}_k(a) RS k ( a ) は、生成多項式
g ( x ) = ( x − α ) ( x − α 2 ) ⋯ ( x − α n − k ) g(x) = (x - \alpha)(x - \alpha^2)\cdots(x - \alpha^{n-k}) g ( x ) = ( x − α ) ( x − α 2 ) ⋯ ( x − α n − k ) の巡回符号、すなわち F q \mathbb{F}_q F q 上の長さ n n n 、設計距離 n − k + 1 n - k + 1 n − k + 1 の狭義 BCH 符号と一致する。
証明(定理 5.4) c ∈ R S k ( a ) c \in \mathrm{RS}_k(a) c ∈ RS k ( a ) を c j = f ( α j ) c_j = f(\alpha^j) c j = f ( α j ) 、f = ∑ l = 0 k − 1 f l x l f = \sum_{l=0}^{k-1}f_l x^l f = ∑ l = 0 k − 1 f l x l と書きます。補題 5.3 の 2 を f k = ⋯ = f n − 1 = 0 f_k = \cdots = f_{n-1} = 0 f k = ⋯ = f n − 1 = 0 として使うと、1 ≤ i ≤ n − k 1 \le i \le n - k 1 ≤ i ≤ n − k に対し l = n − i l = n - i l = n − i は k ≤ l ≤ n − 1 k \le l \le n-1 k ≤ l ≤ n − 1 の範囲にあるので c ( α i ) = n f n − i = 0 c(\alpha^i) = n f_{n-i} = 0 c ( α i ) = n f n − i = 0 です。よって c c c は定義集合 T = { 1 , 2 , … , n − k } T = \{1, 2, \ldots, n-k\} T = { 1 , 2 , … , n − k } の巡回符号 C C C に属します(命題 4.2 。q ≡ 1 ( m o d n ) q \equiv 1 \pmod n q ≡ 1 ( mod n ) なので q q q -円分剰余類はすべて 1 点で、T T T は剰余類の合併です)。dim C = n − ∣ T ∣ = k = dim R S k ( a ) \dim C = n - |T| = k = \dim \mathrm{RS}_k(a) dim C = n − ∣ T ∣ = k = dim RS k ( a ) (定理 5.2 )なので両者は一致します。α i \alpha^i α i の F q \mathbb{F}_q F q 上の最小多項式は x − α i x - \alpha^i x − α i なので、C C C は 定義 4.5 の意味で b = 1 b = 1 b = 1 、δ = n − k + 1 \delta = n - k + 1 δ = n − k + 1 の BCH 符号です。
∎
BCH 限界(定理 4.4 )はこの符号に d ≥ n − k + 1 d \ge n - k + 1 d ≥ n − k + 1 を与え、定理 5.2 の評価と一致します。Reed–Solomon 符号では、BCH 限界と Singleton 限界が両側から最小距離を挟んで等号になっています。
第 3 章で、Singleton 限界 d ≤ n − k + 1 d \le n - k + 1 d ≤ n − k + 1 の等号を達成する符号を MDS 符号と呼びました。
定理 5.5 (MDS 符号の特徴づけ ) ✓
1 ≤ k ≤ n − 1 1 \le k \le n - 1 1 ≤ k ≤ n − 1 とし、C C C を [ n , k ] q [n, k]_q [ n , k ] q 符号、G G G を生成行列、H H H を検査行列とする。次は同値である。
C C C は MDS 符号である(d ( C ) = n − k + 1 d(C) = n - k + 1 d ( C ) = n − k + 1 )。
H H H のどの n − k n - k n − k 本の列も一次独立である。
G G G のどの k k k 本の列も一次独立である。
C ⊥ C^{\perp} C ⊥ は MDS 符号である(d ( C ⊥ ) = k + 1 d(C^{\perp}) = k + 1 d ( C ⊥ ) = k + 1 )。
証明(定理 5.5) (1) ⇔ \Leftrightarrow ⇔ (2): d ( C ) d(C) d ( C ) は、H H H の列のうち一次従属なものの最小の本数です(定理 3.7[線形符号] )。よって (2) は d ( C ) ≥ n − k + 1 d(C) \ge n - k + 1 d ( C ) ≥ n − k + 1 と同値で、Singleton 限界(定理 5.3[線形符号] )により d ( C ) = n − k + 1 d(C) = n - k + 1 d ( C ) = n − k + 1 と同値です。
(1) ⇔ \Leftrightarrow ⇔ (3): k k k 個の座標の集合 J J J に対し、G G G の J J J の列を並べた k k k 次正方行列を G J G_J G J とします。G J G_J G J の列が一次従属であることは det G J = 0 \det G_J = 0 det G J = 0 、すなわち det G J T = 0 \det G_J^{\mathsf{T}} = 0 det G J T = 0 と同値で(定理 7.1[行列式とその性質] 、命題 3.3[行列式とその性質] )、これは u G J = 0 uG_J = 0 u G J = 0 となる 0 0 0 でない行ベクトル u ∈ F q k u \in \mathbb{F}_q^k u ∈ F q k があることと同値です。G G G の行は一次独立なので u ≠ 0 u \ne 0 u = 0 なら符号語 u G uG u G は 0 0 0 でなく、u G J = 0 uG_J = 0 u G J = 0 は「u G uG u G が J J J の座標で 0 0 0 」、つまり wt ( u G ) ≤ n − k \operatorname{wt}(uG) \le n - k wt ( u G ) ≤ n − k を意味します。逆に重みが n − k n - k n − k 以下の 0 0 0 でない符号語 u G uG u G は、ある k k k 個の座標で 0 0 0 です。よって「一次従属な k k k 列がある」ことと d ( C ) ≤ n − k d(C) \le n - k d ( C ) ≤ n − k は同値で、(3) は d ( C ) ≥ n − k + 1 d(C) \ge n - k + 1 d ( C ) ≥ n − k + 1 と同値です。
(3) ⇔ \Leftrightarrow ⇔ (4): ( C ⊥ ) ⊥ = C (C^{\perp})^{\perp} = C ( C ⊥ ) ⊥ = C なので(定理 3.5[線形符号] )、G G G は [ n , n − k ] q [n, n-k]_q [ n , n − k ] q 符号 C ⊥ C^{\perp} C ⊥ の検査行列です。(1) ⇔ \Leftrightarrow ⇔ (2) を C ⊥ C^{\perp} C ⊥ に使うと、C ⊥ C^{\perp} C ⊥ が MDS であることは「G G G のどの n − ( n − k ) = k n - (n-k) = k n − ( n − k ) = k 本の列も一次独立」と同値です。
∎
条件 3 は、「符号語のどの k k k 個の座標からでも情報が復元できる」ことを意味します。分散ストレージで Reed–Solomon 符号を使うのは、n n n 台のうちどの k k k 台が生き残ってもデータが読めるからです。
例 5.6 (F₈ 上の [7, 3, 5] Reed–Solomon 符号 )
F 8 = F 2 [ x ] / ( x 3 + x + 1 ) \mathbb{F}_8 = \mathbb{F}_2[x]/(x^3 + x + 1) F 8 = F 2 [ x ] / ( x 3 + x + 1 ) 、α \alpha α を x x x の類とします。α 3 = α + 1 \alpha^3 = \alpha + 1 α 3 = α + 1 、α 4 = α 2 + α \alpha^4 = \alpha^2 + \alpha α 4 = α 2 + α 、α 5 = α 2 + α + 1 \alpha^5 = \alpha^2 + \alpha + 1 α 5 = α 2 + α + 1 、α 6 = α 2 + 1 \alpha^6 = \alpha^2 + 1 α 6 = α 2 + 1 、α 7 = 1 \alpha^7 = 1 α 7 = 1 です。n = 7 n = 7 n = 7 、k = 3 k = 3 k = 3 、評価点 a j = α j a_j = \alpha^j a j = α j とします。
情報 ( 1 , α , α 3 ) (1, \alpha, \alpha^3) ( 1 , α , α 3 ) を f ( x ) = 1 + α x + α 3 x 2 f(x) = 1 + \alpha x + \alpha^3x^2 f ( x ) = 1 + α x + α 3 x 2 とすると、たとえば f ( 1 ) = 1 + α + α 3 = 0 f(1) = 1 + \alpha + \alpha^3 = 0 f ( 1 ) = 1 + α + α 3 = 0 、f ( α ) = 1 + α 2 + α 5 = α f(\alpha) = 1 + \alpha^2 + \alpha^5 = \alpha f ( α ) = 1 + α 2 + α 5 = α で、同様に計算して
c = ( f ( α 0 ) , … , f ( α 6 ) ) = ( 0 , α , α 3 , α 3 , 0 , 1 , α ) c = (f(\alpha^0), \ldots, f(\alpha^6)) = (0,\ \alpha,\ \alpha^3,\ \alpha^3,\ 0,\ 1,\ \alpha) c = ( f ( α 0 ) , … , f ( α 6 )) = ( 0 , α , α 3 , α 3 , 0 , 1 , α ) です。重みは 5 = n − k + 1 5 = n - k + 1 5 = n − k + 1 で、最小重みの符号語です(f f f が評価点の中に k − 1 = 2 k - 1 = 2 k − 1 = 2 個の根 1 , α 4 1, \alpha^4 1 , α 4 をもつ場合)。定理 5.4 のとおり、c ( x ) = α x + α 3 x 2 + α 3 x 3 + x 5 + α x 6 c(x) = \alpha x + \alpha^3x^2 + \alpha^3x^3 + x^5 + \alpha x^6 c ( x ) = α x + α 3 x 2 + α 3 x 3 + x 5 + α x 6 は α , α 2 , α 3 , α 4 \alpha, \alpha^2, \alpha^3, \alpha^4 α , α 2 , α 3 , α 4 を根にもち、生成多項式
g ( x ) = ( x − α ) ( x − α 2 ) ( x − α 3 ) ( x − α 4 ) = x 4 + α 3 x 3 + x 2 + α x + α 3 g(x) = (x-\alpha)(x-\alpha^2)(x-\alpha^3)(x-\alpha^4) = x^4 + \alpha^3x^3 + x^2 + \alpha x + \alpha^3 g ( x ) = ( x − α ) ( x − α 2 ) ( x − α 3 ) ( x − α 4 ) = x 4 + α 3 x 3 + x 2 + α x + α 3 の倍数です。たとえば c ( α ) = α 2 + α 5 + α 6 + α 5 + α 7 = α 2 + α 6 + 1 = 0 c(\alpha) = \alpha^2 + \alpha^5 + \alpha^6 + \alpha^5 + \alpha^7 = \alpha^2 + \alpha^6 + 1 = 0 c ( α ) = α 2 + α 5 + α 6 + α 5 + α 7 = α 2 + α 6 + 1 = 0 です。
最小距離 d = n − k + 1 d = n - k + 1 d = n − k + 1 の符号は ⌊ ( d − 1 ) / 2 ⌋ = ⌊ ( n − k ) / 2 ⌋ \lfloor (d-1)/2 \rfloor = \lfloor (n-k)/2 \rfloor ⌊( d − 1 ) /2 ⌋ = ⌊( n − k ) /2 ⌋ 個までの誤りを訂正できます(第 3 章)。しかし、最も近い符号語を総当たりで探すのでは実用になりません。Reed–Solomon 符号では、これが連立一次方程式 1 つに帰着します。
定理 6.1 (Berlekamp–Welch の復号 ) ✓
C = R S k ( a ) C = \mathrm{RS}_k(a) C = RS k ( a ) 、t = ⌊ ( n − k ) / 2 ⌋ t = \lfloor (n-k)/2 \rfloor t = ⌊( n − k ) /2 ⌋ とする。f ∈ F q [ x ] f \in \mathbb{F}_q[x] f ∈ F q [ x ] 、deg f < k \deg f < k deg f < k に対する符号語 c = ( f ( a i ) ) i c = (f(a_i))_i c = ( f ( a i ) ) i と、wt ( e ) ≤ t \operatorname{wt}(e) \le t wt ( e ) ≤ t を満たす e ∈ F q n e \in \mathbb{F}_q^n e ∈ F q n について、y = c + e y = c + e y = c + e とおく。未知の多項式
E ( x ) = ∑ j = 0 t E j x j , Q ( x ) = ∑ j = 0 k + t − 1 Q j x j E(x) = \sum_{j=0}^{t} E_j x^j, \qquad Q(x) = \sum_{j=0}^{k+t-1} Q_j x^j E ( x ) = j = 0 ∑ t E j x j , Q ( x ) = j = 0 ∑ k + t − 1 Q j x j の係数 ( E 0 , … , E t , Q 0 , … , Q k + t − 1 ) (E_0, \ldots, E_t, Q_0, \ldots, Q_{k+t-1}) ( E 0 , … , E t , Q 0 , … , Q k + t − 1 ) についての斉次連立一次方程式
Q ( a i ) = y i E ( a i ) ( 1 ≤ i ≤ n ) Q(a_i) = y_i\, E(a_i) \qquad (1 \le i \le n) Q ( a i ) = y i E ( a i ) ( 1 ≤ i ≤ n ) を考える。
この方程式は 0 0 0 でない解をもつ。
0 0 0 でない解 ( E , Q ) (E, Q) ( E , Q ) はどれも E ≠ 0 E \ne 0 E = 0 で、E E E は Q Q Q を割り切り、Q / E = f Q/E = f Q / E = f である。
証明(定理 6.1) (1) E 0 ( x ) = ∏ i : e i ≠ 0 ( x − a i ) E_0(x) = \prod_{i :\, e_i \ne 0}(x - a_i) E 0 ( x ) = ∏ i : e i = 0 ( x − a i ) 、Q 0 = f E 0 Q_0 = fE_0 Q 0 = f E 0 とおきます。deg E 0 = wt ( e ) ≤ t \deg E_0 = \operatorname{wt}(e) \le t deg E 0 = wt ( e ) ≤ t 、deg Q 0 ≤ k − 1 + t \deg Q_0 \le k - 1 + t deg Q 0 ≤ k − 1 + t です。e i = 0 e_i = 0 e i = 0 の i i i では y i = f ( a i ) y_i = f(a_i) y i = f ( a i ) なので Q 0 ( a i ) = f ( a i ) E 0 ( a i ) = y i E 0 ( a i ) Q_0(a_i) = f(a_i)E_0(a_i) = y_iE_0(a_i) Q 0 ( a i ) = f ( a i ) E 0 ( a i ) = y i E 0 ( a i ) です。e i ≠ 0 e_i \ne 0 e i = 0 の i i i では E 0 ( a i ) = 0 E_0(a_i) = 0 E 0 ( a i ) = 0 なので両辺とも 0 0 0 です。E 0 E_0 E 0 はモニックで 0 0 0 でないので、( E 0 , Q 0 ) (E_0, Q_0) ( E 0 , Q 0 ) は 0 0 0 でない解です。
(2) ( E , Q ) (E, Q) ( E , Q ) を 0 0 0 でない解とし、P = Q − f E P = Q - fE P = Q − f E とおきます。deg P ≤ k + t − 1 \deg P \le k + t - 1 deg P ≤ k + t − 1 です。e i = 0 e_i = 0 e i = 0 となる i i i では y i = f ( a i ) y_i = f(a_i) y i = f ( a i ) なので P ( a i ) = Q ( a i ) − y i E ( a i ) = 0 P(a_i) = Q(a_i) - y_iE(a_i) = 0 P ( a i ) = Q ( a i ) − y i E ( a i ) = 0 です。そのような i i i は n − t n - t n − t 個以上あり、2 t ≤ n − k 2t \le n - k 2 t ≤ n − k から n − t ≥ k + t > deg P n - t \ge k + t > \deg P n − t ≥ k + t > deg P です。次数が k + t − 1 k + t - 1 k + t − 1 以下の多項式が k + t k + t k + t 個以上の相異なる点で 0 0 0 になるので、P = 0 P = 0 P = 0 (補題 2.1 の 3)、すなわち Q = f E Q = fE Q = f E です。E = 0 E = 0 E = 0 なら Q = 0 Q = 0 Q = 0 となり、解が 0 0 0 でないことに反します。よって E ≠ 0 E \ne 0 E = 0 で、Q / E = f Q/E = f Q / E = f です。
∎
未知数は ( t + 1 ) + ( k + t ) = k + 2 t + 1 (t + 1) + (k + t) = k + 2t + 1 ( t + 1 ) + ( k + t ) = k + 2 t + 1 個、方程式は n n n 本です。掃き出し法で 0 0 0 でない解を 1 つ求め、多項式の割り算を 1 回すれば f f f が得られます。計算量は n n n の 3 乗の程度です。E 0 E_0 E 0 は誤りの位置 a i a_i a i を根にもつ多項式(誤り位置多項式)ですが、アルゴリズムは誤りの位置をあらかじめ知らなくても動きます。一般化 Reed–Solomon 符号では、受信語の各座標を v i v_i v i で割ってから同じ手順を使います。
例 6.2 ([7, 3, 5] 符号で 2 誤りを訂正する )
例 5.6 の符号語 c = ( 0 , α , α 3 , α 3 , 0 , 1 , α ) c = (0, \alpha, \alpha^3, \alpha^3, 0, 1, \alpha) c = ( 0 , α , α 3 , α 3 , 0 , 1 , α ) を送り、座標 1 に α 2 \alpha^2 α 2 、座標 5 に 1 1 1 の誤りが加わって
y = ( 0 , α 4 , α 3 , α 3 , 0 , 0 , α ) y = (0,\ \alpha^4,\ \alpha^3,\ \alpha^3,\ 0,\ 0,\ \alpha) y = ( 0 , α 4 , α 3 , α 3 , 0 , 0 , α ) を受け取ったとします(α + α 2 = α 4 \alpha + \alpha^2 = \alpha^4 α + α 2 = α 4 、1 + 1 = 0 1 + 1 = 0 1 + 1 = 0 )。t = 2 t = 2 t = 2 なので、E = E 0 + E 1 x + E 2 x 2 E = E_0 + E_1x + E_2x^2 E = E 0 + E 1 x + E 2 x 2 、Q = Q 0 + ⋯ + Q 4 x 4 Q = Q_0 + \cdots + Q_4x^4 Q = Q 0 + ⋯ + Q 4 x 4 の 8 個の係数についての 7 本の方程式 Q ( α j ) = y j E ( α j ) Q(\alpha^j) = y_jE(\alpha^j) Q ( α j ) = y j E ( α j ) (0 ≤ j ≤ 6 0 \le j \le 6 0 ≤ j ≤ 6 )を解きます。係数行列の階数は 7 7 7 で、解は定数倍を除いてただ 1 つ、
E ( x ) = x 2 + α 6 x + α 6 , Q ( x ) = α 3 x 4 + α 4 x 3 + α 2 x 2 + α 2 x + α 6 E(x) = x^2 + \alpha^6x + \alpha^6, \qquad Q(x) = \alpha^3x^4 + \alpha^4x^3 + \alpha^2x^2 + \alpha^2x + \alpha^6 E ( x ) = x 2 + α 6 x + α 6 , Q ( x ) = α 3 x 4 + α 4 x 3 + α 2 x 2 + α 2 x + α 6 です。たとえば j = 0 j = 0 j = 0 では Q ( 1 ) = α 3 + α 4 + α 2 + α 2 + α 6 = 0 = y 0 E ( 1 ) Q(1) = \alpha^3 + \alpha^4 + \alpha^2 + \alpha^2 + \alpha^6 = 0 = y_0E(1) Q ( 1 ) = α 3 + α 4 + α 2 + α 2 + α 6 = 0 = y 0 E ( 1 ) です。E ( x ) = ( x − α ) ( x − α 5 ) E(x) = (x - \alpha)(x - \alpha^5) E ( x ) = ( x − α ) ( x − α 5 ) と分解し(α + α 5 = α 6 \alpha + \alpha^5 = \alpha^6 α + α 5 = α 6 、α ⋅ α 5 = α 6 \alpha\cdot\alpha^5 = \alpha^6 α ⋅ α 5 = α 6 )、誤りの位置が a 1 = α a_1 = \alpha a 1 = α と a 5 = α 5 a_5 = \alpha^5 a 5 = α 5 であることを示しています。割り算をすると
Q ( x ) = ( x 2 + α 6 x + α 6 ) ( α 3 x 2 + α x + 1 ) Q(x) = (x^2 + \alpha^6x + \alpha^6)(\alpha^3x^2 + \alpha x + 1) Q ( x ) = ( x 2 + α 6 x + α 6 ) ( α 3 x 2 + α x + 1 ) で、f = 1 + α x + α 3 x 2 f = 1 + \alpha x + \alpha^3x^2 f = 1 + α x + α 3 x 2 が復元されます。
Berlekamp–Welch の方法は受信語 y y y の n n n 個の成分をそのまま使います。BCH 符号では、まず y y y を 2 t 2t 2 t 個のシンドロームに縮めてから、より小さい問題を解く方法が使われます。
以下の見通しを先に述べます。受信語から計算できる 2 t 2t 2 t 個の値(シンドローム)を 1 つの多項式 S ( x ) S(x) S ( x ) にまとめます。一方、誤りがどこにあるかを根で表した多項式 σ ( x ) \sigma(x) σ ( x ) と、誤りの大きさを拾う多項式 ω ( x ) \omega(x) ω ( x ) を定義します。この 3 つが鍵方程式でつながるので、S S S から σ \sigma σ と ω \omega ω を求めれば誤りの位置と値が分かります。
この小節と次の小節の設定を固定します。gcd ( n , q ) = 1 \gcd(n, q) = 1 g cd( n , q ) = 1 、α ∈ F q m \alpha \in \mathbb{F}_{q^m} α ∈ F q m を 1 の原始 n n n 乗根、t ≥ 1 t \ge 1 t ≥ 1 、2 t + 1 ≤ n 2t + 1 \le n 2 t + 1 ≤ n とし、C ⊆ F q n C \subseteq \mathbb{F}_q^n C ⊆ F q n を、α , α 2 , … , α 2 t \alpha, \alpha^2, \ldots, \alpha^{2t} α , α 2 , … , α 2 t を零点にもつ巡回符号とします(設計距離 2 t + 1 2t+1 2 t + 1 の狭義 BCH 符号や、定理 5.4 の Reed–Solomon 符号で n − k = 2 t n - k = 2t n − k = 2 t のもの)。定理 4.4 により d ( C ) ≥ 2 t + 1 d(C) \ge 2t + 1 d ( C ) ≥ 2 t + 1 です。
定義 6.3 (シンドローム多項式・誤り位置多項式・誤り評価多項式 ) ↗
c ∈ C c \in C c ∈ C 、e ∈ F q n e \in \mathbb{F}_q^n e ∈ F q n 、y = c + e y = c + e y = c + e とし、I = { i : e i ≠ 0 } I = \{ i : e_i \ne 0 \} I = { i : e i = 0 } 、w = ∣ I ∣ w = |I| w = ∣ I ∣ とする。
シンドローム : S j = y ( α j ) S_j = y(\alpha^j) S j = y ( α j ) (1 ≤ j ≤ 2 t 1 \le j \le 2t 1 ≤ j ≤ 2 t )。シンドローム多項式 : S ( x ) = ∑ j = 1 2 t S j x j − 1 S(x) = \sum_{j=1}^{2t} S_j x^{j-1} S ( x ) = ∑ j = 1 2 t S j x j − 1 。
誤り位置 : X i = α i X_i = \alpha^{i} X i = α i (i ∈ I i \in I i ∈ I )。誤り位置多項式 : σ ( x ) = ∏ i ∈ I ( 1 − X i x ) \sigma(x) = \prod_{i \in I}(1 - X_i x) σ ( x ) = ∏ i ∈ I ( 1 − X i x ) 。
誤り評価多項式 : ω ( x ) = ∑ i ∈ I e i X i ∏ l ∈ I , l ≠ i ( 1 − X l x ) \omega(x) = \sum_{i \in I} e_i X_i \prod_{l \in I,\ l \ne i}(1 - X_l x) ω ( x ) = ∑ i ∈ I e i X i ∏ l ∈ I , l = i ( 1 − X l x ) 。
c ( α j ) = 0 c(\alpha^j) = 0 c ( α j ) = 0 (1 ≤ j ≤ 2 t 1 \le j \le 2t 1 ≤ j ≤ 2 t 、命題 4.2 )なので、S j = e ( α j ) = ∑ i ∈ I e i X i j S_j = e(\alpha^j) = \sum_{i \in I} e_i X_i^{\,j} S j = e ( α j ) = ∑ i ∈ I e i X i j です。シンドロームは受信語から計算でき、しかも誤り e e e だけで決まります。σ \sigma σ の根は X i − 1 X_i^{-1} X i − 1 で、σ \sigma σ が分かれば誤りの位置が分かります。
補題 6.4 (鍵方程式 ) ✓
定義 6.3 の記号で、
σ ( x ) S ( x ) ≡ ω ( x ) ( m o d x 2 t ) \sigma(x)\,S(x) \equiv \omega(x) \pmod{x^{2t}} σ ( x ) S ( x ) ≡ ω ( x ) ( mod x 2 t ) が F q m [ x ] \mathbb{F}_{q^m}[x] F q m [ x ] で成り立つ。また σ ( 0 ) = 1 \sigma(0) = 1 σ ( 0 ) = 1 、deg σ = w \deg \sigma = w deg σ = w 、ω = 0 \omega = 0 ω = 0 または deg ω ≤ w − 1 \deg \omega \le w - 1 deg ω ≤ w − 1 で、w ≥ 1 w \ge 1 w ≥ 1 のとき σ \sigma σ と ω \omega ω は定数でない共通因子をもたず、ω ≠ 0 \omega \ne 0 ω = 0 である。
証明(補題 6.4) S j = ∑ i ∈ I e i X i j S_j = \sum_{i \in I}e_iX_i^{\,j} S j = ∑ i ∈ I e i X i j を代入し、有限等比数列の和 ( 1 − X i x ) ∑ j = 0 2 t − 1 ( X i x ) j = 1 − ( X i x ) 2 t (1 - X_ix)\sum_{j=0}^{2t-1}(X_ix)^j = 1 - (X_ix)^{2t} ( 1 − X i x ) ∑ j = 0 2 t − 1 ( X i x ) j = 1 − ( X i x ) 2 t を使います。
σ ( x ) S ( x ) = ∑ i ∈ I e i X i σ ( x ) ∑ j = 0 2 t − 1 ( X i x ) j = ∑ i ∈ I e i X i ∏ l ≠ i ( 1 − X l x ) ⋅ ( 1 − ( X i x ) 2 t ) = ω ( x ) − x 2 t ∑ i ∈ I e i X i 2 t + 1 ∏ l ≠ i ( 1 − X l x ) . \begin{aligned}
\sigma(x)S(x) &= \sum_{i \in I} e_iX_i\,\sigma(x)\sum_{j=0}^{2t-1}(X_ix)^{j}
= \sum_{i \in I} e_iX_i \prod_{l \ne i}(1 - X_lx)\cdot\bigl(1 - (X_ix)^{2t}\bigr) \\
&= \omega(x) - x^{2t}\sum_{i \in I} e_iX_i^{\,2t+1}\prod_{l \ne i}(1 - X_lx).
\end{aligned} σ ( x ) S ( x ) = i ∈ I ∑ e i X i σ ( x ) j = 0 ∑ 2 t − 1 ( X i x ) j = i ∈ I ∑ e i X i l = i ∏ ( 1 − X l x ) ⋅ ( 1 − ( X i x ) 2 t ) = ω ( x ) − x 2 t i ∈ I ∑ e i X i 2 t + 1 l = i ∏ ( 1 − X l x ) . 右辺の第 2 項は x 2 t x^{2t} x 2 t の倍数なので、合同式が成り立ちます。σ ( 0 ) = 1 \sigma(0) = 1 σ ( 0 ) = 1 と次数の主張は定義から直ちに読み取れます(X i ≠ 0 X_i \ne 0 X i = 0 なので σ \sigma σ の最高次の係数 ∏ ( − X i ) \prod(-X_i) ∏ ( − X i ) は 0 0 0 でない)。
w ≥ 1 w \ge 1 w ≥ 1 とします。σ \sigma σ は F q m \mathbb{F}_{q^m} F q m で 1 次式の積に分解し、根は X i − 1 X_i^{-1} X i − 1 (i ∈ I i \in I i ∈ I )です。ω \omega ω に代入すると、l = i l = i l = i 以外の項は因子 1 − X i X i − 1 = 0 1 - X_iX_i^{-1} = 0 1 − X i X i − 1 = 0 を含むので
ω ( X i − 1 ) = e i X i ∏ l ≠ i ( 1 − X l X i − 1 ) \omega(X_i^{-1}) = e_iX_i\prod_{l \ne i}(1 - X_lX_i^{-1}) ω ( X i − 1 ) = e i X i l = i ∏ ( 1 − X l X i − 1 ) で、e i ≠ 0 e_i \ne 0 e i = 0 、X i ≠ 0 X_i \ne 0 X i = 0 、X l ≠ X i X_l \ne X_i X l = X i (l ≠ i l \ne i l = i 。α \alpha α の位数が n n n だから)により 0 0 0 でありません。よって ω ≠ 0 \omega \ne 0 ω = 0 で、σ \sigma σ の既約因子 1 − X i x 1 - X_ix 1 − X i x はどれも ω \omega ω を割り切りません(補題 2.1 の 2)。
∎
鍵方程式は、S S S が与えられたとき、次数の小さい σ \sigma σ と ω \omega ω を求める問題です。これは x 2 t x^{2t} x 2 t と S ( x ) S(x) S ( x ) に拡張 Euclid の互除法を使うと解けます。整数の互除法(定理 3.2[整除と素因数分解] )と同じ手順を、多項式について、あとで使う不変量とともに述べ直します。続く定理の証明の方針は次のとおりです。互除法の途中で余り r i r_i r i の次数が初めて t t t 未満になったところで止めると、u i u_i u i と r i r_i r i が、鍵方程式の解 σ \sigma σ と ω \omega ω の同じ定数倍になる、というものです。次数の評価を重ねて示します。
補題 6.5 (多項式の拡張 Euclid の互除法 ) ✓
K K K を体、a , b ∈ K [ x ] a, b \in K[x] a , b ∈ K [ x ] 、b ≠ 0 b \ne 0 b = 0 、deg a > deg b \deg a > \deg b deg a > deg b とする。r 0 = a r_0 = a r 0 = a 、r 1 = b r_1 = b r 1 = b 、s 0 = 1 s_0 = 1 s 0 = 1 、s 1 = 0 s_1 = 0 s 1 = 0 、u 0 = 0 u_0 = 0 u 0 = 0 、u 1 = 1 u_1 = 1 u 1 = 1 とおき、r i ≠ 0 r_i \ne 0 r i = 0 である限り、r i − 1 r_{i-1} r i − 1 を r i r_i r i で割った商を q i q_i q i として
r i + 1 = r i − 1 − q i r i , s i + 1 = s i − 1 − q i s i , u i + 1 = u i − 1 − q i u i r_{i+1} = r_{i-1} - q_ir_i, \qquad s_{i+1} = s_{i-1} - q_is_i, \qquad u_{i+1} = u_{i-1} - q_iu_i r i + 1 = r i − 1 − q i r i , s i + 1 = s i − 1 − q i s i , u i + 1 = u i − 1 − q i u i と定める。このとき、ある N ≥ 1 N \ge 1 N ≥ 1 で r N + 1 = 0 r_{N+1} = 0 r N + 1 = 0 となって手順は止まり、次が成り立つ。
deg r 0 > deg r 1 > ⋯ > deg r N \deg r_0 > \deg r_1 > \cdots > \deg r_N deg r 0 > deg r 1 > ⋯ > deg r N 。
s i a + u i b = r i s_ia + u_ib = r_i s i a + u i b = r i (0 ≤ i ≤ N + 1 0 \le i \le N+1 0 ≤ i ≤ N + 1 )。
s i u i + 1 − s i + 1 u i = ( − 1 ) i s_iu_{i+1} - s_{i+1}u_i = (-1)^i s i u i + 1 − s i + 1 u i = ( − 1 ) i (0 ≤ i ≤ N 0 \le i \le N 0 ≤ i ≤ N )。とくに s i s_i s i と u i u_i u i は定数でない共通因子をもたない。
deg u i = deg a − deg r i − 1 \deg u_i = \deg a - \deg r_{i-1} deg u i = deg a − deg r i − 1 (1 ≤ i ≤ N + 1 1 \le i \le N+1 1 ≤ i ≤ N + 1 )。
証明(補題 6.5) (1) 割り算の余りなので r i + 1 = 0 r_{i+1} = 0 r i + 1 = 0 または deg r i + 1 < deg r i \deg r_{i+1} < \deg r_i deg r i + 1 < deg r i です(補題 2.1 の 1)。次数は非負整数で真に減り続けるので、有限回で余りが 0 0 0 になります。
(2) i = 0 , 1 i = 0, 1 i = 0 , 1 では定義から成り立ちます。i − 1 i-1 i − 1 と i i i で成り立てば、s i + 1 a + u i + 1 b = ( s i − 1 a + u i − 1 b ) − q i ( s i a + u i b ) = r i − 1 − q i r i = r i + 1 s_{i+1}a + u_{i+1}b = (s_{i-1}a + u_{i-1}b) - q_i(s_ia + u_ib) = r_{i-1} - q_ir_i = r_{i+1} s i + 1 a + u i + 1 b = ( s i − 1 a + u i − 1 b ) − q i ( s i a + u i b ) = r i − 1 − q i r i = r i + 1 です。
(3) i = 0 i = 0 i = 0 では 1 ⋅ 1 − 0 ⋅ 0 = 1 1\cdot 1 - 0 \cdot 0 = 1 1 ⋅ 1 − 0 ⋅ 0 = 1 です。i i i で成り立てば
s i + 1 u i + 2 − s i + 2 u i + 1 = s i + 1 ( u i − q i + 1 u i + 1 ) − ( s i − q i + 1 s i + 1 ) u i + 1 = − ( s i u i + 1 − s i + 1 u i ) = ( − 1 ) i + 1 s_{i+1}u_{i+2} - s_{i+2}u_{i+1} = s_{i+1}(u_i - q_{i+1}u_{i+1}) - (s_i - q_{i+1}s_{i+1})u_{i+1} = -(s_iu_{i+1} - s_{i+1}u_i) = (-1)^{i+1} s i + 1 u i + 2 − s i + 2 u i + 1 = s i + 1 ( u i − q i + 1 u i + 1 ) − ( s i − q i + 1 s i + 1 ) u i + 1 = − ( s i u i + 1 − s i + 1 u i ) = ( − 1 ) i + 1 です。s i s_i s i と u i u_i u i の共通因子は左辺を割り切るので、定数です。
(4) i = 1 i = 1 i = 1 では deg u 1 = 0 = deg a − deg r 0 \deg u_1 = 0 = \deg a - \deg r_0 deg u 1 = 0 = deg a − deg r 0 です。i ≥ 1 i \ge 1 i ≥ 1 として、i i i 以下で成り立つとします。deg q i = deg r i − 1 − deg r i ≥ 1 \deg q_i = \deg r_{i-1} - \deg r_i \ge 1 deg q i = deg r i − 1 − deg r i ≥ 1 なので
deg ( q i u i ) = ( deg r i − 1 − deg r i ) + ( deg a − deg r i − 1 ) = deg a − deg r i \deg(q_iu_i) = (\deg r_{i-1} - \deg r_i) + (\deg a - \deg r_{i-1}) = \deg a - \deg r_i deg ( q i u i ) = ( deg r i − 1 − deg r i ) + ( deg a − deg r i − 1 ) = deg a − deg r i です。一方 u i − 1 u_{i-1} u i − 1 は、i = 1 i = 1 i = 1 なら 0 0 0 、i ≥ 2 i \ge 2 i ≥ 2 なら次数 deg a − deg r i − 2 \deg a - \deg r_{i-2} deg a − deg r i − 2 で、これは deg a − deg r i \deg a - \deg r_i deg a − deg r i より小さい。よって u i + 1 = u i − 1 − q i u i u_{i+1} = u_{i-1} - q_iu_i u i + 1 = u i − 1 − q i u i の次数は deg a − deg r i \deg a - \deg r_i deg a − deg r i です。
∎
定理 6.6 (鍵方程式の互除法による解(Sugiyama の方法) ) ✓
6.2 節の設定で、1 ≤ w = wt ( e ) ≤ t 1 \le w = \operatorname{wt}(e) \le t 1 ≤ w = wt ( e ) ≤ t とする。このとき S ( x ) ≠ 0 S(x) \ne 0 S ( x ) = 0 である。補題 6.5 の手順を K = F q m K = \mathbb{F}_{q^m} K = F q m 、a = x 2 t a = x^{2t} a = x 2 t 、b = S ( x ) b = S(x) b = S ( x ) に対して行い、deg r i < t \deg r_i < t deg r i < t (または r i = 0 r_i = 0 r i = 0 )となる最小の添字 i i i を取る。すると u i ( 0 ) ≠ 0 u_i(0) \ne 0 u i ( 0 ) = 0 で、
σ ( x ) = u i ( x ) u i ( 0 ) , ω ( x ) = r i ( x ) u i ( 0 ) \sigma(x) = \frac{u_i(x)}{u_i(0)}, \qquad \omega(x) = \frac{r_i(x)}{u_i(0)} σ ( x ) = u i ( 0 ) u i ( x ) , ω ( x ) = u i ( 0 ) r i ( x ) が成り立つ。
証明(定理 6.6) 補題 6.4 により ω ≠ 0 \omega \ne 0 ω = 0 で σ S ≡ ω ( m o d x 2 t ) \sigma S \equiv \omega \pmod{x^{2t}} σ S ≡ ω ( mod x 2 t ) なので、S ≠ 0 S \ne 0 S = 0 です。deg S ≤ 2 t − 1 < deg a \deg S \le 2t - 1 < \deg a deg S ≤ 2 t − 1 < deg a なので補題の仮定が満たされます。deg r 0 = 2 t ≥ t \deg r_0 = 2t \ge t deg r 0 = 2 t ≥ t で、最後は r N + 1 = 0 r_{N+1} = 0 r N + 1 = 0 なので、条件を満たす最小の i i i は 1 ≤ i ≤ N + 1 1 \le i \le N + 1 1 ≤ i ≤ N + 1 の範囲にあり、deg r i − 1 ≥ t \deg r_{i-1} \ge t deg r i − 1 ≥ t です。補題の 4 から
deg u i = 2 t − deg r i − 1 ≤ t \deg u_i = 2t - \deg r_{i-1} \le t deg u i = 2 t − deg r i − 1 ≤ t で、とくに u i ≠ 0 u_i \ne 0 u i = 0 です。補題の 2 から u i S ≡ r i ( m o d x 2 t ) u_iS \equiv r_i \pmod{x^{2t}} u i S ≡ r i ( mod x 2 t ) です。
σ r i = ω u i \sigma r_i = \omega u_i σ r i = ω u i であること。 2 つの合同式から σ r i ≡ σ u i S ≡ ω u i ( m o d x 2 t ) \sigma r_i \equiv \sigma u_iS \equiv \omega u_i \pmod{x^{2t}} σ r i ≡ σ u i S ≡ ω u i ( mod x 2 t ) です。deg σ = w ≤ t \deg\sigma = w \le t deg σ = w ≤ t と deg r i < t \deg r_i < t deg r i < t から deg ( σ r i ) < 2 t \deg(\sigma r_i) < 2t deg ( σ r i ) < 2 t 、deg ω ≤ w − 1 < t \deg\omega \le w - 1 < t deg ω ≤ w − 1 < t と deg u i ≤ t \deg u_i \le t deg u i ≤ t から deg ( ω u i ) < 2 t \deg(\omega u_i) < 2t deg ( ω u i ) < 2 t です。差 σ r i − ω u i \sigma r_i - \omega u_i σ r i − ω u i は x 2 t x^{2t} x 2 t の倍数で次数が 2 t 2t 2 t 未満なので 0 0 0 です。
u i = λ σ u_i = \lambda\sigma u i = λσ 、r i = λ ω r_i = \lambda\omega r i = λω と書けること。 σ \sigma σ は ω u i \omega u_i ω u i を割り切り、σ \sigma σ と ω \omega ω は共通の既約因子をもたないので(補題 6.4 )、一意分解性(定理 2.5[多項式環と体の拡大] )から σ \sigma σ は u i u_i u i を割り切ります。u i = λ σ u_i = \lambda\sigma u i = λσ (λ ∈ K [ x ] \lambda \in K[x] λ ∈ K [ x ] 、λ ≠ 0 \lambda \ne 0 λ = 0 )と書くと、σ r i = ω λ σ \sigma r_i = \omega\lambda\sigma σ r i = ω λσ から r i = λ ω r_i = \lambda\omega r i = λω です。
λ \lambda λ が定数であること。 鍵方程式を σ S = ω + μ x 2 t \sigma S = \omega + \mu x^{2t} σ S = ω + μ x 2 t (μ ∈ K [ x ] \mu \in K[x] μ ∈ K [ x ] )と書きます。補題の 2 から
s i x 2 t = r i − u i S = λ ω − λ σ S = − λ μ x 2 t s_ix^{2t} = r_i - u_iS = \lambda\omega - \lambda\sigma S = -\lambda\mu x^{2t} s i x 2 t = r i − u i S = λω − λσ S = − λ μ x 2 t で、K [ x ] K[x] K [ x ] は整域なので s i = − λ μ s_i = -\lambda\mu s i = − λ μ です。λ \lambda λ は s i s_i s i と u i u_i u i の共通因子なので、補題の 3 により定数です。
σ ( 0 ) = 1 \sigma(0) = 1 σ ( 0 ) = 1 なので u i ( 0 ) = λ ≠ 0 u_i(0) = \lambda \ne 0 u i ( 0 ) = λ = 0 で、σ = u i / u i ( 0 ) \sigma = u_i/u_i(0) σ = u i / u i ( 0 ) 、ω = r i / u i ( 0 ) \omega = r_i/u_i(0) ω = r i / u i ( 0 ) が得られます。
∎
誤りの位置は、σ \sigma σ の根を α 0 , α − 1 , … , α − ( n − 1 ) \alpha^{0}, \alpha^{-1}, \ldots, \alpha^{-(n-1)} α 0 , α − 1 , … , α − ( n − 1 ) の中から順に代入して探します(Chien 探索)。σ ( α − i ) = 0 \sigma(\alpha^{-i}) = 0 σ ( α − i ) = 0 となる i i i が誤りの位置です。二元符号なら誤りの値は 1 1 1 に決まっているので、これで復号は終わりです。q > 2 q > 2 q > 2 のときは誤りの値が必要で、次の公式で求まります。
命題 6.7 (Forney の公式 ) ✓
定義 6.3 の記号で、σ ′ \sigma' σ ′ を σ \sigma σ の形式微分とすると、各 i ∈ I i \in I i ∈ I について
e i = − ω ( X i − 1 ) σ ′ ( X i − 1 ) e_i = -\frac{\omega(X_i^{-1})}{\sigma'(X_i^{-1})} e i = − σ ′ ( X i − 1 ) ω ( X i − 1 ) が成り立つ。
証明(命題 6.7) 形式微分 ( ∑ j f j x j ) ′ = ∑ j j f j x j − 1 \bigl(\sum_j f_jx^j\bigr)' = \sum_j jf_jx^{j-1} ( ∑ j f j x j ) ′ = ∑ j j f j x j − 1 は線形で、単項式について ( x j x l ) ′ = ( j + l ) x j + l − 1 = ( x j ) ′ x l + x j ( x l ) ′ (x^{j}x^{l})' = (j+l)x^{j+l-1} = (x^j)'x^l + x^j(x^l)' ( x j x l ) ′ = ( j + l ) x j + l − 1 = ( x j ) ′ x l + x j ( x l ) ′ なので、積の法則 ( f h ) ′ = f ′ h + f h ′ (fh)' = f'h + fh' ( f h ) ′ = f ′ h + f h ′ が成り立ちます。これを σ = ∏ l ∈ I ( 1 − X l x ) \sigma = \prod_{l \in I}(1 - X_lx) σ = ∏ l ∈ I ( 1 − X l x ) に繰り返し使うと
σ ′ ( x ) = ∑ i ∈ I ( − X i ) ∏ l ≠ i ( 1 − X l x ) \sigma'(x) = \sum_{i \in I}(-X_i)\prod_{l \ne i}(1 - X_lx) σ ′ ( x ) = i ∈ I ∑ ( − X i ) l = i ∏ ( 1 − X l x ) です。x = X i − 1 x = X_i^{-1} x = X i − 1 を代入すると、i i i 以外の項は因子 1 − X i X i − 1 = 0 1 - X_iX_i^{-1} = 0 1 − X i X i − 1 = 0 を含むので σ ′ ( X i − 1 ) = − X i ∏ l ≠ i ( 1 − X l X i − 1 ) \sigma'(X_i^{-1}) = -X_i\prod_{l \ne i}(1 - X_lX_i^{-1}) σ ′ ( X i − 1 ) = − X i ∏ l = i ( 1 − X l X i − 1 ) です。補題 6.4 の証明で見たとおり ω ( X i − 1 ) = e i X i ∏ l ≠ i ( 1 − X l X i − 1 ) \omega(X_i^{-1}) = e_iX_i\prod_{l \ne i}(1 - X_lX_i^{-1}) ω ( X i − 1 ) = e i X i ∏ l = i ( 1 − X l X i − 1 ) で、積の部分は 0 0 0 でないので、比を取ると ω ( X i − 1 ) / σ ′ ( X i − 1 ) = − e i \omega(X_i^{-1})/\sigma'(X_i^{-1}) = -e_i ω ( X i − 1 ) / σ ′ ( X i − 1 ) = − e i です。
∎
例 6.8 ([15, 7, 5] BCH 符号で 2 誤りを訂正する )
例 4.7 の δ = 5 \delta = 5 δ = 5 の符号(t = 2 t = 2 t = 2 )を使います。F 16 \mathbb{F}_{16} F 16 の元の表は、α 4 = α + 1 \alpha^4 = \alpha+1 α 4 = α + 1 から順に
α 5 = α 2 + α , α 6 = α 3 + α 2 , α 7 = α 3 + α + 1 , α 8 = α 2 + 1 , α 9 = α 3 + α , \alpha^5 = \alpha^2+\alpha,\ \ \alpha^6 = \alpha^3+\alpha^2,\ \ \alpha^7 = \alpha^3+\alpha+1,\ \ \alpha^8 = \alpha^2+1,\ \ \alpha^9 = \alpha^3+\alpha, α 5 = α 2 + α , α 6 = α 3 + α 2 , α 7 = α 3 + α + 1 , α 8 = α 2 + 1 , α 9 = α 3 + α , α 10 = α 2 + α + 1 , α 11 = α 3 + α 2 + α , α 12 = α 3 + α 2 + α + 1 , α 13 = α 3 + α 2 + 1 , α 14 = α 3 + 1 \alpha^{10} = \alpha^2+\alpha+1,\ \ \alpha^{11} = \alpha^3+\alpha^2+\alpha,\ \ \alpha^{12} = \alpha^3+\alpha^2+\alpha+1,\ \ \alpha^{13} = \alpha^3+\alpha^2+1,\ \ \alpha^{14} = \alpha^3+1 α 10 = α 2 + α + 1 , α 11 = α 3 + α 2 + α , α 12 = α 3 + α 2 + α + 1 , α 13 = α 3 + α 2 + 1 , α 14 = α 3 + 1 です。符号語 c ( x ) = g ( x ) = 1 + x 4 + x 6 + x 7 + x 8 c(x) = g(x) = 1 + x^4 + x^6 + x^7 + x^8 c ( x ) = g ( x ) = 1 + x 4 + x 6 + x 7 + x 8 を送り、座標 2 2 2 と 11 11 11 が反転して y ( x ) = c ( x ) + x 2 + x 11 y(x) = c(x) + x^2 + x^{11} y ( x ) = c ( x ) + x 2 + x 11 を受け取ったとします。
シンドローム。 S j = y ( α j ) = α 2 j + α 11 j S_j = y(\alpha^j) = \alpha^{2j} + \alpha^{11j} S j = y ( α j ) = α 2 j + α 11 j なので、S 1 = α 2 + α 11 = α 9 S_1 = \alpha^2 + \alpha^{11} = \alpha^9 S 1 = α 2 + α 11 = α 9 、S 2 = S 1 2 = α 3 S_2 = S_1^2 = \alpha^{3} S 2 = S 1 2 = α 3 、S 3 = α 6 + α 33 = α 6 + α 3 = α 2 S_3 = \alpha^6 + \alpha^{33} = \alpha^6 + \alpha^3 = \alpha^2 S 3 = α 6 + α 33 = α 6 + α 3 = α 2 、S 4 = S 2 2 = α 6 S_4 = S_2^2 = \alpha^6 S 4 = S 2 2 = α 6 です(受信側は y y y から直接計算します。二元符号では S 2 j = S j 2 S_{2j} = S_j^2 S 2 j = S j 2 です)。S ( x ) = α 9 + α 3 x + α 2 x 2 + α 6 x 3 S(x) = \alpha^9 + \alpha^3x + \alpha^2x^2 + \alpha^6x^3 S ( x ) = α 9 + α 3 x + α 2 x 2 + α 6 x 3 。
互除法。 r 0 = x 4 r_0 = x^4 r 0 = x 4 、r 1 = S r_1 = S r 1 = S から始めます。
i i i q i q_i q i r i + 1 r_{i+1} r i + 1 u i + 1 u_{i+1} u i + 1 1 1 1 α 9 x + α 5 \alpha^9x + \alpha^5 α 9 x + α 5 α 2 x 2 + α 13 x + α 14 \alpha^2x^2 + \alpha^{13}x + \alpha^{14} α 2 x 2 + α 13 x + α 14 α 9 x + α 5 \alpha^9x + \alpha^5 α 9 x + α 5 2 2 2 α 4 x \alpha^4x α 4 x α 9 \alpha^9 α 9 α 13 x 2 + α 9 x + 1 \alpha^{13}x^2 + \alpha^9x + 1 α 13 x 2 + α 9 x + 1
deg r 3 = 0 < t = 2 \deg r_3 = 0 < t = 2 deg r 3 = 0 < t = 2 で止まります。u 3 ( 0 ) = 1 u_3(0) = 1 u 3 ( 0 ) = 1 なので
σ ( x ) = 1 + α 9 x + α 13 x 2 , ω ( x ) = α 9 \sigma(x) = 1 + \alpha^9x + \alpha^{13}x^2, \qquad \omega(x) = \alpha^9 σ ( x ) = 1 + α 9 x + α 13 x 2 , ω ( x ) = α 9 です。
誤りの位置。 σ ( α − i ) = 0 \sigma(\alpha^{-i}) = 0 σ ( α − i ) = 0 となる i i i を探すと i = 2 i = 2 i = 2 と i = 11 i = 11 i = 11 です。実際 σ ( x ) = ( 1 − α 2 x ) ( 1 − α 11 x ) \sigma(x) = (1 - \alpha^2x)(1 - \alpha^{11}x) σ ( x ) = ( 1 − α 2 x ) ( 1 − α 11 x ) で、α 2 + α 11 = α 9 \alpha^2 + \alpha^{11} = \alpha^9 α 2 + α 11 = α 9 、α 2 α 11 = α 13 \alpha^2\alpha^{11} = \alpha^{13} α 2 α 11 = α 13 です。座標 2 2 2 と 11 11 11 を反転して c c c が復元されます。
Forney の公式の確認。 標数 2 2 2 では ( x 2 ) ′ = 0 (x^2)' = 0 ( x 2 ) ′ = 0 なので σ ′ ( x ) = α 9 \sigma'(x) = \alpha^9 σ ′ ( x ) = α 9 で、e i = ω / σ ′ = 1 e_i = \omega/\sigma' = 1 e i = ω / σ ′ = 1 となり、二元符号の誤りの値と合っています。
記録媒体の傷や通信路のフェージングでは、誤りは散らばらず、連続した区間に固まって起こります。
この節の命題のねらいは、「バースト誤りを訂正できる符号には冗長部分 n − k n - k n − k が最低どれだけ必要か」を、シンドロームの個数を数えることで下から押さえることです。長さ b b b 以下のバーストを区別するには、それぞれに別のシンドロームが対応していなければなりません。区別すべき語の個数が、シンドロームの取りうる個数 q n − k q^{n-k} q n − k を超えないという数え上げが、Reiger の限界の証明の骨格です。
定義 7.1 (バースト ) ↗
0 0 0 でない語 e ∈ F q n e \in \mathbb{F}_q^n e ∈ F q n が長さ l l l 以下の(巡回)バースト であるとは、ある i i i と、deg b < l \deg b < l deg b < l を満たす多項式 b ( x ) b(x) b ( x ) について、R n R_n R n の中で e ( x ) = x i b ( x ) e(x) = x^ib(x) e ( x ) = x i b ( x ) と書けることをいう。すなわち、e e e の 0 0 0 でない成分が、巡回的に連続する l l l 個の座標の中に収まることをいう。
命題 7.2 (バースト誤りの検出と訂正 ) ✓
巡回 [ n , k ] q [n, k]_q [ n , k ] q 符号 C C C は、長さ n − k n - k n − k 以下のバーストを符号語として含まない。したがって、長さ n − k n - k n − k 以下のバースト誤りをすべて検出する。
線形符号 C C C について、「長さ b b b 以下のバーストがすべて相異なるシンドロームをもち、どれもシンドロームが 0 0 0 でない」ことと、「C C C の 0 0 0 でない符号語は、長さ b b b 以下のバーストでも、そのようなバースト 2 つの差でもない」ことは同値である。
(Reiger の限界)2 の条件を満たす [ n , k ] q [n, k]_q [ n , k ] q 符号は、2 b ≤ n 2b \le n 2 b ≤ n のとき n − k ≥ 2 b n - k \ge 2b n − k ≥ 2 b を満たす。
証明(命題 7.2) (1) e = x i b ( x ) e = x^ib(x) e = x i b ( x ) (R n R_n R n の中で)、b ≠ 0 b \ne 0 b = 0 、deg b < n − k \deg b < n - k deg b < n − k が符号語だとします。x x x は R n R_n R n の単元(x ⋅ x n − 1 = 1 x \cdot x^{n-1} = 1 x ⋅ x n − 1 = 1 )で、C C C はイデアルなので、b = x n − i e ∈ C b = x^{n-i}e \in C b = x n − i e ∈ C です。C C C の 0 0 0 でない元を次数 n n n 未満の多項式で表すと生成多項式 g g g の倍数なので(定理 3.3 の 2)、次数は deg g = n − k \deg g = n - k deg g = n − k 以上です。これは deg b < n − k \deg b < n - k deg b < n − k に反します。誤り e e e が加わった受信語 c + e c + e c + e が符号語になるのは e ∈ C e \in C e ∈ C のときだけなので、このようなバーストは必ず検出されます。
(2) 検査行列を H H H とすると、語 e e e のシンドロームは H e T He^{\mathsf{T}} H e T で、H e T = H e ′ T He^{\mathsf{T}} = He'^{\mathsf{T}} H e T = H e ′ T は e − e ′ ∈ C e - e' \in C e − e ′ ∈ C と同値、H e T = 0 He^{\mathsf{T}} = 0 H e T = 0 は e ∈ C e \in C e ∈ C と同値です(定理 4.2[線形符号] )。これを長さ b b b 以下のバースト e ≠ e ′ e \ne e' e = e ′ に当てはめたものが主張です。
(3) 最初の 2 b 2b 2 b 個の座標の外で 0 0 0 である語の全体 U U U は q 2 b q^{2b} q 2 b 元からなります。u , u ′ ∈ U u, u' \in U u , u ′ ∈ U 、u ≠ u ′ u \ne u' u = u ′ とすると、u − u ′ u - u' u − u ′ は U U U の 0 0 0 でない元で、座標 0 , … , b − 1 0, \ldots, b-1 0 , … , b − 1 の部分 v v v と座標 b , … , 2 b − 1 b, \ldots, 2b-1 b , … , 2 b − 1 の部分 v ′ v' v ′ の和 v + v ′ v + v' v + v ′ に分かれます。v , v ′ v, v' v , v ′ はそれぞれ 0 0 0 か長さ b b b 以下のバーストなので、u − u ′ = v − ( − v ′ ) u - u' = v - (-v') u − u ′ = v − ( − v ′ ) は長さ b b b 以下のバーストか、そのようなバースト 2 つの差です。2 の条件から u − u ′ ∉ C u - u' \notin C u − u ′ ∈ / C で、u u u と u ′ u' u ′ のシンドロームは異なります。シンドロームは F q n − k \mathbb{F}_q^{n-k} F q n − k の元なので q 2 b ≤ q n − k q^{2b} \le q^{n-k} q 2 b ≤ q n − k です。
∎
2 の条件が成り立てば、シンドロームからバーストを一意に特定でき、長さ b b b 以下のバースト誤りをすべて訂正できます。Reiger の限界は、ランダムな誤りに対する Singleton 限界 n − k ≥ d − 1 ≥ 2 t n - k \ge d - 1 \ge 2t n − k ≥ d − 1 ≥ 2 t のバースト版です。
例 7.3 (CRC が検出できる誤り )
巡回冗長検査(CRC)では、次数 r r r の多項式 g ( x ) ∈ F 2 [ x ] g(x) \in \mathbb{F}_2[x] g ( x ) ∈ F 2 [ x ] (g ( 0 ) = 1 g(0) = 1 g ( 0 ) = 1 )を決め、情報 m ( x ) m(x) m ( x ) に、x r m ( x ) x^rm(x) x r m ( x ) を g g g で割った余り r ( x ) r(x) r ( x ) を付けて c ( x ) = x r m ( x ) + r ( x ) c(x) = x^rm(x) + r(x) c ( x ) = x r m ( x ) + r ( x ) を送ります(注意 3.6 )。受信側は受信語を g g g で割り、余りが 0 0 0 でなければ誤りがあったと判断します。誤り e ( x ) e(x) e ( x ) が見逃されるのは g ∣ e g \mid e g ∣ e のときだけです。
長さ r r r 以下のバースト。 e = x i b ( x ) e = x^ib(x) e = x i b ( x ) 、b ( 0 ) = 1 b(0) = 1 b ( 0 ) = 1 、deg b < r \deg b < r deg b < r とします。g ( 0 ) = 1 g(0) = 1 g ( 0 ) = 1 なので g g g と x x x は共通因子をもたず、g ∣ x i b g \mid x^ib g ∣ x i b なら g ∣ b g \mid b g ∣ b ですが、deg b < deg g \deg b < \deg g deg b < deg g なので不可能です。すべて検出されます(命題 7.2 の 1 と同じ議論で、語の長さが g g g の周期より短くても成り立ちます)。
奇数個の誤り。 g g g が x + 1 x + 1 x + 1 で割り切れるなら、g g g の倍数は x = 1 x = 1 x = 1 で 0 0 0 、つまり偶数重みなので、奇数重みの誤りはすべて検出されます。
2 個の誤り。 e = x i ( x j + 1 ) e = x^i(x^{j} + 1) e = x i ( x j + 1 ) が g g g の倍数になるのは g ∣ x j + 1 g \mid x^j + 1 g ∣ x j + 1 のときです。g ∣ x N + 1 g \mid x^{N} + 1 g ∣ x N + 1 となる最小の N N N (g g g の周期)より語が短ければ、2 個の誤りはすべて検出されます。
例 7.4 (Reed–Solomon 符号を F₂ に展開する )
F 2 m \mathbb{F}_{2^m} F 2 m の元を F 2 \mathbb{F}_2 F 2 上の基底で m m m ビットに書くと、F 2 m \mathbb{F}_{2^m} F 2 m 上の [ n , k , d ] [n, k, d] [ n , k , d ] 符号は二元 [ m n , m k ] [mn, mk] [ mn , mk ] 符号になり、最小距離は d d d 以上です(0 0 0 でないシンボルは 0 0 0 でないビットを少なくとも 1 つ含みます)。例 5.6 の符号からは二元 [ 21 , 9 ] [21, 9] [ 21 , 9 ] 符号(最小距離 5 5 5 以上)が得られます。
この符号はバーストに強い符号です。もとの符号が t t t 個のシンボル誤りを訂正できるとき、長さ ( t − 1 ) m + 1 (t-1)m + 1 ( t − 1 ) m + 1 ビット以下のバーストは高々 t t t 個のシンボルにしかまたがらないので、すべて訂正できます。[ 21 , 9 ] [21, 9] [ 21 , 9 ] 符号では t = 2 t = 2 t = 2 、m = 3 m = 3 m = 3 で、長さ 4 4 4 ビット以下のバーストを訂正します。Reiger の限界は b ≤ ( 21 − 9 ) / 2 = 6 b \le (21 - 9)/2 = 6 b ≤ ( 21 − 9 ) /2 = 6 です。
例 7.5 (CD と QR コード )
CD(コンパクトディスク)。 音楽 CD の誤り訂正(CIRC、cross-interleaved Reed–Solomon code)は、F 2 8 \mathbb{F}_{2^8} F 2 8 上の Reed–Solomon 符号を短縮した [ 32 , 28 , 5 ] [32, 28, 5] [ 32 , 28 , 5 ] 符号と [ 28 , 24 , 5 ] [28, 24, 5] [ 28 , 24 , 5 ] 符号の 2 段を、インターリーブ(シンボルの並べ替え)を挟んで組み合わせています。1 シンボルは 1 バイトです。インターリーブは、ディスクの傷による長いバーストを多くの符号語に分散させるためのものです(規格 IEC 60908)。
QR コード。 QR コードは F 2 8 = F 2 [ x ] / ( x 8 + x 4 + x 3 + x 2 + 1 ) \mathbb{F}_{2^8} = \mathbb{F}_2[x]/(x^8+x^4+x^3+x^2+1) F 2 8 = F 2 [ x ] / ( x 8 + x 4 + x 3 + x 2 + 1 ) 上の Reed–Solomon 符号を使い、誤り訂正レベル L・M・Q・H で、コード語のおよそ 7%・15%・25%・30% を復元できます(規格 ISO/IEC 18004)。汚れや破損は連続したモジュールに起こるバースト誤りで、バイト単位の符号が向いています。
どちらも、例 7.4 の「シンボルが数ビットのかたまり」という性質を利用しています。
例 7.6 (Shamir の秘密分散 )
秘密 s ∈ F q s \in \mathbb{F}_q s ∈ F q を n n n 人に分け、どの k k k 人が集まれば復元でき、k − 1 k - 1 k − 1 人では何も分からないようにします。f 1 , … , f k − 1 ∈ F q f_1, \ldots, f_{k-1} \in \mathbb{F}_q f 1 , … , f k − 1 ∈ F q を一様ランダムに選んで f ( x ) = s + f 1 x + ⋯ + f k − 1 x k − 1 f(x) = s + f_1x + \cdots + f_{k-1}x^{k-1} f ( x ) = s + f 1 x + ⋯ + f k − 1 x k − 1 とし、相異なる 0 0 0 でない a 1 , … , a n a_1, \ldots, a_n a 1 , … , a n に対して i i i 番目の人に f ( a i ) f(a_i) f ( a i ) を渡します。
分け前の列 ( f ( a 1 ) , … , f ( a n ) ) (f(a_1), \ldots, f(a_n)) ( f ( a 1 ) , … , f ( a n )) は R S k ( a ) \mathrm{RS}_k(a) RS k ( a ) の符号語です。k k k 人の分け前から f f f が決まるのは、次数 k k k 未満の多項式が k k k 点の値で決まるからです(補題 2.1 の 3。定理 5.5 の条件 3 の言い換え)。k − 1 k - 1 k − 1 人の分け前 f ( a i 1 ) , … , f ( a i k − 1 ) f(a_{i_1}), \ldots, f(a_{i_{k-1}}) f ( a i 1 ) , … , f ( a i k − 1 ) と任意の候補 s ′ ∈ F q s' \in \mathbb{F}_q s ′ ∈ F q に対しては、0 , a i 1 , … , a i k − 1 0, a_{i_1}, \ldots, a_{i_{k-1}} 0 , a i 1 , … , a i k − 1 の k k k 点で指定の値を取る次数 k k k 未満の多項式がちょうど 1 つあります(k k k 点での評価は k k k 次元空間の間の単射な線形写像なので全単射)。したがって、どの s ′ s' s ′ も同じ個数(1 個)の多項式と整合し、k − 1 k - 1 k − 1 人は s s s について何の情報も得ません。分け前の一部が改ざんされていても、定理 6.1 の復号で ⌊ ( n − k ) / 2 ⌋ \lfloor (n-k)/2 \rfloor ⌊( n − k ) /2 ⌋ 個までなら正しい f f f が復元できます(McEliece–Sarwate、参考文献 [6])。
演習 8.1 易
F 2 \mathbb{F}_2 F 2 上の長さ 7 7 7 、生成多項式 g = x 3 + x + 1 g = x^3 + x + 1 g = x 3 + x + 1 の巡回符号 C C C について、生成行列、検査多項式 h h h 、双対符号 C ⊥ C^{\perp} C ⊥ の生成多項式を求めよ。また C ⊥ ⊆ C C^{\perp} \subseteq C C ⊥ ⊆ C を示せ。
解答 生成行列は g , x g , x 2 g , x 3 g g, xg, x^2g, x^3g g , xg , x 2 g , x 3 g の係数を並べた
G = ( 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 ) G = \begin{pmatrix} 1&1&0&1&0&0&0\\ 0&1&1&0&1&0&0\\ 0&0&1&1&0&1&0\\ 0&0&0&1&1&0&1 \end{pmatrix} G = 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 です。h = ( x 7 − 1 ) / g = ( x + 1 ) ( x 3 + x 2 + 1 ) = x 4 + x 2 + x + 1 h = (x^7 - 1)/g = (x+1)(x^3+x^2+1) = x^4 + x^2 + x + 1 h = ( x 7 − 1 ) / g = ( x + 1 ) ( x 3 + x 2 + 1 ) = x 4 + x 2 + x + 1 で、係数を逆順にして h ∗ = x 4 + x 3 + x 2 + 1 h^{*} = x^4 + x^3 + x^2 + 1 h ∗ = x 4 + x 3 + x 2 + 1 です。h ( 0 ) = 1 h(0) = 1 h ( 0 ) = 1 なので、定理 3.5 により C ⊥ C^{\perp} C ⊥ の生成多項式は x 4 + x 3 + x 2 + 1 = ( x + 1 ) ( x 3 + x + 1 ) x^4 + x^3 + x^2 + 1 = (x+1)(x^3+x+1) x 4 + x 3 + x 2 + 1 = ( x + 1 ) ( x 3 + x + 1 ) です。これは g g g の倍数なので、C ⊥ C^{\perp} C ⊥ の元 a ⋅ ( x + 1 ) g a\cdot(x+1)g a ⋅ ( x + 1 ) g はすべて C C C に属し、C ⊥ ⊆ C C^{\perp} \subseteq C C ⊥ ⊆ C です。C ⊥ C^{\perp} C ⊥ は [ 7 , 3 , 4 ] [7, 3, 4] [ 7 , 3 , 4 ] 単体符号です。
演習 8.2 標準
例 4.7 の [ 15 , 7 , 5 ] [15, 7, 5] [ 15 , 7 , 5 ] BCH 符号 C C C の双対符号 C ⊥ C^{\perp} C ⊥ の定義集合と次元を求め、d ( C ⊥ ) = 4 d(C^{\perp}) = 4 d ( C ⊥ ) = 4 を示せ。
解答 C C C の定義集合は T = { 1 , 2 , 3 , 4 , 6 , 8 , 9 , 12 } T = \{1,2,3,4,6,8,9,12\} T = { 1 , 2 , 3 , 4 , 6 , 8 , 9 , 12 } 、補集合は { 0 , 5 , 7 , 10 , 11 , 13 , 14 } \{0,5,7,10,11,13,14\} { 0 , 5 , 7 , 10 , 11 , 13 , 14 } です。系 4.3 により C ⊥ C^{\perp} C ⊥ の定義集合は符号を反転した { 0 , 10 , 8 , 5 , 4 , 2 , 1 } = { 0 , 1 , 2 , 4 , 5 , 8 , 10 } \{0, 10, 8, 5, 4, 2, 1\} = \{0,1,2,4,5,8,10\} { 0 , 10 , 8 , 5 , 4 , 2 , 1 } = { 0 , 1 , 2 , 4 , 5 , 8 , 10 } で、次元は 15 − 7 = 8 15 - 7 = 8 15 − 7 = 8 です。連続する指数 0 , 1 , 2 0, 1, 2 0 , 1 , 2 を含むので、BCH 限界(b = 0 b = 0 b = 0 、δ = 4 \delta = 4 δ = 4 )から d ( C ⊥ ) ≥ 4 d(C^{\perp}) \ge 4 d ( C ⊥ ) ≥ 4 です。生成多項式は ( x + 1 ) m 1 m 5 (x+1)m_1m_5 ( x + 1 ) m 1 m 5 で、m 1 m 5 = ( x 4 + x + 1 ) ( x 2 + x + 1 ) = x 6 + x 5 + x 4 + x 3 + 1 m_1m_5 = (x^4+x+1)(x^2+x+1) = x^6+x^5+x^4+x^3+1 m 1 m 5 = ( x 4 + x + 1 ) ( x 2 + x + 1 ) = x 6 + x 5 + x 4 + x 3 + 1 、これに x + 1 x + 1 x + 1 を掛けると x 7 + x 3 + x + 1 x^7 + x^3 + x + 1 x 7 + x 3 + x + 1 となり、重み 4 4 4 の符号語です。よって d ( C ⊥ ) = 4 d(C^{\perp}) = 4 d ( C ⊥ ) = 4 です。
演習 8.3 標準
n = q − 1 n = q - 1 n = q − 1 、α \alpha α を F q × \mathbb{F}_q^{\times} F q × の生成元、a j = α j a_j = \alpha^j a j = α j (0 ≤ j ≤ n − 1 0 \le j \le n-1 0 ≤ j ≤ n − 1 )、1 ≤ k ≤ n − 1 1 \le k \le n-1 1 ≤ k ≤ n − 1 とする。R S k ( a ) ⊥ = G R S n − k ( a , v ) \mathrm{RS}_k(a)^{\perp} = \mathrm{GRS}_{n-k}(a, v) RS k ( a ) ⊥ = GRS n − k ( a , v ) 、v j = α j v_j = \alpha^j v j = α j であることを示せ。
解答 定理 5.4 により R S k ( a ) \mathrm{RS}_k(a) RS k ( a ) の定義集合は T = { 1 , … , n − k } T = \{1, \ldots, n-k\} T = { 1 , … , n − k } です。補集合は { 0 } ∪ { n − k + 1 , … , n − 1 } \{0\} \cup \{n-k+1, \ldots, n-1\} { 0 } ∪ { n − k + 1 , … , n − 1 } で、符号を反転すると { 0 , 1 , … , k − 1 } \{0, 1, \ldots, k-1\} { 0 , 1 , … , k − 1 } です。系 4.3 により、R S k ( a ) ⊥ \mathrm{RS}_k(a)^{\perp} RS k ( a ) ⊥ は定義集合 { 0 , 1 , … , k − 1 } \{0, 1, \ldots, k-1\} { 0 , 1 , … , k − 1 } の巡回 [ n , n − k ] [n, n-k] [ n , n − k ] 符号です。
一方、G R S n − k ( a , v ) \mathrm{GRS}_{n-k}(a, v) GRS n − k ( a , v ) の元は c j = α j f ( α j ) = f ~ ( α j ) c_j = \alpha^jf(\alpha^j) = \tilde f(\alpha^j) c j = α j f ( α j ) = f ~ ( α j ) 、f ~ = x f \tilde f = xf f ~ = x f と書け、f ~ = ∑ l f ~ l x l \tilde f = \sum_l \tilde f_lx^l f ~ = ∑ l f ~ l x l は f ~ 0 = 0 \tilde f_0 = 0 f ~ 0 = 0 かつ f ~ l = 0 \tilde f_l = 0 f ~ l = 0 (l ≥ n − k + 1 l \ge n-k+1 l ≥ n − k + 1 )を満たします。補題 5.3 の 2 から c ( α i ) = n f ~ l c(\alpha^i) = n\tilde f_l c ( α i ) = n f ~ l (l ≡ − i l \equiv -i l ≡ − i )で、i = 0 i = 0 i = 0 なら l = 0 l = 0 l = 0 、1 ≤ i ≤ k − 1 1 \le i \le k-1 1 ≤ i ≤ k − 1 なら l = n − i ≥ n − k + 1 l = n - i \ge n-k+1 l = n − i ≥ n − k + 1 なので、c ( α i ) = 0 c(\alpha^i) = 0 c ( α i ) = 0 (0 ≤ i ≤ k − 1 0 \le i \le k-1 0 ≤ i ≤ k − 1 )です。よって G R S n − k ( a , v ) ⊆ R S k ( a ) ⊥ \mathrm{GRS}_{n-k}(a, v) \subseteq \mathrm{RS}_k(a)^{\perp} GRS n − k ( a , v ) ⊆ RS k ( a ) ⊥ で、次元がともに n − k n - k n − k なので一致します。
演習 8.4 標準
gcd ( n , q ) ≠ 1 \gcd(n, q) \ne 1 g cd( n , q ) = 1 の例として、F 2 \mathbb{F}_2 F 2 上の長さ 4 4 4 の巡回符号をすべて求め、定理 3.3 の 4 の個数の式 2 t 2^{t} 2 t が成り立たないことを確かめよ。
解答 F 2 \mathbb{F}_2 F 2 上で x 4 − 1 = ( x + 1 ) 4 x^4 - 1 = (x+1)^4 x 4 − 1 = ( x + 1 ) 4 です。モニックな約数は ( x + 1 ) j (x+1)^j ( x + 1 ) j (0 ≤ j ≤ 4 0 \le j \le 4 0 ≤ j ≤ 4 )の 5 個なので、巡回符号は 5 個です(定理 3.3 の 3)。既約因子は x + 1 x + 1 x + 1 の 1 個で 2 1 = 2 2^1 = 2 2 1 = 2 とは一致しません。重根があると、約数は既約因子の部分集合では決まらず、重複度の選び方の数だけあります。5 個の符号は、j = 0 j = 0 j = 0 が全空間、j = 1 j = 1 j = 1 が偶数重みの [ 4 , 3 , 2 ] [4, 3, 2] [ 4 , 3 , 2 ] 符号、j = 2 j = 2 j = 2 が g = x 2 + 1 g = x^2 + 1 g = x 2 + 1 の [ 4 , 2 , 2 ] [4, 2, 2] [ 4 , 2 , 2 ] 符号 { 0000 , 1010 , 0101 , 1111 } \{0000, 1010, 0101, 1111\} { 0000 , 1010 , 0101 , 1111 } 、j = 3 j = 3 j = 3 が g = x 3 + x 2 + x + 1 g = x^3+x^2+x+1 g = x 3 + x 2 + x + 1 の反復符号 [ 4 , 1 , 4 ] [4, 1, 4] [ 4 , 1 , 4 ] 、j = 4 j = 4 j = 4 が { 0 } \{0\} { 0 } です。
F. J. MacWilliams, N. J. A. Sloane, The Theory of Error-Correcting Codes , North-Holland, 1977 — 第 7 章(巡回符号)、第 9 章(BCH 符号)、第 10 章(Reed–Solomon 符号)。
J. H. van Lint, Introduction to Coding Theory , 3rd ed., Graduate Texts in Mathematics 86, Springer, 1999 — 巡回符号と BCH 符号の章。
R. M. Roth, Introduction to Coding Theory , Cambridge University Press, 2006 — 一般化 Reed–Solomon 符号とその復号(鍵方程式、互除法)の章。
I. S. Reed, G. Solomon, “Polynomial codes over certain finite fields”, Journal of the Society for Industrial and Applied Mathematics 8 (1960), 300–304.
Y. Sugiyama, M. Kasahara, S. Hirasawa, T. Namekawa, “A method for solving key equation for decoding Goppa codes”, Information and Control 27 (1975), 87–99.
R. J. McEliece, D. V. Sarwate, “On sharing secrets and Reed–Solomon codes”, Communications of the ACM 24 (1981), 583–584. 秘密分散の原論文は A. Shamir, “How to share a secret”, Communications of the ACM 22 (1979), 612–613。
執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12