乗算膨張 (Multiexpansion) はBEAFを用いて \(a\{\{2\}\} b = \{a,b,2,2\} = \underbrace{a \{\{1\}\} a \{\{1\}\} \ldots \{\{1\}\} a \{\{1\}\} a}_{\text{b個のa}}\) と表される関数である。[1]

急増加関数においては、 \(f_{\omega+2}(n)\) に近似する。

  • {a,3,2,2} = a{{1}}a{{1}}a= \(\underbrace{a\{a\{a...a\{a\{a\}a\}a...a\}a\}a}_{\underbrace{a\{a\{a...a\{a\{a\}a\}a...a\}a\}a}_{a}}\)
  • {3,2,2,2} = 3{{2}}2 = 3{{1}}3 = {3,3,1,2}
  • {4,2,2,2} = {4,4,1,2}
  • {3,3,2,2} = 3{{2}}3 = 3{{1}}3{{1}}3 = {3,{3,3,1,2},1,2}
  • {4,3,2,2} = {4,{4,4,1,2},1,2}

擬似コード

下は乗算膨張の擬似コードの例である。

function multiexpansion(a, b):
    result := a
    repeat b - 1 times:
        result := expansion(a, result)
    return result

function expansion(a, b):
    result := a
    repeat b - 1 times:
        result := hyper(a, a, result + 2)
    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

出典

特に記載のない限り、コミュニティのコンテンツはCC-BY-SAライセンスの下で利用可能です。