第4話
『準素イデアル分解』
3:00:00
2:59:59
2:59:58
2:59:57
2:59:56
2:59:55
2:59:54
2:59:53
2:59:52
2:59:51
2:59:50
2:59:49
2:59:48
2:59:47
2:59:46
2:59:45
2:59:44
2:59:43
2:59:42
2:59:41
2:59:40
2:59:39
…
カウントダウンが始まった。
寒い。
俺が最初に感じた感覚はそれだった。
寒い。寒い。寒い。寒い。寒い。寒い。
胃液が逆流し、胸まで上がってくる。
俺は思わず口を手で覆った。
「本条ちゃんは〜、回答が出来次第〜、教えてくださいね〜☆☆」
平等院補題が気楽そうに言う。
そうだ。あいつらを助けなきゃ。
俺は、セミナーハウスの出口に向かう。
2:58:23
2:58:22
2:58:21
2:58:20
…
しかし、ドアをガチャガチャ押しても一向に開かない。
あれ?あれ?
「あ、公平性を期すために〜、この部屋からは〜、出られませんよ〜☆☆」
くそ!なんで開かないんだ?
早く助けに行かなきゃならないのに。
2:57:49
2:57:48
2:57:47
2:57:46
…
俺は、思い切りドアを足で蹴り始めた。
ドンッ!ドンッ!ドンッ!ドンッ!
もう少しでこじ開きそうな時に、突然誰かに体を掴まれた。
「黒子の皆さん〜、そのまま〜、捕まえといてくださいね〜☆☆ はい。ゆっくり〜、ゆっくり〜、本条ちゃんを机に戻してください〜☆☆」
2:55:31
2:55:30
2:55:29
2:55:28
…
うおおおおおおおおおお!!!!!
俺は黒子を引き剥がして、走り走り走り、思い切りドアに体当たりした。
半身に電撃のような痛みが走る。
それでもドアは開かなかった。
というかドアは引き戸だった。
2:54:48
2:54:47
2:54:46
2:54:45
…
俺は、再び黒子に拘束された。
「本条ちゃん〜、いい加減にしてくださいね〜。これ以上暴れると〜、失格にしますからね〜。それに〜、今は〜、とてもとても大事な〜、『
ふざけんなよ!!なんでだよ!!
「ふざけんなよ!!なんでだよ!!人質取るなんてずるいだろ!!卑怯だろ!!最低だ!!人間のクズだ!!!!!!いますぐ止めさせろよ!!」
2:53:30
2:53:29
2:53:28
2:53:27
…
「人質??なんですかそれは??我々、数戟管理委員会は〜、数戟を公平に公正に管理するだけです〜。数戟の外で何が起こっても知ったこっちゃないんです〜。」
「何言ってんだ!人質を救うことが問題になってるんじゃねえか!」
「ですから〜、導来ちゃんの問題は〜、『グラフに描かれた頂点と辺から、条件を満たす頂点を探せ』というものなので〜、人質とか爆弾とか関係ないんですよね〜。」
「はあ!?だからってこんなことしたっていいのかよ!!」
この時、平等院補題の顔は、今まで見たこともないような恐ろしい笑顔で笑った。
「だから〜、これは〜、血で血を洗う史上最悪の数戟『
2:51:11
2:51:10
2:51:09
2:51:08
…
「ということで〜、2:50:50 問題に回答する本条ちゃんの邪魔は〜、2:50:45 誰にもさせないので〜、2:50:41 集中して問題に 2:50:36 集中してくださいね〜☆☆ 2:50:29 たとえ、2:50:28 警察が攻めて来ても、2:50:23 怪獣が襲いに来ても、2:50:20 怪盗が盗みに来ても、2:50:17 救急車が救いに来ても〜、2:50:13 私たちが必ず全力で本条ちゃんを守りますので!! 2:50:09 ☆☆ 安心してくださいね!!2:50:05」
2:50:04
2:50:03
2:50:02
2:50:01
2:50:00
遠くで乾いた音がした。
2:49:59
2:49:58
2:49:57
2:49:56
2:49:55
…
俺は冷静になった。
もはや冷静になるしかなかった。
いや、心の中では、ここから出るには、問題を解くしかないことには気づいていた。
ただ、冷静になることが、現実を直視することが、怖かったんだ。
腕をこすって手を温める。
大丈夫。俺ならできる。
俺は椅子に座りなおした。
状況を整理しよう。
導来から出題された問題のグラフには、13個の頂点(小屋)と、31本の辺(電話線)がある。
その関係は、次の通りだ。
小屋1:3,4,5,6,7,10
小屋2:5,9,10,12
小屋3:1,9,11
小屋4:1,7,8,9,10,12
小屋5:1,2,7,8,13
小屋6:1,8,9,13
小屋7:1,4,5,9,12,13
小屋8:4,5,6,11
小屋9:2,3,4,6,7,10,11
小屋10:1,2,4,9,12,13
小屋11:3,8,9
小屋12:2,4,7,10
小屋13:5,6,7,10
この中から、
条件1:A,B,Cは互いに、電話線でつながっていない。
条件2:A,B,C以外の小屋はすべて、A,B,Cのうちのどれか1つと電話線でつながっている。
を満たす3つの小屋A,B,Cを探す。
パッと見た限り、小屋と電話線には、規則性はない。
そうなると、一個ずつ確認していくしかないのか。
適当に選んだとして、当たる確率は、13_C_3=286 分 の1。
わずか、0.3パーセントだ。
そして、なるべく早く解かなくてはいけない。
2時間後に最後の小屋が爆発すると言っていたが、厳密には、回答時間はもっと短い。
小屋への移動を考えると、1つの小屋にたどり着くのに、20分…いや山道であることを考慮すると、30分。3つの小屋で、1時間半。
つまり、30分で解かなくてはならない。
すでに10分過ぎたから、残り時間は、正味20分。
しかし、妹たちの小屋が最後に爆発する保証もないから、これは希望的観測にすぎない。
くそ。自分の行動を悔やんでいる場合はない。
闇雲に解いていって間に合うか…
せめて、あれがあれば……
ここで、俺はあることに気がついた。
『あ、公平性を期すために〜、この部屋からは〜、出られませんよ〜』
俺が、この部屋から出ようとしていた時、平等院補題は、こんなことを言っていた。
「公平性」?
まさか。
「おい。」
「んん?なんですか〜??☆☆」
「もしかして、導来圏は、この部屋で問題を作ったんじゃないのか?」
「はい〜。そうですけど〜??」
やっぱり。ならば、あれがあるはずだ。
俺は、机の周囲を確認する。
長机の、テーブル面の裏側。
パイプ状の収納スペースに、それはあった。
よし。よし。よし!
後は、問題を数式に落とし込むだけだ。
2:45:20
2:45:19
2:45:18
2:45:17
2:45:16
…
グラフ。妹と一緒にやった四色問題もいわばグラフの問題だ。
あの時は、都道府県をそれぞれ変数で割り当てて、異なる色で隣合う関係を、
x^4-1=0
y^4-1=0
(x+y)(x^2+y^2)=0
という方程式で表した。今回の小屋問題も、同じようにできるはずだ。
感覚をつかむために、試しに、普通に解いてみよう。
まず、小屋1について。
小屋1がつながっている小屋は、3,4,5,6,7,10 だから、小屋1とつながっていない小屋は、
2,8,9,11,12,13 …○
この中から、小屋2に注目すると、小屋2とつながっていない小屋は、
1,3,4,6,7,8,11,13 …△
小屋1、小屋2のどちらともつながっていない小屋、つまり、○と△に共通する小屋は、
8,11,13
すると、1,2,8 、1,2,11、1,2,13 は条件1『A,B,Cは互いに、電話線でつながっていない。』を満たす。
問題は、これらが、条件2『A,B,C以外の小屋はすべて、A,B,Cのうちのどれか1つと電話線でつながっている。』を満たすかどうかだ。
小屋1,2,8について、今度は、つながっている小屋をピックアップすると、
小屋1:3,4,5,6,7,10
小屋2:5,9,10,12
小屋8:4,5,6,11
となる。
条件2『A,B,C以外の小屋はすべて、A,B,Cのうちのどれか1つと電話線でつながっている。』こととは、1,2,8を除いた全ての小屋が、このリストの中のどこかに入っているということだ。
順番に確認すると、
小屋3は、小屋1のリストにあるので、小屋1とつながっている。
小屋4は、小屋1と小屋8とつながっている。
小屋5は、小屋1、小屋2、小屋8すべてとつながっている。
小屋6は、小屋1と小屋8とつながっている。
小屋7は、小屋1とつながっている。
小屋9は、小屋2とつながっている。
小屋10は、小屋1と小屋2とつながっている。
小屋11は、小屋8とつながっている。
小屋12は、小屋2とつながっている。
よし。これいけるんじゃないか?
今のところ、すべて1、2、8のどれかとつながっている。
最後に、小屋13は……
小屋13は……1、2、8のどれともつながっていない……
すなわち、条件2は成立しなかった。
1,2,8 は求める答えではないということだ。
愚直に求めるには、今の動作を、1,2,11, 1,2,13 そして、他の頂点に対しても行わなければいけない。
そして、決してミスは許されない。
2:41:20
2:41:19
2:41:18
2:41:17
…
やはり、方程式に落とし込むしかない。
時間は、否応無しに過ぎていく。
くそ。どうすればいいんだ。
四色問題の場合と違って、今回は色というものがない。
ただ、つながっているか、いないかだ。
物語の主人公ならば、ここで複雑に絡み合った出来事が上手くほどけて、素晴らしいアイデアを閃くのだが、ところがどっこい、ここは現実で、俺は主人公ではない。
伏線なんてものは都合よく存在しないし、出来事に無駄があるのが、無駄しかないのが、ノンフィクションだ。
しかし、ここは現実ゆえに、ただの病気が武器になる。
『
半覚醒。現実を妄想に。無意識を意識的に。
すなわち、無意識に認識していた無意味なことを、無理やり結びつけて、問答無用に伏線にしてしまうのがこの病状だ。
凡人たる俺の、非凡なる
発動せよ――
『
2:40:58
2:40:57
2:40:56
2:40:55
2:40:54
…
あれ?ん?あれれ?
オホン。
この『
一見すると、何の役にも立たないようだが、実際、特に役に立たない。
いや、「無意識」を味方にできることを除いては……。
発動せよ――
『
2:40:35
2:40:34
2:40:33
2:40:32
2:40:31
…
風の如く宙を舞え、陽の如く世を照らせ。
『
2:40:19
2:40:18
2:40:17
2:40:16
2:40:15
…
駄目だった。
ブリーチっぽく言っても駄目だった。
え、なんで?なんでなんで?
なんで発動しないの?
反抗期?そういう時期なの?
2:40:04
2:40:03
2:40:02
2:40:01
2:40:00
…
やばいやばいやばいやばい。
3つ目の小屋が爆発した。
残りの小屋は10。
時間的にも後10分で解かなきゃいけない。
それなのに、頼みの綱の
どうするどうするどうする???
ヘッドバンギング――。
――ヘッドバンギング (英: head-banging) とは主にロック、ヘヴィメタル、ハードコアなどのギグ、ライヴコンサートで見られる共鳴的動作の一つ。リズムに合わせて、頭を激しく上下に振る動作である[1]。しばしば略してヘドバンとも呼ばれる[1]。(Wikipedia "ヘッドバンギング"より抜粋)
人は、パニックになると、何をするか分からないとよく言われる。
というか、何をするかよく分からないのが、パニックなのである。
この時の俺も例外ではなく、気がついたら、机にヘッドバンギングしていた。
ゴン!ゴン!ゴン!
鈍い音が教室に響き渡る。
一見すると、支離滅裂なヘッドバンギングに見えるが、実は理にかなったヘッドバンギングなのだ。
心とは、すなわち、脳だ。
つまり、こうして、頭を脳を刺激すれば、おのずと道は開かれるというわけだ。
ゴン!ゴン!ゴン!
少し、頭がボーとしてきた気がする。
いい傾向だ。
もう少しで、
鼻血が垂れてきたのが難点だが。
「補題様、あれは……いかがしましょうか……」
黒子の一人が何か言ってる。
「ん〜☆☆ あれは〜、たぶん、ヘッドバンギングだろうね〜〜☆☆」
「いや、そうではなく……止めた方がよろしいのでしょうか…」
「あ〜☆☆ これは、難しい問題だね〜〜☆☆ ヘッドバンギングする権利は誰しも持ってるからね〜〜☆ ま、このままだと死んじゃいそうだし〜、本条ちゃんが、本条ちゃん自身の回答を妨害していると判断して、止めちゃいましょ〜」
「御意!!」
やめ、やめろ。
触るんじゃない。
俺はヘッドバンギングするんだ。
ヘドバンして、イマラヴァを発動するんだ。
2:38:12
2:38:11
2:38:10
2:38:09
2:38:08
黒子ともみ合っているうちに、バランスが崩れ、俺は椅子ごと後ろに倒れた。
同時に、後頭部を強く、とても強く打ち付けた。
2:38:07
違和感に気付いたのは、その瞬間から5秒くらい経った後だった。
2:38:07
いや、「5秒経った」というのは、語弊があった。
2:38:07
時間が止まっている。
正確に表現するならば、それが適当だったからだ。
2:38:07
カウントダウンの時計、俺の周りを囲む黒子、呆れた顔をしている平等院補題、その全てが静止していた。
というか、俺も後頭部を打ち付けた状態のままで静止していた。
というか、たぶん打ち付けた反動で、たぶん2センチくらい浮いている。
周りは止まっているし、俺も止まっている。
なんじゃこりゃ。
ありのまま、今、起きてる事を話すぜ!
「おれは、ヘッドバンギングをしていたと思ったら、いつの間にか、時間が止まってた。」
何を言っているのか、わからねーと思うが、
俺も、何をしたのか、わからなかった… 。
頭がどうにかなっている…。
時間停止だとかサイコキネシスだとか、
そんな大層なもんじゃあ、断じてねえ。
もっと恐ろしいものの片鱗を、味わってるぜ…
2:38:07
相変わらず、時間は止まっている。
走馬灯。
人は死ぬ瞬間に、今までの人生を思い出すというが、これがそれなのかもしれない。
時間を止める能力というものは、よく少年漫画に出てくるが、自分も止まるものというのは、おそらくない。
なぜならば、意味がないからだ。
自分が動けるならまだしも、自分も動けないんじゃ、まったくの無駄だからだ。
どうするんだこれ。
どうすればいいんだこれ。
2:38:07
もう5分くらい経ったのではないだろうか。
時間の感覚がよく分からなくなってきている。
時間そのものが無いのだから当然だ。
そんなことを、宙に浮かんでいる椅子を見ながら、俺はぼーと考えていた。
あれ?ってか、椅子が、浮いてる。
5メートルくらいか、ありえない高さに。
それも10個くらい。
相変わらずそれ以外は止まっているし、俺も動けない。
そうか。これは
いつもと違うのは、なんか時間が止まっちゃってるってだけで。
椅子には、変数が書かれている。
x1から、えーと、x13。
13といえば、小屋の数だ。
つまり、それぞれの小屋を変数に直したということだ。
――『東京と変数 x、千葉を変数 y、神奈川を変数 z に対応させる。』
ピタゴラ数問題しかり、嘘つき問題しかり、四色問題しかり。
「変数に直す」ことは、今までにもやってきた常套手段だ。
椅子同士に縄のようなものが結ばれている。
おそらく、電話線を模しているものだろう。
1つの縄が短くなって、2つの椅子がくっついた。
x1 と x3 と書かれている。
x1-----x3 が、
x1x3 に。
あ、x1x3。
つまり、x1かけるx3。積のことか。
くっついてることを、x1x3=0 で表せる?
x1x3=0 ⇔ x1=0 または x3=0
だよな。
逆にくっついていない時は、
x1x3≠0 ⇔ x1≠0 かつ x3≠0
うーん。なんかしっくり来ない。
――『それは、0と1しかない世界。0.5とか、2とか、他の数字はない世界。……じゃあ、嘘つき問題に戻ろうじゃないか。』
そうか。0と1しかない世界を考えればいいんだ。
0と1しかない世界だったら、0でなければ、1しかない。
つまり、
x1x3≠0 ⇔ x1=1 かつ x3=1
となる。
なんかいい感じだ。すっきりとしている。
まとめると、
小屋xi と 小屋xj がつながっている ⇔ xixj=0
という規則をつけるとする。
すると、{0,1}の世界で考えると、
小屋xi と 小屋xj がつながっていない ⇔ xi=xj=1
が成り立つ。
さて、問題は、これをどう使って、小屋問題を解けばいいかだ。
――『それじゃあ、説明しようか、本条くん。この三山崩しには、先手必勝か、後手必勝か、判定できる、ある法則がある。法則。その法則を解き明かすには、我々とは、別の数の世界に行く必要がある。』
法則。俺は、今の設定から、問題の条件を満たすような法則を見つけなければいけない。
とりあえず、規則
小屋xi と 小屋xj がつながっている ⇔ xixj=0
と、小屋のつながりの関係から、次の連立方程式ができる。
(以下、連立方程式 Gと呼ぶ)
x1x3=0
x1x4=0
x1x5=0
x1x6=0
x1x7=0
x1x10=0
x2x5=0
x2x9=0
x2x10=0
x2x12=0
x3x9=0
x3x11=0
x4x7=0
x4x8=0
x4x9=0
x4x10=0
x4x12=0
x5x7=0
x5x8=0
x5x13=0
x6x8=0
x6x9=0
x6x13=0
x7x9=0
x7x12=0
x7x13=0
x8x11=0
x9x10=0
x9x11=0
x10x12=0
x10x13=0
――『連立方程式って、x とか、y とか出てくるやつ?』
そうだ。連立方程式だ。
今までにも散々出てきたじゃないか。
連立方程式は、いつでも俺たちを救ってくれる。
問題の条件を振り返ってみよう。
条件1:A,B,Cは互いに、電話線でつながっていない。
条件2:A,B,C以外の小屋はすべて、A,B,Cのうちのどれか1つと電話線でつながっている。
このそれぞれの条件を、今決めた規則で、変数の多項式で、書き直す。
まず、条件1だ。
便宜上、A,B,Cの小屋番号を、i, j, k そして、対応する変数を、xi, xj, xk としよう。
すると、
小屋xi と 小屋xj がつながっていない ⇔ xi=xj=1
だったから、
条件1は、
A,B,Cは互いに、電話線でつながっていない。
⇔ xi=xj=xk=1
という風に書き直せる。
うん。すごくすっきりした感じだ。
次に、条件2だ。
今度は、つながっているんだから、「xy=0」で書き直せばいい。
つまり、条件2は、
A,B,C以外の小屋はすべて、A,B,Cのうちのどれか1つと電話線でつながっている。
⇔ xi,xj,xk 以外の任意の xn に対して、xnxi=0 または xnxj=0 または xnxk=0 が成り立つ。
という書き換えられる。
もっとシンプルにするなら、
A,B,C以外の小屋はすべて、A,B,Cのうちのどれか1つと電話線でつながっている。
⇔ xi,xj,xk 以外の任意の xn に対して、xn xi xj xk=0。
でもいいだろう。
すなわち、小屋問題は、次のシンプルな問題に解釈できた。
上の連立方程式Gを満たす、x1〜x13 の中から、次の xi, xj, xk を見つけよ。
条件1:xi=xj=xk=1
条件2:n≠i,j,k ⇒ xn xi xj xk=0
そして、よく考えると、条件1から、xi=xj=xk=1なんだから、条件2は、
n≠i,j,k ⇒ xn=0
に書き換えられる。
すなわち、小屋のつながりからできた連立方程式Gから、
xi=xj=xk=1、残りの変数は、xn=0
を満たすような解を見つければいいということだ。
今、考えてきたことが本当にあっているかどうか、具体例で確認してみよう。
連立方程式Gを再び、思い出す。
x1x3=0
x1x4=0
x1x5=0
x1x6=0
x1x7=0
x1x10=0
x2x5=0
x2x9=0
x2x10=0
x2x12=0
x3x9=0
x3x11=0
x4x7=0
x4x8=0
x4x9=0
x4x10=0
x4x12=0
x5x7=0
x5x8=0
x5x13=0
x6x8=0
x6x9=0
x6x13=0
x7x9=0
x7x12=0
x7x13=0
x8x11=0
x9x10=0
x9x11=0
x10x12=0
x10x13=0
例えば、これに、x1=1 を代入してみる。
すると、最初の式、
x1x3=0
x1x4=0
x1x5=0
x1x6=0
x1x7=0
x1x10=0
から、x3=x4=x5=x6=x7=x10=0 が言える。
次に、x2=1を代入してみる。すると、
x2x5=0
x2x9=0
x2x10=0
x2x12=0
から、x5=x9=x10=x12=0 が成り立つ。
さらに、x8=1を代入してみる。
x4x8=0
x5x8=0
x6x8=0
x8x11=0
から、x4=x5=x6=x11=0 となる。
ここまでを整理すると、
x1=x2=x8=1 かつ x3=x4=x5=x6=x7=x9=x10=x11=x12=0
だ。
x1=x2=x8=1から、変数 x1,x2,x8 は条件1を満たす。
しかし、条件2は満たさない。
なぜならば、x13=1が解となり得るからだ。
実際、x13が関係する式は、
x5x13=0
x6x13=0
x7x13=0
x10x13=0
しかなく、今、x5=x6=x7=x10=0 なので、
0*x13=0
0*x13=0
0*x13=0
0*x13=0
となって、x13=1でも問題ない。
つまり、
x1=x2=x8=x13=1 かつ x3=x4=x5=x6=x7=x9=x10=x11=x12=0
が連立方程式の解となってしまって、条件2が成り立たない。
つまり、x1、x2、x8は求めるものではない。
実際にも、さっき手で確かめたように、小屋1と小屋2と小屋8は条件を満たさなかったから、確かに合っている。
こうして、小屋問題は、完全に、連立方程式を解く問題に帰着できた。
後は、連立方程式を解くだけ。
――『連立方程式が解けるんだ。そう、グレブナー基底ならね。』
そうだ。俺には、グレブナー基底がいる。
グレブナー基底が役に立つんだ。
しかし、ここで、問題が発生した。
グレブナー基底が計算できないとか、そういう問題ではない。
むしろ、グレブナー基底を計算する必要がないのだ。
上の連立方程式の多項式は、すでにグレブナー基底なのだから。
そもそも、「グレブナー基底で連立方程式を解く」というのは、「グレブナー基底で連立方程式を簡単にする」ということだ。
例えば、グレブナー基底を使えば、
x^2 - 2 = 0
y^2 - 3 = 0
z - x - y = 0
という連立方程式は、
z^4 - 10z^2 + 1=0
2y - 11z + z^3=0
2x - z^3 + 9z=0
というように、z について解きやすいように、z だけの式にすることで、より簡単になる。
しかし、今は違う。
問題の連立方程式Aは、すでに簡単な形をしているのだ。
これ以上、簡単にしようがないのだ。
しまった。そして、困った。
順調に出来てきたと思ったが、思わぬところで詰まった。
どうすればいいんだ。
その時、ガクッと体が動いた気がした。
宙に浮いた椅子が、元のテーブルの位置に戻ろうとしている。
黒子の顔を覆う布が微かに動き始めた。
時間静止が終わろうとしている――。
俺は直感的にそう思った。
元の世界に戻れるのはいいが、このままだと、何も掴めずに
何か。何か――。
『そう、グレブナー基底は、きらめく森だ。その森の中には、妖…』『で、どうやって、グレブナー基底で解くの?…』『その攻撃を右手でなんとか防ぎながら、俺は思い当たる節を探そうとする。』『グレブナー基底にはポン酢が合う』『なんか尋問されてるような気分になったが、落ち着いて答える。』『ているのが癪なのか、つまんなさそうに俺の説明を聞い』『自主留年をしたというのは、有名な話だ。』『ルール。これらを今から群城氏と交互に取り合っていく。どす。一回のターンに何個でも湯のみはとってもいい。でプ。ただし、』『第一回戦、南條さまはこれ以上、湯のみを取ることができないため、本条さまの勝利でございます!』『俺が、草野さんだったら、スーパーヒトシくん人形を5億個あげてる』『いつやるか?今でしょ!』『わーい!証明が得意なフレンズなんだね!』……………………………………………………………………………………………………………………………………………………。。。。。
映像という映像が一気に流れ出す。
俺が、今まで、見てきたもの、感じてきたものだ。
何千枚ものディスプレイのような薄い紙が、それぞれ違う動画を流しながら、空間を埋め尽くしている。
この中に、ヒントがあるのか?
『前回の講義では、グレブナー基底による連立方程式の求解を行ってきた。今日は、グレブナー基底のさらなる応用を探ってみよう。』
1つの画面に目が向く。
これは、大学の、古城山教授の講義を受けた時の、記憶だ。
『グレブナー基底は、辞書式順序で計算することで、特に0次元イデアルの場合に、イデアルに含まれる1変数だけの多項式を取り出すことができる。これが、「連立方程式が解ける」ことのメカニズムだ。しかし、0次元でないイデアルやその解たちの関係が知りたい場合には、うまくいかないことがある。そこで、連立方程式を「分解」することを考える。これは、代数多様体で考えれば、既約分解をすることに対応している。そして、素晴らしいことは、この分解は盛んに研究され、計算するための様々なアルゴリズムが知られているということだ。そう、この分解の名前こそが――』
2:38:07
2:38:06
2:38:05
2:38:04
2:38:03
時は、動き出した。
椅子は床に落ち、後頭部を軽くぶつける。
黒子は、俺を起こそうと必死になっている。
「もう〜、本条ちゃん、いい加減にしてくださいね〜☆☆ それ以上、ヘッドバンギングしたら〜、ペナルティとりますよ〜☆☆(☝︎ ՞ਊ ՞)☝︎」
俺は、急いで、机の下を探る。
時間は、あまりない。
『
これは、出題者と回答者の条件を平等にするためだと思われるが、裏を返せば、『出題者と同じ条件で、回答者は回答して良い』ということだ。
実際、導来がここで問題を作ったから、俺は、ここで問題を回答しているわけだし、ここから出ることも出来ない。
そして、ここに置いてあるものは、自由に使っていいはず。
導来は、出題時に、何かしらの機材を使っていた。
そうでなければ、爆破予告のビデオが撮影できないのだ。
しかし、ビデオカメラらしきものは、教室には見当たらない。
とすればあるのは、必然、これに限られる。
ノートパソコン。
俺は、机の下に置いてあったそれを取り出した。
パスワードはかかっていない。
数式処理ソフトが何か入ってないか確認する。
あった。
SINGULAR だ。
SINGULAR は無料の数式処理ソフトの1つで、もちろんグレブナー基底も計算できる。https://www.singular.uni-kl.de/
しかし、今回俺が計算したいのは、これだ。
Primary Decomposition
日本語では、準素イデアル分解と呼ばれる。
準素イデアル分解は、グレブナー基底の重要な応用の1つだ。
そして、グレブナー基底を用いた計算アルゴリズムは、多くの数式処理ソフトに導入されている。
LIB "primdec.lib";
まず、primary decomposition のライブラリをロードして、
ring r = 2,(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13),dp;
環 r を定義する。ここでは、標数を2として、変数が13個ある多項式環を r として定義した。次に、
ideal i = x1*x3,x1*x4,x1*x5,x1*x6,x1*x7,x1*x10,x2*x5,x2*x9,x2*x10,x2*x12,x3*x9,x3*x11,x4*x7,x4*x8,x4*x9,x4*x10,x4*x12,x5*x7,x5*x8,x5*x13,x6*x8,x6*x9,x6*x13,x7*x9,x7*x12,x7*x13,x8*x11,x9*x10,x9*x11,x10*x12,x10*x13;
として、連立方程式Gに対応するイデアル i を定義する。
そして、i を準素イデアル分解すると、
primdecGTZ(i);
[1]:
[1]:
_[1]=x11
_[2]=x10
_[3]=x7
_[4]=x6
_[5]=x5
_[6]=x4
_[7]=x3
_[8]=x2
[2]:
_[1]=x11
_[2]=x10
_[3]=x7
_[4]=x6
_[5]=x5
_[6]=x4
_[7]=x3
_[8]=x2
[2]:
[1]:
_[1]=x12
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x3
[2]:
_[1]=x12
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x3
[3]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x8
_[7]=x7
_[8]=x5
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x8
_[7]=x7
_[8]=x5
_[9]=x1
[4]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x8
_[7]=x7
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x8
_[7]=x7
_[8]=x2
_[9]=x1
[5]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x8
_[7]=x5
_[8]=x4
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x8
_[7]=x5
_[8]=x4
_[9]=x1
[6]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x10
_[5]=x9
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x1
[7]:
[1]:
_[1]=x13
_[2]=x11
_[3]=x10
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x4
_[8]=x3
_[9]=x2
_[10]=x1
[2]:
_[1]=x13
_[2]=x11
_[3]=x10
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x4
_[8]=x3
_[9]=x2
_[10]=x1
[8]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x4
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x4
_[8]=x2
_[9]=x1
[9]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x9
_[5]=x8
_[6]=x5
_[7]=x4
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x9
_[5]=x8
_[6]=x5
_[7]=x4
_[8]=x2
_[9]=x1
[10]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x9
_[5]=x6
_[6]=x5
_[7]=x4
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x11
_[4]=x9
_[5]=x6
_[6]=x5
_[7]=x4
_[8]=x2
_[9]=x1
[11]:
[1]:
_[1]=x12
_[2]=x10
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x3
[2]:
_[1]=x12
_[2]=x10
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x3
[12]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x5
_[8]=x3
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x5
_[8]=x3
_[9]=x1
[13]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x3
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x3
_[8]=x2
_[9]=x1
[14]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x5
_[7]=x4
_[8]=x3
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x5
_[7]=x4
_[8]=x3
_[9]=x1
[15]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x4
_[7]=x3
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x4
_[7]=x3
_[8]=x2
_[9]=x1
[16]:
[1]:
_[1]=x13
_[2]=x12
_[3]=x9
_[4]=x8
_[5]=x5
_[6]=x4
_[7]=x3
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x12
_[3]=x9
_[4]=x8
_[5]=x5
_[6]=x4
_[7]=x3
_[8]=x2
_[9]=x1
[17]:
[1]:
_[1]=x13
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x4
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x4
_[8]=x2
_[9]=x1
[18]:
[1]:
_[1]=x11
_[2]=x10
_[3]=x9
_[4]=x7
_[5]=x6
_[6]=x5
_[7]=x4
_[8]=x2
_[9]=x1
[2]:
_[1]=x11
_[2]=x10
_[3]=x9
_[4]=x7
_[5]=x6
_[6]=x5
_[7]=x4
_[8]=x2
_[9]=x1
[19]:
[1]:
_[1]=x10
_[2]=x9
_[3]=x8
_[4]=x7
_[5]=x6
_[6]=x5
_[7]=x4
_[8]=x3
_[9]=x2
[2]:
_[1]=x10
_[2]=x9
_[3]=x8
_[4]=x7
_[5]=x6
_[6]=x5
_[7]=x4
_[8]=x3
_[9]=x2
[20]:
[1]:
_[1]=x13
_[2]=x10
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x4
_[7]=x3
_[8]=x2
_[9]=x1
[2]:
_[1]=x13
_[2]=x10
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x4
_[7]=x3
_[8]=x2
_[9]=x1
[21]:
[1]:
_[1]=x12
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x6
_[8]=x5
_[9]=x1
[2]:
_[1]=x12
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x8
_[6]=x7
_[7]=x6
_[8]=x5
_[9]=x1
[22]:
[1]:
_[1]=x12
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x1
[2]:
_[1]=x12
_[2]=x11
_[3]=x10
_[4]=x9
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x4
_[9]=x1
[23]:
[1]:
_[1]=x12
_[2]=x10
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x3
_[9]=x1
[2]:
_[1]=x12
_[2]=x10
_[3]=x9
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x5
_[8]=x3
_[9]=x1
これは、元の連立方程式が、23個の連立方程式に分解されたということだ。
例えば、最初の
[1]:
[1]:
_[1]=x11
_[2]=x10
_[3]=x7
_[4]=x6
_[5]=x5
_[6]=x4
_[7]=x3
_[8]=x2
[2]:
_[1]=x11
_[2]=x10
_[3]=x7
_[4]=x6
_[5]=x5
_[6]=x4
_[7]=x3
_[8]=x2
を見てみよう。
これは、x2=x3=x4=x5=x6=x7=x10=x11=0 という連立方程式が、元の連立方程式の解の一部としてあることを意味している。
(上の[2]の方は全く同じ式なので今回は無視する。)
ここに出ていない変数は、1という値を取れるので、
x1=x8=x12=x13=1 かつ x2=x3=x4=x5=x6=x7=x10=x11=0
が解としてあることが分かる。
すなわち、これは、
「小屋1、小屋8、小屋12、小屋13 は互いにつながっていない」
ことを意味している。
このように、準素イデアル分解をすると、連立方程式の解が、「見える」ようになる。
小屋問題に戻ろう。
小屋問題では、「xi=xj=xk=1、残りの変数は、xn=0」を満たすものが欲しかった。
今、すべての変数の個数は、13個だったから、xn=0 なるものは10個。
すなわち、分解された23個の連立方程式の中から、式が、10個あるものを選べば良い。
それは、すなわち――
7番目。
[7]:
[1]:
_[1]=x13
_[2]=x11
_[3]=x10
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x4
_[8]=x3
_[9]=x2
_[10]=x1
[2]:
_[1]=x13
_[2]=x11
_[3]=x10
_[4]=x8
_[5]=x7
_[6]=x6
_[7]=x4
_[8]=x3
_[9]=x2
_[10]=x1
の連立方程式だ。
ここで、x1=x2=x3=x4=x6=x7=x8=x10=x11=x13 であり、逆に1となり得る変数は、ちょうど、x5=x9=x12=1 の3個。
つまり――
「この問題の答えは、小屋5、小屋9、そして、小屋12だ。」
2:31:13
残り、2時間31分13秒、俺は、問題に回答した。
やれるだけのことはやった。
取り乱しもした。パニックになったりもした。
絶望もした。興奮もした。
後で悔やむくらいの後悔は、もうすでに十分した。
頼む。正解してくれ。
「本条ちゃんの回答を受け付けました…………ただいま解答を確認します…………………結果は………………………………正解です!!☆☆」
俺は、部屋を飛び出した。
***
ここは、セミナーハウスの別室。
本条圭介が、回答をしている間、平等院命題と、導来圏はここで待機をしていた。
モニターには、教室を勢いよく飛び出していく、本条圭介の姿が映る。
「公正に、公平に、お悔やみ申し上げます。導来さま。」
平等院命題は、安楽椅子に座る導来圏の背後でそうつぶやいた。
「カッ。ガラにもねえこというんじゃねえよ。命題。」
導来は眉一つ動かさず、肩肘をついたままそれに応えた。
「いえいえ。全くもって本心からの言葉でございます。現に、導来さまは、本条さまを討ち取るせっかくのチャンスを失ってしまったのですから。」
「チャンス……ねえ」
導来は、手元の炭酸を開けながら続けて言う。
「この2問目で、本条圭介を負かせる気なんてハナからねえよ。この程度の問題なら、解けることは想定内だ。難しくしようと思えば、いくらでも難しくできる。ヤツが解けるように、上手く調節したんだ。…………それに……」
炭酸を飲み干した導来が、げっぷを出して言った。
「この問題は、解けてからが、地獄だ。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます