P20 意外と知らない、【階乗】の恐ろしさ
こんばんは。
教科書の20ページでは【階乗】を学んでいます。自然数nについて、【nの階乗】を
n!=n(n-1)(n-2)(n-3)……3・2・1
という形で学びました。例えば
5!=5・4・3・2・1=120
6!=6・5・4・3・2・1=720
7!=7・6・5・4・3・2・1=5040
こんな感じで教科書にも例や問題があります。
別の教科書では
10!=3628800
と、紹介しているものもあります。
さて……。
数学関係者以外、この【階乗】の恐ろしさを知る人は少ないでしょう。いや、例えば数学教師であっても、この【階乗】の【爆発力】を知らない人も多いのでは?
その恐ろしさを知らせるため、次のようなお話を考えてみました。
★☆
日本の誇るスーパーコンピューター【京】をご存じでしょうか?
2012年7月現在、残念ながら1年間守り通した計算処理速度世界1位の座を明け渡し、2位となってしまいました。
その名の通り、1秒間で1【京】もの計算をしてしまうスパコンです。
1京というのは、1億の1億倍。
1京=10000000000000000
0が16個も並ぶ数です。わずか1秒でこれだけの回数を計算して……
そもそもそんなに計算する必要があるの?
この質問に対する答はありますが、今回は省略。別の機会にくわしく話したいと思いますが、一言だけ言うならば【未来が見える】とだけ言っておきましょう。
スパコン【京】を紹介したところで、【階乗】の話。
例えばジョーカーを除く1組52枚のトランプがあったとして、これを横1列に並べる場合の数はいくつでしょうか?
そう。52!(ごじゅうにのかいじょう)通りです。
では、問題です。
スパコン【京】を用い、1秒間で1京通りの横1列トランプの配列を表示したとします。この時、52!通り全ての配列を表示するのに、どれだけの時間がかかるでしょうか?
1秒間に1京の表示が出来るので、52!通り全てのパターンを表示するのに要する時間は
52! ÷ 10000000000000000 (秒)
となるはずです。
①1秒以下
②1分以下
③1時間以下
④1日以下
⑤1ヶ月以下
⑥1年以下
⑦137億年(宇宙誕生から今に至るまで)以上
あなたは、この7択から答を見いだせますか?
52! ÷ 10000000000000000
私のPCにインストールされている、数学ソフトに計算させてみましょう。結果はこう。
割り算を分数で表示しています。右辺の式、1番右に現れるのは【10の51乗】といい
10000000000…………0
この0(ゼロ)が、51個続く数です。したがって、秒速1京通り表示可能なスパコン【京】で、52!通りを表示しようと思ったら、およそですが、8かける10の51乗秒かかるというわけです。
なかなかピンときませんね。とりあえず①が不正解という事だけは確かです。
★☆
【86400】という数字に馴染みがある人は、なかなかの数字マニア。
60×60×24=86400
で得られる数です。もっとくわしくいきます。1分は何秒ですかと言われたら60秒。
1時間が何秒ですかと言われたら 60(秒)×60(分)=3600(秒)。
1日が何秒ですかと言われたら
60秒(1分)×60分(1時間)×24時間(1日) = 86400秒
となります。つまり1日は8万6400秒です。
1秒で1京通りの配列を表示出来るとしたら、1日では
1京×86400
通りの配列を表示出来るはずです。という事は
52! ÷ (1京×86400)
を計算すれば、52!通り全てを表示するのに必要な日数を計算する事が出来ます。では、数学ソフトに計算させてみましょう。
おやおや。10の46乗なんて、これまた途方もない数です。
①1秒以下
②1分以下
③1時間以下
④1日以下
⑤1ヶ月以下
⑥1年以下
⑦137億年(宇宙誕生から今に至るまで)以上
なんと①~④全て不正解です。そこで今度は
1京 × 8万6400(秒) × 365(日)
で、52!を割る事にしてみましょう。上の式は、1年間でスパコン【京】がトランプの並びを表示してくれる回数です。52!をこれで割ると、トランプの全並びを表示出来る【年数】が表示されるハズです。
なんと2.5かける10の44乗年。あまり想像できないと思いますが……
我々の住む宇宙がビッグバンによりインフレーションを経て今現在に至るまで、およそ137億年だと言われております。この137億という数字は
たかだか10の10乗程度で表示出来る数。
結論を言いますと、1秒間に1京通りものトランプの並びを表示出来るスパコン【京】をもってしても、たった1組のトランプを横1列に並べる全ての並び方を表示するには……
宇宙が誕生して今に至るまでの時間では、全く時間が足りないのです。
⑦137億年(宇宙誕生から今に至るまで)以上
これが正解だったんですね。
★☆
数学の演算で、コンピュータが苦手とする代表的な演算が
【累乗】と【階乗】
です。【累乗】とは、いわゆる数字の右肩につく【指数】で表される計算の事。
例えば2の10乗は2を10回掛け合わせるので
1024となります。数学の世界では、この右肩に続く指数が増えると、その数自体は
指数的に増える
という言い方をします。言うなれば、もの凄い勢いで数が増えるって事なんですね。
例えば、薄さ1mmの紙があったとしましょう。これを2回折り曲げると2mm、3回折り曲げると4mm、4回折り曲げると8mmの厚さになります。10回曲げると
この計算により、約1000mm。すなわち約1mの厚さ、もとい高さになります。
いくらでも折り曲げられるという条件をつけ、50回折り曲げたとしましょう。どれぐらいの高さになるでしょうか。
この式を見てもなかなかピンとこないでしょうが、右辺の単位をmmだとして、地上から軽く月まで届く距離です。1mmの紙を、たった50回折り曲げれば月まで行けるんですよ。
少ない操作で大きな数を得られるこの【累乗】の世界。3色問題・4色問題に代表される【彩色問題】や【ナップサック問題】においてもこの計算は現れます。
【彩色問題】や【ナップサック問題】のくわしい話は別の機会に委ねるとして……
この指数的に量が増える計算は、処理速度の速いコンピュータをもってしても、現実的な時間で計算を終える事が不可能なんですね。
その【累乗】よりもタチが悪いのが【階乗】。【累乗】の、いわゆる【指数的】な増加よりも、もっともっと速い速度で数が爆発的に増えていくんです。
先に挙げた「52!」なんかもその1つ。52の階乗は、2の52乗よりも遙かに大きな数になります。
この【累乗】や【階乗】を扱う問題は、次世代コンピュータと言われる量子コンピュータを持ってしても、現実的な時間で計算できないのです。
ちなみに量子コンピュータはまだまだ研究段階ですが、量子力学のアイディアを応用して作られるコンピュータです。現コンピュータが1億年かかってやる計算を、わずか1秒で計算してしまう超驚異的なコンピュータです。
その量子コンピュータを持ってしても、たった1組のトランプを1列に並べる全パターン(52!通り)を表示させるには、137億年では足りないのです。
【累乗】や【階乗】が、皆の想像を絶するほど数が増えるというのをわかって頂けたと思います。
しかし数学の世界には、さらにその上をいく【タワー】と呼ばれるものがあるのですが……
その話はまた次の機会に。笑