2

巨大数作ってみた

236
0

最近巨大数という概念があることを知ったので、自分でも作ってみようと思い立ちました。
初めて作ったものと、その改良版を紹介します。

巨大数アイデア1 配列

※巨大数においての「配列表記」とは別です。
このアイデアは、↑表記を重ね合わせることで強くなる、という至極シンプルなアイデアによるものです。
次のような配列Sを考える。

S=(x1,x2,x3,...,xn)=x1↑↑↑↑↑↑↑↑↑x1x2↑↑↑↑↑↑↑↑↑x2 arrowsxn1↑↑↑↑↑↑↑↑↑xn1 arrowsxn arrows}n layers
例えば
(2,2,3)=2↑↑23↑↑↑33=2↑↑333...33272
などと表せます。
これを用いれば、グラハム数なども
G64(4)=(3,3,3,...,3(633),4)と表すことができます。
次にこの配列自身を複製するためのパラメタを導入します。

そして、この配列Sに対してパラメータpを考え、順次配列Spを以下のように再帰的に定義する。
Sp=[x1,x2,x3,...,xn;p]
{[[x1,x2,...,xn;p1],[x1,x2,...,xn;p1],[x1,x2,...,xn;p1],...,[x1,x2,...,xn;p1];p1]  (if.p1)[x1,x2,...,xn;p1](x1,x2,...,xn)  (if.p=0)
例えば、
[2,2;1]=[[2,2;0],[2,2;0],...,[2,2;0];0][2,2;0]=(2,2)=2↑↑2=4
 =[4,4,4,4;0]=(4,4,4,4)であり、
(4,4,4,4)=4↑↑↑4  4↑↑4 4↑↑↑↑4 4
である。

やってみれば分かりますが、この数は相当大きくなります。
配列の要素自体よりも、パラメタを増やすことで爆発的に数を大きくさせられます。
そして、更にこの順次配列に対して第2パラメタを導入して、などやっていったのですが...
結局これは多変数アッカーマン関数等の真似事(しかもそれらより著しく弱い)になってしまっています。
そのため、この配列の追及はここでストップさせました。

巨大数アイデア2 再帰重ね合わせ

先ほどの配列は、再帰的定義を主軸に大きくさせていました。では、重ね合わせと再帰的定義を組み合わせたらどうなるでしょうか?
というのが、この巨大数(を生成する関数)のアイデアです。
まずは、↑表記を表す記号を新たに導入します。
ab={aba=a↑↑ba  (if.b1)1   (if.b=0)
例えば、31=33=27,33=3↑↑↑3=333...33↑↑3
となります。
更に、3334などと連なって表示される場合は、一番右から計算します。
即ち、
3334=3(3(34))
ということです。

(※補足ですが、記号abの前にあるため、abが二桁以上になると、どこまでがaでどこからがbかわからなくなります。
そのため、aは必ず一桁の数とし、の直後の数をa,それ以降をbと定めましょう。シンボルを減らす操作や重ね合わせの操作において
aが大きくなることはないので、これなら定義不足ということにはならないはずです。)

そして、次にこのの数を増やしていきます。
nab=(n)abと表記します。
そして、(n)ab(n1)abの間には次のような関係が成立します。
(n)ab={(n1)ab(n)a(b1)   (if.b1)(n1)aa   (if.b=0)

クラスと層

ここで、クラスと層について定義します。
まず、ある数Nが、
N=aaaaxa
と表されるとき、このxを「第1層l1の記号量#S(l1)」と表します。例えば、
N=aaaaだった場合、#S(l1)=3です。
そして、あるクラスにはいくつかの層が存在し、互いの層の間の関係は以下のようになります。
#S(lk)=aaaa#S(lk+1)a
更に、あるクラスの最後の層の一つ手前の層の記号量は、#S(lk)=(n)a(b1)となります。
つまり、(n)abの1クラス目は、
(n)ab=(n1)a(n1)a(n1)a(n1)a(n1)(n1)aaa(n1)a(n1)a(n1)a(n1)a(n1)(n1)aa symbolsa(n1)a(n1)a(n1)a(n1)a(n1)aa symbols(n)a(b1) symbols}x layers
のように構成されています。そして、このxは、このクラス1における層数#L(C1)で表します。
そして、クラスk(Ck)とクラスk+1(Ck+1)の間には次の関係があります。
#L(Ck)=(n1)a(n1)a(n1)a(n1)a(n1)(n1)aaa(n1)a(n1)a(n1)a(n1)a(n1)(n1)aa symbolsa(n1)a(n1)a(n1)a(n1)a(n1)aa symbols(n)a(b1) symbols}#L(Ck+1) layers
そして、k=(n)a(b1)となったとき、そのクラスC(n)a(b1)の層数#L(C(n)a(b1))=(n)a(b1)となります。
このように、クラスに属する層は互いの記号量を示し、クラスは互いの層数を示します。クラスの数は(n)a(b1)個です。

計算例

この数はあまりにも大きくなりすぎるため、クラス数を計算するので精一杯です。
**31を計算してみましょう。
定義から、**31のクラス数は、**3(11)=**30=*33です。
*33=333
=3↑↑↑3=333...33↑↑3
これは先ほど計算していましたね。
これは、飽くまで「クラス数」です。実際の数の表示は、先ほどの定義にあった通り、一つのクラス内で一番深い層が333で、
それぞれの層数は次のクラスの値が決めている、というわけです。
ちなみに、(n)2m  (n,m1)は恒等的に4となります。
なぜならば、どんなn,mの値をとっても、最終的には
n2m=2N (N)という形になり、2↑↑2==22=4となるからです。
n=1 かつm=0だった場合は1になります。

巨大数を定義

これで(n)abの意味を定義できたので、あとはこのn,a,bに適当な数を入れてオリジナルの巨大数を作りましょう。
まず、先ほどの補足の通り、aは一桁にする必要があります。数を大きくするのにaの影響はほとんどないので、まったく問題ありません。
定義から分かる通り、数を大きくするために大事なのは、nの数を増やすことです。nはそのまま再帰の回数に関わってきますので、
派手に大きくしましょう。
そして、何よりも忘れてはいけないのは、(n)abは「数」を表すということです。では、この表示そのものをnに代入してしまいましょう。

TK=(33)33と定義し、「浪人生の苦難の数」と名付けます。

まとめ

宇宙の素粒子の数がまったく塵芥になってしまうほど巨大な数が巨大数です。
現在様々な定義の巨大数が世界中の人によって生み出されています。
定義を理解し、急増加関数で序列をつけることは出来こそすれ、その数の莫大さを生身で実感することは人類には不可能です。
世界80億人を1か所に集めた光景さえ想像することは難しいのですから、巨大数は言わずもがなです。
しかし、この宇宙に存在することが許されず、想像することもできないような数を創造できるのが巨大数、そして何より数学の
奥深さかと思います。
今回は計算可能の範囲で作りましたが、いずれは計算不可能の巨大数も作ってみたいですね。
以上です。

投稿日:2024724
更新日:2024724
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

n=1 帰納法の失敗

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 巨大数アイデア1 配列
  2. 巨大数アイデア2 再帰重ね合わせ
  3. 巨大数を定義
  4. まとめ