【符号理論 vol.7】原始既約多項式による拡大体の構成(その1):多項式で「体」を作る魔法


はじめに

こんにちは、TechBulkです。 前回の記事では、素数 pp を用いた「素体 GF(p)GF(p)」について学びました。特に、コンピュータの世界で最も重要な GF(2)GF(2)(0と1だけの体)については、演算の基礎を確認しましたね。

今回は、この GF(2)GF(2) を土台にして、もっと多くの要素を持つ「拡大体」を作る方法について掘り下げます。

「素数個の要素じゃ足りない、もっとビット列(2n2^n 個の要素)を扱いたい!」

そんな時に活躍するのが、「多項式」を用いた拡大体の構成です。 なぜ特定の多項式を選ぶと「体」が作れるのか、その数学的なカラクリを整理します。

拡大体の構成イメージ

1. 準備:F[X]F[X] と mod 演算

まず、新しい舞台の設定です。

  • 基礎となる体 FF: ここでは GF(2)={0,1}GF(2) = \{0, 1\} とします。
  • 多項式の集合 F[X]F[X]: 係数が FF の要素(つまり0か1)である多項式の集まり。

例えば、x2+1x^2 + 1x3+x+1x^3 + x + 1 などが F[X]F[X] の住人です。

多項式での mod 演算

整数の世界で「pp で割った余り」を考えたように、多項式の世界でも「ある多項式 h(x)h(x) で割った余り」を考えることで、有限個の要素を持つ代数系を作ることができます。

これを数式で F[X]/h(x)F[X]/h(x) と書きます。

ここでの目標は、「この代数系 F[X]/h(x)F[X]/h(x) が『体(Field)』になるような h(x)h(x) の条件を見つけること」です。

2. 実験:適当な多項式で体は作れるか?

まずは、簡単な2次式 h(x)=x2+1h(x) = x^2 + 1 を法(mod)として演算を定義してみましょう。

x2+1x^2 + 1 で割った余りは必ず1次以下になるので、この世界の要素は以下の4つになります。

{0,1,x,x+1}\{ 0, 1, x, x+1 \}

この4つの要素で、加法と乗法が自由にできるでしょうか?

落とし穴:00 以外の掛け算で 00 になる?

実は、この設定では致命的な問題が発生します。x+1x+1 という要素を2回掛けて(2乗して)みましょう。

(x+1)(x+1)=x2+2x+1(x+1)(x+1) = x^2 + 2x + 1

ここで、GF(2)GF(2) の世界では係数の 2200 になる(1+1=01+1=0)ので、2x2x は消えます。

=x2+1= x^2 + 1

さて、今は mod (x2+1)(x^2 + 1) の世界で考えています。x2+1x^2 + 100 と同じ扱いです。つまり、

(x+1)(x+1)=0(x+1) \cdot (x+1) = 0

となってしまいます。

なぜこれがダメなのか?

「体」の定義には、「0以外の要素で割り算ができる(逆元がある)」という条件がありました。 しかし、上記のように AB=0A \cdot B = 0 (A0,B0A \neq 0, B \neq 0) となる現象(零因子の存在)が起きると、割り算が定義できなくなります。

つまり、h(x)=x2+1h(x) = x^2 + 1 を選ぶと、体を作ることができません(失敗!)

原因は、x2+1x^2 + 1 が因数分解できてしまう(可約である)ことにあります。

x2+1=(x+1)(x+1)x^2 + 1 = (x+1)(x+1)

3. 解決策:既約多項式の導入

失敗の原因は、法とした多項式が「分解できる」ことでした。 整数の世界で mod 4mod \ 4 が体にならず、mod 5mod \ 5(素数)が体になったのと同じ理屈です。

そこで、これ以上因数分解できない多項式、すなわち「既約多項式(Irreducible Polynomial)」を使います。

成功例:h(x)=x2+x+1h(x) = x^2 + x + 1

次に、h(x)=x2+x+1h(x) = x^2 + x + 1 を選んでみます。 これが既約かどうか(因数分解できないか)を確認するには、1次式で割れるか、つまり x=0x=0x=1x=1 を代入して 00 になるかを調べます(因数定理)。

  • h(0)=02+0+1=10h(0) = 0^2 + 0 + 1 = 1 \neq 0
  • h(1)=12+1+1=1+1+1=10h(1) = 1^2 + 1 + 1 = 1 + 1 + 1 = 1 \neq 01+1=01+1=0 なので!)

どちらも 00 にならないので、因数を持ちません。つまり、この式は GF(2)GF(2) 上で既約です。

演算表を作ってみる

この既約多項式 ϕ(x)=x2+x+1\phi(x) = x^2 + x + 1 を法とする代数系 F[X]/ϕ(x)F[X]/\phi(x) の要素は、やはり以下の4つです。

{0,1,x,x+1}\{ 0, 1, x, x+1 \}

この世界での乗法(掛け算)の一部を見てみましょう。例えば xxxx を掛けるとどうなるでしょうか。

xx=x2x \cdot x = x^2

ここで、mod の定義 x2+x+1=0x^2 + x + 1 = 0 より、x2=x1x^2 = -x - 1 ですが、GF(2)GF(2) ではマイナスはプラスと同じ(1=1-1 = 1)なので、

x2=x+1x^2 = x + 1

となります。このように、次数が上がっても必ず1次式以下に戻ってきます。 実際に乗算表を作ると、0以外のすべての要素に逆元が存在することが確認できます。

つまり、h(x)h(x) として既約多項式を選べば、代数系 F[X]/h(x)F[X]/h(x) は見事に「体」をなすのです。

4. 今回のまとめ

今回の重要な定理をまとめます。

【定理】F[X]上の既約多項式を用いた体の構成

有限体 FF の係数を持つ整式の集合 F[X]F[X] に対し、mod h(x)h(x) の演算を行う代数系 F[X]/h(x)F[X]/h(x) を考える。

このとき、h(x)h(x)既約多項式 ϕ(x)\phi(x) であれば、代数系 F[X]/ϕ(x)F[X]/\phi(x) は体をなす。

  • x2+1x^2 + 1 (可約) \rightarrow 体にならない(単なる環)。
  • x2+x+1x^2 + x + 1 (既約) \rightarrow 体になる(拡大体 GF(22)GF(2^2))。

この仕組みを使えば、2次だけでなく、3次、4次の既約多項式を使うことで、GF(23)=GF(8)GF(2^3)=GF(8)GF(24)=GF(16)GF(2^4)=GF(16) といった、コンピュータにとって扱いやすい大きな体を作ることができるようになります。

次回は、この拡大体の中で重要な役割を果たす「原始元」や「巡回群」といった構造について、解説します。