技術者が知るべき gröbner 基底
DESCRIPTION
PFI 社内セミナーで発表した Gröbner 基底に関するざっとした資料です。 動画:http://www.ustream.tv/recorded/45083535 http://www.ustream.tv/recorded/45083876TRANSCRIPT
技術者が知るべき Gröbner 基底
石井大海
自己紹介•石井大海(@mr_konn / http://konn-san.com) •早大学数学科四年、春から筑波大学大学院 • 専攻:数学(集合論、計算機代数)
•主な使用言語:関数型言語 Haskell
• 2010 Summer Intern から PFI でバイト中
宣伝•記事書きました • Real World STM ~作って学ぶSTM~(STMじたいは作らない)
•モジュラリティの高い並行処理を書く手法
•電子版絶賛発売中!
今日の話題
•計算機代数から Gröbner 基底 の話題
• 今年一年間勉強していた話題 • 純粋数学の概念だったが、応用も盛んに
•数学的な議論よりも応用面に焦点を当てて
Table of Contents
• Gröbner 基底の簡単な導入・計算法
• Gröbner 基底の応用:主に連立代数方程式の解法ついて
•まとめ
Gröbner 基底の簡単な導入・計算法
Gröbner 基底?•“グレブナーきてい” と読む • 1960s: 廣中平祐、B. Buchberger が独立に発見
• Gröbner は Buchberger の師匠の名前
•廣中は特異点解消のために考えた
廣中先生はこういう点をどうするか考えていた(今回の話題とは無関係)
これはこれで学習理論にも応用があるらしい
Gröbner 基底?•技術の進歩で計算出来るようになり応用が出る
• 連立代数方程式の解法 • 計算代数統計学(実験計画法、仮説検定) • ロボティックス
• 符号理論・暗号理論 等々…
•体上の多項式環のイデアルの性質のよい生成元
Gröbner 基底?•技術の進歩で計算出来るようになり応用が出る
• 連立代数方程式の解法 • 計算代数統計学(実験計画法、仮説検定) • ロボティックス
• 符号理論・暗号理論 等々…
•体上多項式環のイデアルの性質のよい生成元 • 多項式にまつわる色んな計算をする為の魔法の道具
今日の主な話題はこれ
予備知識:体•体:足し算、引き算、掛け算、割り算が出来る数(の集まり)
• 例:有理数体 ℚ、実数体 ℝ、 複素数体 ℂ、有限体 𝔽p(p: 素数)
•よくわからなったら、取り敢えず有理数を考えていると思ってよいです
予備知識:多項式•多項式:x
2+2x+1, 4xy
2 + ½ xy
2z みたいなの
• x, y, z を変数、x2, xy
2z などを単項式、2, ½等を係数と呼ぶ
• 多項式 = 単項式に係数を掛けて足した物
•変数の数や項の数は有限個 • 1 + 2X + 3X
2 + 4X
3 + ⋯ とか X1 + X2 + X3 + ⋯ はだめ
• k[X1,…,Xn]:k-係数のn-変数多項式の全体(多項式環)
• 変数の数が明らかな時は k[𝕏] と略記する
記号の約束• g, f1, …, fr ∈ k[𝕏] とする。 h1,…, hr ∈ k[𝕏] が
あって、g = h1 f1 + ⋯ + hr frと書けるとき、
g ∈ ⟨f1, …, fr⟩ と書く。
•各 hi は 0 でもよい
•この時、g はイデアル ⟨f1, …, fr⟩ に属すると云う
•f1, …, fr をイデアルの生成元と呼ぶ
問題:イデアル所属問題
f1 = x3 + x2 + x + 1 f2 = x2 − x − 2 I = ⟨ f1, f2 ⟩ ⊆ k[x]
とすると、g = x3 − 1, h = x2 + 1 はそれぞれ I に属すか?
問題 1 •多項式の割り算を使って解く
• f1, f2 の “最大公約式”
f = GCD(f1, f2) がわかればよい
• f で割り切れる
⇔ I に属する
復習:多項式の割り算•高校の復習:多項式の割り算 •「降冪の順」に並べて割っていく
• GCD を求めるには、ユークリッドの互除法を使って割り算を繰り返せばよい
•一変数多項式はこれで解決
x +2
x2 �x �2�x3 +x2 +x +1
x3 �x2 �2x
2x2 +3x +1
2x2 �2x �4
5x +5
➡ 多変数多項式の場合はどうか?
多変数のイデアル所属問題•一変数の時と同様に最大公約式を考えられないか?
➡無理!
•例えば g ∈ ⟨x, y⟩ ⇔ g = h f と
なるような f はない
➡一つの式で割る代わりに、複数の式で割った余りを考えたらどうか?
f1 = X2Y − 1 f2 = X3 − Y2 − X I = ⟨ f1, f2 ⟩ ⊆ k[X, Y] とすると、g = X2Y2 − X3Y − XY − 1!
は I に属すか?
問題 2
多変数の割り算• 1変数の場合は降冪の順に並べてから割った
• 多変数の場合、適当な条件を満たす単項式順序を一つ固定して項を並べる
•条件さえ満たせば複数の単項式順序がありうる
• 辞書式順序(lex)、次数付き辞書式順序(grevlex)…
• 用途や効率に応じて相応しい順序を選ぶ
多変数の割り算
•以上を用いて多項式版の割り算を定義する •単項式順序を一つ決め、割る式、割られる式ともに大きい単項式順に整列しておく
•どの順番で割るかは固定する!
例a1 = X + Ya2 = 1
XY − 1Y2 − 1
X2Y + XY2 + Y2
X2Y − XXY2 + X + Y2
XY2 − YX + Y2 − Y X
Y2 − YY2 − 1Y + 1 Y
10
1r = X + Y + 1
X2Y + XY2 + Y2 = (XY − 1) (X+Y) + (Y2 − 1) ⋅1 + X + Y + 1
余りの問題•これで判定出来そうにみえるが、上手くいかない •一般に割る多項式の順番を変えると、余りの値が変わることがある
•先程の例を Y2 − 1, XY − 1 の順で割ると、余りが2X
+ 1 になる
➡生成元で割って余りゼロ⇔イデアルに属すとは出来ない!
そこで Gröbner 基底•最大公約式の複数版を考えよう
•同じイデアル I を生成するが、割り算の余りが順番に依らないような生成元のことを Gröbner 基底と呼ぶ
※本当はもうちょっと違う定義だが、お話としてはこれで十分
•この時、Gröbner 基底で割り切れる⇔その生成するイデアルに属す が成立する
ここまでまとめ•ある多項式が他の多項式の積和で表せないか調べたい(イデアル所属問題)
•どんな式を割っても余りが並び順に依らず定まる多項式の集まりを Gröbner 基底という
• 適当な多項式の集まりに対し、その Gröbner
基底を見てやればその性質がわかる
•イデアル所属問題は Gröbner 基底で解ける
計算法• Buchberger アルゴリズム
• 最も基本的、わかりやすいが遅い
• F4, F5 アルゴリズム
• 現時点最速だが実装には計算機代数の知識が必要
• 大規模疎行列の三角化、モジュラー計算……
Gröbner 基底計算ソフト• Singular (GPL)
• Risa/Asir (非商用は BSD or LGPL or GPL)
• Macaulay2 (GPL)
• CoCoA (GPL)
• FGb/Gb
• F4, F5 などを実装した Maple / Cライブラリ
•(ここに私の Haskell 製ライブラリを追加したいところだが、現時点では遅すぎて比較対象にすらならない)
計算量について• Gröbner 基底の計算はEXPSPACE 困難であり、入力のサイズに対し二重指数時間を必要とする入力が知られている
• イデアル所属問題は EXPSPACE困難。イデアル所属問題はGröbner基底の計算に還元出来る。
• Grevlex 順序で計算すれば大抵の場合は現実的な時間で計算出来ることが経験的に知られている
• 効率よく解ける具体的な部分問題のクラスなどは(私の知る限り)知られていない
• Lex 順序などが必要な場合は Grevlex から変換する
Table of Contents
• Gröbner 基底の簡単な導入・計算法
• Gröbner 基底の応用:主に連立代数方程式の解法ついて
•まとめ
Gröbner 基底の応用:主に連立代数方程式の解法
Gröbner基底の応用• Gröbner 基底は次のような応用を持つ:
1. 連立代数方程式の解法
2. 計算代数統計学(実験計画法、仮説検定)
3. ロボティックス
4. 符号理論・暗号理論 等々…
•ここでは 1 について採り上げる
連立代数方程式?
代数方程式•例:二次方程式 ax2 + bx + c = 0
•解の公式:
•一般に多項式 f ∈ k[𝕏] について、f(𝕏) = 0 の形の方程式を代数方程式という
•五次以上の代数方程式の解の公式は存在しない[ガロア、アーベル]
• 五次以上の代数方程式には数値解を求める必要がある
連立方程式•例:連立一次方程式 •中学で解きましたね •消去法、代入法…… •連立代数方程式:更に高次の項や、xy2 や xyz など複雑な項を含む連立方程式
解けると何が嬉しいか?
例:Lagrange 未定乗数法•最適化問題の初歩:Lagrange の未定乗数法
•制約 f(x,y,z) = 0 の下で関数
g(x,y,z) の極値を求めるには、右の方程式を解けばよい
•一般に式変形をして答えを導くのは骨が折れる •これ以外にも代数方程式を解きたい時は良くある ➡自動化出来ないか? Gröbner 基底!
連立代数方程式の解法1.完全に数値的に解く方法(旧来)
2.Gröbner 基底を用いた変数消去
• 低次方程式の場合、正確値が求まる 3.数値計算と Gröbner 基底の合わせ技
➡ここでは最後の二つについて採り上げる
Gröbner基底で変数消去Lex に関する Gröbner 基底により連立方程式から文字を消去できる
•右辺を移項して I を考える•この lex に関する Gröbner 基底を計算すると右の連立方程式を得る
•先程の例を考えてみる
➡ y だけを含む方程式が得られた(x が消去出来た)
Gröbner基底で変数消去•低次方程式の場合、このようにして変数を消去して、代数的に解いて順次代入すれば近似値でなく正確値が求まる
•問題点:Lex 順序に関する基底計算は高価
• Grevlex などに較べてかなり時間がかかる
• 他の効率的な順序で計算してから Lex に変換する手法などが幾つか知られている
•問題点:高次方程式は解けない • 高次の場合、一文字だけの式を数値解法で解いて順次代入することになるが、誤差はかなり蓄積することになる
数値計算とGröbnerの合体技•有限個の解を持つ場合にかなり有効
•要点:剰余環 k[𝕏]/I の構造を使う
• 剰余環:イデアル I の元をゼロと見做したような物
• これはベクトル空間になり、線型代数が使える • 連立代数方程式を固有値問題に帰着し、各変数の解を求めるのに数値計算を使う
• その際必要な剰余環の演算に Gröbner 基底を使う
•詳細は [2] 参照
どの手法がよいのか?•それぞれ一長一短がある •手動で解く必要がある場合は、まず消去を試してみる
• 正確解がわかったらめっけもの
•駄目なら数値計算か Gröbner基底+数値計算で解く
• 純粋な数値計算にもGröbnerとの合体技にも、それぞれ得意・不得意がある
•それぞれ相補的なもの。例によって使い分けるのがよいだろう(具体的な条件についてはまだ勉強中です、ごめんなさい……)
まとめ• Gröbner 基底で純粋数学用途だけでなく様々な応用計算が出来る
• 連立代数方程式の解法・補間問題 • 文字の消去が出来る
• 数値計算の既存の手法では手の届かない所への代替案たりうる
• 符号理論、暗号理論、計算代数統計 等々……
•最悪計算量は二重指数 O(2²ⁿ)・EXPSPACE困難
• 大半の問題について経験的には現実的な時間で計算できる方法が知られている • 誰か現実的に解ける部分問題の条件をはっきりさせてくれないかなぁ
•工業的に用いるにはライセンスが……
合わせて読みたい•もう少し踏み込んだ内容の手前味噌資料群
•わかったつもりになるGröbner基底
• Gröbner 基底の計算法とその改良法について、より数学的に詳しい導入。
•計算機代数ゼミ発表資料 - konn-san.com
• スライド中で触れた消去理論(文字の消去)や連立代数方程式の解法についての突っ込んだ資料、ベンチマーク等
•今年の冬は Gröbner 基底でスーパー大学受験ガール! - konn-san.com
• 消去理論を使って大学入試問題を解く話。エイプリールフール記事ですが数学的には嘘は吐いてないので、消去理論の雰囲気を知るにはよいかも(Gröbner 基底を手計算で求めるのは殆んど絶望的なのでエイプリールフール記事)。
参考文献1. D.A. Cox, J. Little and D. O'Shea. Ideals, Varieties, and Algorithms. Springer-Verlag.
• 邦訳:『グレブナ基底と代数多様体入門 上・下』丸善出版
2. D.A. Cox, J. Little and D. O'Shea. Using Algebraic Geometry. Springer-Verlag.
• 邦訳:『グレブナー基底 1・2』丸善出版
3. J. Gathen and Gerhard. Modern Computer Algebra. Cambridge University Press.
• 邦訳:『コンピュータ代数ハンドブック』朝倉書店 4. JST CREST 日比チーム. 『グレブナー道場』. 共立出版.
5. Press, Teukolsky, Vetterling and Flannery. Numerical Recipes. Cambridge University Press.
6. 日比孝之 et al. “グレブナー基底の新天地”. In: 数学セミナー 2012 年 2 月号. 日本評論社, 2012, pp. 7–52.