コンテンツにスキップ

巡回符号・BCH 符号・Reed–Solomon 符号:x^n − 1 の約数と零点で符号を設計する

対象読者: 本テーマ第 2〜3 章(円分剰余類・最小多項式、線形符号の生成行列と検査行列)と、学部の環とイデアル、Vandermonde 行列式、ユークリッドの互除法を学んだ人。

前提となる記事:有限体上の多項式:最小多項式・円分剰余類・トレースとノルム、線形符号:生成行列・検査行列・符号の限界式

生 Markdown

データを送ったり保存したりすると、ノイズや傷で一部が壊れることがあります。そこで元のデータに余分な情報を付けておき、壊れた箇所を見つけて直せるようにする仕組みが誤り訂正符号です。この記事では、符号を「多項式の割り算」という身近な道具で設計し、CD や QR コードに使われる Reed–Solomon 符号が、なぜ多くの誤りを直せるのかを証明します。読み終えると、符号の最小距離を設計の段階で保証する方法と、受信した語から誤りを取り除く手順が分かります。

  • 長さ nn の巡回符号は、剰余環 Rn=Fq[x]/(xn−1)R_n = \mathbb{F}_q[x]/(x^n-1) のイデアルと同じものです。各巡回符号は xn−1x^n - 1 のモニックな約数 gg(生成多項式)でただ 1 通りに表され、次元は n−deg⁡gn - \deg g です。gcd⁡(n,q)=1\gcd(n, q) = 1 なら巡回符号は 2t2^{t} 個(tt は xn−1x^n-1 の既約因子の個数)です。
  • gg の根の指数の集合(定義集合)で符号を指定すると、「連続する δ−1\delta - 1 個の冪 αb,…,αb+δ−2\alpha^b, \ldots, \alpha^{b+\delta-2} が零点なら最小距離は δ\delta 以上」という BCH 限界が Vandermonde 行列式から出ます。
  • Reed–Solomon 符号は、次数 kk 未満の多項式を nn 個の点で評価して作る [n,k,n−k+1]q[n, k, n-k+1]_q 符号で、Singleton 限界の等号を達成します(MDS 符号。最小距離が理論上の上限に届いている符号のこと)。n=q−1n = q - 1 のときは零点 α,α2,…,αn−k\alpha, \alpha^2, \ldots, \alpha^{n-k} をもつ BCH 符号と一致します。
  • 復号は 2 通り示します。Berlekamp–Welch の方法は連立一次方程式を 1 つ解くだけで ⌊(n−k)/2⌋\lfloor (n-k)/2 \rfloor 個までの誤りを訂正します。鍵方程式 σ(x)S(x)≡ω(x)(modx2t)\sigma(x) S(x) \equiv \omega(x) \pmod{x^{2t}} は拡張 Euclid の互除法で解け(Sugiyama の方法)、誤りの値は Forney の公式で求まります。
  • 巡回 [n,k][n, k] 符号は長さ n−kn - k 以下のバースト誤りをすべて検出し、長さ bb 以下のバーストをすべて訂正できる線形符号は n−k≥2bn - k \ge 2b を満たします。

第 3 章 では、線形符号を「Fqn\mathbb{F}_q^n の部分空間」として扱い、最小距離の上界(Singleton 限界・Hamming 限界)と、ランダムな構成による下界(Gilbert–Varshamov 限界)を示しました。しかし、部分空間を 1 つ与えられても、その最小距離を求めるには一般にすべての符号語を調べるしかありません。次元 kk が 100 を超えると、これは実行できません。

そこで、符号に代数的な構造を課して、最小距離を設計の段階で保証することを考えます。この章で課す構造は「座標の巡回シフトで不変」という 1 つだけです。語 (c0,…,cn−1)(c_0, \ldots, c_{n-1}) を多項式 c0+c1x+⋯+cn−1xn−1c_0 + c_1 x + \cdots + c_{n-1}x^{n-1} と同一視すると、巡回シフトは xx を掛けて xn=1x^n = 1 とみなす操作になり、符号は環 Fq[x]/(xn−1)\mathbb{F}_q[x]/(x^n-1) のイデアルになります。すると符号の分類は「xn−1x^n - 1 の約数の分類」になり、これは 第 2 章 で済んでいます。さらに、約数を根の集合で指定すれば、符号語であることが「いくつかの点で値が 00 になる多項式であること」に言い換えられ、最小距離の評価が「次数の低い多項式は根を多くもてない」という事実に帰着します。

この見方から、BCH 符号(Bose–Ray-Chaudhuri 1960、Hocquenghem 1959)と Reed–Solomon 符号(1960)が出てきます。後者は CD・QR コード・深宇宙通信・分散ストレージで今も使われている符号です。

この章が前の章のどの定理に乗っているかを先にまとめます。

この章の定理使う前の章の定理
巡回符号の個数(定理 3.3)第 2 章の xn−1x^n - 1 の分解
零点による記述(命題 4.2)、BCH 符号の次元(命題 4.6)第 2 章の最小多項式と共役元
双対符号(定理 3.5)、MDS 符号の特徴づけ(定理 5.5)第 3 章の双対符号の次元、検査行列と最小距離
Reed–Solomon 符号(定理 5.2)第 3 章の Singleton 限界

2. 準備:多項式の除法と Vandermonde 行列式

Section titled “2. 準備:多項式の除法と Vandermonde 行列式”

qq は素数冪、Fq\mathbb{F}_q は qq 元体です。語 c=(c0,c1,…,cn−1)∈Fqnc = (c_0, c_1, \ldots, c_{n-1}) \in \mathbb{F}_q^n の座標は 00 から数え、cc に多項式

c(x)=c0+c1x+⋯+cn−1xn−1∈Fq[x]c(x) = c_0 + c_1 x + \cdots + c_{n-1}x^{n-1} \in \mathbb{F}_q[x]

を対応させます。Hamming 重み wt⁡(c)\operatorname{wt}(c)、最小距離 d(C)d(C)、双対符号 C⊥C^{\perp}、[n,k,d]q[n, k, d]_q 符号という言葉は第 3 章のとおりです。Fqn\mathbb{F}_q^n の標準的な双線形形式を c⋅u=∑iciuic \cdot u = \sum_{i} c_i u_i と書きます。

多項式の割り算と「次数 dd の多項式の根は dd 個以下」という事実は、この章の証明のほとんどで使います。体 KK の上で述べ直しておきます。

補題 2.1(除法の原理と根の個数)✓

KK を体とする。

  1. a,b∈K[x]a, b \in K[x]、b≠0b \ne 0 に対し、a=sb+ra = sb + r、deg⁡r<deg⁡b\deg r < \deg b(または r=0r = 0)を満たす s,r∈K[x]s, r \in K[x] がただ 1 組ある。
  2. f∈K[x]f \in K[x] と β∈K\beta \in K について、f(β)=0f(\beta) = 0 であることと x−βx - \beta が ff を割り切ることは同値である。
  3. 00 でない f∈K[x]f \in K[x] の相異なる根は deg⁡f\deg f 個以下である。とくに、次数が dd 以下の多項式が d+1d + 1 個の相異なる点で 00 になれば、零多項式である。
証明(補題 2.1)

(1) 存在を deg⁡a\deg a についての帰納法で示します。a=0a = 0 または deg⁡a<deg⁡b\deg a < \deg b なら s=0s = 0、r=ar = a とします。deg⁡a≥deg⁡b\deg a \ge \deg b のとき、a,ba, b の最高次の係数を am,bla_m, b_l(m=deg⁡am = \deg a、l=deg⁡bl = \deg b)とすると、a′=a−(am/bl)xm−lba' = a - (a_m/b_l)x^{m-l} b は xmx^m の項が消えるので a′=0a' = 0 または deg⁡a′<m\deg a' < m です。帰納法の仮定で a′=s′b+ra' = s'b + r と書け、a=(s′+(am/bl)xm−l)b+ra = (s' + (a_m/b_l)x^{m-l})b + r となります。一意性: sb+r=s′b+r′sb + r = s'b + r' なら (s−s′)b=r′−r(s - s')b = r' - r です。s≠s′s \ne s' とすると、K[x]K[x] は整域で次数は積で加法的(定理 6.2[環と体の基礎])なので左辺の次数は deg⁡b\deg b 以上ですが、右辺は 00 か次数が deg⁡b\deg b 未満で、矛盾します。よって s=s′s = s'、r=r′r = r' です。

(2) (1) を b=x−βb = x - \beta に使うと f=s⋅(x−β)+rf = s\cdot(x - \beta) + r で、rr は定数です。x=βx = \beta を代入すると r=f(β)r = f(\beta) なので、f(β)=0f(\beta) = 0 は r=0r = 0、つまり x−βx - \beta が ff を割り切ることと同値です。

(3) deg⁡f\deg f についての帰納法です。deg⁡f=0\deg f = 0 なら ff は 00 でない定数で根をもちません。deg⁡f=d≥1\deg f = d \ge 1 で根 β\beta があれば、(2) により f=(x−β)f1f = (x - \beta)f_1、deg⁡f1=d−1\deg f_1 = d - 1 です。β\beta と異なる根 β′\beta' は (β′−β)f1(β′)=0(\beta' - \beta)f_1(\beta') = 0 と KK が整域であること(定理 5.2[環と体の基礎])から f1f_1 の根で、帰納法の仮定によりそれは d−1d - 1 個以下です。したがって ff の根は dd 個以下です。後半は対偶です。

補題 2.2(Vandermonde 行列式)✓

RR を可換環、x1,…,xm∈Rx_1, \ldots, x_m \in R とする。mm 次正方行列 V(x1,…,xm)=(xj i)0≤i≤m−1, 1≤j≤mV(x_1, \ldots, x_m) = (x_j^{\,i})_{0 \le i \le m-1,\ 1 \le j \le m}(第 ii 行が ii 乗を並べた行)について

det⁡V(x1,…,xm)=∏1≤i<j≤m(xj−xi)\det V(x_1, \ldots, x_m) = \prod_{1 \le i < j \le m} (x_j - x_i)

が成り立つ。とくに RR が体で x1,…,xmx_1, \ldots, x_m が相異なれば VV は正則である。

証明(補題 2.2)

体の場合。 R=KR = K が体のとき、mm についての帰納法で示します。m=1m = 1 では両辺とも 11 です(空な積は 11)。m≥2m \ge 2 とします。i=m−1,m−2,…,1i = m-1, m-2, \ldots, 1 の順に、第 ii 行から第 i−1i-1 行の x1x_1 倍を引きます。この操作で行列式は変わりません(命題 4.3[行列式とその性質] の 3 と 5)。操作のあと、第 00 行はすべて 11 のまま、第 ii 行(i≥1i \ge 1)の第 jj 成分は

xj i−x1xj i−1=xj i−1(xj−x1)x_j^{\,i} - x_1 x_j^{\,i-1} = x_j^{\,i-1}(x_j - x_1)

で、第 1 列は上から 1,0,…,01, 0, \ldots, 0 になります。第 1 列で余因子展開すると(定理 5.2[行列式とその性質])、行列式は、成分が xj i−1(xj−x1)x_j^{\,i-1}(x_j - x_1)(1≤i≤m−11 \le i \le m-1、2≤j≤m2 \le j \le m)の m−1m - 1 次行列の行列式に等しくなります。この行列の第 jj 列から共通因子 xj−x1x_j - x_1 をくくり出すと(同命題の 2)

det⁡V(x1,…,xm)=∏j=2m(xj−x1)⋅det⁡V(x2,…,xm)\det V(x_1, \ldots, x_m) = \prod_{j=2}^{m}(x_j - x_1)\cdot \det V(x_2, \ldots, x_m)

で、帰納法の仮定から主張が従います。

可換環の場合。 mm 個の不定元の整数係数多項式環 A=Z[X1,…,Xm]A = \mathbb{Z}[X_1, \ldots, X_m] は整域で、その商体 KK は体です。体の場合を KK の元 X1,…,XmX_1, \ldots, X_m に使うと、det⁡V(X1,…,Xm)=∏i<j(Xj−Xi)\det V(X_1, \ldots, X_m) = \prod_{i<j}(X_j - X_i) が KK の中で、したがって両辺が属する AA の中で成り立ちます。行列式は成分の整数係数多項式(Leibniz の公式、定義 3.1[行列式とその性質])なので、Xj↦xjX_j \mapsto x_j で定まる環準同型 A→RA \to R でこの等式を写すと、RR での等式になります。

正則性。 KK が体で xjx_j が相異なれば右辺は 00 でない元の積で 00 でなく、VV は正則です(定理 7.1[行列式とその性質])。

実数の場合の同じ式は 多項式補間 で補間多項式の一意性に使いました。有限体の上でも役割は同じで、「相異なる点での値が多項式を決める」ことの行列による表現です。

3.1. 巡回符号は RnR_n のイデアル

Section titled “3.1. 巡回符号は RnR_nRn​ のイデアル”

定義 3.1(巡回符号)↗

線形符号 C⊆FqnC \subseteq \mathbb{F}_q^n が巡回符号であるとは、(c0,c1,…,cn−1)∈C(c_0, c_1, \ldots, c_{n-1}) \in C ならば、その巡回シフト (cn−1,c0,c1,…,cn−2)(c_{n-1}, c_0, c_1, \ldots, c_{n-2}) も CC に属することをいう。

Rn=Fq[x]/(xn−1)R_n = \mathbb{F}_q[x]/(x^n - 1) とおきます。補題 2.1 の 1 により、RnR_n の各剰余類は次数 nn 未満の多項式をちょうど 1 つ含むので、π:Fqn→Rn\pi : \mathbb{F}_q^n \to R_n、c↦c(x) mod (xn−1)c \mapsto c(x) \bmod (x^n - 1) は Fq\mathbb{F}_q 線形な全単射です。以後、π\pi で Fqn\mathbb{F}_q^n と RnR_n を同一視します。

定理 3.2(巡回符号とイデアル)✓

線形符号 C⊆FqnC \subseteq \mathbb{F}_q^n が巡回符号であることと、π(C)\pi(C) が環 RnR_n のイデアルであることは同値である。

証明(定理 3.2)

RnR_n の中で xn=1x^n = 1 なので

x⋅c(x)=c0x+c1x2+⋯+cn−2xn−1+cn−1xn=cn−1+c0x+⋯+cn−2xn−1x \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}

です。つまり、RnR_n で xx を掛けることが巡回シフトです。

π(C)\pi(C) がイデアルなら、xx 倍で閉じているので CC は巡回シフトで閉じています。逆に CC が巡回符号なら、π(C)\pi(C) は Fq\mathbb{F}_q 部分空間で xx 倍で閉じているので、繰り返して xix^i 倍で閉じ、線形性から任意の多項式 ∑iaixi\sum_i a_i x^i 倍で閉じます。RnR_n の元はすべて多項式の類なので、π(C)\pi(C) は加法で閉じ、RnR_n の元を掛けても閉じる部分集合、すなわちイデアルです(命題 3.2[イデアルと剰余環])。

定理 3.3(生成多項式と巡回符号の分類)✓

C⊆FqnC \subseteq \mathbb{F}_q^n を巡回符号とする。

  1. xn−1x^n - 1 のモニックな約数 g(x)g(x) で、C={ a(x)g(x) mod (xn−1):a∈Fq[x] }C = \{\, a(x)g(x) \bmod (x^n-1) : a \in \mathbb{F}_q[x] \,\} となるものがただ 1 つある。これを CC の生成多項式という。
  2. k=n−deg⁡gk = n - \deg g とおくと、C={ a(x)g(x):deg⁡a<k }C = \{\, a(x)g(x) : \deg a < k \,\}(k=0k = 0 のときは C={0}C = \{0\})で、g,xg,…,xk−1gg, xg, \ldots, x^{k-1}g が CC の基底である。とくに dim⁡C=n−deg⁡g\dim C = n - \deg g。
  3. 逆に、xn−1x^n - 1 のモニックな約数 gg はどれも、ある巡回符号の生成多項式である。したがって長さ nn の巡回符号は xn−1x^n - 1 のモニックな約数と 1 対 1 に対応する。
  4. gcd⁡(n,q)=1\gcd(n, q) = 1 で、xn−1x^n - 1 の Fq\mathbb{F}_q 上の相異なるモニック既約因子が tt 個あれば、長さ nn の巡回符号はちょうど 2t2^{t} 個ある。
証明(定理 3.3)

(1) I={f∈Fq[x]:f mod (xn−1)∈C}I = \{ f \in \mathbb{F}_q[x] : f \bmod (x^n - 1) \in C \} とおきます。これはイデアル π(C)\pi(C)(定理 3.2)の、自然な全射準同型 Fq[x]→Rn\mathbb{F}_q[x] \to R_n による逆像で、和と Fq[x]\mathbb{F}_q[x] の元による積で閉じるので Fq[x]\mathbb{F}_q[x] のイデアルです。xn−1∈Ix^n - 1 \in I なので I≠{0}I \ne \{0\} です。Fq[x]\mathbb{F}_q[x] は単項イデアル整域なので(命題 7.2[イデアルと剰余環])I=(g)I = (g) と書け、最高次の係数で割って gg をモニックに取れます。xn−1∈(g)x^n - 1 \in (g) なので gg は xn−1x^n - 1 を割り切り、CC は II の像なので C={ag mod (xn−1)}C = \{ ag \bmod (x^n - 1) \} です。

一意性: モニックな約数 g′g' も同じ性質をもつとします。g′ mod (xn−1)∈Cg' \bmod (x^n-1) \in C なので g′∈I=(g)g' \in I = (g)、つまり g∣g′g \mid g' です。逆に g mod (xn−1)∈Cg \bmod (x^n - 1) \in C なので g≡ag′(modxn−1)g \equiv a g' \pmod{x^n - 1} となる aa があり、g′∣xn−1g' \mid x^n - 1 と合わせて g′∣gg' \mid g です。互いに割り切るモニック多項式は、次数が等しく商が定数 11 なので一致します。

(2) h=(xn−1)/gh = (x^n - 1)/g とおくと deg⁡h=k\deg h = k です。CC の元を次数 nn 未満の多項式 cc で表すと、c∈Ic \in I なので c=bgc = bg(b∈Fq[x]b \in \mathbb{F}_q[x])と書けます。c≠0c \ne 0 なら 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⁡(ag)<n\deg(ag) < n で、agag はそのまま CC の元を表す次数 nn 未満の多項式です。よって C={ag:deg⁡a<k}C = \{ ag : \deg a < k\} で、これは g,xg,…,xk−1gg, xg, \ldots, x^{k-1}g で張られます。これら kk 個は次数が deg⁡g,deg⁡g+1,…,n−1\deg g, \deg g + 1, \ldots, n - 1 と相異なるので一次独立です(一次結合が 00 なら、最高次の項を比べて係数が順に 00 になります)。

(3) モニックな約数 gg に対し、Cg={ag mod (xn−1)}C_g = \{ ag \bmod (x^n - 1) \} は RnR_n のイデアルなので巡回符号です(定理 3.2)。gg は (1) の性質をもつので、(1) の一意性から CgC_g の生成多項式は gg です。対応 C↦gC \mapsto g と g↦Cgg \mapsto C_g は互いに逆です。

(4) gcd⁡(n,q)=1\gcd(n, q) = 1 のとき、xn−1=f1f2⋯ftx^n - 1 = f_1 f_2 \cdots f_t と相異なるモニック既約多項式の積に分解します(定理 2.4[有限体上の多項式])。Fq[x]\mathbb{F}_q[x] は一意分解整域なので(定理 2.5[多項式環と体の拡大])、モニックな約数は {f1,…,ft}\{f_1, \ldots, f_t\} の部分集合の積で、異なる部分集合は異なる積を与えます。部分集合は 2t2^{t} 個です。

g(x)=g0+g1x+⋯+gn−kxn−kg(x) = g_0 + g_1 x + \cdots + g_{n-k}x^{n-k} のとき、(2) の基底を行に並べた

G=(g0g1⋯gn−kg0g1⋯gn−k⋱⋱g0g1⋯gn−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}

が生成行列です(空欄は 00)。k×nk \times n 行列を覚える代わりに、次数 n−kn - k の多項式 1 つを覚えれば済みます。これが巡回符号の実装上の利点です。

例 3.4(長さ 7 の二元巡回符号 8 個)

F2\mathbb{F}_2 上で x7−1=(x+1)(x3+x+1)(x3+x2+1)x^7 - 1 = (x+1)(x^3+x+1)(x^3+x^2+1) です(右辺を展開して確かめられます)。既約因子は t=3t = 3 個なので、巡回符号は 23=82^3 = 8 個です。

生成多項式 gg[n,k,d][n, k, d]符号
11[7,7,1][7, 7, 1]全空間
x+1x + 1[7,6,2][7, 6, 2]偶数重みの語全体(パリティ検査符号)
x3+x+1x^3 + x + 1[7,4,3][7, 4, 3]Hamming 符号
x3+x2+1x^3 + x^2 + 1[7,4,3][7, 4, 3]Hamming 符号(座標を逆順にしたもの)
(x+1)(x3+x+1)=x4+x3+x2+1(x+1)(x^3+x+1) = x^4+x^3+x^2+1[7,3,4][7, 3, 4]単体符号
(x+1)(x3+x2+1)=x4+x2+x+1(x+1)(x^3+x^2+1) = x^4+x^2+x+1[7,3,4][7, 3, 4]単体符号
(x3+x+1)(x3+x2+1)=x6+x5+⋯+1(x^3+x+1)(x^3+x^2+1) = x^6 + x^5 + \cdots + 1[7,1,7][7, 1, 7]反復符号
x7−1x^7 - 1[7,0,−][7, 0, -]{0}\{0\}

最小距離は次のように分かります。g=x+1g = x+1 のとき、符号語 a(x)(x+1)a(x)(x+1) は x=1x = 1 で 00、つまり係数の和が 00 なので偶数重みで、次元が 66 なので偶数重みの語全体です。g=x3+x+1g = x^3+x+1 が Hamming 符号を与えることは 命題 4.8 で示します。次元 33 の 2 つは、Hamming 符号の偶数重みの部分符号で、Hamming 符号の重みは 0,3,4,70, 3, 4, 7 なので(第 5 章 で重み多項式を計算します)、00 でない語の重みはすべて 44 です。

h(x)=(xn−1)/g(x)h(x) = (x^n - 1)/g(x) を CC の検査多項式といいます。c=agc = ag なら ch=a(xn−1)≡0c h = a(x^n - 1) \equiv 0 なので、CC の元は RnR_n の中で hh を掛けると 00 になります。この関係を係数で書くと、双対符号が読み取れます。次数 mm の多項式 ff(f(0)≠0f(0) \ne 0)の相反多項式を f∗(x)=xmf(1/x)f^{*}(x) = x^{m} f(1/x) と定めます。f=∑i=0mfixif = \sum_{i=0}^m f_i x^i なら f∗=∑i=0mfm−ixif^{*} = \sum_{i=0}^m f_{m-i}x^i で、係数を逆順に並べたものです。次の定理のねらいは、双対符号(もとの符号と直交する語の全体)もまた巡回符号になり、その生成多項式が hh の係数を逆順にしたものから読み取れる、ということです。証明は、hh の係数の並びが符号語との内積で 00 になることを見て、そのシフトが C⊥C^{\perp} の基底になると次元で確かめる、という順に進みます。

定理 3.5(巡回符号の双対符号)✓

CC を生成多項式 gg、検査多項式 h=(xn−1)/gh = (x^n - 1)/g の巡回 [n,k][n, k] 符号とする(k=deg⁡hk = \deg h)。このとき C⊥C^{\perp} も巡回符号で、その生成多項式は h∗(x)/h(0)h^{*}(x)/h(0) である。

証明(定理 3.5)

gh=xn−1gh = x^n - 1 の定数項を比べると g(0)h(0)=−1g(0)h(0) = -1 なので、g(0)≠0g(0) \ne 0、h(0)≠0h(0) \ne 0 です。h=∑j=0khjxjh = \sum_{j=0}^{k} h_j x^j と書きます。

h∗h^{*} のシフトは CC と直交する。 c∈Cc \in C を c=agc = ag、deg⁡a<k\deg a < k と書きます(定理 3.3 の 2)。多項式として c(x)h(x)=a(x)(xn−1)=a(x)xn−a(x)c(x)h(x) = a(x)(x^n - 1) = a(x)x^n - a(x) です。deg⁡a<k\deg a < k なので、右辺の xmx^m の係数は k≤m≤n−1k \le m \le n - 1 で 00 です。左辺の xmx^m の係数は ∑icihm−i\sum_{i} c_i h_{m-i}(0≤m−i≤k0 \le m - i \le k の範囲の和)なので

∑i=m−kmci hm−i=0(k≤m≤n−1)\sum_{i=m-k}^{m} c_i\, h_{m-i} = 0 \qquad (k \le m \le n-1)

です。m=k+sm = k + s(0≤s≤n−k−10 \le s \le n-k-1)とおくと、これは cc と、多項式 xsh∗(x)=∑i=ss+khk+s−i xix^{s}h^{*}(x) = \sum_{i=s}^{s+k} h_{k+s-i}\,x^{i} の係数ベクトルとの標準的な双線形形式の値が 00 であることを述べています。よって xsh∗x^s h^{*}(0≤s≤n−k−10 \le s \le n - k - 1)はすべて C⊥C^{\perp} に属します。

次元の比較。 h∗h^{*} の最高次の係数は h0=h(0)≠0h_0 = h(0) \ne 0 なので deg⁡h∗=k\deg h^{*} = k で、xsh∗x^s h^{*}(0≤s≤n−k−10 \le s \le n-k-1)は次数が k,…,n−1k, \ldots, n-1 と相異なり一次独立です。dim⁡C⊥=n−k\dim C^{\perp} = n - k なので(定理 3.5[線形符号])、これらが C⊥C^{\perp} の基底です。

生成多項式であること。 g∗(x)h∗(x)=xn−kg(1/x)⋅xkh(1/x)=xn((1/x)n−1)=1−xng^{*}(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 なので、h∗/h(0)h^{*}/h(0) は xn−1x^n - 1 のモニックな約数で、次数は kk です。これを生成多項式とする巡回符号は {b h∗:deg⁡b<n−k}\{ b\,h^{*} : \deg b < n - k \}(定理 3.3 の 2)で、上で求めた C⊥C^{\perp} の基底が張る空間と一致します。

注意 3.6(組織符号化)

情報 m(x)m(x)(deg⁡m<k\deg m < k)を符号語にするとき、a=ma = m として mgmg を作る代わりに、xn−km(x)x^{n-k}m(x) を gg で割った余り r(x)r(x) を使って c(x)=xn−km(x)−r(x)c(x) = x^{n-k}m(x) - r(x) とすると、cc は gg の倍数で、上位 kk 個の係数に情報がそのまま現れます。通信で使われる CRC(例 7.3)はこの形です。

gcd⁡(n,q)=1\gcd(n, q) = 1 のとき、巡回符号には生成多項式とは別の標準的な生成元があります。次の命題は、符号 CC を環 RnR_n のイデアルとして見たとき、CC の中だけで掛け算を考えると「11 に当たる元」ee があり、CC のどの元に掛けても変わらない、と述べています。この ee 自身が CC を生成します。

命題 3.7(冪等生成元)✓

gcd⁡(n,q)=1\gcd(n, q) = 1 とし、CC を長さ nn の巡回符号とする。RnR_n の元 ee で、e2=ee^2 = e かつ C={ae:a∈Rn}C = \{ ae : a \in R_n \} を満たすものがただ 1 つある。これを CC の冪等生成元という。ee は環 CC の乗法の単位元である。

証明(命題 3.7)

gg を生成多項式、h=(xn−1)/gh = (x^n - 1)/g とします。xn−1x^n - 1 は相異なる既約多項式の積なので(定理 2.4[有限体上の多項式])、gg と hh に共通の既約因子はありません。イデアル (g)+(h)(g) + (h) は単項で(命題 7.2[イデアルと剰余環])、その生成元は gg と hh の共通の約数なので定数です。よって ug+vh=1ug + vh = 1 となる u,v∈Fq[x]u, v \in \mathbb{F}_q[x] があります。e=ug mod (xn−1)e = ug \bmod (x^n - 1) とおきます。

RnR_n の中で gh=0gh = 0 なので、e2=e(1−vh)=e−uv gh=ee^2 = e(1 - vh) = e - uv\,gh = e です。e∈Ce \in C で、g=g(ug+vh)=ge+v gh=geg = g(ug + vh) = ge + v\,gh = ge なので gg は ee の倍元です。よって ee が生成するイデアルは gg が生成するイデアル CC と一致します。

c∈Cc \in C を c=aec = ae と書くと ce=ae2=ae=cce = ae^2 = ae = c なので、ee は CC の乗法の単位元です。冪等生成元 e′e' がもう 1 つあれば、同じ計算で e′e' も CC の単位元なので、e=ee′=e′e = ee' = e' です。

以後この節では gcd⁡(n,q)=1\gcd(n, q) = 1 とします。mm を qm≡1(modn)q^m \equiv 1 \pmod n となる最小の正の整数(nn を法とする qq の位数)とすると、nn は qm−1q^m - 1 を割り切ります。Fqm×\mathbb{F}_{q^m}^{\times} は位数 qm−1q^m - 1 の巡回群なので(定理 7.3[多項式環と体の拡大])、位数がちょうど nn の元 α\alpha(1 の原始 nn 乗根)があります。xn−1x^n - 1 の根は 1,α,…,αn−11, \alpha, \ldots, \alpha^{n-1} の nn 個で、Fqm\mathbb{F}_{q^m} で xn−1=∏i=0n−1(x−αi)x^n - 1 = \prod_{i=0}^{n-1}(x - \alpha^i) です(補題 2.1)。α\alpha を 1 つ固定します。

定義 4.1(零点と定義集合)↗

生成多項式 gg の巡回符号 CC に対し、T={ i∈Z/nZ:g(αi)=0 }T = \{\, i \in \mathbb{Z}/n\mathbb{Z} : g(\alpha^i) = 0 \,\} を CC の(α\alpha に関する)定義集合、αi\alpha^i(i∈Ti \in T)を CC の零点という。

gg は xn−1x^n - 1 の約数なので g=∏i∈T(x−αi)g = \prod_{i \in T}(x - \alpha^i) で、∣T∣=deg⁡g|T| = \deg g です。gg の係数は Fq\mathbb{F}_q に属するので、g(αi)=0g(\alpha^i) = 0 なら g(αiq)=g(αi)q=0g(\alpha^{iq}) = g(\alpha^i)^q = 0 です。つまり TT は qq 倍で閉じていて、nn を法とする qq-円分剰余類 {i,iq,iq2,…}\{ i, iq, iq^2, \ldots \} の合併です。逆に、円分剰余類の合併 TT に対して ∏i∈T(x−αi)\prod_{i \in T}(x - \alpha^i) は Fq\mathbb{F}_q 係数です。各円分剰余類に対応する積が αi\alpha^i の Fq\mathbb{F}_q 上の最小多項式だからです(定理 2.2[有限体上の多項式])。こうして

巡回符号  ⟷  xn−1 のモニックな約数  ⟷  q-円分剰余類の合併 T⊆Z/nZ\text{巡回符号} \;\longleftrightarrow\; x^n - 1 \text{ のモニックな約数} \;\longleftrightarrow\; q\text{-円分剰余類の合併 } T \subseteq \mathbb{Z}/n\mathbb{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(符号語は零点で消える多項式)✓

CC を定義集合 TT の巡回符号とする。次数 nn 未満の c(x)∈Fq[x]c(x) \in \mathbb{F}_q[x] について

c∈C  ⟺  c(αi)=0(すべての i∈T)c \in C \iff c(\alpha^i) = 0 \quad (\text{すべての } i \in T)

が成り立つ。また dim⁡C=n−∣T∣\dim C = n - |T| である。

証明(命題 4.2)

c∈Cc \in C なら c=agc = ag で(定理 3.3)、c(αi)=a(αi)g(αi)=0c(\alpha^i) = a(\alpha^i)g(\alpha^i) = 0(i∈Ti \in T)です。逆に、c(αi)=0c(\alpha^i) = 0 がすべての i∈Ti \in T で成り立つとします。Fq[x]\mathbb{F}_q[x] の中で c=sg+rc = sg + r、deg⁡r<deg⁡g\deg r < \deg g(または r=0r = 0)と割ると(補題 2.1 の 1)、r(αi)=c(αi)−s(αi)g(αi)=0r(\alpha^i) = c(\alpha^i) - s(\alpha^i)g(\alpha^i) = 0 が ∣T∣=deg⁡g|T| = \deg g 個の相異なる点 αi\alpha^i で成り立ちます。rr の次数は deg⁡g\deg g 未満なので、補題 2.1 の 3 を体 Fqm\mathbb{F}_{q^m} の上で使って r=0r = 0 です。よって c=sg∈Cc = sg \in C です。次元は 定理 3.3 の 2 と ∣T∣=deg⁡g|T| = \deg g から出ます。

この命題は、Fqm\mathbb{F}_{q^m} に成分をもつ行列 H=(αij)i∈T, 0≤j≤n−1H = (\alpha^{ij})_{i \in T,\ 0 \le j \le n-1} について C={c∈Fqn:HcT=0}C = \{ c \in \mathbb{F}_q^n : Hc^{\mathsf{T}} = 0 \} であることを述べています。HH は拡大体の上の「検査行列」です。

系 4.3(双対符号の定義集合)✓

定義集合 TT の巡回符号 CC の双対符号 C⊥C^{\perp} の定義集合は { −i mod n:i∉T }\{\, -i \bmod n : i \notin T \,\} である。

証明(系 4.3)

検査多項式 h=(xn−1)/gh = (x^n - 1)/g の根は αi\alpha^i(i∉Ti \notin T)です。C⊥C^{\perp} の生成多項式は h∗/h(0)h^{*}/h(0) で(定理 3.5)、β≠0\beta \ne 0 に対し h∗(β)=βkh(1/β)h^{*}(\beta) = \beta^{k}h(1/\beta) なので、h∗h^{*} の根は hh の根の逆元 α−i\alpha^{-i}(i∉Ti \notin T)です。

定理 4.4(BCH 限界)✓

gcd⁡(n,q)=1\gcd(n, q) = 1、α\alpha を 1 の原始 nn 乗根、2≤δ≤n2 \le \delta \le n とする。巡回符号 C⊆FqnC \subseteq \mathbb{F}_q^n の定義集合が、ある整数 bb について連続する δ−1\delta - 1 個の指数 b,b+1,…,b+δ−2b, b+1, \ldots, b+\delta-2(nn を法として)を含むならば、CC の 00 でない符号語の重みは δ\delta 以上である。すなわち d(C)≥δd(C) \ge \delta。

証明(定理 4.4)

重みが δ−1\delta - 1 以下の 00 でない符号語 cc があると仮定します。δ−1≤n−1\delta - 1 \le n - 1 なので、cc の台(cj≠0c_j \ne 0 となる jj の集合)を含む δ−1\delta - 1 元集合 J={j1,…,jδ−1}⊆{0,…,n−1}J = \{ j_1, \ldots, j_{\delta-1} \} \subseteq \{0, \ldots, n-1\} が取れます。命題 4.2 により c(αb+i)=0c(\alpha^{b+i}) = 0(0≤i≤δ−20 \le i \le \delta - 2)なので

∑l=1δ−1cjl α(b+i)jl=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)

です。xl=αjlx_l = \alpha^{j_l} とおくと、これは δ−1\delta - 1 次正方行列 M=(xl b xl i)i,lM = (x_l^{\,b}\, x_l^{\,i})_{i, l} と列ベクトル (cj1,…,cjδ−1)T(c_{j_1}, \ldots, c_{j_{\delta-1}})^{\mathsf{T}} の積が 00 であることを述べています。MM は Vandermonde 行列 V(x1,…,xδ−1)V(x_1, \ldots, x_{\delta-1}) の第 ll 列を xl bx_l^{\,b} 倍したものなので

det⁡M=∏l=1δ−1xl b⋅∏1≤l<l′≤δ−1(xl′−xl)\det M = \prod_{l=1}^{\delta-1} x_l^{\,b} \cdot \prod_{1 \le l < l' \le \delta-1}(x_{l'} - x_l)

です(補題 2.2、命題 4.3[行列式とその性質] の 2)。α\alpha の位数は nn で jlj_l は 00 以上 nn 未満の相異なる整数なので、xl=αjlx_l = \alpha^{j_l} は相異なり、00 でもありません。よって det⁡M≠0\det M \ne 0 で、Mv=0M\boldsymbol{v} = 0 の解は v=0\boldsymbol{v} = 0 だけです(定理 7.1[行列式とその性質])。すると cjl=0c_{j_l} = 0 がすべての ll で成り立ち、c=0c = 0 となって矛盾します。

証明が使ったのは「連続する δ−1\delta - 1 個の零点」だけです。そこで、これだけを要求して最大の符号を取ります。

定義 4.5(BCH 符号)↗

gcd⁡(n,q)=1\gcd(n, q) = 1、α\alpha を 1 の原始 nn 乗根、2≤δ≤n2 \le \delta \le n、bb を整数とする。αb,αb+1,…,αb+δ−2\alpha^{b}, \alpha^{b+1}, \ldots, \alpha^{b+\delta-2} の Fq\mathbb{F}_q 上の最小多項式の最小公倍数を生成多項式とする巡回符号を、設計距離 δ\delta の BCH 符号という。b=1b = 1 のとき狭義、n=qm−1n = q^m - 1 のとき原始という。

言い換えると、BCH 符号は、b,…,b+δ−2b, \ldots, b+\delta-2 を含む最小の「円分剰余類の合併」を定義集合とする巡回符号です。定理 4.4 により最小距離は δ\delta 以上です。

命題 4.6(BCH 符号の次元)✓

長さ nn、設計距離 δ\delta の BCH 符号の次元 kk は、mm を nn を法とする qq の位数として

k≥n−m(δ−1)k \ge n - m(\delta - 1)

を満たす。q=2q = 2、b=1b = 1、δ=2t+1\delta = 2t + 1 のときは k≥n−mtk \ge n - mt である。

証明(命題 4.6)

ii の qq-円分剰余類は {iqj mod n:j≥0}\{ i q^j \bmod n : j \ge 0 \} です。qm≡1(modn)q^m \equiv 1 \pmod n なので jj は 0≤j≤m−10 \le j \le m-1 だけ考えればよく、各剰余類の元は mm 個以下です。定義集合 TT は b,…,b+δ−2b, \ldots, b+\delta-2 の剰余類の合併なので ∣T∣≤m(δ−1)|T| \le m(\delta - 1) で、k=n−∣T∣k = n - |T|(命題 4.2)から第 1 の不等式が出ます。

q=2q = 2、b=1b = 1、δ=2t+1\delta = 2t+1 のとき、指数 1,2,…,2t1, 2, \ldots, 2t のうち偶数 2i2i は ii と同じ 22-円分剰余類に属します。よって TT は奇数 1,3,…,2t−11, 3, \ldots, 2t-1 の剰余類 tt 個の合併で、∣T∣≤mt|T| \le mt です。

例 4.7(長さ 15 の二元 BCH 符号)

n=15n = 15、q=2q = 2、m=4m = 4 です。F16=F2[x]/(x4+x+1)\mathbb{F}_{16} = \mathbb{F}_2[x]/(x^4 + x + 1) とし、α\alpha を xx の類とします(α4=α+1\alpha^4 = \alpha + 1。α\alpha の位数は 1515)。1515 を法とする 22-円分剰余類と最小多項式は

剰余類最小多項式
{0}\{0\}x+1x + 1
{1,2,4,8}\{1, 2, 4, 8\}m1=x4+x+1m_1 = x^4 + x + 1
{3,6,12,9}\{3, 6, 12, 9\}m3=x4+x3+x2+x+1m_3 = x^4 + x^3 + x^2 + x + 1
{5,10}\{5, 10\}m5=x2+x+1m_5 = x^2 + x + 1
{7,14,13,11}\{7, 14, 13, 11\}m7=x4+x3+1m_7 = x^4 + x^3 + 1

です。狭義の BCH 符号は次のとおりです。

設計距離定義集合生成多項式パラメータ
δ=3\delta = 3{1,2,4,8}\{1,2,4,8\}m1m_1[15,11,3][15, 11, 3]
δ=5\delta = 5{1,2,3,4,6,8,9,12}\{1,2,3,4,6,8,9,12\}m1m3=x8+x7+x6+x4+1m_1 m_3 = x^8+x^7+x^6+x^4+1[15,7,5][15, 7, 5]
δ=7\delta = 7上に {5,10}\{5, 10\} を足すm1m3m5=x10+x8+x5+x4+x2+x+1m_1 m_3 m_5 = x^{10}+x^8+x^5+x^4+x^2+x+1[15,5,7][15, 5, 7]

最小距離が設計距離に等しいことは、生成多項式そのものが重み 33、55、77 の符号語であることから分かります(δ=3\delta = 3 では m1m_1 の項が 3 個)。次元は 命題 4.6 の下界 15−4t15 - 4t(t=1,2t = 1, 2)と一致し、t=3t = 3 では剰余類 {5,10}\{5, 10\} が小さいぶん下界 33 より大きい 55 になります。

命題 4.8(Hamming 符号は巡回符号)✓

r≥2r \ge 2、n=(qr−1)/(q−1)n = (q^r - 1)/(q - 1) とし、gcd⁡(r,q−1)=1\gcd(r, q - 1) = 1 とする。β\beta を Fqr×\mathbb{F}_{q^r}^{\times} の生成元、α=βq−1\alpha = \beta^{q-1} とすると、α\alpha は 1 の原始 nn 乗根で、α\alpha の Fq\mathbb{F}_q 上の最小多項式を生成多項式とする長さ nn の巡回符号は、[n,n−r,3]q[n, n - r, 3]_q Hamming 符号である。

証明(命題 4.8)

β\beta の位数は qr−1=n(q−1)q^r - 1 = n(q-1) なので α\alpha の位数は nn です。n=1+q+⋯+qr−1≡1(modq)n = 1 + q + \cdots + q^{r-1} \equiv 1 \pmod q なので gcd⁡(n,q)=1\gcd(n, q) = 1 です。

α\alpha の最小多項式 gg の根は α,αq,αq2,…\alpha, \alpha^q, \alpha^{q^2}, \ldots で(定理 2.2[有限体上の多項式])、命題 4.2 と c(αqj)=c(α)qjc(\alpha^{q^j}) = c(\alpha)^{q^j} から、符号は C={c∈Fqn:c(α)=0}C = \{ c \in \mathbb{F}_q^n : c(\alpha) = 0 \} です。Fqr\mathbb{F}_{q^r} の Fq\mathbb{F}_q 上の基底を 1 つ取り、αj\alpha^j の座標ベクトルを hj∈Fqr\boldsymbol{h}_j \in \mathbb{F}_q^r とすると、c(α)=∑jcjαj=0c(\alpha) = \sum_j c_j \alpha^j = 0 は ∑jcjhj=0\sum_j c_j \boldsymbol{h}_j = 0 と同値です。つまり H=(h0 ⋯ hn−1)H = (\boldsymbol{h}_0\ \cdots\ \boldsymbol{h}_{n-1}) が CC の検査条件を与える r×nr \times n 行列です。

HH のどの 2 列も一次独立であることを示します。0≤i<j≤n−10 \le i < j \le n-1 で hi\boldsymbol{h}_i と hj\boldsymbol{h}_j が一次従属なら、αj=λαi\alpha^j = \lambda\alpha^i となる λ∈Fq×\lambda \in \mathbb{F}_q^{\times} があり、αj−i=λ\alpha^{j-i} = \lambda です。λq−1=1\lambda^{q-1} = 1 なので α(j−i)(q−1)=1\alpha^{(j-i)(q-1)} = 1、つまり nn が (j−i)(q−1)(j-i)(q-1) を割り切ります。ところが n=∑l=0r−1ql≡r(modq−1)n = \sum_{l=0}^{r-1} q^l \equiv r \pmod{q-1} なので gcd⁡(n,q−1)=gcd⁡(r,q−1)=1\gcd(n, q-1) = \gcd(r, q-1) = 1 で、nn は j−ij - i を割り切ります。これは 0<j−i<n0 < j - i < n に反します。

Fqr\mathbb{F}_q^r の 1 次元部分空間は (qr−1)/(q−1)=n(q^r - 1)/(q-1) = n 個です。HH の nn 本の列は 00 でなく、どの 2 本も比例しないので、各 1 次元部分空間からちょうど 1 本ずつ代表元を取ったものになっています。これは Hamming 符号の検査行列の定義そのもので、HH の階数は rr、CC は [n,n−r,3]q[n, n-r, 3]_q 符号です(定理 6.2[線形符号])。

q=2q = 2 のときは条件 gcd⁡(r,1)=1\gcd(r, 1) = 1 がいつも成り立つので、二元 Hamming 符号はすべて巡回符号(原始元の最小多項式が生成する、設計距離 33 の原始 BCH 符号)です。例 3.4 の g=x3+x+1g = x^3+x+1 は r=3r = 3 の場合です。

注意 4.9(BCH 限界は下界にすぎない)

真の最小距離が設計距離より大きいことがあります。長さ 2323 の二元巡回符号で定義集合が {1,2,3,4,6,8,9,12,13,16,18}\{1, 2, 3, 4, 6, 8, 9, 12, 13, 16, 18\} のもの(二元 Golay 符号)は、連続する零点が 1,2,3,41, 2, 3, 4 なので BCH 限界は 55 ですが、真の最小距離は 77 です。これは 第 5 章 で証明します。また、BCH 限界は原始 nn 乗根 α\alpha の選び方に依存します。α\alpha を αs\alpha^s(gcd⁡(s,n)=1\gcd(s, n) = 1)に取り替えると定義集合が s−1Ts^{-1}T に変わり、連続する零点の個数が増えることがあります。

定義 5.1(Reed–Solomon 符号・一般化 Reed–Solomon 符号)↗

1≤k≤n≤q1 \le k \le n \le q とし、a1,…,ana_1, \ldots, a_n を Fq\mathbb{F}_q の相異なる元、v1,…,vnv_1, \ldots, v_n を Fq\mathbb{F}_q の 00 でない元とする。

GRSk(a,v)={ (v1f(a1),…,vnf(an)):f∈Fq[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\}

を一般化 Reed–Solomon 符号という。v1=⋯=vn=1v_1 = \cdots = v_n = 1 のとき RSk(a)\mathrm{RS}_k(a) と書き、Reed–Solomon 符号という(零多項式の次数は kk 未満とみなす)。

定理 5.2(Reed–Solomon 符号は MDS 符号)✓

GRSk(a,v)\mathrm{GRS}_k(a, v) は [n,k,n−k+1]q[n, k, n-k+1]_q 符号である。

証明(定理 5.2)

評価写像 ev:f↦(vif(ai))i\mathrm{ev} : f \mapsto (v_i f(a_i))_i は、次数 kk 未満の多項式のなす kk 次元空間から Fqn\mathbb{F}_q^n への線形写像で、像が符号です。f≠0f \ne 0、deg⁡f<k\deg f < k とすると、ff の根は k−1k - 1 個以下なので(補題 2.1 の 3)、f(ai)=0f(a_i) = 0 となる ii は k−1k - 1 個以下で、vi≠0v_i \ne 0 から wt⁡(ev(f))≥n−(k−1)=n−k+1≥1\operatorname{wt}(\mathrm{ev}(f)) \ge n - (k-1) = n - k + 1 \ge 1 です。とくに ev\mathrm{ev} は単射で、符号の次元は kk、最小重みは n−k+1n - k + 1 以上です。Singleton 限界 d≤n−k+1d \le n - k + 1(定理 5.3[線形符号])と合わせて d=n−k+1d = n - k + 1 です。

証明は 2 行ですが、これで「どんな n≤qn \le q と kk に対しても Singleton 限界を達成する符号がある」ことが分かりました。代償は、符号長がアルファベットの大きさ qq 以下に限られることです。

5.2. 巡回符号としての Reed–Solomon 符号

Section titled “5.2. 巡回符号としての Reed–Solomon 符号”

nn が q−1q - 1 の約数のとき、位数 nn の元 α∈Fq\alpha \in \mathbb{F}_q があり、評価点を aj=αja_j = \alpha^{j}(0≤j≤n−10 \le j \le n - 1、座標は 00 から数える)と取れます。このとき評価写像は有限体の上の離散 Fourier 変換です。次の補題のねらいは、多項式 ff を nn 個の点で評価して並べた語 cc を、さらに αi\alpha^i で評価すると、ff の係数が 1 つだけ取り出される(定数倍を除く)ことを示すことです。これにより、評価で作った符号が連続する零点をもつことが次の定理で分かります。

補題 5.3(1 の冪根の和と離散 Fourier 変換)✓

nn を q−1q - 1 の約数、α∈Fq\alpha \in \mathbb{F}_q を位数 nn の元とする。

  1. 整数 ss について、∑j=0n−1αjs\sum_{j=0}^{n-1}\alpha^{js} は n∣sn \mid s のとき n⋅1n \cdot 1、そうでないとき 00 である。n⋅1n \cdot 1 は Fq\mathbb{F}_q で 00 でない。
  2. f=∑l=0n−1flxl∈Fq[x]f = \sum_{l=0}^{n-1} f_l x^l \in \mathbb{F}_q[x] に対し cj=f(αj)c_j = f(\alpha^j)、c(x)=∑j=0n−1cjxjc(x) = \sum_{j=0}^{n-1}c_j x^j とおくと、すべての整数 ii について c(αi)=n flc(\alpha^{i}) = n\, f_{l}(ll は 0≤l≤n−10 \le l \le n-1、l≡−i(modn)l \equiv -i \pmod n で定まる添字)である。
証明(補題 5.3)

(1) n∣sn \mid s なら各項が 11 で和は n⋅1n \cdot 1 です。n∤sn \nmid s なら αs≠1\alpha^s \ne 1 で、等比数列の和の式 (αs−1)∑j=0n−1αjs=αsn−1=0(\alpha^s - 1)\sum_{j=0}^{n-1}\alpha^{js} = \alpha^{sn} - 1 = 0 と Fq\mathbb{F}_q が整域であることから和は 00 です。nn は q−1q - 1 の約数なので標数 pp で割り切れず、n⋅1≠0n \cdot 1 \ne 0 です。

(2) c(αi)=∑jcjαij=∑j∑l′fl′αjl′αij=∑l′fl′∑j=0n−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)} です。(1) により内側の和は n∣l′+in \mid l' + i のとき nn、そうでないとき 00 で、0≤l′≤n−10 \le l' \le n-1 の範囲で l′≡−il' \equiv -i となる l′l' はちょうど 1 つです。

定理 5.4(評価による定義と BCH 符号としての定義の一致)✓

nn を q−1q - 1 の約数、α∈Fq\alpha \in \mathbb{F}_q を位数 nn の元、1≤k≤n−11 \le k \le n - 1 とする。評価点を aj=αja_j = \alpha^j(0≤j≤n−10 \le j \le n-1)とした RSk(a)\mathrm{RS}_k(a) は、生成多項式

g(x)=(x−α)(x−α2)⋯(x−αn−k)g(x) = (x - \alpha)(x - \alpha^2)\cdots(x - \alpha^{n-k})

の巡回符号、すなわち Fq\mathbb{F}_q 上の長さ nn、設計距離 n−k+1n - k + 1 の狭義 BCH 符号と一致する。

証明(定理 5.4)

c∈RSk(a)c \in \mathrm{RS}_k(a) を cj=f(αj)c_j = f(\alpha^j)、f=∑l=0k−1flxlf = \sum_{l=0}^{k-1}f_l x^l と書きます。補題 5.3 の 2 を fk=⋯=fn−1=0f_k = \cdots = f_{n-1} = 0 として使うと、1≤i≤n−k1 \le i \le n - k に対し l=n−il = n - i は k≤l≤n−1k \le l \le n-1 の範囲にあるので c(αi)=nfn−i=0c(\alpha^i) = n f_{n-i} = 0 です。よって cc は定義集合 T={1,2,…,n−k}T = \{1, 2, \ldots, n-k\} の巡回符号 CC に属します(命題 4.2。q≡1(modn)q \equiv 1 \pmod n なので qq-円分剰余類はすべて 1 点で、TT は剰余類の合併です)。dim⁡C=n−∣T∣=k=dim⁡RSk(a)\dim C = n - |T| = k = \dim \mathrm{RS}_k(a)(定理 5.2)なので両者は一致します。αi\alpha^i の Fq\mathbb{F}_q 上の最小多項式は x−αix - \alpha^i なので、CC は 定義 4.5 の意味で b=1b = 1、δ=n−k+1\delta = n - k + 1 の BCH 符号です。

BCH 限界(定理 4.4)はこの符号に d≥n−k+1d \ge n - k + 1 を与え、定理 5.2 の評価と一致します。Reed–Solomon 符号では、BCH 限界と Singleton 限界が両側から最小距離を挟んで等号になっています。

第 3 章で、Singleton 限界 d≤n−k+1d \le n - k + 1 の等号を達成する符号を MDS 符号と呼びました。

定理 5.5(MDS 符号の特徴づけ)✓

1≤k≤n−11 \le k \le n - 1 とし、CC を [n,k]q[n, k]_q 符号、GG を生成行列、HH を検査行列とする。次は同値である。

  1. CC は MDS 符号である(d(C)=n−k+1d(C) = n - k + 1)。
  2. HH のどの n−kn - k 本の列も一次独立である。
  3. GG のどの kk 本の列も一次独立である。
  4. C⊥C^{\perp} は MDS 符号である(d(C⊥)=k+1d(C^{\perp}) = k + 1)。
証明(定理 5.5)

(1) ⇔\Leftrightarrow (2): d(C)d(C) は、HH の列のうち一次従属なものの最小の本数です(定理 3.7[線形符号])。よって (2) は d(C)≥n−k+1d(C) \ge n - k + 1 と同値で、Singleton 限界(定理 5.3[線形符号])により d(C)=n−k+1d(C) = n - k + 1 と同値です。

(1) ⇔\Leftrightarrow (3): kk 個の座標の集合 JJ に対し、GG の JJ の列を並べた kk 次正方行列を GJG_J とします。GJG_J の列が一次従属であることは det⁡GJ=0\det G_J = 0、すなわち det⁡GJT=0\det G_J^{\mathsf{T}} = 0 と同値で(定理 7.1[行列式とその性質]、命題 3.3[行列式とその性質])、これは uGJ=0uG_J = 0 となる 00 でない行ベクトル u∈Fqku \in \mathbb{F}_q^k があることと同値です。GG の行は一次独立なので u≠0u \ne 0 なら符号語 uGuG は 00 でなく、uGJ=0uG_J = 0 は「uGuG が JJ の座標で 00」、つまり wt⁡(uG)≤n−k\operatorname{wt}(uG) \le n - k を意味します。逆に重みが n−kn - k 以下の 00 でない符号語 uGuG は、ある kk 個の座標で 00 です。よって「一次従属な kk 列がある」ことと d(C)≤n−kd(C) \le n - k は同値で、(3) は d(C)≥n−k+1d(C) \ge n - k + 1 と同値です。

(3) ⇔\Leftrightarrow (4): (C⊥)⊥=C(C^{\perp})^{\perp} = C なので(定理 3.5[線形符号])、GG は [n,n−k]q[n, n-k]_q 符号 C⊥C^{\perp} の検査行列です。(1) ⇔\Leftrightarrow (2) を C⊥C^{\perp} に使うと、C⊥C^{\perp} が MDS であることは「GG のどの n−(n−k)=kn - (n-k) = k 本の列も一次独立」と同値です。

条件 3 は、「符号語のどの kk 個の座標からでも情報が復元できる」ことを意味します。分散ストレージで Reed–Solomon 符号を使うのは、nn 台のうちどの kk 台が生き残ってもデータが読めるからです。

例 5.6(F₈ 上の [7, 3, 5] Reed–Solomon 符号)

F8=F2[x]/(x3+x+1)\mathbb{F}_8 = \mathbb{F}_2[x]/(x^3 + x + 1)、α\alpha を xx の類とします。α3=α+1\alpha^3 = \alpha + 1、α4=α2+α\alpha^4 = \alpha^2 + \alpha、α5=α2+α+1\alpha^5 = \alpha^2 + \alpha + 1、α6=α2+1\alpha^6 = \alpha^2 + 1、α7=1\alpha^7 = 1 です。n=7n = 7、k=3k = 3、評価点 aj=αja_j = \alpha^j とします。

情報 (1,α,α3)(1, \alpha, \alpha^3) を f(x)=1+αx+α3x2f(x) = 1 + \alpha x + \alpha^3x^2 とすると、たとえば f(1)=1+α+α3=0f(1) = 1 + \alpha + \alpha^3 = 0、f(α)=1+α2+α5=αf(\alpha) = 1 + \alpha^2 + \alpha^5 = \alpha で、同様に計算して

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)

です。重みは 5=n−k+15 = n - k + 1 で、最小重みの符号語です(ff が評価点の中に k−1=2k - 1 = 2 個の根 1,α41, \alpha^4 をもつ場合)。定理 5.4 のとおり、c(x)=αx+α3x2+α3x3+x5+αx6c(x) = \alpha x + \alpha^3x^2 + \alpha^3x^3 + x^5 + \alpha x^6 は α,α2,α3,α4\alpha, \alpha^2, \alpha^3, \alpha^4 を根にもち、生成多項式

g(x)=(x−α)(x−α2)(x−α3)(x−α4)=x4+α3x3+x2+αx+α3g(x) = (x-\alpha)(x-\alpha^2)(x-\alpha^3)(x-\alpha^4) = x^4 + \alpha^3x^3 + x^2 + \alpha x + \alpha^3

の倍数です。たとえば c(α)=α2+α5+α6+α5+α7=α2+α6+1=0c(\alpha) = \alpha^2 + \alpha^5 + \alpha^6 + \alpha^5 + \alpha^7 = \alpha^2 + \alpha^6 + 1 = 0 です。

最小距離 d=n−k+1d = n - k + 1 の符号は ⌊(d−1)/2⌋=⌊(n−k)/2⌋\lfloor (d-1)/2 \rfloor = \lfloor (n-k)/2 \rfloor 個までの誤りを訂正できます(第 3 章)。しかし、最も近い符号語を総当たりで探すのでは実用になりません。Reed–Solomon 符号では、これが連立一次方程式 1 つに帰着します。

定理 6.1(Berlekamp–Welch の復号)✓

C=RSk(a)C = \mathrm{RS}_k(a)、t=⌊(n−k)/2⌋t = \lfloor (n-k)/2 \rfloor とする。f∈Fq[x]f \in \mathbb{F}_q[x]、deg⁡f<k\deg f < k に対する符号語 c=(f(ai))ic = (f(a_i))_i と、wt⁡(e)≤t\operatorname{wt}(e) \le t を満たす e∈Fqne \in \mathbb{F}_q^n について、y=c+ey = c + e とおく。未知の多項式

E(x)=∑j=0tEjxj,Q(x)=∑j=0k+t−1QjxjE(x) = \sum_{j=0}^{t} E_j x^j, \qquad Q(x) = \sum_{j=0}^{k+t-1} Q_j x^j

の係数 (E0,…,Et,Q0,…,Qk+t−1)(E_0, \ldots, E_t, Q_0, \ldots, Q_{k+t-1}) についての斉次連立一次方程式

Q(ai)=yi E(ai)(1≤i≤n)Q(a_i) = y_i\, E(a_i) \qquad (1 \le i \le n)

を考える。

  1. この方程式は 00 でない解をもつ。
  2. 00 でない解 (E,Q)(E, Q) はどれも E≠0E \ne 0 で、EE は QQ を割り切り、Q/E=fQ/E = f である。
証明(定理 6.1)

(1) E0(x)=∏i: ei≠0(x−ai)E_0(x) = \prod_{i :\, e_i \ne 0}(x - a_i)、Q0=fE0Q_0 = fE_0 とおきます。deg⁡E0=wt⁡(e)≤t\deg E_0 = \operatorname{wt}(e) \le t、deg⁡Q0≤k−1+t\deg Q_0 \le k - 1 + t です。ei=0e_i = 0 の ii では yi=f(ai)y_i = f(a_i) なので Q0(ai)=f(ai)E0(ai)=yiE0(ai)Q_0(a_i) = f(a_i)E_0(a_i) = y_iE_0(a_i) です。ei≠0e_i \ne 0 の ii では E0(ai)=0E_0(a_i) = 0 なので両辺とも 00 です。E0E_0 はモニックで 00 でないので、(E0,Q0)(E_0, Q_0) は 00 でない解です。

(2) (E,Q)(E, Q) を 00 でない解とし、P=Q−fEP = Q - fE とおきます。deg⁡P≤k+t−1\deg P \le k + t - 1 です。ei=0e_i = 0 となる ii では yi=f(ai)y_i = f(a_i) なので P(ai)=Q(ai)−yiE(ai)=0P(a_i) = Q(a_i) - y_iE(a_i) = 0 です。そのような ii は n−tn - t 個以上あり、2t≤n−k2t \le n - k から n−t≥k+t>deg⁡Pn - t \ge k + t > \deg P です。次数が k+t−1k + t - 1 以下の多項式が k+tk + t 個以上の相異なる点で 00 になるので、P=0P = 0(補題 2.1 の 3)、すなわち Q=fEQ = fE です。E=0E = 0 なら Q=0Q = 0 となり、解が 00 でないことに反します。よって E≠0E \ne 0 で、Q/E=fQ/E = f です。

未知数は (t+1)+(k+t)=k+2t+1(t + 1) + (k + t) = k + 2t + 1 個、方程式は nn 本です。掃き出し法で 00 でない解を 1 つ求め、多項式の割り算を 1 回すれば ff が得られます。計算量は nn の 3 乗の程度です。E0E_0 は誤りの位置 aia_i を根にもつ多項式(誤り位置多項式)ですが、アルゴリズムは誤りの位置をあらかじめ知らなくても動きます。一般化 Reed–Solomon 符号では、受信語の各座標を viv_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) を送り、座標 1 に α2\alpha^2、座標 5 に 11 の誤りが加わって

y=(0, α4, α3, α3, 0, 0, α)y = (0,\ \alpha^4,\ \alpha^3,\ \alpha^3,\ 0,\ 0,\ \alpha)

を受け取ったとします(α+α2=α4\alpha + \alpha^2 = \alpha^4、1+1=01 + 1 = 0)。t=2t = 2 なので、E=E0+E1x+E2x2E = E_0 + E_1x + E_2x^2、Q=Q0+⋯+Q4x4Q = Q_0 + \cdots + Q_4x^4 の 8 個の係数についての 7 本の方程式 Q(αj)=yjE(αj)Q(\alpha^j) = y_jE(\alpha^j)(0≤j≤60 \le j \le 6)を解きます。係数行列の階数は 77 で、解は定数倍を除いてただ 1 つ、

E(x)=x2+α6x+α6,Q(x)=α3x4+α4x3+α2x2+α2x+α6E(x) = x^2 + \alpha^6x + \alpha^6, \qquad Q(x) = \alpha^3x^4 + \alpha^4x^3 + \alpha^2x^2 + \alpha^2x + \alpha^6

です。たとえば j=0j = 0 では Q(1)=α3+α4+α2+α2+α6=0=y0E(1)Q(1) = \alpha^3 + \alpha^4 + \alpha^2 + \alpha^2 + \alpha^6 = 0 = y_0E(1) です。E(x)=(x−α)(x−α5)E(x) = (x - \alpha)(x - \alpha^5) と分解し(α+α5=α6\alpha + \alpha^5 = \alpha^6、α⋅α5=α6\alpha\cdot\alpha^5 = \alpha^6)、誤りの位置が a1=αa_1 = \alpha と a5=α5a_5 = \alpha^5 であることを示しています。割り算をすると

Q(x)=(x2+α6x+α6)(α3x2+αx+1)Q(x) = (x^2 + \alpha^6x + \alpha^6)(\alpha^3x^2 + \alpha x + 1)

で、f=1+αx+α3x2f = 1 + \alpha x + \alpha^3x^2 が復元されます。

Berlekamp–Welch の方法は受信語 yy の nn 個の成分をそのまま使います。BCH 符号では、まず yy を 2t2t 個のシンドロームに縮めてから、より小さい問題を解く方法が使われます。

以下の見通しを先に述べます。受信語から計算できる 2t2t 個の値(シンドローム)を 1 つの多項式 S(x)S(x) にまとめます。一方、誤りがどこにあるかを根で表した多項式 σ(x)\sigma(x) と、誤りの大きさを拾う多項式 ω(x)\omega(x) を定義します。この 3 つが鍵方程式でつながるので、SS から σ\sigma と ω\omega を求めれば誤りの位置と値が分かります。

この小節と次の小節の設定を固定します。gcd⁡(n,q)=1\gcd(n, q) = 1、α∈Fqm\alpha \in \mathbb{F}_{q^m} を 1 の原始 nn 乗根、t≥1t \ge 1、2t+1≤n2t + 1 \le n とし、C⊆FqnC \subseteq \mathbb{F}_q^n を、α,α2,…,α2t\alpha, \alpha^2, \ldots, \alpha^{2t} を零点にもつ巡回符号とします(設計距離 2t+12t+1 の狭義 BCH 符号や、定理 5.4 の Reed–Solomon 符号で n−k=2tn - k = 2t のもの)。定理 4.4 により d(C)≥2t+1d(C) \ge 2t + 1 です。

定義 6.3(シンドローム多項式・誤り位置多項式・誤り評価多項式)↗

c∈Cc \in C、e∈Fqne \in \mathbb{F}_q^n、y=c+ey = c + e とし、I={i:ei≠0}I = \{ i : e_i \ne 0 \}、w=∣I∣w = |I| とする。

  • シンドローム: Sj=y(αj)S_j = y(\alpha^j)(1≤j≤2t1 \le j \le 2t)。シンドローム多項式: S(x)=∑j=12tSjxj−1S(x) = \sum_{j=1}^{2t} S_j x^{j-1}。
  • 誤り位置: Xi=αiX_i = \alpha^{i}(i∈Ii \in I)。誤り位置多項式: σ(x)=∏i∈I(1−Xix)\sigma(x) = \prod_{i \in I}(1 - X_i x)。
  • 誤り評価多項式: ω(x)=∑i∈IeiXi∏l∈I, l≠i(1−Xlx)\omega(x) = \sum_{i \in I} e_i X_i \prod_{l \in I,\ l \ne i}(1 - X_l x)。

c(αj)=0c(\alpha^j) = 0(1≤j≤2t1 \le j \le 2t、命題 4.2)なので、Sj=e(αj)=∑i∈IeiXi jS_j = e(\alpha^j) = \sum_{i \in I} e_i X_i^{\,j} です。シンドロームは受信語から計算でき、しかも誤り ee だけで決まります。σ\sigma の根は Xi−1X_i^{-1} で、σ\sigma が分かれば誤りの位置が分かります。

補題 6.4(鍵方程式)✓

定義 6.3 の記号で、

σ(x) S(x)≡ω(x)(modx2t)\sigma(x)\,S(x) \equiv \omega(x) \pmod{x^{2t}}

が Fqm[x]\mathbb{F}_{q^m}[x] で成り立つ。また σ(0)=1\sigma(0) = 1、deg⁡σ=w\deg \sigma = w、ω=0\omega = 0 または deg⁡ω≤w−1\deg \omega \le w - 1 で、w≥1w \ge 1 のとき σ\sigma と ω\omega は定数でない共通因子をもたず、ω≠0\omega \ne 0 である。

証明(補題 6.4)

Sj=∑i∈IeiXi jS_j = \sum_{i \in I}e_iX_i^{\,j} を代入し、有限等比数列の和 (1−Xix)∑j=02t−1(Xix)j=1−(Xix)2t(1 - X_ix)\sum_{j=0}^{2t-1}(X_ix)^j = 1 - (X_ix)^{2t} を使います。

σ(x)S(x)=∑i∈IeiXi σ(x)∑j=02t−1(Xix)j=∑i∈IeiXi∏l≠i(1−Xlx)⋅(1−(Xix)2t)=ω(x)−x2t∑i∈IeiXi 2t+1∏l≠i(1−Xlx).\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}

右辺の第 2 項は x2tx^{2t} の倍数なので、合同式が成り立ちます。σ(0)=1\sigma(0) = 1 と次数の主張は定義から直ちに読み取れます(Xi≠0X_i \ne 0 なので σ\sigma の最高次の係数 ∏(−Xi)\prod(-X_i) は 00 でない)。

w≥1w \ge 1 とします。σ\sigma は Fqm\mathbb{F}_{q^m} で 1 次式の積に分解し、根は Xi−1X_i^{-1}(i∈Ii \in I)です。ω\omega に代入すると、l=il = i 以外の項は因子 1−XiXi−1=01 - X_iX_i^{-1} = 0 を含むので

ω(Xi−1)=eiXi∏l≠i(1−XlXi−1)\omega(X_i^{-1}) = e_iX_i\prod_{l \ne i}(1 - X_lX_i^{-1})

で、ei≠0e_i \ne 0、Xi≠0X_i \ne 0、Xl≠XiX_l \ne X_i(l≠il \ne i。α\alpha の位数が nn だから)により 00 でありません。よって ω≠0\omega \ne 0 で、σ\sigma の既約因子 1−Xix1 - X_ix はどれも ω\omega を割り切りません(補題 2.1 の 2)。

鍵方程式は、SS が与えられたとき、次数の小さい σ\sigma と ω\omega を求める問題です。これは x2tx^{2t} と S(x)S(x) に拡張 Euclid の互除法を使うと解けます。整数の互除法(定理 3.2[整除と素因数分解])と同じ手順を、多項式について、あとで使う不変量とともに述べ直します。続く定理の証明の方針は次のとおりです。互除法の途中で余り rir_i の次数が初めて tt 未満になったところで止めると、uiu_i と rir_i が、鍵方程式の解 σ\sigma と ω\omega の同じ定数倍になる、というものです。次数の評価を重ねて示します。

補題 6.5(多項式の拡張 Euclid の互除法)✓

KK を体、a,b∈K[x]a, b \in K[x]、b≠0b \ne 0、deg⁡a>deg⁡b\deg a > \deg b とする。r0=ar_0 = a、r1=br_1 = b、s0=1s_0 = 1、s1=0s_1 = 0、u0=0u_0 = 0、u1=1u_1 = 1 とおき、ri≠0r_i \ne 0 である限り、ri−1r_{i-1} を rir_i で割った商を qiq_i として

ri+1=ri−1−qiri,si+1=si−1−qisi,ui+1=ui−1−qiuir_{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

と定める。このとき、ある N≥1N \ge 1 で rN+1=0r_{N+1} = 0 となって手順は止まり、次が成り立つ。

  1. deg⁡r0>deg⁡r1>⋯>deg⁡rN\deg r_0 > \deg r_1 > \cdots > \deg r_N。
  2. sia+uib=ris_ia + u_ib = r_i(0≤i≤N+10 \le i \le N+1)。
  3. siui+1−si+1ui=(−1)is_iu_{i+1} - s_{i+1}u_i = (-1)^i(0≤i≤N0 \le i \le N)。とくに sis_i と uiu_i は定数でない共通因子をもたない。
  4. deg⁡ui=deg⁡a−deg⁡ri−1\deg u_i = \deg a - \deg r_{i-1}(1≤i≤N+11 \le i \le N+1)。
証明(補題 6.5)

(1) 割り算の余りなので ri+1=0r_{i+1} = 0 または deg⁡ri+1<deg⁡ri\deg r_{i+1} < \deg r_i です(補題 2.1 の 1)。次数は非負整数で真に減り続けるので、有限回で余りが 00 になります。

(2) i=0,1i = 0, 1 では定義から成り立ちます。i−1i-1 と ii で成り立てば、si+1a+ui+1b=(si−1a+ui−1b)−qi(sia+uib)=ri−1−qiri=ri+1s_{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} です。

(3) i=0i = 0 では 1⋅1−0⋅0=11\cdot 1 - 0 \cdot 0 = 1 です。ii で成り立てば

si+1ui+2−si+2ui+1=si+1(ui−qi+1ui+1)−(si−qi+1si+1)ui+1=−(siui+1−si+1ui)=(−1)i+1s_{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}

です。sis_i と uiu_i の共通因子は左辺を割り切るので、定数です。

(4) i=1i = 1 では deg⁡u1=0=deg⁡a−deg⁡r0\deg u_1 = 0 = \deg a - \deg r_0 です。i≥1i \ge 1 として、ii 以下で成り立つとします。deg⁡qi=deg⁡ri−1−deg⁡ri≥1\deg q_i = \deg r_{i-1} - \deg r_i \ge 1 なので

deg⁡(qiui)=(deg⁡ri−1−deg⁡ri)+(deg⁡a−deg⁡ri−1)=deg⁡a−deg⁡ri\deg(q_iu_i) = (\deg r_{i-1} - \deg r_i) + (\deg a - \deg r_{i-1}) = \deg a - \deg r_i

です。一方 ui−1u_{i-1} は、i=1i = 1 なら 00、i≥2i \ge 2 なら次数 deg⁡a−deg⁡ri−2\deg a - \deg r_{i-2} で、これは deg⁡a−deg⁡ri\deg a - \deg r_i より小さい。よって ui+1=ui−1−qiuiu_{i+1} = u_{i-1} - q_iu_i の次数は deg⁡a−deg⁡ri\deg a - \deg r_i です。

定理 6.6(鍵方程式の互除法による解(Sugiyama の方法))✓

6.2 節の設定で、1≤w=wt⁡(e)≤t1 \le w = \operatorname{wt}(e) \le t とする。このとき S(x)≠0S(x) \ne 0 である。補題 6.5 の手順を K=FqmK = \mathbb{F}_{q^m}、a=x2ta = x^{2t}、b=S(x)b = S(x) に対して行い、deg⁡ri<t\deg r_i < t(または ri=0r_i = 0)となる最小の添字 ii を取る。すると ui(0)≠0u_i(0) \ne 0 で、

σ(x)=ui(x)ui(0),ω(x)=ri(x)ui(0)\sigma(x) = \frac{u_i(x)}{u_i(0)}, \qquad \omega(x) = \frac{r_i(x)}{u_i(0)}

が成り立つ。

証明(定理 6.6)

補題 6.4 により ω≠0\omega \ne 0 で σS≡ω(modx2t)\sigma S \equiv \omega \pmod{x^{2t}} なので、S≠0S \ne 0 です。deg⁡S≤2t−1<deg⁡a\deg S \le 2t - 1 < \deg a なので補題の仮定が満たされます。deg⁡r0=2t≥t\deg r_0 = 2t \ge t で、最後は rN+1=0r_{N+1} = 0 なので、条件を満たす最小の ii は 1≤i≤N+11 \le i \le N + 1 の範囲にあり、deg⁡ri−1≥t\deg r_{i-1} \ge t です。補題の 4 から

deg⁡ui=2t−deg⁡ri−1≤t\deg u_i = 2t - \deg r_{i-1} \le t

で、とくに ui≠0u_i \ne 0 です。補題の 2 から uiS≡ri(modx2t)u_iS \equiv r_i \pmod{x^{2t}} です。

σri=ωui\sigma r_i = \omega u_i であること。 2 つの合同式から σri≡σuiS≡ωui(modx2t)\sigma r_i \equiv \sigma u_iS \equiv \omega u_i \pmod{x^{2t}} です。deg⁡σ=w≤t\deg\sigma = w \le t と deg⁡ri<t\deg r_i < t から deg⁡(σri)<2t\deg(\sigma r_i) < 2t、deg⁡ω≤w−1<t\deg\omega \le w - 1 < t と deg⁡ui≤t\deg u_i \le t から deg⁡(ωui)<2t\deg(\omega u_i) < 2t です。差 σri−ωui\sigma r_i - \omega u_i は x2tx^{2t} の倍数で次数が 2t2t 未満なので 00 です。

ui=λσu_i = \lambda\sigma、ri=λωr_i = \lambda\omega と書けること。 σ\sigma は ωui\omega u_i を割り切り、σ\sigma と ω\omega は共通の既約因子をもたないので(補題 6.4)、一意分解性(定理 2.5[多項式環と体の拡大])から σ\sigma は uiu_i を割り切ります。ui=λσu_i = \lambda\sigma(λ∈K[x]\lambda \in K[x]、λ≠0\lambda \ne 0)と書くと、σri=ωλσ\sigma r_i = \omega\lambda\sigma から ri=λωr_i = \lambda\omega です。

λ\lambda が定数であること。 鍵方程式を σS=ω+μx2t\sigma S = \omega + \mu x^{2t}(μ∈K[x]\mu \in K[x])と書きます。補題の 2 から

six2t=ri−uiS=λω−λσS=−λμx2ts_ix^{2t} = r_i - u_iS = \lambda\omega - \lambda\sigma S = -\lambda\mu x^{2t}

で、K[x]K[x] は整域なので si=−λμs_i = -\lambda\mu です。λ\lambda は sis_i と uiu_i の共通因子なので、補題の 3 により定数です。

σ(0)=1\sigma(0) = 1 なので ui(0)=λ≠0u_i(0) = \lambda \ne 0 で、σ=ui/ui(0)\sigma = u_i/u_i(0)、ω=ri/ui(0)\omega = r_i/u_i(0) が得られます。

誤りの位置は、σ\sigma の根を α0,α−1,…,α−(n−1)\alpha^{0}, \alpha^{-1}, \ldots, \alpha^{-(n-1)} の中から順に代入して探します(Chien 探索)。σ(α−i)=0\sigma(\alpha^{-i}) = 0 となる ii が誤りの位置です。二元符号なら誤りの値は 11 に決まっているので、これで復号は終わりです。q>2q > 2 のときは誤りの値が必要で、次の公式で求まります。

命題 6.7(Forney の公式)✓

定義 6.3 の記号で、σ′\sigma' を σ\sigma の形式微分とすると、各 i∈Ii \in I について

ei=−ω(Xi−1)σ′(Xi−1)e_i = -\frac{\omega(X_i^{-1})}{\sigma'(X_i^{-1})}

が成り立つ。

証明(命題 6.7)

形式微分 (∑jfjxj)′=∑jjfjxj−1\bigl(\sum_j f_jx^j\bigr)' = \sum_j jf_jx^{j-1} は線形で、単項式について (xjxl)′=(j+l)xj+l−1=(xj)′xl+xj(xl)′(x^{j}x^{l})' = (j+l)x^{j+l-1} = (x^j)'x^l + x^j(x^l)' なので、積の法則 (fh)′=f′h+fh′(fh)' = f'h + fh' が成り立ちます。これを σ=∏l∈I(1−Xlx)\sigma = \prod_{l \in I}(1 - X_lx) に繰り返し使うと

σ′(x)=∑i∈I(−Xi)∏l≠i(1−Xlx)\sigma'(x) = \sum_{i \in I}(-X_i)\prod_{l \ne i}(1 - X_lx)

です。x=Xi−1x = X_i^{-1} を代入すると、ii 以外の項は因子 1−XiXi−1=01 - X_iX_i^{-1} = 0 を含むので σ′(Xi−1)=−Xi∏l≠i(1−XlXi−1)\sigma'(X_i^{-1}) = -X_i\prod_{l \ne i}(1 - X_lX_i^{-1}) です。補題 6.4 の証明で見たとおり ω(Xi−1)=eiXi∏l≠i(1−XlXi−1)\omega(X_i^{-1}) = e_iX_i\prod_{l \ne i}(1 - X_lX_i^{-1}) で、積の部分は 00 でないので、比を取ると ω(Xi−1)/σ′(Xi−1)=−ei\omega(X_i^{-1})/\sigma'(X_i^{-1}) = -e_i です。

例 6.8([15, 7, 5] BCH 符号で 2 誤りを訂正する)

例 4.7 の δ=5\delta = 5 の符号(t=2t = 2)を使います。F16\mathbb{F}_{16} の元の表は、α4=α+1\alpha^4 = \alpha+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,α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

です。符号語 c(x)=g(x)=1+x4+x6+x7+x8c(x) = g(x) = 1 + x^4 + x^6 + x^7 + x^8 を送り、座標 22 と 1111 が反転して y(x)=c(x)+x2+x11y(x) = c(x) + x^2 + x^{11} を受け取ったとします。

シンドローム。 Sj=y(αj)=α2j+α11jS_j = y(\alpha^j) = \alpha^{2j} + \alpha^{11j} なので、S1=α2+α11=α9S_1 = \alpha^2 + \alpha^{11} = \alpha^9、S2=S12=α3S_2 = S_1^2 = \alpha^{3}、S3=α6+α33=α6+α3=α2S_3 = \alpha^6 + \alpha^{33} = \alpha^6 + \alpha^3 = \alpha^2、S4=S22=α6S_4 = S_2^2 = \alpha^6 です(受信側は yy から直接計算します。二元符号では S2j=Sj2S_{2j} = S_j^2 です)。S(x)=α9+α3x+α2x2+α6x3S(x) = \alpha^9 + \alpha^3x + \alpha^2x^2 + \alpha^6x^3。

互除法。 r0=x4r_0 = x^4、r1=Sr_1 = S から始めます。

iiqiq_iri+1r_{i+1}ui+1u_{i+1}
11α9x+α5\alpha^9x + \alpha^5α2x2+α13x+α14\alpha^2x^2 + \alpha^{13}x + \alpha^{14}α9x+α5\alpha^9x + \alpha^5
22α4x\alpha^4xα9\alpha^9α13x2+α9x+1\alpha^{13}x^2 + \alpha^9x + 1

deg⁡r3=0<t=2\deg r_3 = 0 < t = 2 で止まります。u3(0)=1u_3(0) = 1 なので

σ(x)=1+α9x+α13x2,ω(x)=α9\sigma(x) = 1 + \alpha^9x + \alpha^{13}x^2, \qquad \omega(x) = \alpha^9

です。

誤りの位置。 σ(α−i)=0\sigma(\alpha^{-i}) = 0 となる ii を探すと i=2i = 2 と i=11i = 11 です。実際 σ(x)=(1−α2x)(1−α11x)\sigma(x) = (1 - \alpha^2x)(1 - \alpha^{11}x) で、α2+α11=α9\alpha^2 + \alpha^{11} = \alpha^9、α2α11=α13\alpha^2\alpha^{11} = \alpha^{13} です。座標 22 と 1111 を反転して cc が復元されます。

Forney の公式の確認。 標数 22 では (x2)′=0(x^2)' = 0 なので σ′(x)=α9\sigma'(x) = \alpha^9 で、ei=ω/σ′=1e_i = \omega/\sigma' = 1 となり、二元符号の誤りの値と合っています。

記録媒体の傷や通信路のフェージングでは、誤りは散らばらず、連続した区間に固まって起こります。

この節の命題のねらいは、「バースト誤りを訂正できる符号には冗長部分 n−kn - k が最低どれだけ必要か」を、シンドロームの個数を数えることで下から押さえることです。長さ bb 以下のバーストを区別するには、それぞれに別のシンドロームが対応していなければなりません。区別すべき語の個数が、シンドロームの取りうる個数 qn−kq^{n-k} を超えないという数え上げが、Reiger の限界の証明の骨格です。

定義 7.1(バースト)↗

00 でない語 e∈Fqne \in \mathbb{F}_q^n が長さ ll 以下の(巡回)バーストであるとは、ある ii と、deg⁡b<l\deg b < l を満たす多項式 b(x)b(x) について、RnR_n の中で e(x)=xib(x)e(x) = x^ib(x) と書けることをいう。すなわち、ee の 00 でない成分が、巡回的に連続する ll 個の座標の中に収まることをいう。

命題 7.2(バースト誤りの検出と訂正)✓

  1. 巡回 [n,k]q[n, k]_q 符号 CC は、長さ n−kn - k 以下のバーストを符号語として含まない。したがって、長さ n−kn - k 以下のバースト誤りをすべて検出する。
  2. 線形符号 CC について、「長さ bb 以下のバーストがすべて相異なるシンドロームをもち、どれもシンドロームが 00 でない」ことと、「CC の 00 でない符号語は、長さ bb 以下のバーストでも、そのようなバースト 2 つの差でもない」ことは同値である。
  3. (Reiger の限界)2 の条件を満たす [n,k]q[n, k]_q 符号は、2b≤n2b \le n のとき n−k≥2bn - k \ge 2b を満たす。
証明(命題 7.2)

(1) e=xib(x)e = x^ib(x)(RnR_n の中で)、b≠0b \ne 0、deg⁡b<n−k\deg b < n - k が符号語だとします。xx は RnR_n の単元(x⋅xn−1=1x \cdot x^{n-1} = 1)で、CC はイデアルなので、b=xn−ie∈Cb = x^{n-i}e \in C です。CC の 00 でない元を次数 nn 未満の多項式で表すと生成多項式 gg の倍数なので(定理 3.3 の 2)、次数は deg⁡g=n−k\deg g = n - k 以上です。これは deg⁡b<n−k\deg b < n - k に反します。誤り ee が加わった受信語 c+ec + e が符号語になるのは e∈Ce \in C のときだけなので、このようなバーストは必ず検出されます。

(2) 検査行列を HH とすると、語 ee のシンドロームは HeTHe^{\mathsf{T}} で、HeT=He′THe^{\mathsf{T}} = He'^{\mathsf{T}} は e−e′∈Ce - e' \in C と同値、HeT=0He^{\mathsf{T}} = 0 は e∈Ce \in C と同値です(定理 4.2[線形符号])。これを長さ bb 以下のバースト e≠e′e \ne e' に当てはめたものが主張です。

(3) 最初の 2b2b 個の座標の外で 00 である語の全体 UU は q2bq^{2b} 元からなります。u,u′∈Uu, u' \in U、u≠u′u \ne u' とすると、u−u′u - u' は UU の 00 でない元で、座標 0,…,b−10, \ldots, b-1 の部分 vv と座標 b,…,2b−1b, \ldots, 2b-1 の部分 v′v' の和 v+v′v + v' に分かれます。v,v′v, v' はそれぞれ 00 か長さ bb 以下のバーストなので、u−u′=v−(−v′)u - u' = v - (-v') は長さ bb 以下のバーストか、そのようなバースト 2 つの差です。2 の条件から u−u′∉Cu - u' \notin C で、uu と u′u' のシンドロームは異なります。シンドロームは Fqn−k\mathbb{F}_q^{n-k} の元なので q2b≤qn−kq^{2b} \le q^{n-k} です。

2 の条件が成り立てば、シンドロームからバーストを一意に特定でき、長さ bb 以下のバースト誤りをすべて訂正できます。Reiger の限界は、ランダムな誤りに対する Singleton 限界 n−k≥d−1≥2tn - k \ge d - 1 \ge 2t のバースト版です。

例 7.3(CRC が検出できる誤り)

巡回冗長検査(CRC)では、次数 rr の多項式 g(x)∈F2[x]g(x) \in \mathbb{F}_2[x](g(0)=1g(0) = 1)を決め、情報 m(x)m(x) に、xrm(x)x^rm(x) を gg で割った余り r(x)r(x) を付けて c(x)=xrm(x)+r(x)c(x) = x^rm(x) + r(x) を送ります(注意 3.6)。受信側は受信語を gg で割り、余りが 00 でなければ誤りがあったと判断します。誤り e(x)e(x) が見逃されるのは g∣eg \mid e のときだけです。

  • 長さ rr 以下のバースト。 e=xib(x)e = x^ib(x)、b(0)=1b(0) = 1、deg⁡b<r\deg b < r とします。g(0)=1g(0) = 1 なので gg と xx は共通因子をもたず、g∣xibg \mid x^ib なら g∣bg \mid b ですが、deg⁡b<deg⁡g\deg b < \deg g なので不可能です。すべて検出されます(命題 7.2 の 1 と同じ議論で、語の長さが gg の周期より短くても成り立ちます)。
  • 奇数個の誤り。 gg が x+1x + 1 で割り切れるなら、gg の倍数は x=1x = 1 で 00、つまり偶数重みなので、奇数重みの誤りはすべて検出されます。
  • 2 個の誤り。 e=xi(xj+1)e = x^i(x^{j} + 1) が gg の倍数になるのは g∣xj+1g \mid x^j + 1 のときです。g∣xN+1g \mid x^{N} + 1 となる最小の NN(gg の周期)より語が短ければ、2 個の誤りはすべて検出されます。

例 7.4(Reed–Solomon 符号を F₂ に展開する)

F2m\mathbb{F}_{2^m} の元を F2\mathbb{F}_2 上の基底で mm ビットに書くと、F2m\mathbb{F}_{2^m} 上の [n,k,d][n, k, d] 符号は二元 [mn,mk][mn, mk] 符号になり、最小距離は dd 以上です(00 でないシンボルは 00 でないビットを少なくとも 1 つ含みます)。例 5.6 の符号からは二元 [21,9][21, 9] 符号(最小距離 55 以上)が得られます。

この符号はバーストに強い符号です。もとの符号が tt 個のシンボル誤りを訂正できるとき、長さ (t−1)m+1(t-1)m + 1 ビット以下のバーストは高々 tt 個のシンボルにしかまたがらないので、すべて訂正できます。[21,9][21, 9] 符号では t=2t = 2、m=3m = 3 で、長さ 44 ビット以下のバーストを訂正します。Reiger の限界は b≤(21−9)/2=6b \le (21 - 9)/2 = 6 です。

例 7.5(CD と QR コード)

  • CD(コンパクトディスク)。 音楽 CD の誤り訂正(CIRC、cross-interleaved Reed–Solomon code)は、F28\mathbb{F}_{2^8} 上の Reed–Solomon 符号を短縮した [32,28,5][32, 28, 5] 符号と [28,24,5][28, 24, 5] 符号の 2 段を、インターリーブ(シンボルの並べ替え)を挟んで組み合わせています。1 シンボルは 1 バイトです。インターリーブは、ディスクの傷による長いバーストを多くの符号語に分散させるためのものです(規格 IEC 60908)。
  • QR コード。 QR コードは F28=F2[x]/(x8+x4+x3+x2+1)\mathbb{F}_{2^8} = \mathbb{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∈Fqs \in \mathbb{F}_q を nn 人に分け、どの kk 人が集まれば復元でき、k−1k - 1 人では何も分からないようにします。f1,…,fk−1∈Fqf_1, \ldots, f_{k-1} \in \mathbb{F}_q を一様ランダムに選んで f(x)=s+f1x+⋯+fk−1xk−1f(x) = s + f_1x + \cdots + f_{k-1}x^{k-1} とし、相異なる 00 でない a1,…,ana_1, \ldots, a_n に対して ii 番目の人に f(ai)f(a_i) を渡します。

分け前の列 (f(a1),…,f(an))(f(a_1), \ldots, f(a_n)) は RSk(a)\mathrm{RS}_k(a) の符号語です。kk 人の分け前から ff が決まるのは、次数 kk 未満の多項式が kk 点の値で決まるからです(補題 2.1 の 3。定理 5.5 の条件 3 の言い換え)。k−1k - 1 人の分け前 f(ai1),…,f(aik−1)f(a_{i_1}), \ldots, f(a_{i_{k-1}}) と任意の候補 s′∈Fqs' \in \mathbb{F}_q に対しては、0,ai1,…,aik−10, a_{i_1}, \ldots, a_{i_{k-1}} の kk 点で指定の値を取る次数 kk 未満の多項式がちょうど 1 つあります(kk 点での評価は kk 次元空間の間の単射な線形写像なので全単射)。したがって、どの s′s' も同じ個数(1 個)の多項式と整合し、k−1k - 1 人は ss について何の情報も得ません。分け前の一部が改ざんされていても、定理 6.1 の復号で ⌊(n−k)/2⌋\lfloor (n-k)/2 \rfloor 個までなら正しい ff が復元できます(McEliece–Sarwate、参考文献 [6])。

演習 8.1易

F2\mathbb{F}_2 上の長さ 77、生成多項式 g=x3+x+1g = x^3 + x + 1 の巡回符号 CC について、生成行列、検査多項式 hh、双対符号 C⊥C^{\perp} の生成多項式を求めよ。また C⊥⊆CC^{\perp} \subseteq C を示せ。

解答

生成行列は g,xg,x2g,x3gg, xg, x^2g, x^3g の係数を並べた

G=(1101000011010000110100001101)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}

です。h=(x7−1)/g=(x+1)(x3+x2+1)=x4+x2+x+1h = (x^7 - 1)/g = (x+1)(x^3+x^2+1) = x^4 + x^2 + x + 1 で、係数を逆順にして h∗=x4+x3+x2+1h^{*} = x^4 + x^3 + x^2 + 1 です。h(0)=1h(0) = 1 なので、定理 3.5 により C⊥C^{\perp} の生成多項式は x4+x3+x2+1=(x+1)(x3+x+1)x^4 + x^3 + x^2 + 1 = (x+1)(x^3+x+1) です。これは gg の倍数なので、C⊥C^{\perp} の元 a⋅(x+1)ga\cdot(x+1)g はすべて CC に属し、C⊥⊆CC^{\perp} \subseteq C です。C⊥C^{\perp} は [7,3,4][7, 3, 4] 単体符号です。

演習 8.2標準

例 4.7 の [15,7,5][15, 7, 5] BCH 符号 CC の双対符号 C⊥C^{\perp} の定義集合と次元を求め、d(C⊥)=4d(C^{\perp}) = 4 を示せ。

解答

CC の定義集合は 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\} です。系 4.3 により C⊥C^{\perp} の定義集合は符号を反転した {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=815 - 7 = 8 です。連続する指数 0,1,20, 1, 2 を含むので、BCH 限界(b=0b = 0、δ=4\delta = 4)から d(C⊥)≥4d(C^{\perp}) \ge 4 です。生成多項式は (x+1)m1m5(x+1)m_1m_5 で、m1m5=(x4+x+1)(x2+x+1)=x6+x5+x4+x3+1m_1m_5 = (x^4+x+1)(x^2+x+1) = x^6+x^5+x^4+x^3+1、これに x+1x + 1 を掛けると x7+x3+x+1x^7 + x^3 + x + 1 となり、重み 44 の符号語です。よって d(C⊥)=4d(C^{\perp}) = 4 です。

演習 8.3標準

n=q−1n = q - 1、α\alpha を Fq×\mathbb{F}_q^{\times} の生成元、aj=αja_j = \alpha^j(0≤j≤n−10 \le j \le n-1)、1≤k≤n−11 \le k \le n-1 とする。RSk(a)⊥=GRSn−k(a,v)\mathrm{RS}_k(a)^{\perp} = \mathrm{GRS}_{n-k}(a, v)、vj=αjv_j = \alpha^j であることを示せ。

解答

定理 5.4 により RSk(a)\mathrm{RS}_k(a) の定義集合は T={1,…,n−k}T = \{1, \ldots, n-k\} です。補集合は {0}∪{n−k+1,…,n−1}\{0\} \cup \{n-k+1, \ldots, n-1\} で、符号を反転すると {0,1,…,k−1}\{0, 1, \ldots, k-1\} です。系 4.3 により、RSk(a)⊥\mathrm{RS}_k(a)^{\perp} は定義集合 {0,1,…,k−1}\{0, 1, \ldots, k-1\} の巡回 [n,n−k][n, n-k] 符号です。

一方、GRSn−k(a,v)\mathrm{GRS}_{n-k}(a, v) の元は cj=αjf(αj)=f~(αj)c_j = \alpha^jf(\alpha^j) = \tilde f(\alpha^j)、f~=xf\tilde f = xf と書け、f~=∑lf~lxl\tilde f = \sum_l \tilde f_lx^l は f~0=0\tilde f_0 = 0 かつ f~l=0\tilde f_l = 0(l≥n−k+1l \ge n-k+1)を満たします。補題 5.3 の 2 から c(αi)=nf~lc(\alpha^i) = n\tilde f_l(l≡−il \equiv -i)で、i=0i = 0 なら l=0l = 0、1≤i≤k−11 \le i \le k-1 なら l=n−i≥n−k+1l = n - i \ge n-k+1 なので、c(αi)=0c(\alpha^i) = 0(0≤i≤k−10 \le i \le k-1)です。よって GRSn−k(a,v)⊆RSk(a)⊥\mathrm{GRS}_{n-k}(a, v) \subseteq \mathrm{RS}_k(a)^{\perp} で、次元がともに n−kn - k なので一致します。

演習 8.4標準

gcd⁡(n,q)≠1\gcd(n, q) \ne 1 の例として、F2\mathbb{F}_2 上の長さ 44 の巡回符号をすべて求め、定理 3.3 の 4 の個数の式 2t2^{t} が成り立たないことを確かめよ。

解答

F2\mathbb{F}_2 上で x4−1=(x+1)4x^4 - 1 = (x+1)^4 です。モニックな約数は (x+1)j(x+1)^j(0≤j≤40 \le j \le 4)の 5 個なので、巡回符号は 5 個です(定理 3.3 の 3)。既約因子は x+1x + 1 の 1 個で 21=22^1 = 2 とは一致しません。重根があると、約数は既約因子の部分集合では決まらず、重複度の選び方の数だけあります。5 個の符号は、j=0j = 0 が全空間、j=1j = 1 が偶数重みの [4,3,2][4, 3, 2] 符号、j=2j = 2 が g=x2+1g = x^2 + 1 の [4,2,2][4, 2, 2] 符号 {0000,1010,0101,1111}\{0000, 1010, 0101, 1111\}、j=3j = 3 が g=x3+x2+x+1g = x^3+x^2+x+1 の反復符号 [4,1,4][4, 1, 4]、j=4j = 4 が {0}\{0\} です。

  1. F. J. MacWilliams, N. J. A. Sloane, The Theory of Error-Correcting Codes, North-Holland, 1977 — 第 7 章(巡回符号)、第 9 章(BCH 符号)、第 10 章(Reed–Solomon 符号)。
  2. J. H. van Lint, Introduction to Coding Theory, 3rd ed., Graduate Texts in Mathematics 86, Springer, 1999 — 巡回符号と BCH 符号の章。
  3. R. M. Roth, Introduction to Coding Theory, Cambridge University Press, 2006 — 一般化 Reed–Solomon 符号とその復号(鍵方程式、互除法)の章。
  4. I. S. Reed, G. Solomon, “Polynomial codes over certain finite fields”, Journal of the Society for Industrial and Applied Mathematics 8 (1960), 300–304.
  5. 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.
  6. 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。

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

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

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

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