雑学界の権威・平林純の考える科学

成人した男女800人に尋ねたら、3人に1人が「サンタクロースはいる」と信じていて、世界中にはサンタクロースが「何十万人もいる」と答えたというニュースが流れていました(調査レポート PDF)。…そう、サンタクロースは本当に存在しるということを、大人は確かに知っています。 今日書くことは、そんなクリスマスの話です。

クリスマスイブの夜、世界中のこどもたちにクリスマスプレゼントを届けるために、サンタクロースはトナカイのそりに乗り、世界中を駆け抜けます。世界中にはたくさんのこどもたちがいますから、サンタが「いきあたりばったり」に何の計画もなくソリを走らせたりしたら、プレゼントを届け終わる前に夜が明けてしまいます。だから、サンタクロースは、世界中のこどもたちがいる家を世界地図で探し「さぁ、今年はどういう順序で、世界中にいるこどもたちの家を回ろうか?」と考えます。

サンタクロースは、一体どういうコースで世界中にいるこどもたちの家を訪ねれば良いのでしょう? 実は、このクリスマスイブを前にサンタクロースを悩ませる問題は、「巡回サンタクロース問題(TSP: Traveling Santa-Claus Problem )」と呼ばれる計算機科学でも難問とされる「大問題」です。

「こどもたちが眠る枕元の位置の集合」と「各こどものいる位置の間の距離」が与えられたとき、すべてのこどもたちのもとをちょうど一度ずつ訪れて、そして、北極に戻るまでの総移動距離が最小のコースを求めよ。

巡回サンタクロース問題(TSP: Traveling Santa-Claus Problem )

 この問題がなぜ難問かというと、サンタは「考えうるたくさんのコースの中から、最短コースを見つけ出さなければならない」わけですが、考えうるたくさんのコースの数が、あまりにも膨大だからです。

サンタが考えないといけない「たくさんのコース」の総数は、サンタクロースが1人である場合は、こんな式で表されます。

( こどもたちの人数 - 1 ) ! / 2

この式の中にいる「! 」というのが曲者です。「! 」というのは、たとえば「5!」なら、「5×4×3×2×1=120」となります。つまり、(その数から1までを)延々と掛け合わせる、という意味です。この「!」があるせいで、上の式はあっというまに「膨大な数」になってしまうのです。たとえば、世界にいるこどもが「たった100人だけ」だったとしても、もう 156桁もの膨大な数になってしまうのです。あるいは、もしも1000人のこどもたちがいたら、あぁ「2565桁ものコース」の中から最短コースを選び出さなければならないのです。さらには、それが何千万人・何億人ものこどもたちがいたならば、もう想像もできないくらい、たいへん大きな数のコース中から、配達コースを考えなければならないのです…。

 

 スーパーコンピュータ「京」でも、1秒間に「1京回=16桁回」の演算しかできません。…ということは、クリスマスイブを前にサンタクロースを悩ませる問題「巡回サンタクロース問題(TSP)」がどれだけ難しい「大問題」であるか、わかるかと思います。サンタが1人しかいなかったとしたら、こどもたちにプレゼントを配るコースを考えるだけで、日が暮れるどころか何年・何万年もかかってしまいます。

 けれど、こう考えてみましょう。

「サンタクロースは”1人”ではなくて、何人かで分担してプレゼントを配っていたとしたら?」

 もしサンタが何人かいたならば、プレゼント配りは「1 / サンタの人数」だけ楽になります。 そして「コースを考える作業」は、実際に配る作業以上に「ずっと楽」になります。

1 / ( ( ( こどもたちの数 – 1 ) ! / 2 ) / ( サンタの人数 * ( こどもたちの数 / サンタの人数 – 1 ) ! / 2 ) )

にまで減るのです。世界にいるこどもが「100人」の場合、サンタが1人なら156桁ものコースを考えなければなりませんでしたが、もしサンタが10人いたら、たった7桁の「1814400コース」を考えるだけで良いのです。つまり、こういうことです。

 サンタが1人だけだったとしたら、プレゼントを配ることは不可能だ。
しかし、サンタが複数いたならば、プレゼントを配ることができる可能性がある。

 

けれど、これだけでは、不十分ですよね。「サンタが複数いたならば、プレゼントを配ることができる可能性がある」といっても、世界中にはたくさんのこどもたちがいます。しかも、世界の人口は1年あたり1億人づつ増えていますから、全世界にいる子供たちの数も、毎年どんどん増えているのです。こどもの数が増え続けたら、いくらサンタクロースが複数いるといっても、プレゼントの配達コースを考え・配るなんてできるわけもありません…。

それを解決する答えはこうなります。

 こどもが増えるにしたがって、サンタクロースも増える。
そうすれば、世界中のこどものもとに、プレゼントも届く。

 こどもが増えるのと同じようにサンタも増える、つまり、「こどもがこの世界に生まれ来ると、サンタも新たに増えていく」のであれば、何の問題もなくなります。プレゼントの配達コースを考えるだけで日が暮れてしまうこともないし、プレゼントを配り終える前に朝になってしまう…なんてこともなくなります。「サンタクロースは複数いて、こどもが1人現れるたびにサンタも増える」と考えれば、クリスマスイブの夜、世界中のこどもたちの枕元にプレゼントが置かれる、という事実を確かに説明することができるのです。

 

 

 おやおや?「こどもが1人地球上に現れるたびに、地球上のどこかで、サンタが新たに現れる」というのは何かの偶然でしょうか。…偶然にしては「できすぎ」ですよね?もちろん、それは「こどもたちがサンタになる」ということを意味しているに違いありません。そして、新たなこどもが生まれた瞬間、「(それまでの)こどもが大人になり、そしてサンタになる」のです。…「ひとりのこどもが世界のどこかに現れたとき、どこかのこどもがサンタに変わる」と、そう考えたなら、すべてのツジツマが合ってきます。そうです、こどもがいつか、こどもに呼ばれて、そしてサンタになるのです。

 「サンタに変わった(かつての)こども」は、普段は(サンタという名前ではない)他の名前で呼ばれていたりするかもしれません。けれど、クリスマスには、サンタクロースという名前で呼ばれる存在に、確かになるのです。クリスマスイブの夜に、人知れず、「(かつての)こどもたち」はサンタという存在に変身するのです。

 

 こうして…サンタが街にやってきます。ひとりのこどもが世界のどこかで生まれた瞬間に、どこかのこどもがサンタへと姿を変えていきます。かつてのこどもが、眠るこどもたちの寝顔を眺めつつ・夢を見ているこどもたちを起こさないように気をつけつつ…そっとプレゼントを置くサンタクロースという存在へと変わります。

 新たにこの世界に生まれて来たこどもの声を聞き、小さな頃いつもプレゼントが届けられていたという(かつての)こどもも、サンタなんか来たことがないという(かつての)こどもも、サンタへと姿を変えていきます。そして、自分の姿を変えさせたこどもを見た時、「本当にサンタがいた」ということに気づくのです。