41 必殺技
ソラは、応接室のソファに座り、ついさっき引き受けた冒険者ギルドの案件に関して、一人思案する。
――実際の仕事が始まる前に、少し準備しておこうかな。現実世界のこの課題をどうモデル化して理想世界に持ってこようか。魔物の移動は、偶発的な現象だから、確率を使うのがよさそうだ。
ソラは、確率に関して習ったことを思い起こす。
――確率とは、要するに事象の起こりやすさを0から1までの数で表したものだったな。コインの表と裏が同じくらい出やすければ、表も裏も出る確率は0.5だ。魔物の分布を確率を使ってモデル化してみよう。現在の魔物の分布は、左が0.8、右が0.2という左が出やすいコインのようなものと思えばよいだろう。
次に、ソラは促進魔導具をモデル化しようと試みる。促進魔導具は、一日あたり一定割合の魔物を移動させる。これも確率を使ってモデル化する。
――促進魔導具の設定は、左から右への移動確率がα、右から左への移動確率がβとしようか。それぞれ0より大きく、1より小さい数だ。左に留まる確率は、1引くα、右に留まる確率は、1引くβになる。これらの確率に従って、魔物の分布が日毎にだんだん変わっていくモデルになるわけだ。
ソラは、促進魔導具による魔物の分布の変化を式で表すことにした。ある日の魔物の分布をベクトルzとする。
――zの要素は左の確率と右の確率の二つ。両方の要素を足したら1だ。さっき考えた四つの移動確率を並べた行列をPで表そう。その次の日の魔物の分布は、前の日の分布zだけで決まると考えると、P掛けるzで計算できる。さらに、その次の日の魔物の分布は、Pの2乗、掛けるzになるな。以下、同様だ。
ソラは、促進魔導具のモデルに基づき、理想世界で解かなければいけない問題を書き出した。
A:時間が経っても魔物の分布が変わらなくなるような定常分布は何か?
B:魔物が最初どう分布していても、時間が経てばAの定常分布に至るか?
C:検出魔導具の結果から、αとβを推定できるか?
D:エリア数が2より大きくても、同じことが言えるか?
――こうしてみると、色々な問題があるなあ。順番に考えようか。問題Aは、P掛けるs、がsに等しくなるようなベクトルsがあるかどうかと言い換えられるよね。
ここで、ソラはジンの講義を振り返る。
ジンは、線形代数には、これまで話していない重要な道具があると告げ、その解説をこんな風に始めた。
「坊や、複雑な問題をモデル化すると、巨大な行列が出てくることがある。巨大な行列は、得体の知れない魔物のようなものじゃ。一方で、対角行列、特に定数倍するような行列は素直で扱いやすい。一般の行列を素直な行列で表すことは、線形代数の重要な考え方。固有値と固有ベクトルは、そのための強力な道具じゃ」
ソラは、ジンの解説が理解できず、固有値と固有ベクトルは何かと尋ねた。
ジンは、ゆっくりと話し始める。
「固有ベクトルというのは、槍みたいなもんじゃな。一般の正方形の行列、正方行列を0でない要素を持つベクトルに掛けると、ベクトルがどう変わるかは、簡単には分からない」
一息おいて、ジンは固有ベクトルが持つ特別な性質を述べる。
「一方、正方行列をその行列の固有ベクトルに掛けると、ベクトルが定数倍されるだけという、分かりやすい変化になる。この定数が固有値じゃ。こうやって、行列の性質の一部を明らかにできる。槍の一突きが魔物の弱点に刺さるようなイメージかのう」
「固有ベクトルは一つだけなのですか?」
ソラの質問に、ジンは淀みなく答える。
「いや、固有ベクトルは、一般には複数あるぞ。それぞれの固有ベクトルは、固有値と対になっておる」
ソラは続けて尋ねる。
「行列の固有値と固有ベクトルは求められるものですか?」
「魔導具を使えば、どんな正方行列でも固有値と固有ベクトルを計算できるぞ。さらに、特定のタイプの行列であれば、固有値と固有ベクトルが特定の性質を持つと、計算しなくても分かる」
「どんなタイプの行列ですか?」
ソラが興味深そうに質問すると、ジンは秘密を打ち明けるような表情をして告げる。
「重要で役立つものを一つ挙げようかの。要素がすべて正の正方行列は、正の固有値と、要素がすべて正の固有ベクトルを持つ。それ以外の固有ベクトルの固有値の絶対値はすべてその固有値よりも小さくなる。ペロン・フロベニウスの定理と呼ばれている。イメージは、槍を使った必殺技かのう」
ソラは、ここまで講義を思い出した時点で、元の問題に立ち返る。
――さっき考えた行列Pは、正方形で全部の要素が正だから、ペロン・フロベニウスの定理の条件が当てはまる。つまり、正の固有値λと要素がすべて正の固有ベクトルsが存在する。式で表すと、P掛けるsは、λ掛けるs、に等しくなる。
ソラは、縦方向にPの要素を足すとすべて1になることから、固有値λが1であることを突き止める。
――これで、問題Aには必ず解があることが分かった。定常分布は固有値1に対応する固有ベクトルsだ。計算しなくても、それが分かるのはスゴイな。
ソラは、連立一次方程式を解くことで、問題Aの解である定常分布sを具体的に求めた。それは、(c掛けるβ, c掛けるα)という二つの要素を持つベクトルである。ただし、cは、α足すβ、の逆数、である。定常分布は確率なので、二つの要素を足したら1になる必要がある。そこで、cで固有ベクトルの大きさを調整した。
――師匠がランさんに言ってたように、二つの魔導具の設定が同じ、つまりαとβが等しいときは、定常分布は(0.5, 0.5)というベクトルになる。これは、魔物が左右エリアで均等に分布することを表している。さらに、αとβが推定できれば、それに応じた定常分布を計算できるぞ。
ソラは、定常分布が求められて嬉しくなったが、まだ問題は残っていると気を引き締める。
――次は、問題B、どんな分布から出発しても定常分布に至るかどうか、を考えよう。初期分布をzと表そう。zは例えば現在の魔物の分布、(0.8, 0.2)だ。確率だから、二つの要素を足すと1になる。
ソラは、行列Pの1以外の固有値を求めることにした。代入すれば明らかだが、1以外の固有値の固有ベクトルdは、二つの要素を足すと0にならないといけない。つまり、固有ベクトルdは(1, -1)という形をしている。
――固有ベクトルdが(1, -1)だから、代入して計算すれば、対応する固有値は、1引くα引くβだ。これをγで表そうか。γはマイナス1から1までの数、つまり絶対値が1未満の数だ。つまり、この行列Pに対して、ペロン・フロベニウスの定理が成り立つことを実際に確認できた。
ソラは、初期分布zを二つのベクトルsとdを使って表すことを試みる。
――どんなzでも、sとdにそれぞれうまい定数を掛けて足せば、zと等しくできるな。これは、二つの定数に関する連立一次方程式を解けば確かめられる。師匠は、このことを二つの固有ベクトルの線形結合で表すと言っていたな。こういった定数のことをベクトルの係数と呼ぶんだった。
初期分布zをsとdの線形結合で表す場合、zの二つの要素を足すと1であることから、sの係数はつねに1であることが導かれる。
ソラは、固有ベクトルs、dの線形結合を使えば、問題Bが解けることを発見する。
――zにPを掛けても、sの係数は1のままだ。一方、dの係数には、γが掛けられる。だから、zにPを何度も掛けると、dの係数の絶対値はだんだん小さくなる。つまり、kを大きい整数とするとき、Pのk乗、掛けるzは、sに収束する。ここで、数列の収束が出てくるとは思わなかったな。
ソラは誰もいない応接室のソファでつぶやく。
「よって、どんな初期分布zでも時間が経てば定常分布sに収束する。よし証明終わり」
ソラは、次に問題C、検出魔導具の結果からαとβを推定する方法を考える。
――問題Cは、簡単だ。一日間観測して、左エリアから右エリアに移動した魔物の数を左エリアにいた魔物の数で割った値でαを推定すればいいだろう。βも同様だ。
最後に、ソラは魔物の壁の仕様変更に備え、問題D、エリア数が2より大きくても同じことが言えるか、に取り組む。エリア数をnの記号で表す。このとき、行列Pはn掛けるn個の要素が縦横に並んだ巨大な正方行列になる。まず、毎日、すべてのエリア間での移動が起こる場合を考える。
――このとき、Pの要素はすべて正だ。ペロン・フロベニウスの定理の条件が満たされるから、正の固有値λとすべての要素が正の固有ベクトルsが存在する。エリア数が2のときと同様に、λは1であることを示せるから、sは定常分布だ。
ソラは、エリア数が大きくても、定常分布が存在することが分かり、感動する。
勢いに乗って、任意の初期分布zから出発して定常分布sに至るかどうかの考察を始める。
――初期分布zが、行列Pのいくつかの固有ベクトルの線形結合で表せる場合は簡単だ。ペロン・フロベニウスの定理より、定常分布s以外の固有ベクトルに対応する固有値の絶対値はすべて1未満になるから、エリア数が2のときと同じ論法で、定常分布sに収束することが示せる。
ここで、ソラは、ジンが講義で述べた注意を思い起こす。
「線形代数で面倒なことの一つが、すべてのベクトルが固有ベクトルの線形結合で表せるとは限らないことじゃ。このことは、すべてのベクトルに対して何かの性質を証明する際の支障となりえる」
「なにか代わりの手段はないんですか?」
ソラが尋ねると、ジンは少し悩んだ顔をして答える。
「たいていの場合は、三角化かのお。固有ベクトルの代わりに、三角化基底ベクトルを使う」
ジンは、三角化基底ベクトルの性質を紹介する。
性質1:正方行列に対して、三角化基底ベクトルが一般には複数、存在する。それぞれの三角化基底ベクトルには、一つの固有値が対応する。
性質2:どんなベクトルでも、すべての三角化基底ベクトルの線形結合で表せる
性質3:行列をその行列の三角化基底ベクトルに掛けると、対応する固有値がその三角化基底ベクトルに掛けられ、それにおまけの項が加わったベクトルになる
性質4:おまけの項は、順番が前の三角化基底ベクトルの線形結合で表される
「正方行列の三角化基底ベクトルは、並べ方によって変わる。先頭の三角化基底ベクトルには、おまけの項が付かない。だから、先頭の三角化基底ベクトルは、固有ベクトルじゃ」
ソラは、講義で習った三角化基底ベクトルを使って、定常分布への収束の証明を試みる。任意の初期分布zは、行列Pのすべての三角化基底ベクトルの線形結合で表せる。先頭の三角化基底ベクトルとして、固有値1の固有ベクトルである定常分布sを選ぶ。
――ペロン・フロベニウスの定理から、先頭以外の固有値の絶対値はすべて1未満だ。だから、行列Pを掛け続けると、おまけの項でs以外の三角化基底ベクトルの係数の絶対値はだんだん小さくなる。結局、kを大きい整数とするとき、Pのk乗、掛けるzは、sの定数倍に収束する。
ソラは、収束証明の最後の詰めに取り掛かる。
――sに掛かる定数はいくつになるかな。Pのk乗、掛けるz、というベクトルも要素を足し合わせると1になる。sと比較すれば、sに掛かる定数は1と分かる。これで、定常分布sに収束することが示された。証明終わり。
エリア数が2より大きくても、エリア数が2の場合と同じ性質が成り立つことが分かり、魔物による壁の仕様が変わっても大丈夫そうだと、ソラは安堵した。
ただ、ソラには一点気になることがあった。エリア数を大きくすると、一日のうちにエリア間で魔物の移動が起こらないようなエリアの対が出てくる可能性がある。この場合、行列Pの要素に0が含まれることになる。
――どうしよう。ペロン・フロベニウスの定理の条件って、もう少し緩くならないかな。師匠に聞いてみようか。
ソラが、そう考えた瞬間、ジンから念話が入った。
「坊や、呼んだか?」
「師匠、すみません。間違って念話を掛けてしまいました。ペロン・フロベニウスの定理の条件って、もう少し緩くならないか聞こうと考えていました」
ソラの応答に対して、ジンは嬉しそうに褒める。
「冒険者ギルドの案件で、ペロン・フロベニウスの定理を思い出すのはいいセンスじゃ。よしよし」
「魔物による壁の仕様が変更されて、エリア数が2より大きくなった場合のモデル化を検討していました。エリア間での移動確率が0になるようなエリアの対があると困るんですが」
ソラが、懸念点を挙げると、ジンはこともなげに告げる。
「所定個数の中間エリアを経由することで、任意のエリアから任意のエリアに移動できるのであれば、エリア間の移動確率に0があっても、ペロン・フロベニウスの定理は成り立つぞ」
「移動確率に0がある場合、定理が成り立つためには条件が追加されるということですね」
ソラが念を押すと、ジンは、定理が成り立たない例を挙げる。
「ダメな代表例を挙げようかの。どうやっても移動できないエリアがあったり、エリア間を必ず行ったり来たりするような設定だと、決まった定常分布に収束しないと分かるじゃろう」
ソラは、確かにそうですね、と同意した。
「エリア間を繋ぐ獣道の整備や促進魔導具の設定に気を付けていれば、エリア数を大きくしても大丈夫じゃろう。もちろん、検出魔導具の結果を見て確認する必要はあるがな」
ソラは、師匠、ありがとうございました、と返して、念話を切った。
――これで、冒険者ギルドの案件の準備は完了だ。始まるのが楽しみだな。
ソラは、線形代数の新しい道具を使って、実世界の課題を解決できそうと分かり、満足感を覚えた。




