項は内部では, 各変数に関する指数を成分とする整数ベクトルとして表現され る. 多項式を分散表現多項式に変換する際, 各変数がどの成分に対応するかを 指定するのが, 変数リストである. さらに, それら整数ベクトルの全順序を 指定するのが項順序の型である. 項順序型は, 数, 数のリストあるいは 行列で表現される.
基本的な項順序型として次の 3 つがある.
0 (DegRevLex; 全次数逆辞書式順序)
1 (DegLex; 全次数辞書式順序)
DegRevLex
と同様直接その結果を用いることは困難である. しかし,
辞書式順序のグレブナ基底を求める際に, 斉次化後にこの順序でグレブナ基底
を求めている.
2 (Lex; 辞書式順序)
gr()
,
hgr()
による計算が極めて有効になる場合が多い.
これらを組み合わせてリストで指定することにより, 様々な消去順序が指定できる. これは,
[[O1,L1],[O2,L2],...]
で指定される. Oi
は 0, 1, 2 のいずれかで, Li
は変数の個
数を表す. この指定は, 変数を先頭から L1
, L2
, ...個
ずつの組に分け, それぞれの変数に関し, 順に O1
, O2
,
...の項順序型で大小が決定するまで比較することを意味する. この型の
順序は一般に消去順序と呼ばれる.
さらに, 行列により項順序を指定することができる. 一般に, n
行
m
列の実数行列 M
が次の性質を持つとする.
m
の整数ベクトル v
に対し Mv=0
と v=0
は同値.
m
の 0 でない整数ベクトル v
に対し,
Mv
の 0 でない最初の成分は非負.
この時, 2 つのベクトル t
, s
に対し,
t>s
を, M(t-s)
の 0 でない最初の成分が非負,
で定義することにより項順序が定義できる.
項順序型は, gr()
などの引数として指定される他, 組み込み函数
dp_ord()
で指定され, さまざまな函数の実行の際に参照される.
これらの順序の具体的な定義およびグレブナ基底に関する更に詳しい解説は
[Becker,Weispfenning]
などを参照のこと.
項順序型の設定の他に, 変数の順序自体も計算時間に大きな影響を与える.
[90] B=[x^10-t,x^8-z,x^31-x^6-x-y]$ [91] gr(B,[x,y,z,t],2); [x^2-2*y^7+(-41*t^2-13*t-1)*y^2+(2*t^17-12*t^14+42*t^12+30*t^11-168*t^9 -40*t^8+70*t^7+252*t^6+30*t^5-140*t^4-168*t^3+2*t^2-12*t+16)*z^2*y +(-12*t^16+72*t^13-28*t^11-180*t^10+112*t^8+240*t^7+28*t^6-127*t^5 -167*t^4-55*t^3+30*t^2+58*t-15)*z^4, (y+t^2*z^2)*x+y^7+(20*t^2+6*t+1)*y^2+(-t^17+6*t^14-21*t^12-15*t^11+84*t^9 +20*t^8-35*t^7-126*t^6-15*t^5+70*t^4+84*t^3-t^2+5*t-9)*z^2*y+(6*t^16-36*t^13 +14*t^11+90*t^10-56*t^8-120*t^7-14*t^6+64*t^5+84*t^4+27*t^3-16*t^2-30*t+7)*z^4, (t^3-1)*x-y^6+(-6*t^13+24*t^10-20*t^8-36*t^7+40*t^5+24*t^4-6*t^3-20*t^2-6*t-1)*y +(t^17-6*t^14+9*t^12+15*t^11-36*t^9-20*t^8-5*t^7+54*t^6+15*t^5+10*t^4-36*t^3 -11*t^2-5*t+9)*z^2, -y^8-8*t*y^3+16*z^2*y^2+(-8*t^16+48*t^13-56*t^11-120*t^10+224*t^8+160*t^7 -56*t^6-336*t^5-112*t^4+112*t^3+224*t^2+24*t-56)*z^4*y+(t^24-8*t^21+20*t^19 +28*t^18-120*t^16-56*t^15+14*t^14+300*t^13+70*t^12-56*t^11-400*t^10-84*t^9 +84*t^8+268*t^7+84*t^6-56*t^5-63*t^4-36*t^3+46*t^2-12*t+1)*z, 2*t*y^5+z*y^2+(-2*t^11+8*t^8-20*t^6-12*t^5+40*t^3+8*t^2-10*t-20)*z^3*y+8*t^14 -32*t^11+48*t^8-t^7-32*t^5-6*t^4+9*t^2-t, -z*y^3+(t^7-2*t^4+3*t^2+t)*y+(-2*t^6+4*t^3+2*t-2)*z^2, 2*t^2*y^3+z^2*y^2+(-2*t^5+4*t^2-6)*z^4*y+(4*t^8-t^7-8*t^5+2*t^4-4*t^3+5*t^2-t)*z, z^3*y^2+2*t^3*y+(-t^7+2*t^4+t^2-t)*z^2, -t*z*y^2-2*z^3*y+t^8-2*t^5-t^3+t^2, -t^3*y^2-2*t^2*z^2*y+(t^6-2*t^3-t+1)*z^4, z^5-t^4] [93] gr(B,[t,z,y,x],2); [x^10-t,x^8-z,x^31-x^6-x-y]
変数順序 [x,y,z,t]
におけるグレブナ基底は, 基底の数も多く, それぞれの
式も大きい. しかし, 順序 [t,z,y,x]
にもとでは, B
がすでに
グレブナ基底となっている. 大雑把にいえば, 辞書式順序でグレブナ基底を求める
ことは, 左側の (順序の高い) 変数を, 右側の (順序の低い) 変数で書き表す
ことであり, この例の場合は, t
, z
, y
が既に
x
で表されていることからこのような極端な結果となったわけである.
実際に現れる計算においては, このように選ぶべき変数順序が明らかである
ことは少なく, 試行錯誤が必要な場合もある.
Go to the first, previous, next, last section, table of contents.