巨大数研究 Wiki
登録
Advertisement
ハイパーE表記
基本関数 冪乗
急増加関数 \(f_{\omega}(n)\)

ハイパーE表記 (Hyper-E Notation) は、\(E\#\)とも省略され、 Sbiis Saibian が考案した巨大数を表記する方法である[1][2]。彼のウェブ書籍 "One to Infinity: A Finite Journey" で2011年の11月にはじめて紹介され、拡張ハイパーE表記 (Extended Hyper-E Nortation) \(xE\#\)へとさらに一般化された。ハイパーE表記は Sbiis Saibian が子供の時に開発した 多角形分割表記の改良版である。

\(E\#\)と\(xE\#\)は、さらに大きい表記法である拡張型Eシステムの一部で、連鎖E表記へと発展する。

元の定義[]

定義[]

元々の (拡張されていない) ハイパーE表記は、1つ以上の正の整数の数列\(a_{n}\)の引数をハイペリオン記号\(\#\)で区切ったものである。これを\(E(b)a_{1}\#a_{2}\# \cdots a_{n}\#\)と表記し、\(b\)を基数と呼ぶ。基数はしばしば省略され、表記が無い時には基本的には\(10\)である。

ハイパーE表記は、以下の3つが基本ルールとなる。

  • ルール1: \(\#\)が無い場合。
    \(E(b)a=b^{a}\)
  • ルール2: 最後の項が\(1\)の場合。
    \(E(b)a_{1}\#a_{2}\# \cdots a_{n-1}\#a_{n}\#1=E(b)a_{1}\#a_{2}\# \cdots a_{n-1}\#a_{n}\)
  • ルール3: それ以外の場合。
    \(E(b)a_{1}\#a_{2}\#a_{3}\# \cdots a_{n-2}\#a_{n-1}\#a_{n}=E(b)a_{1}\#a_{2}\# \cdots a_{n-2}\#(E(b)a_{1}\#a_{2}\# \cdots a_{n-1}\#a_{n}-1)\)

また、以下のように展開すると考えることもできる。

\begin{eqnarray} E(c)a\#b&=&\underbrace{E(c)E(c) \cdots E(c)E(c)}_{b}a=\underbrace{c^{c^{\cdot^{\cdot^{\cdot^{c^{a}}}}}}}_{b+1}=(c\uparrow)^{b}a\\ Ea\#b&=&\underbrace{EE \cdots EE}_{b}a=\underbrace{10^{10^{\cdot^{\cdot^{\cdot^{10^{a}}}}}}}_{b+1}=(10\uparrow)^{b}a\\ E(d)a\#b\#c&=&\underbrace{E(d)a\#(E(d)a\#(\cdots\#(E(d)a}_{c}\#b)\cdots))\\ Ea\#b\#c&=&\underbrace{Ea\#(Ea\#(\cdots\#(Ea\#}_{c}b)\cdots)) \end{eqnarray}

計算例[]

\begin{eqnarray} E1&=&10^{1}=10\\ E3&=&10^{3}=1000\\ E1\#2&=&EE1=10^{10^{1}}=10^{10}\\ E1\#1\#2&=&E1\#(E1\#1)=E1\#10=(10\uparrow)^{10}1=10\uparrow\uparrow10\\ E1\#2\#2&=&E1\#(E1\#2)=E1\#10^{10}=(10\uparrow)^{10^{10}}1=10\uparrow^{10^{10}}10\\ E2\#2\#2&=&E2\#(E2\#2)=E2\#10^{100}=(10\uparrow)^{10^{100}}2\\ E1\#1\#3&=&E1\#(E1\#(E1\#1))=E1\#(E1\#10)=E1\#10\uparrow\uparrow10=(10\uparrow)^{10\uparrow\uparrow10}1=10\uparrow^{10\uparrow\uparrow10}10\\ \end{eqnarray}

また、ハイパーE表記でのグーゴル (Googol) の拡張としてグランゴル (Grangol) やグレーゴル (Greagol) がある。

\begin{eqnarray} \text{グーゴル}=E100&=&E100=10^{100}=10^{10^{2}}=E2\#2\\ \text{グランゴル}=E100\#100&=&\underbrace{EE \cdots EE}_{100}100=\underbrace{10^{10^{\cdot^{\cdot^{\cdot^{10^{100}}}}}}}_{101}=(10\uparrow)^{100}100=(10\uparrow)^{101}2=E2\#101\\ \text{グレーゴル}=E100\#100\#100&=&\underbrace{E100\#(E100\#(\cdots\#(E100\#}_{100}100)\cdots))\\ &=&\underbrace{E100\#(E100\#(\cdots\#(E100\#}_{99}\underbrace{EE \cdots EE}_{100}100)\cdots))\\ &=&\underbrace{E100\#(E100\#(\cdots\#(E100\#}_{98}\underbrace{EE \cdots EE}_{\underbrace{EE \cdots EE}_{100}100}100)\cdots))\\ &=&\cdots\\ \end{eqnarray}

拡張ハイパーE表記[]

定義[]

拡張ハイパーE表記
基本関数 ハイペリオン記号
急増加関数 \(f_{\omega^{\omega}}(n)\)

拡張ハイパーE表記は、ハイパーE表記の拡張で、数字と数字の間に複数のハイペリオン記号\(\#\)を書くことができる。つまり通常のハイパーE表記と拡張ハイパーE表記の違いは、2個以上の連続した\(\#\)が許されるかどうかという事である。

\(a_{n}\)の後に続く\(\#\)の数を\(h(n)\)と書く。また連続する\(n\)個の\(\#\)は\(\#^{n}\)と書く。

拡張ハイパーE表記は、以下の3つが基本ルールとなる。これらの規則やルールは配列表記の規則と似ている。

  • ルール1: \(\#\)が無い場合。
    \(E(b)a=b^{a}\)
  • ルール2: 最後の項が\(1\)の場合。
    \(E(b)a_{1}\#^{h(1)}a_{2}\#^{h(2)} \cdots a_{n-1}\#^{h(n-1)}a_{n}\#^{h(n)}1=E(b)a_{1}\#^{h(1)}a_{2}\#^{h(2)} \cdots a_{n-1}\#^{h(n-1)}a_{n}\)
  • ルール3: \(h(n-1)>1\)の場合。
    \(E(b)a_{1}\#^{h(1)} \cdots \#^{h(n-2)}a_{n-1}\#^{h(n-1)}a_{n}=E(b)a_{1}\#^{h(1)} \cdots \#^{h(n-2)}a_{n-1}\#^{h(n-1)-1}a_{n-1}\#^{h(n-1)}a_{n}-1\)
  • ルール4: それ以外の場合。
    \(E(b)a_{1}\#^{h(1)} \cdots \#^{h(n-2)}a_{n-1}\#a_{n}=E(b)a_{1}\#^{h(1)} \cdots \#^{h(n-2)}(E(b)a_{1}\#^{h(1)} \cdots \#^{h(n-2)}a_{n-1}\#a_{n}-1)\)

なお、ここで\(\#^{1}=\#\)である。

また、以下のように展開すると考えることもできる。

\begin{eqnarray} Ea\#\#b=Ea\#^{2}b&=&\underbrace{Ea\#a\#\cdots\#a\#}_{b}a\\ Ea\#\#\#b=Ea\#^{3}b&=&\underbrace{Ea\#\#a\#\#\cdots\#\#a\#\#}_{b}a\\ Ea\#\#\#\#b=Ea\#^{4}b&=&\underbrace{Ea\#\#\#a\#\#\#\cdots\#\#\#a\#\#\#}_{b}a\\ &\vdots& \end{eqnarray}

計算例[]

\begin{eqnarray} E2\#^{2}2&=&E2\#2=10^{100}\\ E2\#^{2}3&=&E2\#2\#2=(10\uparrow)^{10^{100}}2\\ E2\#^{3}3&=&E2\#^{2}2\#^{2}2=E2\#^{2}(E2\#^{2}2)=E2\#^{2}10^{100}=\underbrace{E2\#2\#\cdots\#2\#}_{10^{100}}2 \end{eqnarray}

他の表記との比較[]

正の整数\(a,\ b,\ c\)において、ハイパーE表記は矢印表記との間に次のような関係がある[3]

\begin{eqnarray} a \uparrow^{c} b&=&E(a)\underbrace{1\#1\#\cdots\#1\#}_{c-1}b\\ a \uparrow b=a \uparrow^{1} b&=&E(a)b\\ a \uparrow\uparrow b=a \uparrow^{2} b&=&E(a)1\#b\\ a \uparrow\uparrow\uparrow b=a \uparrow^{3} b&=&E(a)1\#1\#b\\ a \uparrow\uparrow\uparrow\uparrow b=a \uparrow^{4} b&=&E(a)1\#1\#1\#b\\ &\vdots& \end{eqnarray}

[]

  • \(E(10)20=E20\#1=E20=10^{20}\) - グッピー (Guppy)
  • \(E(10)100=E100\#1=E100=10^{100}\) - グーゴル (Googol)
  • \(E(10)1000000=E1000000\#1=E1000000=10^{1000000}\) - グーゴルプラックス (Googolplux)
    これらはハイパーE表記の基本となるルール1および2の例である。基数は基本的に\(10\)となり、最後の\(1\)は省略可能である。
  • \(E(-110)=10^{10^{-110}}\) - グーゴル・ミニューシャ・スペック (Googol-minutia-speck)
    負数を指定することもでき、微小数を作ることができる。ただし上記のようにかっこ書きをする場合、基数と誤解されないよう注意が必要である。
  • \(E100\#1=E100=10^{100}\) - グーゴル (Googol)
  • \(E100\#2=E(E100\#1)=EE100=E10^{100}=10^{10^{100}}\) - グーゴルプレックス (Googolplex)
  • \(E100\#3=E(E100\#2)=E(E(E100\#1))=EEE100=E10^{10^{100}}=10^{10^{10^{100}}}\) - グーゴルプレクシアン (Googolplexian)
    これらはルール3および4の例である。グーゴルからの繰り返しになっていることに注目。
  • \(E1\#100=EE1\#99=EEE1\#98=\cdots=\underbrace{EEE \cdots EEE}_{100}1\) - ギゴル (Giggol)
  • \(E100\#100=EE100\#99=EEE100\#98=\cdots=\underbrace{EEE \cdots EEE}_{100}100\) - グランゴル (Grangol)
  • \(E100\#101=EE100\#100=10^{E100\#100}=10^{\text{Grangol}}\) - グランゴルプレックス (Grangolplex)
    上記の更なる繰り返しである。グランゴルプレックスの名称の由来もこれで判明する。
  • \(E100\#100\#1=E100\#100=\underbrace{EEE \cdots EEE}_{100}100\) - グランゴル (Grangol)
  • \(E100\#100\#2=E100\#(E100\#100)=\underbrace{EEE \cdots EEE}_{E100\#100}100\) - グランゴルデックス (Grangoldex)
  • \(E100\#100\#3=E100\#(E100\#100\#2)=E100\#(E100(E100\#100))=\underbrace{EEE \cdots EEE}_{E100\#100\#2}100\) - グランゴルデュデックス (Grangoldudex)
  • \(E100\#100\#100\#100=E100\#100(E100\#100\#100\#99)=E100\#100(E100\#100(E100\#100\#100\#98))\cdots\) - ギガンゴル (Gigangol)
    変数が増えるほどに展開は複雑化していく。この先は拡張ハイパーE表記が便利となる。
  • \(E100\#\#4=E100\#100\#100\#100\) - ギガンゴル (Gigangol)
  • \(E100\#\#100=E\underbrace{100\#100\#\cdots\#100\#100}_{100}\) - グゴールド (Gugold)
    \(\#\)の繰り返しは、それより1つ少ない数の\(\#\)の繰り返しとして展開される。
  • \(E100\#\#100\#100=E100\#\#100\#\#2=\underbrace{E100\#\#(E100\#\#(\cdots(E100\#\#}_{100}100)\cdots))\) グラータゴールド (Graatagold)
  • \(E100\#\#100\#\#100=E100\#\#(\underbrace{100\#100\#\cdots\#100\#100}_{100})\) - グゴルソア (Gugolthra)
    一番右側の展開が終了するまで左側は全て無視される。
  • \(E100\#\#100=E100\#^{2}100=E\underbrace{100\#100\#\cdots\#100\#100}_{100}\) - グゴールド (gugold)
  • \(E100\#\#\#100=E100\#^{3}100=E\underbrace{100\#\#100\#\#\cdots\#\#100\#\#100}_{100}\) - スルーゴル (Throogol)
  • \(E100\#\#\#\#100=E100\#^{4}100=E\underbrace{100\#\#\#100\#\#\#\cdots\#\#\#100\#\#\#100}_{100}\) - テトローゴル (Teroogol)
  • \(E100\underbrace{\#\#\#\cdots\#\#\#}_{100}100=E100\#^{100}100\) - ゴッドガーラ (Godgahlah)
    \(\#\)の\(n\)個の繰り返しは\(\#^{n}\)とも表記される。よって\(E100\#^{100}100 \neq E100(^{100}100)\)であることに注意されたし。

疑似コード[]

function Eb(a1, a2, ..., an - 1, an):

    if n = 1:
        return ba1

    if an = 1:
        return Eb(a1, a2, ..., an - 1)

    z := Eb(a1, a2, ..., an - 1, an - 1)

    return Eb(a1, a2, ..., an - 2, z)
 
function xEb(a1, a2, ..., an - 1, an;
             h1, h2, ..., hn - 2, hn - 1):

    if n = 1:
        return ba1

    if an = 1:
        return xEb(a1, a2, ..., an - 1;
                   h1, h2, ..., hn - 2)

    if hn - 1 > 1:
        r := an
        z := an - 1
        zseq := z, z, ..., z, z (r times)
        h := ah - 1
        hseq := h, h, ..., h, h (r - 1 times)
        return xEb(a1, a2, ..., an - 2, zseq;
                   h1, h2, ..., hn - 2, hseq)

    z := xEb(a1, a2, ..., an - 1;
             h1, h2, ..., hn - 2, hn - 1)
    return xEb(a1, a2, ..., an - 2, z;
               h1, h2, ..., hn - 2)

出典[]

  1. Sbiis Saibian. "4.3.2 - Hyper-E Numbers". Large Numbers.
  2. Sbiis Saibian. "4.3.3 - Extended Hyper-E Numbers". Large Numbers.
  3. Fish, Comparison of up-arrow notation with hyper-E notation 2021年7月1日

関連項目[]

Advertisement