登録日:2024/11/02 Sat 16:29:17
更新日:2025/04/02 Wed 15:21:37
所要時間:約 14 分で読めます
突然だが、この項目を見ているそこのあなたは「巨大数」と言われた時にどんな数を想像するだろうか?
身近な所でファイルの容量などを示す際に使われる「テラ(=1012)」を浮かべたり、1068を示す数の単位として知られている「無量大数」を想像する人もいれば、10100を意味する「1グーゴル」や10の1グーゴル乗である「1グーゴルプレックス」、はたまた仏教で用いられる最大の単位「不可説不可説転」や、具体的な数ではなく「宇宙に存在する星の数」などで考えた人もいるかもしれない。
この様に巨大数にも色々な数が存在しているが、この項目で紹介する「グラハム数」もその1種になる。
概要
「グラハム数」とは、
ギネスブックに登録されている、
数学における自然数の定数の1つで、名前についてはアメリカの数学者ロナルド・グラハムに由来しており、数値を示す際も彼の頭文字から「G」と表記されることが多い。
その値はとてつもなく大きく、その大きさたるや「○×10△」といった指数表記をすることが実質不可能なほどである。
これだけではピンと来ないかもしれない人もいるかもしれないが、ここで人類に観測可能な宇宙に存在する全ての亜原子粒子(素粒子や他の複合粒子などの極小の粒)の数は「1080」ほどとされ、指数表記が出来る範囲の数に収まっている。
グラハム数は亜原子粒子1個を数字1文字として全て変換したとしても指数表記することは出来ない。いや、マジで、全く足りない。
この事実を知ればグラハム数がどれだけ凄まじい数なのかが何となく想像できるかもしれない。
肝心の定義だが、グラハム数Gは以下の数値を満たす自然数として定義される。
G(n) = 3↑…↑3 (「↑…↑」は「↑」がn個並んでいる状態とする。)とした時、
G = G(64)(4)とする。
……意味が分からないと思った人が多いかもしれないが、ここから先で掘り下げて解説するので安心してほしい。
再帰的な演算定義
諸々の説明をする前に一度準備段階として演算の定義について簡単に触れる。
というのもグラハム数の定義をする際には「再帰的な定義」という概念が重要になる。
まず初めに(0も含めた)自然数内では加法は以下の様に定義がなされる。
①:a + 0 = a
②:a + suc(b) = suc(a + b)
suc(b)とは自然数内で定義される「bに対する後者(successor)」を意味し、実際の計算上では「b + 1」として処理がされる。
この時②の条件について見てみると、左辺側は「a + suc(b) = a + (b + 1)」になっており、右辺側は「suc(a + b) = (a + b) + 1」と書ける。
結果を見ると値としては同じ事が分かるが、この時太字の部分に注目すると数が1つ小さくなっている。
bが0であれば①の定義よりこの時点で値がaに確定して終わりだが、そうでない場合、0でない自然数bには「後者がbになる数」が必ず存在しているため、その数を「前者」を意味するformerから取ってfor(b)と仮置きすることが出来る。
現実の数の定義で考える場合、このfor(b)は「b – 1」と一致する為、bをsuc(for(b)) = suc(b – 1)とすることで②と同じ様に定義が出来る。
これを延々続け、値の変形などを加えることで、加法の定義は以下の様に書き換えることが出来る。
①:a + 0 = a
②:a + suc(b) = a + (1 + … + 1)
(「(1 + … + 1)」の部分は1をsuc(b)回分足している。)
この様な「定義したい内容(今回の場合は”+”)」の中で「定義したい内容」自身を参照している状態を「再帰的」であると呼ぶ。
ここまでは加法の話だったが、次はこれを「乗法」の話に切り替える。
乗法では加法を利用することで次のように定義が出来る。
①:a × 0 = 0
②:a × suc(b) = a × b + a
これも加法と同様に再帰的な定義となっており、式変形することで
①:a × 0 = 0
②:a × suc(b) = a + …… + a (= a × (1 + … + 1))
(「a + …… + a」「1 + … + 1」の部分はそれぞれa,1をsuc(b)回足していると考える。)
同じ様に「累乗」も
①:a0 = 1 (ただしここではa ≠ 0として考える。)
②:asuc(b) = ab × a = a × …… × a
として計算を進めていく事が出来る。
ここまで書いてきた内容を数字の内容を整理したうえで纏めると、自然数a,bに対して、加法・乗法・累乗に対して再帰的な定義がなされ、それらに対して
A1:加法「a + b」は「aに対してb回後者を取る(=1を足す)」処理。
A2:乗法「a×b」は「aをb回足す」処理。
A3:累乗「ab」は「aをb回かける」処理。
と、(乗法以降の)それぞれの演算に対して1段手前の演算を利用してその定義を書き換えることができる。
因みに「aの後者suc(a)を取る処理(後者関数)」から始まり、拡張することで出来あがってきたこれらの演算は「ハイパー演算」と呼ばれており、これから記すグラハム数の定義ではさらに拡張されたハイパー演算が行われる。
クヌースの矢印表記
ここまでの話を踏まえた上でグラハム数の定義に使用されている「↑」解説に移る。
これは「タワー表記」もしくは「クヌースの矢印表記」と呼ばれ、指数表記が出来ない様な巨大な数を表すのに使用される記号になる。
そしてこのクヌースの矢印表記は加法・乗法・累乗の延長線上にある演算子でもあり、元の演算3つなどもひっくるめて「ハイパー演算子」と言われることがある。
具体的に定義をすると以下の通りになる。
①:自然数a,bに対して、a↑b = abとする。
②:自然数a,b及び2以上の自然数nに対して、a↑…↑bを次のように定義をする。
②-1:a↑…↑1 = a
②-2:a↑…↑b = a ↑…↑( a↑…↑(b – 1))とする。
(②内では赤色部分の矢印は「『↑』をn個重ねた表記」、青色部分の矢印は「『↑』を(n - 1)個重ねた表記」を意味するものとして考える。)
①についてはそのまま累乗の事を指しており、上記で触れた定義と同じ振舞いをする。
続いて②だが、ここは先ほどまで出てきた加法・乗法・累乗の定義と同じく「再帰的な定義」になっている。
試しにn=2として考えてみると、
a↑↑b = a↑(a↑↑(b – 1))
と出来る。
そしてここまで行ってきた演算と同様に数に注目すると、a↑↑bからa↑↑(b – 1)へ数値の変換が起きているため、この部分が1になるまで繰り返し演算の定義を適用し続けることで、a↑↑bは「a↑a = aaをb回分繰り返し適用する」処理になる事が分かる。
そしてこれはn≧3でも同様になるため、上記で定義したA1~A3を延長することで自然数a,bに対して、次が成り立つようになる。
A4:a↑↑bは「a↑aをb回適用する」処理。
A5:a↑↑↑bは「a↑↑aをb回適用する」処理。
A6:a↑↑↑↑bは「a↑↑↑aをb回適用する」処理。
この時「↑↑」「↑↑↑」「↑↑↑↑」はそれぞれ4番目/5番目/6番目のハイパー演算である為、それぞれ「4/5/6」を意味する接頭辞「テトラ(tetra)/ペンタ(penta)/ヘキサ(hexa)」と「反復」を意味する英単語「イテレーション(iteration)」を組み合わせて、それぞれ
- 「↑↑」=テトレーション(tetration)
- 「↑↑↑」=ペンテーション(pentation)
- 「↑↑↑↑」=ヘキセーション(hexation)
と言う名称が宛がわれている。
因みにテトレーション「a↑↑b」に関しては「ba」という左肩側に数値を書く別の記法も存在する。
注意点として、テトレーション・ペンテーション・ヘキセーションを1つ手前の表記で書き表す場合、必ず右端から順に計算しなければならない。
具体例で言うと、444 (=4↑↑3)を左側から計算した場合と右側から計算した場合の2パターンを考えると、
左側から考えた場合:644 = 16777216
右側から考えた場合:464 = 340282366920938463463374607431768211456
となってしまい、結果が異なってしまうため、値を一意に決める為のルールとして「右側から計算を行う」と言う制限がかけられている。
ここでグラハム数の話に戻ると、
G(n) = 3↑…↑3 (「↑…↑」は「↑」がn個並んでいる状態とする。)
G = G(64)(4)とする。
と言うのがグラハム数の定義だった。
イメージをする為にa = 3, b = 3でクヌースの矢印表記をすると、
「↑」が1つの場合は
3↑3 = 33 = 27
と比較的イメージしやすい値になっているが、これが2つになると
3↑↑3 = 333 = 327 = 7625597484987
となり、値が大きく跳ね上がる。
この調子で3↑↑↑3や3↑↑↑↑3も値がどんどん大きくなり、この時点で既に指数で表記するのが困難になってくる。
これらを元にして作られるグラハム数の恐ろしさを改めて感じることが出来るだろう。
だが恐ろしい部分はこれだけではない。
グラハム数Gは「G = G(64)(4)」と定義されていたが、この「64」と言うのは「nの関数G(n)を64回合成した関数」という意味である。
どういう事か分からない人もいるかもしれないので、簡単のために「64」を一旦「2」に置き換えて考える。
この時上記の記法を別の描き方に置き換えるとこの様になる。
G(2)(4) = G(G(4)) = G(3↑↑↑↑3)
「合成関数」について高校の授業で習った事がある人は分かるかもしれないが、これは次の①②の処理を行っている状態になる。
(1):与えられた数4に対して1回目の関数G(n)の処理を行って値G(4)を得る。
(2):(2)で得た数G(4) = 3↑↑↑↑3に対して、再度G(n)の処理を行って、値G(G(4)) = G(3↑↑↑↑3)を得る。
余談だが、ここでは同じ関数G(n)を合成しているので分かりにくいが、合成している関数を横一列に並べる場合、処理する順番が早いものほど右側に書く。
今回の場合、①で処理している関数G(n)と②で処理している関数G(n)にそれぞれG1,G2と名前を付けると、記法としては「G2(G1(4))」となる。
……2回の時点でG(n)の値が常軌を逸する大きさになっているのだが、グラハム数の場合この工程が64回行われる。
つまりグラハム数の定義は以下の様になる。
(1):4に対して関数G(n)を適用し、G(4) (= 3↑↑↑↑3)を(ヘキセーションの定義に基づいて)求める。
(2):(1)で得た値にG(n)を適用し、G(2)(4) = G(G(4)) = G(3↑…↑3)を求める。(「↑…↑」は「↑」がG(4) = 3↑↑↑↑3個並ぶ。)
(3):(2)で得た値にG(n)を適用し、G(3)(4) = G(G(G(4))) = G(3↑…↑3)を求める。(「↑…↑」は「↑」がG(G(4)) = G(3↑↑↑↑3)個並ぶ。)
:
:
(中略)
:
:
(63):(62)で得た値にG(n)を適用し、G(63)(4) = G(G(62)(4)) = G(3↑…↑3)を求める。(「↑…↑」は「↑」がG(62)(4)個並ぶ。)
(64):(63)で得た値にG(n)を適用し、G(64)(4) = G(G(63)(4)) = G(3↑…↑3)を求める。(「↑…↑」は「↑」がG(63)(4)個並ぶ。)
この時(64)で導出された値をグラハム数Gとする。
……ヘキセーションの計算の時点で既に指数表記が困難なほどに大きい値になっているにもかかわらず、そこから関数の重ねがけを何度も行っているので、グラハム数が途方もない大きさの数である事がよく分かるだろう。
グラハム数の値について
グラハム数はここまで計算してきた内容から分かる様に指数表記が事実上不可能なほど大きい数になっているのだが、全容が全く分かっていないという訳ではない。
と言うのもグラハム数自体は非常に大きな数だが、身も蓋もない言い方をすると「
3を物凄い回数かけ続けて出来た数」であり、グラハム数を形作る
素因数自体は3しかないため、「3のn乗3
nを特定の数で割った余り」を調べることで1の位、10の位、100の位、……と、末尾の位から順番に値を出していく事が出来る。
簡単な所で言うと、グラハム数の1の位は「7」である事が知られている。
ここではこの事実を証明してみる。
まず、3のn乗を、n = 1, 2, …, 12まで並べてみる。
3, 9, 27, 81, 243, 729, 2187, 6561, 19683, 59049, 177147, 531441
この時、各値に対して「10で割った余り」、即ち「1の位」を計算してみると、
3, 9, 7, 1, 3, 9, 7, 1, 3, 9, 7, 1
となっており、3→9→7→1と言う数のループが延々続いている事が分かる。
このループはn = 13以降でも続くため、
①:nが4で割ってあまり1の数(1, 5, 9, 13, …)→3nの1の位は「3」。
②:nが4で割ってあまり2の数(2, 6, 10, 14, …)→3nの1の位は「9」。
③:nが4で割ってあまり3の数(3, 7, 11, 15, …)→3nの1の位は「7」。
④:nが4で割ってあまり0の数(4, 8, 12, 16, …)→3nの1の位は「1」。
と言い換えられる。
ここでグラハム数の形を考えると、定義の仕方からある自然数Nによって
G = 33N
と書くことができる。
3の右肩に乗っている指数3Nは奇数。
一方上記①~④の内、②・④は指数が偶数になっておりこの条件と一致しないため、グラハム数の1の桁の候補から外れる。
従って、グラハム数の1の位は「3」か「7」のどちらかになる。
この時3N=(4 - 1)Nと考える。
この時にこの値を4で割った余りを考えると「(- 1)Nを4で割った余り」と一致する事を調べられる。
(この事実を示すには「二項定理」という高校数学の知識が必要なのだが、ここでは省略する。)
ここでNの値に注目するのだが、このNはグラハム数の定義からやはりある自然数MによってN = 3Mと書ける。
即ちNは奇数なので(- 1)N = (-1)となり、それを4で割った余りは3になる。
従ってグラハム数に対して当てはまる3nの条件は③になる為、グラハム数Gの1の位は「7」である事を証明出来た。
これと同様にしていく事でグラハム数を末尾の桁から調べていく事が出来る。
が、その大きさと指数が増えていくごとに特定の数以下の桁の値の挙動も複雑化する関係上、今でも全容の解明には未だ至っていない。
グラハム問題
ここまでグラハム数についてどれほど大きい数なのかを紹介してきたが、実を言うとグラハム数より大きい数はいくらでも存在する。
身も蓋もないものだとGに1を足すだけでより大きな数を作り出すことも出来てしまうし、元々定義していた関数G(n)に対して、n = GとしてG(G)を出せばこれもまたグラハム数Gより大きい。
はたまた別の関数を使って巨大な数を作り出すことも可能で、そういった数もいくつも定義されている。
ではなぜこの数がギネスブックに登録されているのかというと、グラハム数は「数学の証明に意味のある数として使用されたものの中で最大の数」という位置づけになっているからである。
そもそもグラハム数がどういった経緯で出てきた数なのかというと、1970年にグラハム数の名称元であるロナルド・グラハムとブルース・リー・ロスチャイルドの2名によって提示された「グラハムの定理」という定理に対して、定理が成り立つ為の上限として提唱された数になっている。
グラハムの定理は以下の様な内容になっている。
n次元の超立方体の全ての頂点を互いに結び、出来上がった線分を2色どちらかの色に塗り、その後超立方体の頂点の内4点を通るような平面を考える。
この時、nが十分大きければ「線分の色の塗り方」に関係なく平面上に同じ色の線しかない様な平面の取り方が必ず存在する。
ここではそういう定理がある程度の認識で問題ないが、少し掘り下げると「超次元立法体」2次元における正方形、3次元における立方体という様に3次元における立方体の概念を別の次元に拡張した概念の事を指す。(因みに4次元の場合は「正八胞体」と言う。)
n次元の超立方体の頂点は2n個あり、それら全てを線分で結び、定理の条件に合うように平面を取っていく。
この時、例えば2次元の場合の正方形ではそもそも4点を通る平面は1パターンしか考えられないため、全ての線分を同じ色にしない限り、条件に該当しないので、グラハムの定理はn = 2のような場合には成り立たない、と言う風に言える。
グラハムの定理ではこの次数が大きい場合には線をどう塗っても4点を通る平面で同色の線しかない様な平面の捕り方を考えられると言っているのだが、ここから派生した問題として、
グラハム問題:nがいくつより大きければグラハムの定理は常に成り立つようになるのか?
というものが生まれた。
グラハム数は上記の問題に対する解の上限(この値より大きい場合は常にグラハムの定理が成り立つ)として提示された。
この際にグラハム問題の解の指標として使用されたのが元でグラハム数は上記の理由によるギネスブック登録が1980年になされた。
そんなグラハム数だが、実は提唱されてから早々に数学の証明からその姿を消している。
と言うのもこの数以上の場合にグラハムの定理が成り立つことをグラハム本人が示したのだが、その事実を論文では発表しておらず、その後同じくグラハム自身が「小グラハム数」と言う別の数で解の上限を更新した為、解の上限としての意味は特にないものになってしまったのである。
グラハム数が世に知られるようになったのは「グラハムの定理について、実はグラハム数の場合にも確認を行っていた」と言う事からマーティン・ガードナーと言う数学者が科学雑誌でこの数の事を紹介したからになっている。
因みに小グラハム数は以下の通り。
以下の条件を満たす自然数gを小グラハム数と定義する。
F(n) = 2↑…↑3 (「↑…↑」は「↑」がn個並んでいる状態とする。)とした時、
g = F(7)(12)とする。
依然数値としては指数表記できるものではないほど巨大だが、小グラハム数はグラハム数に比べるとかなり小さい数となっている。
その後のグラハム問題だが、現在もまだ解決には至っておらず、上限については(相変わらず指数表記は実質できない数だが)グラハム数・小グラハム数からかなり小さくなった「2↑↑↑6」が提示されている。
一方下限側については現状では13以上である事が分かっており、現在も上限・下限両方の側面からグラハムの定理が常に成り立つような具体的な解の値を探す試みが行われている。
グラハム問題の解の条件としての役割は終えているが、今なお証明内で使用された事のある最大の数として存在する数。それがグラハム数なのである。
余談
- 本項目では触れていないが、クヌースの矢印表記をより拡張した数の表記方法に「コンウェイのチェーン表記」というものがあり、クヌースの矢印表記だと煩雑になってしまう様な数にも使用できるものになっている。
- グラハム数の下位100万桁について日本の同人サークル「暗黒通信団」が値をまとめた書籍を作成している。興味がある人は見てみるといいかもしれない。なお同サークルは円周率の小数点以下100万桁の値をまとめた書籍も出している。
追記・修正はグラハム問題の解を見つけ出すか、グラハム数の値を完全に導き出した上でお願い致します。
- a × suc(b) = a × suc(b) + a ←右辺はsuc(b-1)じゃないの? -- 名無しさん (2024-11-02 17:29:52)
- ↑誤記ですね。修正しました。 -- 名無しさん (2024-11-02 17:32:41)
- ガンダムの変態は関係ない -- 名無しさん (2024-11-02 18:46:30)
- グラハム教だと思ってトんでキちった -- 名無しさん (2024-11-02 18:51:06)
- おとめ座の男? -- 名無しさん (2024-11-02 19:48:02)
- やっぱり「数」が「教」に見えた人いたか。そう見えるよね -- 名無しさん (2024-11-02 22:39:42)
- 解説する気のない解説 -- 名無しさん (2024-11-03 01:23:48)
- ↑2 同じ方がいたwww 私も環境のせいか教に見える -- 名無しさん (2024-11-03 10:40:31)
- 絶対もっと簡単な説明できるだろみたいな無駄な専門的な説明 -- 名無しさん (2024-11-03 17:21:07)
- グラハム数を実際に書こうとすると全ての宇宙の物質をインクにしても足りないんだっけ? -- 名無しさん (2024-11-03 18:59:30)
- ↑宇宙の物質(素粒子)をインクにしても全く足りない素粒子の数の素粒子数乗の素粒子の数乗の…を素粒子の数回繰り返しても少なすぎて話にならない、宇宙みたいなちっぽけなものと比べることすら無意味 -- 名無しさん (2024-11-03 21:41:30)
- グラハム教信者の集いはここかぁ?(違) -- 名無しさん (2024-11-04 06:56:40)
- なるほど、わからん… -- 名無しさん (2024-11-04 14:51:02)
- グラハム問題はざっくり言うと「数字が小さいうちは成り立つけどあるところで成り立たなくなる問題のあるところはどの数字か」って問題で、それに対してものすごく大きい数字を使ってそれの時に成り立たないことを証明したから少なくともこれよりは小さいってことを言ってるだけだからグラハム数そのものには大して意味はない -- 名無しさん (2024-11-04 17:14:27)
- 乙女座の私にはマスマティックスな伝統を感じずにはいられないな! -- 名無しさん (2025-02-21 00:40:46)
- ガンダムトライヴでグラハム数出てきて草 -- 名無しさん (2025-04-02 15:20:48)
- ↑続き エイプリルフールだけど -- 名無しさん (2025-04-02 15:21:37)
最終更新:2025年04月02日 15:21