第5話
『グレブナー基底と四色問題』
「あなたたち、何やってるの!」
ハサミを振りかぶった瞬間、大きな声がした。
オレは、思わずハサミを背中の後ろに隠す。
運良く、タジマたちはハサミに気づいていないようだ。
「チッ、もう行くぞ!」
そう言って、タジマたちはオレから離れていった。
コンビニの駐車場に、一人残されたオレに寄ってきたのは、一人の女子高生だった。
「ねえ、大丈夫だった?」
淡いピンクの傘を下げたソイツは、しゃがみながらオレに聞いてきた。
オレは、目線を合わせないように、下に落ちているビニール袋の方を見る。
「ほっぺた。」
「??」
「ほっぺた、汚れちゃってるね。」
そう言って、ソイツは、ハンカチでオレの顔を拭き始めた。
ソイツの暖かい手に、頬の皮膚がくすぐったくなる。
カフェラテ色の制服に、赤い髪のリボン。
胸元には、青い蝶型のネクタイがかかっている。
黙って顔を拭かれていると、ソイツのすうっとした瞳に、どこまでも吸い寄せられるような気がした。
炭酸とは違う、今まで飲んだことのない液体が、胸から流れ込むような感覚がした。
「手、どうしたの?」
「え…」
「ほら、さっきから後ろにまわしてるから。」
胃酸が上がってきたのか、口の中が急に酸っぱくなる。
吐き出さないように堪え、一気に飲み干す。
そうだ。オレはすでに踏み出したんだ。
オレはタジマを殺す。絶対にやりきる。
そのためには、この女に気づかれてはいけない。
「ハハハ、なんでもないよ。」
オレは、なるべく笑顔を作って、女に応えた。
大丈夫。焦るな。
この場をなんとかしのげればいい。
「もしかして、怪我してるの?ちょっと見せて。」
女は、軽くオレの腕を掴んだ。
「やめろよ!」
オレは、いきなりのことに頭が真っ白になって、力いっぱいに女の手を振りほどいた。
ハッと我に返ると、ハサミには血が付いていた。
「痛……」
女の右手の甲で、真っ赤な血が、鋭い直線から噴き出していた。
彼女の唇よりも紅い赤が、彼女の頬に付いていた。
それから、オレはできる限り速く走って帰った。
あの場にあったランドセルやコンビニ袋を、どうやって持って帰ったのかはよく覚えていない。
家の洗面所で、ハサミに付いた血を、ようやく落とし終えた頃、意識がはっきりと戻った。
あれから、一ヶ月が経った。
前回の反省を生かし、考えられる対策はすべて準備してきた。
今日が、いよいよ決行日だ。
前回の失敗は、衝動に身を任せ、冷静さに欠けていた点だった。
あの場で、タジマを殺したとしても、いくら少年法があるとはいえ、
それに、殺すにしても、小学2年生の力では、どうしても限界がある。
すなわち、ヤルには、頭を使って、合法的にだ。
オレは、ランドセルに圏論の本を入れた。
圏 (Category)、通称、Cat。
オレが好きな言葉の一つだ。
この前、南條ってやつを倒して、十分な地位は手に入れた。
後は、その地位を利用するだけ。
オレは、床でミルクを飲んでいる妹を抱き上げた。
妹は、オレの顔をペロペロと舐める。
「おい、さっきカニカマ食べただろ。」
妹を引き離すため、ネズミのおもちゃを渡す。
妹は、にゃあ、とだけつぶやいて、大人しくケースに入った。
いよいよだ。
目的地に辿りついたオレは、息を深く吸う。
タジマを殺すことは、ひとまず小休止する。
それよりも、目撃者の処分の方が優先されるからだ。
オレは、喫茶店の扉を開けた。
***
カランコロンと、喫茶店のドアが開く音がする。
どうやら、俺と妹の他にも客が入ってきたようだ。
「ひむべると?ってなに?」
妹が、クエスチョンマークを出しながら首を傾げる。
偉大な数学者の名前も、妹の前では途端に可愛くなる。
「ヒルベルトは、ダフィット・ヒルベルトのことで、19世紀から20世紀にかけて活躍した『現代数学の父』とも呼ばれる人なんだ。」
「数学のパパ!」
「そう。ヒルベルトは、もうすごすぎて、その偉業は語り尽くせないくらいで、例えば、ヒルベルト空間とか、ヒルベルトの23の問題とか、多くの数学の概念や問題にヒルベルトの名前が使われていたりする。」
「ほへー。」
「有名なリーマン予想も、ヒルベルトの第8問題に含まれているしね。」
「サラリーマン……予想?」
「まあ、とにかく、今からやる『ヒルベルトの零点定理』も、ヒルベルトの名前が付けられた有名な定理の1つだ。」
「ふむ。」
妹は分かったような口ぶりで、小さく頷く。
俺は、ノートに図を書き込んだ。
連立方程式 ⇆ 連立方程式の解
「すごく簡単に言って、ヒルベルトの零点定理は、連立方程式と、その解を結びつける定理なんだ。」
「結びつける?」
「ああ、対応づけると言った方がいいかな。連立方程式から、連立方程式の解が得られて、逆に、連立方程式の解から、元の連立方程式が得られるって感じかな。」
「なんだか、難しいね。」
「具体的な例を見ていこう。」
x^2+y^2+2=0
x-y=0
「この連立方程式の解は、いくつかな?」
「んん?」
「どうした?」
「これ、答えなくない?」
「なんで?」
「だって、上の式を見ると、x^2 とか y^2 って常に0以上の数でしょ?それに、2を足したって、絶対に0にならないよね?」
ぼんやりしているようで、なかなか鋭い。
俺が、草野さんだったら、スーパーヒトシくん人形を5億個あげてる。
「とりあえず、いつものように解いてみて。」
「え、えーと……………まず、下の式が、」
x-y=0
「だから、」
x=y
「で、これを上の式に代入すると、」
y^2+y^2+2=0
「つまり、」
2y^2+2=0
「で、2で割れば、」
y^2+1=0
「って、これ、答えないよね?」
「実数の世界ではね。」
「どゆこと?」
「複素数の世界まで広げれば、ちゃんとこの y^2+1=0 は解を持つ。」
「あ、i か。」
妹は、ようやく気付いたようだ。
まだ、複素数に慣れていないようで、うっかり i の存在を忘れてしまうらしい。
「そう。y^2+1=0、つまり、y^2=-1。2乗して-1になる数は、i だ。正確に言うと、i と -i だけど。」
「なるへそ。」
「連立方程式に戻ろう。x=y だったから、この連立方程式の解は、」
x=i、y=i または、x=-i、y=-i
「となる。」
「うん。でも、これがどうしたの?」
「ここで、大事なのは、連立方程式」
x^2+y^2+2=0
x-y=0
「は、実数の世界では、解を持たなかったけど、複素数の世界では、解を持った。それは、複素数というのは、とてもきれいな世界だからだ。」
「複素数がきれい?」
「信じられない?」
「だって、二乗して-1になる数、なんて、なんか気持ち悪いじゃん。」
「まあ、そうなる気持ちも分かる。でも、複素数というのは、ある種の数の完成系なんだ。」
「カンセーケー?」
連立方程式 ⇆ 連立方程式の解
「さっき、この対応を書いたね。実は、この対応は、実数ではうまくいかない。」
「そうなの?」
「具体例を見てみよう。」
x^2+y^2+2=0
x-y=0
「これは実数解を持たない連立方程式だったけど、他に、実数解を持たないような連立方程式はあるかな?」
「む、むーと……あ!さっき出た」
x+y=1
x+y=0
「これとか!?」
「正解!この連立方程式は、結局、」
1=0
「という式が出てきて、解を持たないことを検証した。しかし、さっきの対応で言えば、」
ある1つの連立方程式 ⇆ その連立方程式の解がない
「というように、『解がないような連立方程式』というものは、1つしか存在して欲しくないんだけど、」
x^2+y^2+2=0
x-y=0
x+y=1
x+y=0
「のように、実数の世界では、少なくとも2種類の連立方程式が解を持たなくなってしまってるんだ。」
「ほほう?」
「でも、複素数の世界では、このようなことは、起きない。連立方程式とその解の間にきれいな対等がある。つまり、複素数の世界では、解がないような連立方程式は、」
1=0
「しかないんだ。」
「ええー!そうなの!?」
「正確には、『1=0 という式を作れる連立方程式』と言った方がいいかな。さっきの式」
x+y=1
x+y=0
「もその1つだ。」
「むむー。」
「どうした?」
「ノリで『ええー!そうなの!?』とか言っちゃたけど、なんか難しいよー。頭がパンクしそう。」
あれ、ノリだったのか。
このノリスケめ。たいこおばさんにチクってやる。
「まあまあ。ここで、話をグレブナー基底に戻そう。今話したことを、グレブナー基底の言葉で書き換えると、」
連立方程式が(複素数で)解を持たない。
⇔連立方程式のグレブナー基底は、{1}
「が成立するんだ。」
「ほほ〜。」
「これは、つまり、逆に言えば、グレブナー基底が{1}という形をしていなければ、連立方程式は(複素数で)解を持つってことなんだ。」
「あ!ということは!」
ここで、ようやく話が、四色に戻る。
「そう。グレブナー基底の見た目で、4色で塗り分けられるか判断できるってことなんだ。」
「おお〜。」
今度は、ノリスケじゃないことを祈る。
「話をまとめよう。」
地図が4色で塗り分けられる。
⇔対応する連立方程式が解を持つ。
⇔グレブナー基底が{1}ではない。
「ということが成立する。東京、千葉、神奈川が4色で塗り分けられるか、調べる時に、」
x^4-1=0
y^4-1=0
z^4-1=0
(x+y)(x^2+y^2)=0
(x+z)(x^2+z^2)=0
「という連立方程式の解をわざわざ探していたけど、その必要はないんだ。この連立方程式のグレブナー基底が、」
{z^4-1, y^4-1, x^2*y + x*y^2 + y^3 - x^2*z - x*z^2 - z^3,
x^3 + x^2*z + x*z^2 + z^3}
「であって、{1}じゃないから、4色で塗り分けられるって判断していいんだ。」
「………でもどうして、そのヒルベルトの零点定理は成り立つの?」
「え、あ、ああ、これは、証明するには、ネーターの正規化定理とか、多様体とか、環論や代数幾何の初歩の知識を使うから、まだ環奈には早いかな。」
「ふーん。そうなんだ。」
「でも、この定理のおかげで、俺たちはいちいち解を見つけなくてもいいから、面倒くさくなくて、とても便利なんだ!」
さあ、いよいよ、世界を4色で塗り分けていく。
ヒルベルト父さんが残した熱い想い、グレブナー基底母さんがくれたあのまなざしをカバン、もといパソコンに詰め込む。
「この1都6県は、すでに4色で塗り分けたね。連立方程式を立てて実際に確認してみよう。」
「うん!」
「まず、分かりやすいように、それぞれの変数を」
東京 ↔︎ x_1
千葉 ↔︎ x_2
神奈川 ↔︎ x_3
埼玉 ↔︎ x_4
山梨 ↔︎ x_5
静岡 ↔︎ x_6
長野 ↔︎ x_7
「としておこう。」
「それぞれの変数の値によって、色が変わるってことだよね。」
「そうだな。では、4色のどれかであることを意味するために、」
x_1^4-1=0
x_2^4-1=0
x_3^4-1=0
x_4^4-1=0
x_5^4-1=0
x_6^4-1=0
x_7^4-1=0
「それぞれ全部で7つの式が立つ。」
「うむ。」
「それでは、次に位置関係だ。まず、東京は、千葉、神奈川、埼玉、山梨と接しているから、」
(x_1+x_2)(x_1^2+x_2^2)=0
(x_1+x_3)(x_1^2+x_3^2)=0
(x_1+x_4)(x_1^2+x_4^2)=0
(x_1+x_5)(x_1^2+x_5^2)=0
「という4つの式が立つ。」
「ええっと、例えば、(x_1+x_2)(x_1^2+x_2^2)=0 は、x_1とx_2が違うもの、つまり、色が異なるって意味だったっけ?」
「その通り。」
「ほっ。よかった。」
「では、次に、千葉に注目しよう。千葉は、東京の他に、埼玉に接しているから、」
(x_2+x_4)(x_1^2+x_4^2)=0
「という式が立つ。この調子で他の県についてもやってみよう。」
「うーんと、埼玉は、東京と千葉の他に、山梨と長野に接しているから、」
(x_4+x_5)(x_4^2+x_5^2)=0
(x_4+x_7)(x_4^2+x_7^2)=0
「で合ってる?」
「うん。いいぞ。」
「じゃあ、続いて、神奈川は、山梨と静岡に接しているから、」
(x_3+x_5)(x_3^2+x_5^2)=0
(x_3+x_6)(x_3^2+x_6^2)=0
「だよね。そして、山梨は、神奈川、東京、埼玉の他に、静岡と長野に接しているから、」
(x_5+x_6)(x_5^2+x_6^2)=0
(x_5+x_7)(x_5^2+x_7^2)=0
「だねー。あと残っているのは……静岡は、神奈川と山梨の他に、長野と接していて、」
(x_6+x_7)(x_6^2+x_7^2)=0
「最後に、長野は、これまでに接している県はすべて出てるから、これで終わりだね!」
「おお〜。意外に、早かったな。」
「えへん。」
「まあ、地図帳見ながら、変数を変えるだけだから、環奈でもできるか。」
「なにをー!!」
「ま、まあ、これまで出てきた式を全部まとめて連立方程式を立ててみよう。」
x_1^4-1=0
x_2^4-1=0
x_3^4-1=0
x_4^4-1=0
x_5^4-1=0
x_6^4-1=0
x_7^4-1=0
(x_1+x_2)(x_1^2+x_2^2)=0
(x_1+x_3)(x_1^2+x_3^2)=0
(x_1+x_4)(x_1^2+x_4^2)=0
(x_1+x_5)(x_1^2+x_5^2)=0
(x_2+x_4)(x_1^2+x_4^2)=0
(x_4+x_5)(x_4^2+x_5^2)=0
(x_4+x_7)(x_4^2+x_7^2)=0
(x_3+x_5)(x_3^2+x_5^2)=0
(x_3+x_6)(x_3^2+x_6^2)=0
(x_5+x_6)(x_5^2+x_6^2)=0
(x_5+x_7)(x_5^2+x_7^2)=0
(x_6+x_7)(x_6^2+x_7^2)=0
「うわあ。式がたくさん。」
「7変数、18本の連立方程式だね。」
「解く気が起きないよ…」
「まあ、そんな時に便利なのが、お馴染みグレブナー基底だ。早速計算してみよう。」
GroebnerBasis[{x1^4 - 1, x2^4 - 1, x3^4 - 1, x4^4 - 1, x5^4 - 1, x6^4 - 1, x7^4 - 1, (x1 + x2)*(x1^2 + x2^2), (x1 + x3)*(x1^2 + x3^2), (x1 + x4)*(x1^2 + x4^2), (x1 + x5)*(x1^2 + x5^2), (x2 + x4)*(x1^2 + x4^2), (x4 + x5)*(x4^2 + x5^2), (x4 + x7)*(x4^2 + x7^2), (x3 + x5)*(x3^2 + x5^2), (x3 + x6)*(x3^2 + x6^2), (x5 + x6)*(x5^2 + x6^2), (x5 + x7)*(x5^2 + x7^2), (x6 + x7)*(x6^2 + x7^2)}, {x1, x2, x3, x4, x5, x6, x7}]
俺は、Enter を押した。
{-1 + x7^4, x6^3 + x6^2 x7 + x6 x7^2 + x7^3, x5^2 + x5 x6 + x6^2 + x5 x7 + x6 x7 + x7^2, x4^2 + x4 x5 - x5 x6 - x6^2 + x4 x7 - x6 x7, x3 x5 x6 + x3 x6^2 + x5 x6^2 + x3 x5 x7 + x3 x6 x7 + x5 x6 x7 - x6 x7^2 - x7^3, -1 + x3 x4 x6^2 + x3 x6^2 x7 - x4 x6^2 x7 + x3 x4 x7^2 + 2 x3 x5 x7^2 + 2 x3 x6 x7^2 + 2 x5 x6 x7^2 + x6^2 x7^2 + x3 x7^3 - x4 x7^3, x3 x4 x5 + x3 x4 x6 + x4 x5 x6 - x3 x6^2 + x4 x6^2 - x3 x5 x7 - x3 x6 x7 - x5 x6 x7 - x3 x7^2 + x7^3, x3^2 + x3 x5 + x3 x6 - x5 x7 - x6 x7 - x7^2, 1 - x2^2 x3 x4 - x2^2 x3 x5 + x2^3 x6 - x2^2 x3 x6 - x2^2 x4 x6 - 2 x2^2 x5 x6 + x2 x4 x5 x6 - x2^2 x6^2 - x2 x5 x6^2 + x4 x5 x6^2 + x2^3 x7 - x2^2 x3 x7 - x2^2 x5 x7 + x2 x4 x5 x7 - x2^2 x6 x7 + x2 x4 x6 x7 - x2 x5 x6 x7 + x4 x5 x6 x7 - x2 x6^2 x7 + x4 x6^2 x7 + x2 x4 x7^2 - x3 x4 x7^2 - x3 x5 x7^2 - x3 x6 x7^2 - x5 x6 x7^2 - x6^2 x7^2 + x2 x7^3 - x3 x7^3, -1 + x2^3 x4 + x2^3 x5 - x2^2 x4 x5 + x2^2 x5 x6 - x2 x4 x5 x6 + x2^2 x6^2 - x2 x4 x6^2 + x2^2 x5 x7 - x2 x4 x5 x7 + x2^2 x6 x7 - x2 x4 x6 x7 + x2 x5 x6 x7 - x4 x5 x6 x7 + x2 x6^2 x7 - x4 x6^2 x7 + x2^2 x7^2 - x2 x4 x7^2 + x2 x6 x7^2 - x4 x6 x7^2, x2^3 x3 + x2^3 x5 - x2^2 x4 x5 + x2^2 x3 x6 - x2 x3 x4 x6 + 2 x2^2 x5 x6 - 2 x2 x4 x5 x6 + 2 x2^2 x6^2 + x2 x3 x6^2 - 2 x2 x4 x6^2 + x2 x5 x6^2 - x4 x5 x6^2 - x2^2 x4 x7 + x2 x3 x4 x7 + 2 x2 x3 x5 x7 + x2^2 x6 x7 + x2 x3 x6 x7 - x2 x4 x6 x7 + x3 x4 x6 x7 + 2 x2 x5 x6 x7 - x3 x6^2 x7 + x4 x6^2 x7 + x2 x3 x7^2 -x2 x4 x7^2 + x3 x4 x7^2 - x2 x6 x7^2 + x4 x6 x7^2 + x6^2 x7^2 - 3 x2 x7^3 + x4 x7^3, -1 + x2^4, x3 x4 + x3 x5 + x1 x6 + x3 x6 + x4 x6 + 2 x5 x6 + x6^2 + x1 x7 + x3 x7 + x5 x7 + x6 x7, x1 x4 + x1 x5 + x4 x5 - x5 x6 - x6^2 - x5 x7 - x6 x7 - x7^2, x1 x3 + x1 x5 + x4 x5 - x3 x6 - 2 x5 x6 - 2 x6^2 + x4 x7 - x6 x7, x1 x2^2 + x2^3 + x2 x4 x5 - x2 x5 x6 + x4 x5 x6 - x2 x6^2 + x4 x6^2 + x2 x4 x7 - x2 x6 x7 + x4 x6 x7 + x1 x7^2 + x4 x7^2 + x5 x7^2 + x7^3, x1^2 - x4 x5 + x5 x6 + x6^2 - x4 x7 + x6 x7}
「お、おおん…」
「に゛ゃんち゛ゅうだに゛ゃあ゛あ゛ん!!」
「え!どうしたのお兄ちゃん!?」
「あ、いや何でもない。」
「びっくりした……」
「元々の連立方程式も多項式の量が結構多かったけど、グレブナー基底はさらに複雑になった。これの解を求めるのは、骨が折れる。」
「うん。折れる。」
「しかし!このグレブナー基底は{1}ではないことから、ヒルベルトの零点定理を使って、連立方程式は解を持つことが分かる!すなわち、4色で…」
「4色で塗り分けられるってことだね!」
「お、おおん…」
また、妹に先に言われてしまった゛だ゛に゛ゃ゛ん゛。
ニャンちゅう語は、意外とハマる。
「じゃあ、これを使って、どんどん地図を塗り分けていこうか。次は、中部地方でも攻めてみようか。では、まず…」
「待って。私にやらせて。」
そう言って妹は、俺からノートを奪った。
熱心に、ペンで数式を書き込んでいく。
俺は、残っていたコーヒーを飲み干す。
ふと、外を見ると、雨が止んでいた。
もう晴れたみたいだな、と妹に話しかけるも、妹は集中して聞こえていないようだった。
「すべての地図を4色で塗り分けれるか」という問題は、四色問題と言って、すでに肯定的に解決されている問題だ。
それは、グレブナー基底を使った方法ではないが、コンピュータの膨大な計算により証明がされた。
証明された当時は、計算に1200時間以上かかったともいわれる。
このような力技のような証明に、「美しくない」と評価する人もいるが、俺は、そんなことはないと思う。
計算機代数を専攻している俺にとっては、コンピュータが数学に影響を与えることは、素晴らしいことだと思うし、とてもワクワクする。
これからの時代、ますますコンピュータも発達していくと思うし、もしかしたら、リーマン予想を先に解くのは、人間ではなくコンピュータかもしれない。
100年後か、200年後か、それが訪れるかは、皆目見当もつかないが。
赤い夕日が、喫茶店の中を明るくする。
俺は、雨で鬱屈としていた気分が、すっかり色づいていることに気がついた。
これも、数学、グレブナー基底の力なのかもしれない。
あるいは。
妹は、まだ計算を続けている。
陽だまりの彼女。
昔、そんな映画があった気がする。どんな結末だったっけ。
夕日は、陽だまりではないかもしれないが、優しい光の中で妹は輝いていた。
こんな時間が、いつまでも続けばいいと、俺は心の奥で思った。
ガシャン
突然、テーブルに、銀色のボウルが逆さまになったものが置かれた。
よく、レストランで見るような、皿に被せるアレだ。
「お客様。ご注文は、この子ですか?」
すぐそばから、ウエイターの声がする。
いや、頼んでないですと、ウエイターの方を向くよりも先に、ボウルは開けられた。
にゃあ。
あ、猫だ。かわいい。
皿の上には、行儀よく猫が座っていた。
茶色の毛並みに、ピンクの首輪がしてある。
って、いやいや、なんで猫なんだと、文句を言おうとした時、妹の首に、首輪がはめられた。
隣には、小学校低学年らしき少年。
ん?んんん?
なんだこの状況は。
猫に、首輪の俺の妹に、小学生の坊主。
「ケッ。理解が追いついてねえようだから、自己紹介してやるよ。オレの名前は、導来 圏。」
少年は、そう言って、妹の首につながった鎖を持ちながら言った。
「本条圭介。お前の
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます