-
前提となる知識のキーワード
- 項順序
- 多項式環
-
イデアル
- 上記の知識は、最近すうがくぶんかにて主催された 無料公開講座 グレブナー基底入門 で知ることができるので、興味がある方はぜひ。
-
モチベーション
- 筆者はある種の数式を自動で解けるという仕組みが個人的に気になっており、グレブナー基底やQEを調べている
前提知識は最後の方に書いている
ブッフバーガーアルゴリズム
野呂正行・横山和弘「グレブナー基底の計算 基礎編 計算代数入門」, p196 より引用
ブッフバーガーアルゴリズムの疑似コードを見て、理解を深めたい。
以下のアルゴリズムに多項式$F$と、項順序$\prec$を与えるとグレブナー基底が返る。
前提知識
$\prec$ (=項順序)
- 項順序 はWikipediaに記載がある通り、多項式の項の順序を定めるもの
- $a \prec b$ は順序的にbのほうがaより大きいということを示す、どう並べるかは文脈しだいだが多項式の場合普通は降順(desc)に並べる
とりあえず、辞書式順序を覚えておけば大丈夫そう。
Wikipediaから引用
辞書式順序 (lexicographic order, lex) は、β - α の 0 でない最初の成分が正である場合に xα < xβ として定義される単項式順序である。素朴に表現するならば、lex 順序はまず最も「上位の」不定元の指数の大きさによって順序付け、それが同じものについては順次「下位の」不定元の指数の大きさによって順序付ける。
3つの単項式 $x^2yz, x^3, xy^3$ を考えよう。不定元の間には x > y > z という順序が定まっているとすると、代表的な単項式順序においては、次のように順序付けられる。
lex 順序では$x^3 > x^2yz > xy^3$となる(x の指数の大きさが順序を決める)。
lex順序とは辞書式順序である。要は、後で掃き出し操作するために単項式の順序を決めているんですね。
$D \; \backslash \; \{\{u, v\}\}$ (=差集合)
- $D \gets D \; \backslash \; \{\{u, v\}\}$ は $D$ と $\{\{u, v\}\}$ の差集合を指す(普通にわからなかった)
- 要はループの前に1要素削除して次に行くということか
$Spoly(f, g)$ (=掃き出し操作の一般化)
「グレブナー基底の計算 実践篇 Risa/Asirで解く」, p127 より引用
- $lcm$ とは、項の最小公倍項である
- 英語版のWikipediaに定義が載っていた Least common multiple
- 参考: gcd/lcmとmin/maxが同型という話
まあ、要はこのグレブナー基底のSpolyでは項のデカい方をとれば良いわけだ(x, yのどちらも1つしか項が与えられないはずなので)。
Spolyに出てくる用語の定義
- $HT(f)$ ... 頭項(=Head Term)のこと、指定の項順序で式を並び替えたとき1番大きな項を指す
- $HC(f)$ ... 頭係数(=Head Coefficient)のこと、頭項の係数
- $HM(f)$ ... 頭単項式(=Head Monominial)のこと、指定の項順序で式を並び替えたときの単項式のうち先頭のものを指す
上記は「グレブナー基底の計算 基礎編 計算代数入門」, p72 より引用
Wikipediaの記述によれば、上記用語のHeadはLeadingと表されることもあり、両者は定義的に同一のものである。
なので、
- $LT(f)$ ... Leading Term
- $LC(f)$ ... Leading Coefficient
- $LM(f)$ ... Leading Monominial
と書いても同じこと。
Spolyでやっていること
$f, g$のなるべく小さい単項式倍の中から頭項が一致するものを選んでその後を消去したもの(→ 掃き出し操作の一般化)、掃き出し操作とは連立方程式を解くための効率の良いアルゴリズムのこと。 掃き出し法
次に、$Spoly(f,g)$の実際の計算例について
「グレブナー基底の計算 実践篇 Risa/Asirで解く」, p127 より引用
書籍の計算例に間違いがあるようなのでこちらで修正している
これで$Spoly(f,g)$の中身が具体的にわかった。SpolyはS-Polynomialを表すが、Sとは何なのだろう…?
$f \xrightarrow[G]{} g$ または $f \xrightarrow[G]{*} g$ (=単項簡約)
- 有限多項式集合$G$に属する多項式による単項簡約を1回行う、あるいは0回以上繰り返すことにより$h$が得られたとき、それを $f \xrightarrow[G]{} h$ 、 $f \xrightarrow[G]{*} h$ で表す
- 単項簡約がもう実行できないとき、$f$は$G$に対して正規形であると言う。
TODO
単項簡約の計算例を後で書く
参考
- 前提知識部分の内容は JOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おう と被っている
- 「グレブナー基底の計算 基礎編 計算代数入門」
- 「グレブナー基底の計算 実践篇 Risa/Asirで解く」
Next
- 次はRubyで実際にグレブナー基底を計算する予定