トーリックイデアルの グレブナ基底を求める アルゴリズム – F4およびF5 – 東京大学 情報理工学系研究科 中山 裕貴 December 15, 2003 発表の背景 グレブナ基底の計算方法 F4,F5とは 従来はBuchbergerの算法およびその亜種 (改良は主に、不要なペアを除く手法について) Faugèreによる、グレブナ基底計算の新しい算法 F4[Faugère ‘99] ・・・ 多項式同士の計算を、まとめ て行列の形で行う F5[Faugère ’02] ・・・ 新しい多項式を追加するとき、 以前の計算結果を部分的に保存しておく この2つの算法により、今まで解けなかったサイズ の問題が解けたと言われている 発表の内容 今回は、対象をトーリックイデアルの場合に限定、 アルゴリズムを専用に特化させる F4アルゴリズムを改良し、高速化・メモリ節約 このとき、簡約操作を非常に効率よく行うことができる F5アルゴリズムを新たに実装 上記2つのアルゴリズムについて、2つの異なる 項順序で実行時間を計測 実行時間の解析のため、計算途中における sugarや次数、およびペア数を比較する アルゴリズムはasir上で実装・評価 トーリックイデアルとは 係数k は体,k[x1,x2,…xm]は多項式環 多項式イデアル I k[ x1 , x2 ,, xm ]を考える f , g I ならば、 f g I f Iおよび多項式 h について、hf I トーリックイデアル I A は行列 A で定まり I A x u x v | Au Av, u, v N n x u x1 1 x2 2 x m m をこう書く u u u を満たす二項式イデアル (係数は1,-1) 例: A 1 3 1 5 1 2 3 7 2 3 4 3 x y z, x y zw, x w y のトーリックイデアルは 2 線形代数でいう核の次元(=2)より多い 単項間の順序関係 任意の単項m1,m2に対し、順序関係を定める 整列順序であり、最小元は 1 ( x10 x2 0 x 0 ) x u x vならば、x u x t x v x t m 多変数の場合、順序は一意ではない 辞書式順序 xu xv def u1 v1, u2 v2 ,, um vm で最も左の非零要素が正 全次数逆辞書式順序 xu xv def u v あるいは u v かつ u1 v1, u2 v2 ,, um vm で最も右の非零要素が負 i i i i 多項式 f 中で、順序 で最大となる項を in ( f ) と書く グレブナ基底とは イデアルI に含まれる多項式に対し、 その先頭項で生成されるイデアルin I を考える in I in f | f I 一般に、イデアルI の生成元 f1 , f 2 , f n について in I in ( f1 ), , in ( f m ) 例: I x y, x y , x y in I x, y , in ( x y ), in ( x y ) x しかし、生成元 g1 ,, g s がグレブナ基底のとき またそのときに限って in I in ( g1 ),, in ( g s ) イデアルに対し、簡約グレブナ基底は一意に定まる グレブナ基底を求める Buchbergerのアルゴリズム 入力: イデアルの生成元 F f1 ,, f n 出力: グレブナ基底 G g1 ,, g m G : F ; S多項式: ij lcm (HT ( g i ), HT ( g j )) として ij g i ij g j do { Spol ( g i , g j ) のこと in ( g i ) in ( g i ) F : G ; Gの任意のペア(i ,j )に対し、Spol(gi ,gj )を計算; Spol(gi ,gj )をGの要素で簡約したものをg’ とする; g’ が0でなければ、Gに加える; Gの要素で割り、剰余を求めること } while( F G ) 問題点: • ペアの数が膨大になる • 簡約に時間がかかる Buchbergerアルゴリズムの 主な改良法 簡約の高速化 計算不要なペアの除去 頭項の比較により、 0に簡約されるペアを一部除く 併用可能 • Buchbergerの規準 • Gebauerの規準 以前の計算結果を用いることで、 0に簡約されるペアを完全に除く • F5アルゴリズム あらかじめS多項式を複数生成し、 行列の形式で一度に簡約する • F4アルゴリズム トーリックイデアルに 限定したアルゴリズム 行列Aによって定まる多面体の 構造を利用して求める • non-Buchberger アルゴリズム 今回はF4とF5がターゲット F4アルゴリズムの概要 複数のS多項式を計算しておく Symbolic Preprocessing それらの簡約に必要な元の候補を選ぶ 簡約時に加減算だけで済むよう、単項式倍しておく Symbolic Preprocessing 入力: 多項式集合F,G 出力: Red = ah | a is monomial , h G T={F中に出現する全ての項}; Red = { }; while ( HT ( g ) | t なる t T , g G が存在) { Redに t / HT ( g ) g を追加; Tからtを除き、t / HT ( g ) g の先頭項以外の項を追加; } F4アルゴリズムの概要 S多項式・簡約に使う元を行列で表す 行が多項式、列が単項の種類を表す 簡約 = 行列の対角化 (多項式の定数倍・加減算) 例: 2 x 2 3x 6 y 2 3 y 1, 2 xy x 3 y 2 y 1 を G 2 x 2 3 y 2, x 2 y 2 1 で簡約 0 3 6 3 1 2 1 3 1 1 (簡約に使った元) 2 0 0 0 3 2 (簡約に使った元) 0 0 1 2 0 1 (簡約される元) 2 (簡約される元) 0 x 2 xy x y2 y 1 対角化 2 0 0 0 0 0 0 3 2 (簡約に使った元) 2 0 1 1 0 簡約された結果 0 1 2 0 1 (簡約に使った元) 0 0 0 0 0 0に簡約された x 2 xy x y2 y 1 簡約した結果 2 xy y 2 y トーリックイデアルに対する F4アルゴリズム 行列 トーリックイデアル I 0 1 0 1 0 1 0 1 0 0 1 0 A x u x v | Au Av, u, v N n 各行には1,-1が1個ずつだけ、他は0 1 が -1 より左に来る 行列は非常に疎であり、メモリを浪費する データ構造とアルゴリズムの改善 行列を有向グラフとして表す 列 0 i1 0 j1 0 を、有向辺 (i, j )とする 行列の変形 = 枝の付け替え 1 0 1 0 1 0 1 0 1 1 1 0 0 3 2 4 1 0 0 1 1 0 1 0 1 0 0 1 1 3 2 出次数が2以上 入・出次数が両方1以上 の場合、辺を付け替える 4 F5アルゴリズムの概要 新たに多項式を生成したとき、生成に使った 多項式の情報を保持しておく 例: 入力を f1 , f 2 , f3 としたとき、S多項式 f 4 xf2 yf 3 が生成されたとする このとき f 4 の代わりに r4 ( xF2 , f 4 ) を加える f 4 は xf2 で生成される、という意味 2 さらに f 5 x f 4 yzf 3 が生成されたとすると、 Ruleとして後で使う r4 ( xF2 , f 4 ) の情報を用いて r5 ( x 3 F2 , f 5 ) を加える f 5 は x3 f 2 で生成される、という意味 3 さらに f 6 x f 4 zf 2 が生成されたとすると、 r5 ( x 3 F2 , f 5 ) の情報を用いると、これが 0 に簡約されると分かる この判定法を用いる 0に簡約されるようなS多項式を、全く生成しない Buchberger, 改良したF4, F5 のベンチマーク – 実験の環境 入力: 行列 An 1 2 n の トーリックイデアルの生成元 x 2 1 項順序 x2 , x1 x2 x3 , x1 x3 x4 , , x1 xn1 xn 全次数逆辞書式順序 辞書式順序 変数順序は x1 x2 xn 計算代数システムasir上での実装 3つのアルゴリズムの比較 組み込みのBuchbergerアルゴリズム (modular計算はしない) 今回改良したF4アルゴリズム F5アルゴリズム CPU : UltraSPARC-II 360MHz, メモリ : 2GB ベンチマーク (n=10~40,全次数逆辞書式順序) Buchberger F5 改良したF4 1000 実行時間(s) 100 10 nを増やすと、実行時間は指 数的に増える 実行時間は、 F4 < F5 < Buchberger の順 1 0.1 0.01 10 15 20 25 nの値 30 35 40 45 ベンチマーク (n=10~40,辞書式順序) Buchberger F5 改良したF4 1000 実行時間(s) 100 nが増加するにつれ、改良 したF4は、Buchbergerよりも 性能が悪くなっていく F5は極端に悪い 10 1 0.1 10 0.01 15 20 25 nの値 30 35 40 F4,F5の計算時間増大の原因 辞書式順序でF4,F5の計算時間が増える理由 生成される多項式の次数(sugar)が増大 A20の場合、基底の最大次数は 全次数逆辞書式の場合 ・・・ 3 辞書式の場合 ・・・ 20 F4の場合、簡約行列のサイズが冗長になる? F5の場合、不要なペア・Ruleの数が増大? A20を例に実験を行った結果・・・次ページ F4による A20のグレブナ基底計算の効率 全次数逆辞書式順序 ・・・ sugar S多項式の数 簡約に使う 多項式の数 0以外に簡約された S多項式の数 3 4 171 2109 17 373 171 0 (終了) 辞書式順序 ・・・ S多項式 0に簡約されないS多項式 簡約に使う多項式 • sugarが大きくなるにつれ、極少数の 多項式を、多数の多項式で簡約しよう としている • それに対し、得られる非零な正規形 はただ1つだけ 2500 多項式の数 行列演算の利点を 生かしている 2000 1500 1000 500 この場合、逆に効率が悪くなる 0 3 5 7 9 11 13 15 17 19 21 sugar F5 による A20のグレブナ基底計算の効率 全次数逆辞書式順序 ・・・ 次数 ペアの数 S多項式の数 3 171 (終了) 324 •次数4以上の項は生成されない •生成されたS多項式は、必ず0以外に 簡約される 辞書式順序 ・・・ ペアの数 S多項式の数 1000 • 生成される多項式の次数が大きい ものが存在 • それにより、次数が大きくなっても かなりの数のペアが残り、計算に 時間を食う • ペアの選択が、先頭項のLCMの次数 (Sugarを使わない) によるのも原因 多項式の数 800 600 400 200 0 2 5 8 11 14 17 20 23 26 29 32 ペアの次数 実験結果 組み込み関数とF4,F5の比較 全次数逆辞書式順序では、F4,F5の方が高速 辞書式順序では逆に時間がかかる 今後は F4の場合、わずかな多項式を得るために必要以上の 計算を行っている F5の場合、次数が大きくなったときに、ペアの選択 ストラテジーがうまく働かない F4について、簡約時に生成される行列をより小さく する F5について、sugarを使う方式に書き換える ことが考えられる ありがとうございました
© Copyright 2024 ExpyDoc