計算代数における方法
数学、特に計算代数において、ベルレカンプのアルゴリズムは有限体(ガロア体とも呼ばれる)上の多項式を因数分解するよく知られた手法である。このアルゴリズムは主に行列縮小と多項式GCD計算から構成される。これは1967年にエルウィン・ベルレカンプによって発明された。 1981年にカンター・ザッセンハウスのアルゴリズムが発明されるまで、このアルゴリズムは問題を解くための主要なアルゴリズムであった。 現在、このアルゴリズムは多くのよく知られたコンピュータ代数システムに実装されている。
概要
Berlekamp のアルゴリズムは、有限体上の係数を持つ次数の平方のない多項式 (つまり、重複する因数を持たない多項式)を入力として受け取り、を割り切れる同じ体上の係数を持つ多項式を出力します。次に、アルゴリズムをこれらの約数と後続の約数に再帰的に適用し、 を既約多項式のべき乗に分解します(有限体上の多項式環は一意の因数分解領域であることを思い出してください)。







のすべての可能な因数は因数環内に含まれる。
![{\displaystyle R={\frac {\mathbb {F} _{q}[x]}{\langle f(x)\rangle }}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b525bb1a2515b818bf73bf77795fb83e6378860a)
このアルゴリズムは、合同性を満たす多項式に焦点を当てています。


これらの多項式は、 R の部分代数(上の - 次元ベクトル空間とみなすことができる)を形成し、ベルレカンプ部分代数と呼ばれる。ベルレカンプ部分代数は、それに含まれる
多項式が次式を満たすため興味深い。



一般に、上記の積の GCD のすべてが の非自明な因数になるわけではありませんが、いくつかは となり、求める因数を提供します。

ベルレカンプのアルゴリズムは、ベルレカンプ部分代数の基底を計算することによって、上記の結果に使用するのに適した多項式を見つけます。これは、ベルレカンプ部分代数が実際には上の特定の行列の核であり、多項式のいわゆるベルレカンプ行列 から導かれるという観察によって実現されます。 の場合、 はを法として簡約した の - 乗項の係数です。つまり、




![{\displaystyle {\mathcal {Q}}=[q_{i,j}]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8042ea78280b46ff6a5de33dd37f4dc3d0be57eb)





ある多項式について、次のように言います。


行ベクトルを関連付けることができます。

同様に、行ベクトルがを法とする の簡約に対応することは比較的簡単にわかります。したがって、多項式がベルレカンプ部分代数に含まれるのは、 (ここでは単位行列)の場合のみ、つまり のヌル空間に含まれる場合のみとなります。







行列を計算し、それを簡約された行階段形式に簡約し、ヌル空間の基底を簡単に読み取ることによって、ベルレカンプ部分代数の基底を見つけ、その中の多項式を構築することができます。次に、非自明な因子が見つかるまで、上記の形式の GCD を連続的に計算する必要があります。体上の多項式環はユークリッド領域であるため、ユークリッドのアルゴリズムを使用してこれらの GCD を計算できます。


概念的な代数的説明
抽象代数を使うと、ベルレカンプのアルゴリズムの背後にある考え方が概念的に明確になります。有限体 を、ある素数に対して として表します。すべての可能な p 乗根を取り、その導関数で gcd を計算することで、 が平方数でないと仮定できます。



![{\textstyle \mathbb {F} _{p}[y]/(g(y))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/86966a6f87c1c2f146bd77a97d22e524e688f92a)
![{\textstyle f(x)\in \mathbb {F} _{q}[x]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/80a1fa6ce8849244a9f9b0905456af47e4f10d69)
ここで、 が既約な因数分解であると仮定します。すると、中国剰余定理によって与えられる環同型 が得られます。重要な観察は、フロベニウスの自己同型がと可換であるため、 と表記すると、同型 に制限されるということです。有限体論により、 は常にその体拡大の主部分体です。したがって、が元を持つ のは、 が既約な場合のみと なります。

![{\textstyle \sigma :\mathbb {F} _{q}[x]/(f(x))\to \prod _{i}\mathbb {F} _{q}[x]/(f_{i}(x))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5893d03c99981631e3e43759b40dc52b326e15e3)




![{\textstyle {\text{Fix}}_{p}(\mathbb {F} _{q}[x]/(f(x)))\to \prod _{i=1}^{n}{\text{Fix}}_{p}(\mathbb {F} _{q}[x]/(f_{i}(x)))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c2a61cd9f5abdfe30459dce432d7eaab5591f3cc)
![{\textstyle {\text{Fix}}_{p}(\mathbb {F} _{q}[x]/(f_{i}(x)))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b28ce47bd04bd811ef8ba15cde6b1b0f219aafa9)
![{\textstyle {\text{Fix}}_{p}(\mathbb {F} _{q}[x]/(f(x)))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ce83392796e0e09e4c99bc34aa6b8b2a0f6ca026)


さらに、フロベニウスの自己同型が- 線型であるという事実を利用して、固定集合を計算することができます。つまり、 は- 部分空間であり、それがフロベニウスによって固定される場合に限って満たされる多項式の係数に関する線型方程式を計算して確立することにより、多項式環でその明示的な基底を計算できることに注目してください。この時点で、効率的に計算可能な既約基準が得られ、残りの分析では、これを使用して因数を見つける方法を示しています。

![{\textstyle {\text{Fix}}_{p}(\mathbb {F} _{q}[x]/(f(x)))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ce83392796e0e09e4c99bc34aa6b8b2a0f6ca026)

![{\textstyle \mathbb {F} _{p}[x,y]/(f,g)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c795706703f491aa7e13898bcae3fd2223d351b1)


アルゴリズムは、次の 2 つのケースに分類されます。
- が小さい場合、 任意の を構築することができ 、いくつかの に対してが存在し、およびとなることがわかります。このような はと共通の非自明な因数を持ち、これは gcd を介して計算できます。が小さいため、すべての可能な を循環的に調べることができます。

![{\textstyle g\in {\text{Fix}}_{p}(\mathbb {F} _{q}[x]/(f(x)))\setminus \mathbb {F} _{p}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e2f50c460489db19c72a6b3ce32facda05f7c5a5)








- 必然的に奇数となる大きな素数の場合、 のランダムな非ゼロ元が確率 で平方値になるという事実と、写像 が非ゼロ平方値の集合を に、非平方値の集合を に写像するという事実を利用できます。したがって、ランダムな元 を取ると、 は と共通の非自明な因数を持つ確率が高くなります。





![{\textstyle g\in {\text{Fix}}_{p}(\mathbb {F} _{q}[x]/f(x))}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7bc9636c6f1d31cc3325e9b99f929dd7a0bbf773)


詳細については、以下を参照してください。[1]
アプリケーション
Berlekamp アルゴリズムの重要な応用の 1 つは、有限体 上の離散対数の計算です。ここで、 は素数であり、 です。離散対数の計算は、公開鍵暗号化とエラー制御コーディングにおける重要な問題です。有限体の場合、最も高速な既知の方法は、体元の因数分解を伴うインデックス計算法です。通常の方法、つまり、次数の既約多項式を法として簡約された、基底体 上の多項式として体を表す場合、これは Berlekamp アルゴリズムによって提供されるように、単純に多項式因数分解です。






コンピュータ代数システムへの実装
Berlekampのアルゴリズムは、factormodコマンドを使用してPARI/GPパッケージでアクセスでき、WolframAlpha [1]のWebサイトでもアクセスできます。
参照
参考文献
- ^ 計算理論 - デクスター・コーゼン。スプリンガー。2020年9月19日に取得。