巨大数研究 Wiki
巨大数研究 Wiki
1行目: 1行目:
{{Stub}}
 
 
 
[[File:Explosion.jpg|thumb|n > 2 and m > 1 の時の <nowiki>n {{{1}}} m</nowiki> を計算しようとすると、こうなります。]]
 
[[File:Explosion.jpg|thumb|n > 2 and m > 1 の時の <nowiki>n {{{1}}} m</nowiki> を計算しようとすると、こうなります。]]
  +
'''爆発''' (Explosion) は、[[BEAF]]で \(a\ \{\{\{1\}\}\}\ b = \{a,b,1,3\}\) と書く関数である<ref>[http://www.polytope.net/hedrondude/array.htm Array Notation by Jonathan Bowers]</ref>。
  +
  +
直感的には、爆発はこのように定義出来る。
  +
  +
\[a\ \{\{\{1\}\}\}\ b = a\ \{\{a\ \{\{a \ldots \{\{a\}\} \ldots a\}\}\ a\}\}\ a\]
  +
  +
ここで、 \(a\) から外側へ \(b\) 個コピーされている。
  +
  +
[[急成長階層]]では、 \(f_{\omega \times 2+1}(n)\) が爆発の増加速度となる。
  +
  +
==疑似コード==
  +
以下が、爆発の疑似コードの例である。
  +
'''function''' explosion(''a'', ''b''):
  +
''result'' := ''a''
  +
'''repeat''' ''b'' - 1 '''times''':
  +
''result'' := hyperexpansion(''a'',''a'',''result'')
  +
'''return''' ''result''
  +
  +
'''function''' hyperexpansion(''a'', ''b'', ''n''):
  +
''result'' := ''a''
  +
'''repeat''' ''b'' - 1 '''times''':
  +
'''if''' ''n'' = 1:
  +
''result'' := hyper(''a'',''a'',''result''+2)
  +
'''else''':
  +
''result'' := hyperexpansion(''a'', ''result'', ''n'' - 1)
  +
'''return''' ''result''
  +
  +
'''function''' hyper(''a'', ''b'', ''n''):
  +
'''if''' ''n'' = 1:
  +
'''return''' ''a'' + ''b''
  +
''result'' := ''a''
  +
'''repeat''' ''b'' - 1 '''times''':
  +
''result'' := hyper(''a'', ''result'', ''n'' - 1)
  +
'''return''' ''result''
   
  +
=== 出典 ===
とりあえずは[[:en:Explosion|英語版]]を参照して下さい。できれば、どなたか訳して下さい。
 
  +
<references />
   
  +
[[en:Explosion]]
 
{{DEFAULTSORT:はくはつ}}
 
{{DEFAULTSORT:はくはつ}}
 
[[カテゴリ:関数]]
 
[[カテゴリ:関数]]

2014年3月5日 (水) 00:05時点における版

n > 2 and m > 1 の時の n {{{1}}} m を計算しようとすると、こうなります。

爆発 (Explosion) は、BEAFで \(a\ \{\{\{1\}\}\}\ b = \{a,b,1,3\}\) と書く関数である[1]

直感的には、爆発はこのように定義出来る。

\[a\ \{\{\{1\}\}\}\ b = a\ \{\{a\ \{\{a \ldots \{\{a\}\} \ldots a\}\}\ a\}\}\ a\]

ここで、 \(a\) から外側へ \(b\) 個コピーされている。

急成長階層では、 \(f_{\omega \times 2+1}(n)\) が爆発の増加速度となる。

疑似コード

以下が、爆発の疑似コードの例である。

function explosion(a, b):
    result := a
    repeat b - 1 times:
         result := hyperexpansion(a,a,result)
    return result

function hyperexpansion(a, b, n):
    result := a
    repeat b - 1 times:
        if n = 1:
            result := hyper(a,a,result+2)
        else:
            result := hyperexpansion(a, result, n - 1)
    return result
function hyper(a, b, n):
    if n = 1:
        return a + b
    result := a
    repeat b - 1 times:
        result := hyper(a, result, n - 1)
    return result

出典