代数学において、 2つの多項式の最大公約数(GCDまたはgcdと略されることが多い)とは、元の2つの多項式の両方に約数として含まれる、可能な限り高い次数の多項式のことである。この概念は、 2つの整数の最大公約数に類似している。
体上の単変数多項式の重要な場合、多項式の最大公約数は、整数の最大公約数と同様に、長除法を用いたユークリッドの互除法で計算できます。多項式の最大公約数は、可逆定数による乗算を除いてのみ定義されます。
整数の最大公約数と多項式の最大公約数の類似性により、ユークリッドの互除法とユークリッド除法から導き出せるすべての性質を単変数多項式に拡張することができます。さらに、多項式の最大公約数には、代数学のさまざまな分野で基本的な概念となる特有の性質があります。通常、 2つの多項式の最大公約数の根は、2つの多項式の共通根であり、これにより、根を計算することなく根に関する情報が得られます。たとえば、多項式の多重根は、その多項式とその導関数の最大公約数の根であり、さらに最大公約数を計算することで、元の多項式の指定された多重度の根を根とする多項式の平方因子分解を計算することができます。
最大公約数は、より一般的には、体上、整数環上、および任意の一意分解領域上の多変数多項式に対して定義され、存在します。係数環における最大公約数アルゴリズムが確立されれば、それを計算するアルゴリズムも存在します。これらのアルゴリズムは、変数の数に関する再帰によって問題をユークリッドの互除法の変形に還元します。コンピュータ代数システムでは分数を簡略化するために体系的に使用されるため、これらはコンピュータ代数における基本的なツールとなっています。これが、現代の多項式最大公約数理論の多くの動機となりました。
pとq を、通常は体または整数である整域Fの係数を持つ多項式とする。pとqの最大公約数とは、 pとqを割り切り、かつ p と q のすべての公約数が d も割り切るような多項式dのことである。すべての多項式のペア(両方ともゼロではない) が最大公約数を持つのは、 F が一意の因数分解領域である場合に限る。
Fが体であり、pとq が両方ともゼロでない場合、多項式d が最大公約数であるのは、それがpとq の両方を割り切り、かつ、この性質を持つ多項式の中で次数が最大である場合に限る。p = q = 0 の場合、最大公約数は0 となる。ただし、一部の著者は、この場合、最大公約数は定義されないと考えている。
pとqの最大公約数は通常gcd( p , q )と表記されます。
最大公約数は、可逆定数による乗算を除いて一意です。つまり、d がpとqの最大公約数である場合、多項式c が別の最大公約数となるのは、 Fの可逆元u が存在し、 整数の場合、この曖昧さは、負の最大公約数ではなく、唯一の正の最大公約数を選択することで解消できます。体上の単変数多項式の場合、代わりに標準の最大公約数を唯一の単項式選択(最高次係数が 1 である)として選択できますが、より一般的な係数環では標準の選択はありません。したがって、d = gcd( p , q )やgcd( p , q ) = gcd( r , s )のような等式は、「dはpとqの最大公約数である」および「pとq はrとsと同じ最大公約数の集合を持つ」という意味として理解する必要があります。特に、gcd( p , q ) = 1は、可逆定数が唯一の共通約数であることを意味します。この場合、整数環との類推により、pとqは互いに素な多項式。
2つの多項式の最大公約数を求める方法はいくつかあります。そのうちの2つは次のとおりです。
因数分解を用いて2つの多項式の最大公約数を求めるには、まず2つの多項式を完全に因数分解します。次に、すべての共通因数を積みます。この段階では、必ずしも単項式になるとは限らないため、最後に定数を掛けて単項式にします。すべての共通因数を含み、かつ単項式であるため、これが2つの多項式の最大公約数となります。
例1 : x² + 7x + 6とx² − 5x − 6の最大公約数を求めなさい。
したがって、それらの最大公約数はx + 1です。
多項式の因数分解は、特に次数が大きい場合、難しい場合があります。ユークリッドの互除法は、任意の2つの多項式に対して有効な方法です。これは、ユークリッド除法を繰り返し使用します。このアルゴリズムを2つの数に適用すると、各段階で数の大きさが減少します。多項式の場合、各段階で多項式の次数が減少します。必要に応じて1つの多項式に変換した最後の非ゼロの剰余が、 2つの多項式の最大公約数になります。
より具体的には、2 つの多項式a ( x )とb ( x )の最大公約数を求めるには、b ≠ 0 と仮定することができます(そうでない場合、最大公約数はa ( x )です)。
ユークリッド除法は、商であるq ( x )と剰余で あるr ( x )という2 つの多項式を与え、
多項式g ( x )がa ( x )とb ( x )の両方を割り切るのは、それがb ( x )とr0 ( x )の両方を割り切る場合のみである。したがって 設定 ユークリッド除法を繰り返すことで、新しい多項式q 1 ( x ) 、r 1 ( x ) 、a 2 ( x ) 、b 2 ( x )などを得ることができます。各段階で、 そのため、シーケンスは最終的に次の点に到達します。 そして、1つは最大公約数を持っています。
例:x² + 7x + 6とx² − 5x − 6の最大公約数を求める:
12 x + 12は最後の非ゼロの剰余なので、元の多項式の最大公約数であり、単項式の最大公約数は x + 1です。
この例では、2番目のステップの前に12を因数分解することで分母の導入を避けることは難しくありません。これは擬似剰余数列を用いることで常に可能ですが、注意しないと計算中に非常に大きな整数が導入される可能性があります。そのため、コンピュータによる計算では、以下に説明する別のアルゴリズムが使用されます。
この方法は、計算中に現れる係数がゼロに等しいかどうかをテストできる場合にのみ有効です。したがって、実際には、係数は整数、有理数、有限体の要素であるか、または前述のいずれかの有限生成体拡張に属している必要があります。係数が、近似的にしかわからない実数を表す浮動小数点数である場合は、数値的に安定した結果を得るために最大公約数の次数を知っている必要があります。この場合、通常は特異値分解に基づく他の手法が使用されることがあります。
体上の単変数多項式の基本ケースは特に重要です。これは整数環以外の最も単純な例であり、この類推がユークリッド領域の概念の源となっています。多変数ケースや一意分解領域における係数に関する理論とアルゴリズムは、この基本ケースに大きく依存しています。多項式の最大公約数アルゴリズムと派生アルゴリズムを用いることで、多項式の根を計算することなく、その根に関する有用な情報を得ることができます。
多項式のユークリッド除法は、最大公約数を計算するためのユークリッドの互除法で使用されており、整数のユークリッド除法と非常によく似ています。その存在は次の定理に基づいています。2 つの 1 変数多項式が与えられたとき、そして体上で定義される多項式は、2つ存在する。(商)と(残りの) そして ここで「deg(...)」は次数を表し、零多項式の次数は負の値として定義されます。さらに、qとrはこれらの関係式によって一意に定義されます。
整数のユークリッド除法との違いは、整数の場合、次数が絶対値に置き換えられること、そして一意性を確保するためにはrが非負であると仮定する必要があることである。このような定理が存在する環は、ユークリッド整域と呼ばれる。
整数の場合と同様に、多項式のユークリッド除法は長除法アルゴリズムで計算できます。このアルゴリズムは通常、紙と鉛筆を使った計算用に提示されますが、以下のように形式化するとコンピュータでもうまく機能します(変数名は、紙と鉛筆を使った長除法の計算における紙の領域と正確に対応していることに注意してください)。以下の計算では、「deg」は引数の次数(慣例としてdeg(0) < 0)を表し、「lc」は先頭係数、つまり変数の最高次の係数を表します。
ユークリッド分割
入力: aとb ≠ 0 は変数xに関する 2 つの多項式です。 出力:商qと余りrです。
始める
q := 0 r := a d := deg( b ) c := lc( b ) while deg( r ) ≥ d do s := (lc( r )/ c ) ⋅ x deg( r )− d q := q + s r := r − sb end do return ( q , r )終わり
このアルゴリズムの妥当性の証明は、「while」ループ全体を通して、a = bq + rであり、deg( r )が各反復ごとに減少する非負の整数であるという事実に基づいています。したがって、このアルゴリズムの妥当性の証明は、ユークリッド除法の妥当性も証明することになります。
整数に関しては、ユークリッド除法を用いることで、最大公約数を計算するためのユークリッドの互除法を定義することができる。
2つの多項式aとbから始めて、ユークリッドの互除法は、( a , b )のペアを( b , rem( a , b )) (ここで「rem( a , b )」は、前のセクションのアルゴリズムによって計算されたユークリッド除法の余りを表す)で再帰的に置き換え、 b = 0 になるまで続ける。最大公約数は、最後のゼロでない余りである。
ユークリッドの互除法は、再帰プログラミングのスタイルで次のように定式化できる。
命令型プログラミングスタイルでは、同じアルゴリズムは、各中間剰余に名前を付けることで、次のようになります。
r 0 := a r 1 := b
for ( i := 1; r i ≤ 0; i := i + 1) do
r i +1 := rem( r i −1 , r i )end do
return r i -1。
r iの次数列は厳密に減少します。したがって、最大でdeg( b )ステップ後には、剰余r kが得られます。( a , b )と( b , rem( a , b ))は同じ約数を持つため、共通約数の集合はユークリッドの互除法によって変更されず、したがってすべてのペア( r i , r i +1 )は同じ共通約数の集合を持ちます。したがって、 aとbの共通約数はr k −1と 0の共通約数です。したがって、 r k −1はaとbの最大公約数です。これは、ユークリッドの互除法が最大公約数を計算することを証明するだけでなく、最大公約数が存在することも証明します。
ベズーの恒等式は、最大公約数に関連する定理であり、最初は整数に対して証明されましたが、すべての主イデアル整域に対して有効です。体上の一変数多項式の場合、次のように述べることができます。
そして、u = 1、v = 0、またはu = 0、v = 1、または
多項式の場合、この結果の興味深い点は、多項式uとvを計算する効率的なアルゴリズムが存在することです。このアルゴリズムは、ループの各反復で行われる計算がいくつか多い点でユークリッドの互除法とは異なります。そのため、拡張最大公約数アルゴリズムと呼ばれます。ユークリッドの互除法とのもう 1 つの違いは、余りだけでなく、ユークリッド除法の商 (「quo」と表記) も使用することです。このアルゴリズムは次のように動作します。
拡張GCDアルゴリズム
入力: a、 b、単変数多項式
出力:
gはaとb の最大公約数、u、vは上記の記述と同様、 a 1、b 1はa = g a 1 、 b = g b 1となる 。
始める
( r 0 , r 1 ) := ( a , b ) ( s 0 , s 1 ) := (1, 0) ( t 0 , t 1 ) := (0, 1) for ( i := 1; r i ≠ 0; i := i +1) do q := quo( r i −1 , r i ) r i +1 := r i −1 − qr i s i +1 := s i −1 − qs i t i +1 := t i −1 − qt i end do g := r i −1 u := s i −1 v := t i −1 a 1 := (−1) i −1 t i b 1 := (−1) i s i終わり
アルゴリズムが出力仕様を満たすという証明は、すべてのiに対して次 の事実に基づいています。 後者の等式は、 次数に関する主張は、各反復において、 s iとt i の次数が最大でr iの次数が減少するにつれて増加するという事実から導かれる。
このアルゴリズムの興味深い特徴は、ベズーの恒等式の係数が必要な場合、入力された多項式をそれらの最大公約数で割った商が無料で得られる点です。
拡張最大公約数アルゴリズムの重要な応用例の一つは、代数体拡大における除算を計算できることである。
L を体Kの代数的拡大体とし、最小多項式fの次数がnである要素によって生成されるものとする。L の要素は通常、次数がn未満のK上の単変数多項式で表される。
Lにおける加算は、単純に多項式の加算である。
Lにおける乗算は、多項式の乗算に続いてfによる除算を行うことである。
Lの非ゼロ要素aの逆元は、ベズーの恒等式au + fv = 1の係数uであり、これは拡張 GCD アルゴリズムによって計算できます。(最小多項式fは既約であるため、GCD は 1 です。)拡張 GCD アルゴリズムの仕様における次数不等式は、 deg( u ) < deg( f ) を得るためにfによるさらなる除算は不要であることを示しています。
単変数多項式の場合、最大公約数と終結式の間には強い相関関係があります。より正確には、2つの多項式PとQの終結式は、 PとQの係数の多項式関数であり、 PとQの最大公約数が定数でない場合のみ、その値はゼロになります。
部分終結式の理論は、この性質を一般化したもので、2 つの多項式の最大公約数を一般的に特徴付けることができ、終結式は 0 番目の部分終結式多項式です。[ 1 ]
2つの多項式PとQのi番目の部分結果多項式S i ( P , Q )は、次数が最大でiの多項式であり、その係数はPとQの係数の多項式関数であり、i番目の主部分結果係数s i ( P , Q )はS i ( P , Q )の次数iの係数である。PとQの最大公約数が次数dであるのは、次の場合に限る。
この場合、S d ( P , Q )はPとQの最大公約数であり、
部分終結式多項式の各係数は、 PとQのシルベスター行列の小行列の行列式として定義されます。これは、部分終結式がうまく「特化」することを意味します。より正確には、部分終結式は任意の可換環R上の多項式に対して定義され、次の性質を持ちます。
φ をRから別の可換環Sへの環準同型とする。これは、RとS上の多項式環間の別の準同型 (これもφと表記) に拡張される。この とき、PとQ がRの係数を持つ一変数多項式で、 そして すると、 φ ( P )とφ ( Q ) の副結果多項式と主副結果係数は、PとQのそれらをφで写像したものになります。
部分結果式には、整数係数を持つ2つの多項式の最大公約数をコンピュータ上で計算する上で不可欠な2つの重要な性質があります。第一に、行列式による定義により、アダマールの不等式を用いて最大公約数の係数の大きさを制限できます。第二に、この制限と優れた特殊化の性質により、モジュラー計算と中国剰余定理(下記参照)を用いて、整数係数を持つ2つの多項式の最大公約数を計算できます。
させて を体Kの係数を持つ 2 つの単変数多項式とする。次数がi未満の多項式のi次元K ベクトル空間。 i ≤ mかつi ≤ n を満たす非負整数iに対して、 線形写像を次のように 定義する。
PとQの合成行列はシルベスター行列の行列式であり、これは(正方)行列である。Xのべき乗に基づいて。同様に、iサブ結果多項式は、行列のサブ行列の行列式によって定義される。
これらの行列をより正確に説明しましょう。
i < 0またはi > mの場合、 p i = 0とし、i < 0またはi > nの場合、 q i = 0 とする。シルベスター行列は、 i行j列の係数がj ≤ nの場合はp m + j − i、j > nの場合はq j − iとなるような( m + n ) × ( m + n )行列である。[注 1 ]
行列T iのは、Sの1 列目からn − i列目とn + 1 列目からm + n − i列目までの小行列の最後のi行のゼロを削除することによって得られる、S の ( m + n − i ) × ( m + n − 2 i ) -小行列です(つまり、各ブロックのi列と最後のi行のゼロを削除することによって得られます)。主小結果係数s iは、 T iの最初のm + n − 2 i行の行列式です。
V iを次のように定義される( m + n − 2 i ) × ( m + n − i )行列とする。まず、 ( m + n − 2 i − 1) × ( m + n − 2 i − 1)単位行列の右側に( i + 1)列のゼロを追加する。次に、結果として得られる行列の下部を、( m + n − i − 1)個のゼロに続いてX i、X i −1、 ...、X、 1からなる行で囲む。
この表記法では、i番目の部分結果多項式は行列積V i T iの行列式です。その次数jの係数は、T iの最初のm + n − 2 i − 1行と( m + n − i − j )行目からなる正方部分行列の行列式です。
定義されたとおりに部分終結式が望ましい性質を持つかどうかは自明ではない。しかし、線形代数の性質と多項式の性質を組み合わせれば、証明は比較的容易である。
定義によれば、行列T iの列は、 の像に属するいくつかの多項式の係数のベクトルである。i番目の部分結果多項式S iの定義は、その係数ベクトルがこれらの列ベクトルの線形結合であることを示しており、したがってS i はの像に属します。
GCD の次数がiより大きい場合、ベズーの恒等式は、像内のすべての非ゼロ多項式が次数がiより大きい。これはS i = 0を意味する。
一方、最大公約数の次数がiの場合、ベズーの恒等式により、次数がm + n − iより小さい最大公約数の倍数は、次の像に含まれることが再び証明される。これらの倍数のベクトル空間は次元がm + n − 2 iであり、 i以上で互いに異なる次数の多項式の基底を持ちます。これは、 T iの列階段形のm + n − 2 i行目の部分行列が単位行列であることを意味し、したがってs i は0 ではありません。したがって、S iは、これは最大公約数の倍数であり、次数も同じです。したがって、これは最大公約数です。
ほとんどの根探索アルゴリズムは、多重根を持つ多項式に対してはうまく動作しません。そのため、根探索アルゴリズムを呼び出す前に、多重根を検出して除去することが有効です。多項式の多重根は、その多項式とその導関数の最大公約数の根であるため、最大公約数(GCD)の計算によって多重根の存在を検出できます。
多項式とその導関数の最大公約数を計算した後、さらに最大公約数を計算すると、多項式の 完全な平方因子を含まない因数分解が得られます。これは因数分解です。 ここで、各iについて、多項式f i は、 f が重複度iの根を持たない場合は 1 であるか、または、その根がfの重複度iの根と正確に一致する平方フリー多項式 (つまり、多重根を持たない多項式) である(ユンのアルゴリズムを参照)。
このように、平方因子を用いない因数分解を行うことで、多重根を持つ多項式の根を求める問題を、次数が低い複数の平方因子を用いない多項式の根を求める問題に帰着させることができます。平方因子を用いない因数分解は、ほとんどの多項式因数分解アルゴリズムにおける最初のステップでもあります。
実数係数多項式のシュトゥルム数列は、その多項式とその導関数にユークリッドの互除法の変形を適用して得られる剰余の数列です。シュトゥルム数列を得るには、単に命令を置き換えるだけです。 ユークリッドのアルゴリズムによる
点aで評価したときの数列の符号変化の数をV ( a )とする。シュトゥルムの定理によれば、V ( a ) − V ( b )は区間[ a , b ]における多項式の実根の数である。したがって、シュトゥルム数列を用いることで、与えられた区間における実根の数を計算できる。区間を細分化し、各部分区間に最大で 1 つの根が含まれるようにすることで、任意の短い長さの区間における実根の位置を特定するアルゴリズムが得られる。
このセクションでは、一意の因数分解領域R (通常は整数環) と、その分数体F (通常は有理数体) 上の多項式を考察し、R [ X ] とF [ X ] をこれらの環上の変数の集合に関する多項式の環とします。
多項式p ∈ R [ X ]の内容は「cont( p )」と表記され、その係数の最大公約数である。多項式q ∈ F [ X ]は次のように書ける。 ここで、p ∈ R [ X ]およびc ∈ Rである。c には qの係数のすべての分母の倍数(例えばそれらの積)を取り、 p = cqとすれば十分である。qの内容は次のように定義される。 どちらの場合も、内容はRの単位を掛けた分まで定義されます。
R [ X ]またはF [ X ]における多項式の原始部分は次のように定義される。
どちらの場合も、それは R [ X ] の原始多項式であり、つまり1はその係数の最大公約数です。
したがって、 R [ X ]またはF [ X ]のすべての多項式は次のように因数分解できます。 そしてこの因数分解は、内容にRの単位を掛け、原始部分にこの単位の逆数を掛けるという操作を除いて一意である。
ガウスの補題は、2つの原始多項式の積が原始多項式であることを意味する。したがって、 そして
前節の関係式は、R [ X ]とF [ X ]における最大公約数の間に強い関係があることを示唆している。曖昧さを避けるため、以下では「 gcd 」という表記は、最大公約数が計算される環によって添え字付けされる。
q 1とq 2がF [ X ]に属する場合、
p 1とp 2がR [ X ]に属する場合、 そして
したがって、多項式の最大公約数の計算は、本質的にはF [ X ]とR [ X ]上で同じ問題です。
有理数上の単変数多項式の場合、ユークリッドの互除法は最大公約数を計算するのに便利な方法だと考えられるかもしれません。しかし、この方法は多数の整数の分数を簡約する必要があり、結果として得られるアルゴリズムは効率的ではありません。このため、整数上の多項式のみを扱うようにユークリッドの互除法を修正する方法が考案されました。これらの方法は、分数を導入するユークリッド除法をいわゆる擬似除法に置き換え、ユークリッドの互除法の剰余列をいわゆる擬似剰余列に置き換えるものです(下記参照)。
前の節では、 R [ X ]の多項式の最大公約数は、RとF [ X ] の最大公約数から導き出せることを見てきました。証明を詳しく見てみると、R と F [ X ]に最大公約数が存在する場合、R [ X ]にも最大公約数が存在することを証明できることがわかります。特に、R に最大公約数が存在し、 X が 1 つの変数に還元される場合、R [ X ]にも最大公約数が存在することが証明されます(ユークリッドの互除法は F [ X ] に最大公約数が存在することを証明します)。
n変数の多項式は、 ( n -1 ) 変数の多項式の環上の単変数多項式とみなすことができます。したがって、変数の数に関する再帰により、Rに最大公約数が存在し計算できる場合、 R上のすべての多変数多項式環にも最大公約数が存在し計算できることがわかります。特に、Rが整数環または体である場合、 R [ x 1 , ..., x n ]に最大公約数が存在し、前述の内容はそれらを計算するアルゴリズムを提供します。
一意分解領域上の多項式環が一意分解領域でもあることの証明は同様ですが、アルゴリズムは提供されません。なぜなら、体上の一変数多項式を因数分解する一般的なアルゴリズムは存在しないからです(一変数多項式に対する因数分解アルゴリズムが存在しない体の例もあります)。
このセクションでは、整域Z (通常は整数環Z ) とその分数体Q (通常は有理数体Q ) を考察します。一変数多項式環Z [ X ]の 2 つの多項式AとBが与えられたとき、 AをBで除算 ( Q上)すると、商と余りが得られますが、これらはZ [ X ]に属さない場合があります。
なぜなら、次の多項式にユークリッドのアルゴリズムを適用すると[ 2 ] そして ユークリッドの互除法の連続する剰余は 入力多項式の次数や係数のサイズが小さいにもかかわらず、かなり大きな整数分数を操作して簡略化する必要があることがわかる。
の擬似除算は、すべての剰余がZ [ X ]に属するユークリッドのアルゴリズムの変種を可能にするために導入されました。
もしそしてまた、a ≥ b の場合、AをBで擬似除算したときの擬似剰余はprem( A , B )で表され、 ここでlc( B )はBの最高次係数( X bの係数) です。
Z [ X ]内の 2 つの多項式の擬似除算の擬似剰余は常にZ [ X ]に属します。
擬似剰余シーケンスは、命令を置き換えることによって得られる (擬似)剰余r iのシーケンスです。 ユークリッドのアルゴリズムによる ここで、αは分子のすべての係数を正確に割り切るZの要素である。αの選び方によって異なる擬似剰余数列が得られ、それらについては次の節で説明する。
2 つの多項式に可逆定数 ( Q内) を掛けても、それらの共通因数は変化しないため、擬似剰余列の最後の非ゼロ項は、入力多項式の最大公約数 ( Q [ X ]内) になります。したがって、擬似剰余列を使用すると、 Qに分数を導入することなく、Q [ X ]の最大公約数を計算できます。
状況によっては、擬似剰余の先頭係数の符号を制御することが不可欠です。これは通常、終結式や部分終結式を計算する場合、またはシュトゥルムの定理を使用する場合に当てはまります。この制御は、擬似剰余の定義でlc( B )をその絶対値に置き換えるか、 αの符号を制御することによって行うことができます ( α が剰余のすべての係数を割り切る場合、 − αについても同様です)。[ 1 ]
最も単純な(定義しやすい)剰余列は、常にα = 1とすることです。実際には、係数のサイズが入力多項式の次数とともに指数関数的に増加するため、これは興味深いものではありません。これは、前のセクションの例で明確に示されており、その場合の連続する擬似剰余は次のようになります。 アルゴリズムの各反復において、連続する剰余の係数の桁数は2倍以上に増加する。これは、自明な擬似剰余数列に典型的な挙動である。
原始擬似剰余数列は、αに分子の内容を取ることによって得られる。したがって、すべてのr iは原始多項式である。
原始的な擬似剰余数列は、最小の係数を生成する擬似剰余数列です。しかし、 Zにおける多数の最大公約数を計算する必要があるため、特にZ自体が多項式環である場合、実用上は十分効率的ではありません。
前のセクションと同じ入力値で、その内容で除算した後の連続する剰余は次のようになります。 係数の小ささから、多数の整数の最大公約数と最大公約数による除算が計算されたという事実は隠されている。
部分終結式列は擬似剰余を用いて計算することもできます。その手順は、すべてのr i が部分終結式多項式となるようにα を選択することです。驚くべきことに、 αの計算は非常に簡単です(下記参照)。一方、アルゴリズムの正当性の証明は困難です。なぜなら、連続する 2 つの剰余の次数の差に関するすべての可能性を考慮する必要があるからです。
部分結果列の係数は、原始擬似剰余列の係数と比べて著しく大きくなることは稀である。Z における最大公約数計算は不要であるため、擬似剰余を用いた部分結果列は最も効率的な計算方法となる。
前のセクションと同じ入力値を用いると、連続する剰余は次のようになります。 係数は妥当な大きさである。最大公約数(GCD)の計算は一切行わず、正確な除算のみで得られる。このため、このアルゴリズムは従来の擬似剰余数列を用いたアルゴリズムよりも効率的である。
擬似剰余を用いて部分結果列を計算するアルゴリズムを以下に示します。このアルゴリズムでは、入力( a , b )はZ [ X ]の多項式のペアです。r iはZ [ X ]の連続する擬似剰余であり、変数iとd iは非負の整数であり、ギリシャ文字はZの要素を表します。関数deg()と は、多項式の次数rem()とユークリッド除算の剰余を表します。このアルゴリズムでは、この剰余は常にZ [ X ]にあります。最後に、/ で表される除算は常に正確であり、その結果はZ [ X ]またはZのいずれかになります。
r 0 := a r 1 := b for ( i := 1; r i ≠ 0; i := i +1) do
d i := deg( r i −1 ) − deg( r i ) γ i := lc( r i ) if i = 1 then β 1 := (−1) d 1 +1 ψ 1 := −1 else ψ i := (− γ i −1 ) d i −1 / ψ i −1 d i −1 −1 β i := − γ i −1 ψ i d i end if r i +1 := rem( γ i d i +1 r i −1 , r i ) / β i
終了
注:「lc」は主係数、つまり変数の次数が最も高い係数を表します。
このアルゴリズムは、最大公約数(最後の非ゼロr i)だけでなく、すべての部分結果多項式も計算します。剰余r iは(deg( r i −1 ) − 1)番目の部分結果多項式です。deg ( r i ) < deg( r i −1 ) − 1 の場合、deg( r i )番目の部分結果多項式はlc( r i ) deg( r i −1 )−deg( r i )−1 r iです。その他の部分結果多項式はすべてゼロです。
シュトゥルム数列と同じ性質を持つ数列を構築するために、擬似剰余を用いることができる。そのためには、シュトゥルム数列と同じ符号を持つように、連続する擬似剰余の符号を制御する必要がある。これは、以下のように修正された擬似剰余を定義することによって行うことができる。
もしそしてまた、a ≥ b の場合、 AをBで擬似除算したときの修正擬似剰余prem2( A , B )は次のようになります。 ここで、| lc( B ) |はBの最高次係数 ( X bの係数)の絶対値です。
入力多項式が整数係数の場合、これにより整数係数の多項式からなるシュトゥルム数列を取得できます。部分結果の擬似剰余数列も同様に変更することができ、その場合、剰余の符号は有理数上で計算された符号と一致します。
上記の部分結果擬似剰余数列を計算するアルゴリズムは、以下を使用すると誤った部分結果多項式を計算することに注意してください。の代わりに。
fとg が有限生成体FのF [ x ]における多項式である場合、ユークリッドの互除法はそれらの最大公約数を計算する最も自然な方法です。しかし、現代の数式処理システムは、中間式の膨張と呼ばれる現象のため、 F が有限である場合にのみユークリッドの互除法を使用します。ユークリッドの互除法では次数は減少し続けますが、Fが有限でない場合、 Fでの算術演算を繰り返すと式が大きくなる傾向があるため、計算中に多項式のビットサイズが(場合によっては劇的に)増加する可能性があります。たとえば、分母がbで制限されている 2 つの有理数を加算すると、分母がb 2で制限されている有理数になるため、最悪の場合、1 つの演算だけでビットサイズがほぼ 2 倍になる可能性があります。
計算を迅速化するために、fとg がD [ x ]に含まれる環Dを取り、D / Iが有限環となるようなイデアルIを取ります。次に、この有限環上の最大公約数をユークリッドの互除法で計算します。再構成技術 (中国剰余定理、有理再構成など) を使用すると、いくつかのイデアルIを法とするfとgの像から最大公約数を復元できます。最小次数でないモジュラー像を破棄し、先頭係数がゼロになるようなイデアルIを避ける限り、これが機能することが[ 3 ]で証明できます。
仮定する、、そして.それから有限環(体ではない)最大ではない) ユークリッドアルゴリズムを画像に適用で成功して 1 を返します。これは、最大公約数がでも 1 でなければなりません。次数が小さすぎて式の膨張が発生しないため、この例はどの方法でも簡単に処理できますが、2 つの多項式の最大公約数が 1 の場合、モジュラーアルゴリズムは単一のイデアルの後で終了する可能性が高いことを示しています。。