タイトルはhttp://urasunday.com/u-2_09/index.htmlの第四話より。プロローグ今まで僕は何度も巨大数に関する記事を書いてき............てませんね。いや、書こうとは思ってたんですけどまだ1つしか書いてないですね。今書いたんでこれで許してください。プロローグ仕切り直し。僕はまだ記事にしていないけど世の中には色んな巨大数やそれを作るための関数がある。グラハム数とかアッカーマン関数とか僕が以前記事にしたコンウェイのチェーン表記とか。普通に十進表記していたら宇宙中の物質を紙にしても無理だし、指数表記を持ち込んだところで焼け石に水だ。僕たちが普段使う"ものさし"よりもはるかに巨大な化け物を比較するにはどうしたら良いか。答えは簡単、化け物みたいな"ものさし"を作れば良い。一定の感覚で目盛りがついていてとても大きなものまで測れる巨大ものさしを作るのだ。いうわけでよく巨大数の比較に使われる「急増加関数」というものを紹介していく。「急増加関数」は先述の「化け物みたいなものさし」に相当する。他の巨大数を生み出す諸関数に引けを取らないレベルで巨大な数を生み出していく関数である上に、定義の単純さから大きさの比較が容易なのだ。皆大好き(?)足し算だ。僕の黒歴史にもこんな奴がいるが、こいつは今回は関係無いのでもう出て来ない。1を足しているだけでは全然大きくならないが、「数を大きくする」という意味ではここが原点であり全ての始まりであるとも言える。こいつをレベル1と呼ぶことにする。レベルをわかりやすく右下に書いておこう。踏み出すさて、1を足しているだけではさっぱりなのでこれを何重にも繰り返してみよう。fが一杯連なってチラチラしてきたので冪乗のように右上に数字を書いて表すことにしよう。m重に入れ子にすればこうなる。これがmじゃなくて引数と同じnだったとしたら?おお、掛算になった。これをレベル2の関数としよう。現れる文字が1つになったのだから引数は1つで十分だよね。結論から言うとこのレベル2はレベル1より強い。レベル1の関数がいくつ束になってかかろうとレベル2がそれを上回り打ち破ってしまう。具体的にやってみよう。レベル1を100個集める。この勝負はnに100を代入した瞬間に肩を並べそして100を超えた時点でレベル2がレベル1を超える。レベル1をどんなに重ねて繰り返してもその繰り返した分の引数を代入するだけでレベル2がそれを凌駕する。いうわけでこれを式で表現しよう。ちなみにこの様な手法を「対角化」と呼ぶ。こんな感じで対角線ぽいから。繰り返すレベル1の時と同様レベル2も繰り返してみる。「レベル1をn回繰り返したもの」がレベル2だったのだから、当然それを繰り返せばレベル3となる。レベル3は先程と同様にしてレベル2よりも強いのです。終わらない旅路レベル3は繰り返すと複雑になるので具体的な式を書くのはもう辞めます。正確な式の内容は割りとどうでもいいのです。レベルの違いが強さの違いを表します。限界を超えてもう一度レベルアップの手順を思い出そう。「関数を繰り返した回数」と「最初の引数」という本来全く別の意味を持つ数に同じ数を代入することでレベルアップした関数を作ってきた。レベルアップ後の関数はレベルアップ前の関数を何回繰り返したものより強かった。これも先述の「対角化」だ。この強そうな関数をレベルが付けられないのでとりあえずFとしておく。Fのレベルを考えてみよう。レベル1よりは当然強い、レベル2よりも強いしレベル3よりも......。いうかぶっちゃけどんなレベル○○よりも強い。そこでこれをレベルωと呼ぶことにする。「ωってなんだよ厨二病かよ」と思うかもしれないがωもれっきとした数の一種である。「超限順序数」と呼ばれるなんともかっこいい名前の代物なのだが詳しくやると本が一冊必要な話になるのでざっくり解説しよう。「数とは何か」を考える。分数とか無理数とかは考えず整数のみについて考えると数とは「1,2,3......」というように順番に並んで続いているものだ。「nの次の数」と言えばそれは「n+1」でしかあり得ず他には無い。そんな物を「数」と呼ぶことにしよう。その「数」という括りの中で1から始まる物を「自然数」と呼ぶ。ここは僕達の普段イメージしている自然数と同じものだ。ωはそのあらゆる"自然数"よりも大きい"数"なのだ。"数"であるからにはωも続いている「ω,ω+1,ω+2,......」と続く。これは僕達が普段イメージする数とは少し性質が異なる。「ωの前の数(ω-1)」は存在しない。それは自然数の中で「最大の自然数」なのだが、それは存在しないからだ。いうわけで図にするとこんな感じになる。一行の中では右に行けば行くほど大きく、下の行は上の行のどの数よりさらに大きい。要するにωはどんな自然数より大きく、更にそれより大きい数があるということだ。自然数)とまぁこんな具合に急激に増加していくから急増加関数と呼ばれるわけだ。ωとか書いてあると目が回りそうになるかもしれないが何の事はない計算するときはωをnに置き換えるだけで良い。軽く実例を上げて計算してみよう。代入したものを計算してみよう。「なんだ大したこと無い」と思うかもしれないがそしたら次は3を代入してみると良い。その時点で既に10進表記では対処しきれない恐ろしい数になる。全ての果てに急増加関数が如何に化け物じみた関数かお分かり頂けだろうか。化け物に化け物を重ねてそれを対角化することで更に強い化け物を作り続ける事が出来るとても恐ろしい関数なのだ。こいつはただ恐ろしいだけじゃなく「繰り返す」「対角化する」という手順自体を「レベル」という大きさを比較できる形で示してくれている。色々な関数をこの急増加関数と比較し「どの程度のレベルか」を特定すれば複雑な関数同士の比較も明確になる便利なものさしの役割を果たしてくれるわけだ。具体的にどうやって比較していくのか。自信無いんだけどとりあえず続編でチャレンジしてみようと思います。アッカーマン関数辺りから戦ってみようかな。17:27より大きな数を!そこに意味はないが理由はある!(巨大数の話)~急増加関数編~Tweet広告を非表示にする関連記事2018-12-07愚痴バイト先の塾で塾長と揉めたという話。例によってGoogleAppsScriptです。月別アーカイブはてなブログをはじめよう!kemboorgさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。