割り算アルゴリズムとグレブナー基底
〜連立方程式でナンプレを解こう!〜(ロング版)
0. はじめに:大学数学では何をするのか
高校までの数学では,計算や公式を使うことが中心に見えるかもしれない. たとえば,方程式を解く,因数分解する,図形の面積を求める,微分や積分を計算する,といった内容である. もちろん,計算は数学にとって非常に重要である. しかし,数学は単に公式を覚えて数を代入するだけの学問ではない.
大学数学では,身近な計算や概念について,まず「それは何をしているのか」を定義として捉え直す. そして,その定義をもとに,別の対象やより広い世界へ拡張していく. この「定義し直す」「拡張する」という考え方は,大学数学の基本的な姿勢のひとつである.
今回の講義では,小学校で学んだ「割り算」を出発点にする. 自然数の割り算を定義し直し,それを1変数多項式の割り算へ拡張し,さらに多変数多項式,複数の多項式での割り算へと拡張していく. その途中で,割る順番によって余りが変わるという新しい問題が現れる. この問題を解決するために登場するのがグレブナー基底である.
また,数学では「現象を式に翻訳する」ことも大切である. 高校数学でも,図形を方程式で表すことを学ぶ. たとえば,円を \[ x^2+y^2=1 \] という式で表せば,図を描かなくても式の計算だけでその図形を調べることができる. この考え方は,平面上の図形だけでなく,目に見えない高次元の図形や,ナンプレのようなパズルにも応用できる.
このロング版では,筆算の例を省略せずに追いながら,なぜそのような定義や道具が必要になるのかを丁寧に見ていく. 特に,簡易版で省略した$n$変数多項式の割り算や,ブッフバーガーアルゴリズムの考え方も少し詳しく説明する. ただし,目的は専門的な証明をすることではなく,中学生・高校生でも「何をしているのか」が追えるように,具体例を通して雰囲気をつかむことである.
1. 自然数の割り算
小学生の頃学習した割り算を思い出すと,例えば,$5 \div 2$は商$2$余り$1$であった.他にも$13 \div 5$は商$2$余り$3$である.算数では具体例を使って割り算や商,余りを説明していたが,数学的に厳密に定義できるだろうか.ただし,ここで考えたいのは,$5 \div 2= 2.5$のように小数点以下まで考える割り算ではなく,余りも考慮した自然数の中だけの割り算である.さて,割り算の見方を変えると,「$5 \div 2$は商$2$余り$1$」からは数式 \[ 5= 2 \times 2 +1 \] が得られ, 「$13 \div 5$は商$2$余り$3$」からは \[ 13=2 \times 5 +3 \] が得られる.ここで「余り」がいつでも割る数より小さいことに注意する. これは「これ以上割れない」ということを意味する. このような表示を与えることを「割り算」と定義することで,数式を使って「割り算」を説明することができる.つまり,割り算の厳密な定義は以下の通りである:-
$a=q \times b +r$である,
-
$r$は$b$より小さい
- 答えの存在
- 答えの一意性(ひとつしかないこと)
- 答えを見つける方法(アルゴリズム)
2. 1変数多項式の割り算
数や文字についての掛け算だけで作られた式を単項式という. 例えば,$2$や$-3x$,$x^2y$などである.単項式に対して- 掛けられている文字の個数を次数,
- 文字を取り除いた数を係数
- 足された各単項式のことをその多項式の項,
- 各項のうちで最も大きい次数を,その多項式の次数
-
$f$の最大次数が$g$の最大次数以上なら,$g$に足りない式を掛けて$f$から引くことで$f$の最大次数の項を打ち消し,ステップ(2)へ.
-
打ち消した後の式の最大次数が$g$の最大次数以上なら,その式に対してステップ(1)へ.小さければ筆算を終える.
$f=q \times g + r$である,
$r$の次数は$g$の次数より小さい,
- 答えの存在
- 答えの一意性(ひとつしかないこと)
- 答えを見つける方法(アルゴリズム)
3. 2変数多項式の割り算
それでは変数をひとつ増やして,$x$と$y$の2変数多項式の割り算を考えてみよう. 1変数のときと同じように筆算してみると少し問題が起こる.実際,$x^3$を$x^2+y^2$で割る筆算を1変数多項式の場合と同様にしてみる. \[ \]
-
$x$の次数が大きい方の単項式が大きい.
-
$x$の次数が同じであれば,$y$の次数が大きい方の単項式が大きい.
-
${\rm LM}(f)$が${\rm LM}(g)$で割り切れるなら,$g$に足りない式を掛けて$f$から引くことで${\rm LM}(f)$を打ち消し,打ち消した後にできる式に対してステップ(1)に戻る.割り切れないならステップ(2)へ.
-
${\rm LM}(f)$の項を余りに移動させ,残った式が$0$でないならその式に対してステップ(1)に戻る.$0$だったら筆算を終える.
$f=q \times g + r$である,
$r$の各項は${\rm LM}(g)$で割り切れない,
- 答えの存在
- 答えの一意性(ひとつしかないこと)
- 答えを見つける方法(アルゴリズム)
4. $n$変数多項式の割り算
1変数多項式の割り算を2変数多項式の割り算に拡張する場合は色々改善する点があったが,3変数 多項式の割り算は2変数多項式の割り算をそのまま拡張すればよい. 変数$x,y,z$の$3$変数多項式を考える. まず単項式の大小関係を次のルールで決める.-
$x$の次数が大きい方の単項式が大きい.
-
$x$の次数が同じであれば,$y$の次数が大きい方の単項式が大きい.
-
$x$と$y$のそれぞれの次数が同じであれば,$z$の次数が大きい方の単項式が大きい.
$x_1$の次数が大きい方の単項式が大きい.
$x_1$の次数が同じであれば,$x_2$の次数が大きい方の単項式が大きい.
$x_1$と$x_2$のそれぞれの次数が同じであれば,$x_3$の次数が大きい方の単項式が大きい.
- $\vdots$
$x_1,x_2,\ldots,x_{n-1}$のそれぞれの次数が同じであれば,$x_n$の次数が大き方の単項式が大きい.
$f=q \times g + r$である,
$r$の各項は${\rm LM}(g)$で割り切れない,
- 答えの存在
- 答えの一意性(ひとつしかないこと)
- 答えを見つける方法(アルゴリズム)
5. 複数の多項式での割り算
さらに多項式の割り算を拡張していく.ここまではひとつの多項式で割ることを考えてきたが,複数の多項式で割ることも考えられる. 実際は次のように拡張する.$f = q_1g_1+q_2 g_2 +\cdots + q_s g_s +r$である,
$r$の各項は${\rm LM}(g_1), {\rm LM}(g_2),\ldots, {\rm LM}(g_s)$のいずれでも割り切れない,
(おまじない)$q_i$が$0$でないならば,${\rm LM}(f)$は辞書式順序に関して${\rm LM}(q_i g_i)$以上である.
${\rm LM}(f)$が${\rm LM}(g_1)$で割り切れるなら,$g_1$に足りない式を掛けて$f$から引くことで${\rm LM}(f)$を打ち消し,打ち消した後にできる式に対してステップ(1)に戻る.割り切れないならステップ(2)へ.
${\rm LM}(f)$が${\rm LM}(g_2)$で割り切れるなら,$g_2$に足りない式を掛けて$f$から引くことで${\rm LM}(f)$を打ち消し,打ち消した後にできる式に対してステップ(1)に戻る.割り切れないならステップ(3)へ.
- $\vdots$
${\rm LM}(f)$が${\rm LM}(g_s)$で割り切れるなら,$g_s$に足りない式を掛けて$f$から引くことで${\rm LM}(f)$を打ち消し,打ち消した後にできる式に対してステップ(1)に戻る.割り切れないならステップ(r)へ.
${\rm LM}(f)$の項をあまりに移動させ,残った式が$0$でないならその式に対してステップ(1)に戻る.$0$だったら筆算を終える.
- 答えの存在
- 答えを見つける方法(アルゴリズム)
6. 割り算の連立方程式への応用
多項式$f_1,f_2,\ldots,f_s$があったとき,ブッフバーガーアルゴリズムという計算でグレブナー基底を作ることができる.具体的に \[ f_1=xy+z^2-2, f_2=x^2-yz, f_3=xz-y^2 \] という3つの多項式で考えてみよう. このアルゴリズムは次のステップで進む.-
$f_1,f_2,f_3$から適当に2つ選ぶ(例えば$f_1,f_2$).
-
選んだ2つの多項式の先頭単項式を打ち消した式$f$を考える (${\rm LM}(f_1)=xy$と${\rm LM}(f_2)=x^2$だから$x^2y$(最小公倍元)に揃えて打ち消す,つまり$f=xf_1-y f_2$).
-
$f$を$f_1,f_2,f_3$で割った余りを$r$とする($r=-2x+2y^2z$).
-
$r \neq 0$ならば$f_4=r$とし,ステップ(1)を$f_1,f_2,f_3,f_4$で始める(次は$f_1$と$f_4$を選ぶなど).
-
ステップ(1)からステップ(2)の操作をどの2つの多項式を選んでも$r=0$となるまで続ける.
- $3$変数$x,y,z$の連立方程式を式変形して$z$だけの式が作れるならば,そのような式はグレブナー基底から見つけられる.
- グレブナー基底の中に$z$だけの式がないのなら,どう式変形しても$z$だけの式を作ることはできない.
- 連立方程式の解が$(x,y,z)=(a,b,c)$の1個しかない場合は$x-a,y-b,z-c$という形の式が必ずグレブナー基底に現れる.
-
$f_1,f_2$から$f_4=-2x+2y^2z$を作る.
-
$f_1,f_4$から$f_5=-2y^3z-2z^3+4$を作る.
-
$f_3,f_4$から$f_6=-2y^2z^2+2y^2$を作る.
-
$f_5,f_6$から$f_7=4y^3+4z^3-8z$を作る.
-
$f_5,f_7$から$f_8=8z^4-24z^2+16$を作る.
7. ナンプレを連立方程式で解いてみる
最後に,グレブナー基底を使ってナンプレを解いてみる.ナンプレのルールを知らない人は,まず調べてみよう. ナンプレの各マス目に対し, $81$個の変数$x_i$を以下のように対応させる.
- すべての$F(x_j)=0$,
- 同じ列,行,ブロックのどれかにいるすべての$i$と$j$に対する$G(x_i,x_j)=0$,
- すべての$H(x_i)=0$
8. 方程式に翻訳するという考え方
ここまで,ナンプレを多項式の連立方程式に翻訳する話を見た. このように,何かの対象を方程式で表すことは,実は高校数学でもすでに行っている.
たとえば,高校数学では軌跡の方程式を学ぶ. 円や直線などの図形を,点の集まりとして見るだけでなく, \[ x^2+y^2=1 \] のような方程式で表すのである. これは,図形を「式」に翻訳していると考えることができる.
方程式 \[ x^2+y^2=1 \] は,原点からの距離が$1$である点全体を表している. つまり,円という図形を,方程式だけで表している.
図形を方程式に翻訳すると,視覚的な情報に頼らずに扱うことができる. 図を描かなくても計算できるし,複雑な図形も式として扱える. さらに,4次元以上の図形のように目に見えない対象も,方程式を使えば考えることができる.
ナンプレの場合も同じである. そのままでは,ナンプレは数字を書き込むパズルである. しかし,各マスを変数にし,ルールを多項式で表すと, \[ \text{ナンプレ} \quad\longrightarrow\quad \text{多項式の連立方程式} \] に翻訳できる.
多項式の連立方程式に翻訳できれば,グレブナー基底という道具を使うことができる. つまり,翻訳することで,数学の道具や計算機のアルゴリズムを使えるようになる.
この考え方は,情報科学やプログラミングでも重要である. 現実の問題をそのままコンピュータに渡すことはできない. まず,数学的・論理的な形に翻訳し,計算できる形にする必要がある. 今回の講義で見たグレブナー基底は,その一例である.
9. まとめ:概念の拡張と式への翻訳
今回の講義では,小学校で学ぶ自然数の割り算から出発した. 自然数の割り算では \[ a=qb+r,\qquad 0\leq r\lt b \] という形で,商と余りを定義した. 次に,この考え方を1変数多項式の割り算に拡張し,さらに辞書式順序を使って多変数多項式の割り算へ拡張した. また,複数の多項式で割ることを考えると,割る順番によって余りが変わるという問題が現れた. この問題を解決するための「良い割る多項式の集まり」がグレブナー基底である.
ここで大切なのは,単に新しい計算方法を覚えることではない. 自然数の割り算という身近な概念を定義し直し,それを多項式へ,さらに複数の多項式へと拡張していく. このように,既に知っている概念をより広い世界へ広げることは,大学数学の基本的な考え方の一つである.
さらに,ナンプレのようなパズルも,多項式の連立方程式に翻訳することで,グレブナー基底という数学の道具を使えるようになる. 高校数学で図形を軌跡の方程式として表すのと同じように,目に見える対象や具体的なルールを式に翻訳すると,計算やアルゴリズムの対象として扱うことができる.
- 自然数の割り算を定義し直す.
- その定義を多項式の割り算へ拡張する.
- 複数の多項式で割るときの問題から,グレブナー基底が現れる.
- 方程式に翻訳すると,図形やナンプレのような問題にもグレブナー基底を使える.
公式を覚えて計算するだけでなく,対象を定義し,概念を拡張し,現象を数学の言葉に翻訳する. これが,今回見てきた大学数学の考え方である.