Quickly growing function
計算可能性理論
において、ヴィルヘルム・アッカーマンにちなんで名付けられたアッカーマン関数は、原始再帰関数ではない全計算可能関数の最も単純かつ最も古く発見された例の一つである。すべての原始再帰関数は全計算可能かつ計算可能であるが、アッカーマン関数は、すべての全計算可能関数が原始再帰的であるとは限らないことを示している。
アッカーマンが自身の関数(3つの非負整数引数を持つ)ロザ・ペーテルとラファエル・ロビンソンによって開発された2引数のアッカーマン・ペーテル関数です。この関数は、適切な基本ケースを持つ漸化式から定義されます。その値は非常に急速に増加します。例えば、は19,729桁の整数 となります。 [3] 

歴史
1920年代後半、数学者ガブリエル・スーダンとヴィルヘルム・アッカーマンは、ダヴィド・ヒルベルトの弟子であり、計算の基礎を研究していました。スーダンとアッカーマンは共に、再帰的ではない全 計算可能関数(一部の文献では単に「再帰的」と称される)を発見した功績で知られています[4] 。スーダンはあまり知られていないスーダン関数を発表し、その後まもなく独立して1928年にアッカーマンが自身の関数(ギリシャ語のファイに由来)を発表しました。アッカーマンの3引数関数は、に対して、加算、乗算、累乗の基本演算を次の
ように再現するように定義されます。


そして、これらの基本操作をハイパー操作に匹敵する方法で拡張します。

(完全に計算可能だが原始再帰的ではない関数としての歴史的な役割とは別に、アッカーマンの元の関数は、基本的な算術演算を累乗を超えて拡張すると考えられていますが、その目的のために特別に設計されたアッカーマン関数の変種 (グッドスタインの ハイパーオペレーションシーケンスなど) ほどシームレスではありません。)
ヒルベルトは『無限について』でアッカーマン関数は原始再帰的ではないと仮説を立てたが、実際にその仮説を証明したのはヒルベルトの個人秘書であり元教え子でもあったアッカーマンであり、彼の論文『ヒルベルトの実数構成について』 でその仮説を証明した。
その後、ロザ・ペーテルとラファエル・ロビンソンアッカーマン関数の2変数バージョンを開発し、ほぼすべての著者に好まれるようになりました。
一般化されたハイパーオペレーションシーケンス(例えば)もアッカーマン関数の一種である。
1963年にR.クレイトン・バックは、ハイパーオペレーションシーケンスの直感的な2変数[n 1]変種を考案した。
他のほとんどのバージョンと比較して、Buck 関数には不要なオフセットがありません。
アッカーマン関数の他の多くのバージョンが研究されてきた。
意味
定義:メートル項関数
アッカーマンのオリジナルの3引数関数は、非負整数とに対して次のように再帰的に定義されます。



さまざまな 2 引数バージョンのうち、Péter と Robinson によって開発されたもの (ほとんどの著者によって「」Ackermann 関数と呼ばれています) は、非負の整数に対して次のように定義されます。


アッカーマン関数はハイパーオペレーションシーケンスとの関連でも表現されている:
または、Knuthの上矢印記法(整数インデックスに拡張)で書くと次のようになります。

あるいは、バック関数Fの観点からは:
について帰納的に考えると、すべての に対して であることが証明できる。



定義: 反復1項関数として
を のn回目の反復として定義します。


反復処理とは、関数を自身と一定回数合成する処理です。関数合成は結合法則に従うため、.

アッカーマン関数を単項関数の列として考えると、 を設定できます。

この関数は反復から定義される単項[n 2]関数の列になります。

計算
LOOPプログラムによる計算
これらの関数は、(有限レベルの)高速増加階層(FGH)関数に適合する

次の不等式が成り立つ:[17]
固定の場合、関数はネストの深さのLOOPプログラムによって計算できます。[18]

# 入力 (n)
ループ n : # ネストの深さ: 1
ループ n : # ネストの深さ: 2
... # ...
ループ n : # ネストの深さ: k
n += 1 #
# 出力 (n)
この関数はLOOP-kプログラムによって計算することもできる。(プログラム(スキーマ)はここには記載されていない。)

は原始的な再帰関数ではないため(下記参照)、LOOP プログラムでは計算できないこと
は明らかです。
2項関数に基づく項書き換えシステムによる計算
アッカーマン関数の再帰定義は、項書き換えシステム (TRS)に自然に転置できます。
2元アッカーマン関数の定義は明らかな簡約規則を導く
例
コンピューティング
縮約シーケンスは[n 3]である。
| 最左最外(ワンステップ)戦略:
|
最左最内(ワンステップ)戦略:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
を計算するには、最初に要素を含むスタックを使用できます。


その後、上位2つの要素が規則に従って繰り返し置き換えられる[n 4]
図式的に言えば、次のようになります:

スタック長 <> 1 の場合
{
2つの要素
をPOPし、 r1、r2、r3のルールを適用して1つまたは2つまたは3つの要素をPUSHする
}
この擬似コードは Grossman & Zeitman (1988) に掲載されています。
例えば、入力では、

| スタック構成
|
減少を反映する[n 5]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
備考
- 最左内戦略は、Rosetta Code上の 225 のコンピュータ言語で実装されています。
- の計算にはステップしかかかりません。



- Grossman & Zeitman (1988) は、 の計算において、である限り、スタックの最大長は であることを指摘しました。



独自のアルゴリズムは本質的に反復的であり、時間と空間内で計算を行います。


反復1項関数に基づくTRSによる計算
反復1元アッカーマン関数の定義は、異なる簡約規則を導く。
関数合成は結合的であるため、規則r6の代わりに次のように定義できる。
前のセクションと同様に、 の計算はスタックを使用して実装できます。

最初、スタックには 3 つの要素が含まれます。

その後、上位3つの要素が規則に従って繰り返し置き換えられる[n 4]
図式的に言えば、次のようになります:

スタック長 <> 1 の場合
{
3 つの要素
を POP し、ルール r4、r5、r6 を適用して 1 個または 3 個または 5 個の要素を PUSH します。
}
例
入力時に連続するスタック構成は

対応する等式は
ルールr6の代わりにルールr7が使用される場合、スタック内の置換は次のようになります。
その後のスタック構成は
対応する等式は
備考
- これまでに示したTRSは、任意の入力に対して同じステップ数で収束します。また、同じ縮約規則を使用します(この比較では、規則r1、r2、r3はそれぞれ規則r4、r5、r6/r7と「同じ」とみなされます)。例えば、の縮約は14ステップで収束します:6 × r1、3 × r2、5 × r3。の縮約も同じ14ステップで収束します:6 × r4、3 × r5、5 × r6/r7。TRSは、縮約規則が適用される順序が異なります。


- を{r4, r5, r6}の規則に従って計算する場合、スタックの最大長は 未満に留まります。規則r6の代わりに縮約規則r7を使用すると、スタックの最大長は のみになります。スタックの長さは再帰の深さを反映します。規則{r4, r5, r7}に従った縮約では再帰の最大深さが小さくなるため、[n 6]、この計算はその点でより効率的です。



ハイパー演算子に基づくTRSによる計算
Sundblad (1971) や Porto & Matos (1980) が明示したように、アッカーマン関数はハイパーオペレーションシーケンスで表現できます。
あるいは、定数2をパラメータリストから削除した後、バック関数の観点から
バック関数アッカーマン関数の変形であり、以下の簡約規則で計算できる。
![{\displaystyle \operatorname {F} (m,n)=2[m]n}](https://wikimedia.org/api/rest_v1/media/math/render/svg/135f920da3c5a098cce022d81ad89c8e3a3c8412)
ルールb6の代わりに、次のルールを定義することもできる。
アッカーマン関数を計算するには、3つの簡約規則を追加するだけで十分である。
これらのルールは、基本ケース A(0,n)、アライメント (n+3)、およびファッジ (-3) を処理します。
例
コンピューティング
削減規則を使用する:[n 5]
|
削減規則を使用する:[n 5]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
対応する等式は
- 削減規則を伴うTRSを適用すると、

- 削減規則を伴うTRSを適用すると、

備考
- の計算は、{b1 - b5, b6, r8 - r10}という規則に従って、深く再帰的に行われます。ネストされたs の最大深度は です。問題は反復処理の実行順序にあります。最初の s は、シーケンス全体が展開された後にのみ消えます。





- その点では、{b1 - b5, b7, r8 - r10}という規則に従った計算の方が効率的です。反復処理は、コードブロック全体にわたる繰り返しループをシミュレートします。[n 7]ネストは、反復処理される関数ごとに1つの再帰レベルに制限されます。Meyer & Ritchie (1967)はこの対応関係を示しました。


- これらの考慮事項は再帰の深さのみに関係します。どちらの反復方法でも同じ数の縮約ステップが使用され、同じ規則が適用されます(規則b6とb7が「同じ」とみなされる場合)。例えば、の縮約は35ステップで収束します:12 × b1、4 × b2、1 × b3、4 × b5、12 × b6/b7、1 × r9、1 × r10。反復法は、縮約規則が適用される順序にのみ影響します。

- 実行時間の真の短縮は、部分結果を何度も再計算しないことによってのみ達成できます。メモ化とは、関数呼び出しの結果をキャッシュし、同じ入力が再び発生したときに結果を返す最適化手法です。例えば、Ward (1993) を参照してください。Grossman & Zeitman (1988) は、時間と空間の範囲内で計算を行う巧妙なアルゴリズムを発表しました。



膨大な数
計算が多くのステップと大きな数値でどのように行われるかを示すために: [n 5]
値の表
アッカーマン関数の計算は、無限表に置き換えることができます。まず、自然数を一番上の行に並べます。表の中の数字を特定するには、そのすぐ左の数字を取ります。次に、その数字を使って、その数字に対応する列から1行上の数字を探します。その左に数字がない場合は、前の行の見出し「1」の列を見てください。表の左上の小さな部分を以下に示します。
ここで再帰的指数またはKnuth 矢印のみで表現される数値は非常に大きく、単純な 10 進数で表記するにはスペースが大きすぎます。
表のこの最初の部分には大きな値が現れていますが、グラハム数のように、さらに大きな数も定義されています。グラハム数は、クヌース矢印を少ししか使って表すことができません。この数は、アッカーマン関数を自身に再帰的に適用するのと同様の手法で構築されます。
これは上記の表の繰り返しですが、パターンを明確に示すために、値が関数定義の関連する式に置き換えられています。
A ( m , n )
の値
n メートル
|
0
|
1
|
2
|
3
|
4
|
n
|
| 0
|
0+1 |
1+1 |
2+1 |
3+1 |
4+1 |
n + 1
|
| 1
|
A (0, 1) |
A (0, A (1, 0)) = A (0, 2) |
A (0, A (1, 1)) = A (0, 3) |
A (0, A (1, 2)) = A (0, 4) |
A (0, A (1, 3)) = A (0, 5) |
A (0, A (1, n −1))
|
| 2
|
A(1, 1) |
A (1, A (2, 0)) = A (1, 3) |
A (1, A (2, 1)) = A (1, 5) |
A (1, A (2, 2)) = A (1, 7) |
A (1, A (2, 3)) = A (1, 9) |
A (1, A (2, n −1))
|
| 3
|
A(2、1) |
A (2, A (3, 0)) = A (2, 5) |
A (2, A (3, 1)) = A (2, 13) |
A (2, A (3, 2)) = A (2, 29) |
A (2, A (3, 3)) = A (2, 61) |
A (2, A (3, n −1))
|
| 4
|
A(3、1) |
A (3, A (4, 0)) = A (3, 13) |
A (3, A (4, 1)) = A (3, 65533) |
A (3, A (4, 2)) |
A (3, A (4, 3)) |
A (3, A (4, n −1))
|
| 5
|
A(4、1) |
A (4, A (5, 0)) |
A (4, A (5, 1)) |
A (4, A (5, 2)) |
A(4、A(5、3)) |
A (4, A (5, n −1))
|
| 6
|
A(5, 1) |
A (5, A (6, 0)) |
A (5, A (6, 1)) |
A (5, A (6, 2)) |
A(5、A(6、3)) |
A (5, A (6, n −1))
|
プロパティ
- の評価が常に終了することは、すぐには明らかではないかもしれません。しかし、再帰は有界です。なぜなら、各再帰適用において、 は減少するか、同じまま減少するかのいずれかだからです。 がゼロに達するたびに、は減少し、最終的には もゼロに達します。(より技術的に表現すると、いずれの場合も、ペアはペアの辞書式順序で減少します。これは、単一の非負整数の順序付けと同様に、整列した です。つまり、順序付けが無限に連続して下がることはできません。)しかし、 が減少する場合、増加できる量に上限はなく、多くの場合、大幅に増加します。










- mが1、2、3のような小さな値の場合、アッカーマン関数はnに関して比較的緩やかに増加します(最大でも指数関数的に増加します)。しかし、 の場合、はるかに急速に増加します。mが約2.00353 × 10

19 728であり、 の小数展開は、どんな典型的な尺度から見ても非常に大きく、約 2.12004 × 10 6.03123 × 10
19727 .
- 興味深い点は、この関数が使用する算術演算が1の加算のみであることです。この関数の急速な性能向上は、ネストされた再帰処理のみに基づいています。これはまた、実行時間が少なくとも出力に比例し、非常に膨大になることを意味しています。実際には、ほとんどの場合、実行時間は出力をはるかに上回ります(上記参照)。
- と の両方を同時に増加させる単一引数バージョンは、指数関数、階乗関数、多重階乗関数および超階乗関数、さらには Knuth の上矢印表記法を使用して定義された関数 (インデックス付き上矢印が使用されている場合を除く) などの非常に急激に増加する関数を含む、すべての原始再帰関数を小さく見せます。 は、急激に増加する階層 とほぼ同等であることがわかります。この極端な増加を利用して、 は明らかにチューリングマシンなどの無限メモリを備えたマシンで計算可能であり、したがって計算可能関数ですが、どの原始再帰関数よりも速く増加し、したがって原始再帰ではないことが示されます。






原始再帰ではない
アッカーマン関数はどの原始再帰関数よりも速く増加するため、それ自体は原始再帰的ではありません。
証明スケッチ:
原始再帰関数は、合成と原始再帰を用いて基本関数から構築され、すべて一定の速度で成長します。全関数の階層を以下のように構成的に定義します。

ここで、 は入力 に対するの - 倍の反復を表す。[23]この階層構造は の増加とともに厳密に速く成長し、すべての原始再帰関数は最終的に によって上方に有界になる。これは原始再帰関数の定義に関する構造的帰納法によって示すことができる。






しかし、アッカーマン関数は最終的に任意の を超えます。任意の に対して、十分に大きい に対して となる関数が存在します。したがって、 はどの原始再帰関数よりも速く増加するため、原始再帰関数ではありません。







逆
上で考察した関数f ( n ) = A ( n , n )は非常に急速に増加するため、その逆関数f −1は非常にゆっくりと増加します。この逆アッカーマン関数 f −1は通常αと表記されます。実際、A (4, 4)は のオーダーであるため、実用的な入力サイズnに対してα ( n ) は 5 未満です。

この逆関数は、分離集合データ構造やChazelleの最小全域木アルゴリズムなど、いくつかのアルゴリズムの時間計算量に現れます。これらの設定では、Ackermannの元の関数やその他のバリエーションが使用されることもありますが、いずれも同様に高い速度で増加します。特に、いくつかの修正された関数は、-3などの項を削除することで式を簡素化します。
逆アッカーマン関数の2パラメータ変種は次のように定義できます。ここで、は床関数です。

この関数は、上記のアルゴリズムをより精密に解析する際に出現し、より精密な時間制限を与えます。分離集合データ構造において、m は演算回数、n は要素数を表します。最小全域木アルゴリズムにおいて、m は辺数、n は頂点数を表します。α ( m , n )には、わずかに異なる定義がいくつか存在します。例えば、log 2 nはnに置き換えられる場合があり、floor 関数はceilingに置き換えられる場合があります。
他の研究では、 mを定数に設定して1の逆関数を定義し、特定の行に逆関数を適用するかもしれない。
アッカーマン関数の逆関数は原始再帰的である。なぜなら、それはグラフ原始再帰的であり、原始再帰関数によって上限が定められるからである。
使用法
計算の複雑さにおいて
アッカーマン関数は、ベクトル加算システムやペトリネット到達可能性などのいくつかのアルゴリズムの時間計算量に現れ、大規模なインスタンスでは計算不可能であることを示しています。
アッカーマン関数の逆関数は、いくつかの時間計算量結果に現れる。例えば、分離集合データ構造は、演算ごとに逆アッカーマン関数に比例した償却時間を要しセルプローブモデルの範囲内でこれを高速化することは不可能である。
離散幾何学では
離散幾何学におけるダベンポート・シンツェル列に関連する特定の問題には、逆アッカーマン関数が現れる計算量限界が存在する。例えば、平面上の線分の場合、線分の配置の非有界面は計算量 を持ち、また線分系の中には計算量 の非有界面を持つものがある。



ベンチマークとして
アッカーマン関数は、極めて深い再帰に基づいて定義されているため、コンパイラの再帰最適化能力のベンチマークとして使用できます。この方法でアッカーマン関数が初めて公表されたのは、1970年にDragoș Vaida と、ほぼ同時期の1971年にYngve Sundblad
サンドブラッドの画期的な論文は、ブライアン・ウィッヒマン(ウェットストーンベンチマークの共著者)によって1975年から1982年の間に書かれた三部作の論文の中で取り上げられました
参照
注記
- ^ パラメータの順序を逆にした
- ^ 「カレー風味」
- ^ 各ステップで下線部のredexが書き換えられます。
- ^ ab ここ: 左端から内側への戦略!
- ^ abcd 読みやすくするために
、S(0) は 1 と表記され、
S(S(0)) は 2 と表記され、
S(S(S(0))) は 3 と表記されます
。
- ^ 再帰の最大深度とは、ある手続きの最も深い呼び出し時に存在する、その手続きの活性化の階層数を指す。Cornelius & Kirby (1975)
- ^ n+1回ループするDO F
参考文献
- ^ “A(4,2)の10進展開”. kosara.net . 2000年8月27日. 2010年1月20日時点のオリジナルよりアーカイブ。
- ^ 「アッカーマン階層と急成長階層」。StackExchange。
- ^ Pythonと同様に、オフサイドルール( INDENT ... DEDENT )に従ったインデント:
- ^ グジェゴルチク階層を定義する別の関数列 は、原始再帰関数を「成長クラス」に分割するために頻繁に使用されます。ただし、(または)と は添字が一致しません。



参考文献
- アッカーマン、ヴィルヘルム(1928)。 「Zum Hilbertschen Aufbau der reellen Zahlen」[実数のヒルベルト的構築について]。Mathematische Annalen (ドイツ語)。99 : 118–133。土井:10.1007/BF01459088。S2CID 123431274。
- Buck, RC (1963). 「数学的帰納法と再帰的定義」. American Mathematical Monthly . 70 (2): 128– 135. doi :10.2307/2312881. JSTOR 2312881.
- カルード, クリスチャン;マーカス, ソロモン; テヴィ, イオネル (1979年11月). 「原始再帰関数ではない再帰関数の最初の例」. Historia Math. 6 (4): 380–84 . doi : 10.1016/0315-0860(79)90024-7 .
- コーエン、ダニエル・E.(1987年1月)『計算可能性と論理』ハルステッド・プレス、ISBN 9780745800349。
- コーネリアス, BJ; カービー, GH (1975). 「再帰の深さとアッカーマン関数」. BIT数値数学. 15 (2): 144– 150. doi :10.1007/BF01932687. S2CID 120532578.
- Czerwiński, Wojciech; Orlikowski, Łukasz (2022年2月7日).ベクトル加算システムにおける到達可能性はアッカーマン完全である. Proceedings of the 2021 IEEE 62nd Annual Symposium on Foundations of Computer Science. arXiv : 2104.13866 . doi :10.1109/FOCS52979.2021.00120.
- Fredman, M. ; Saks, M. (1989年5月). 「動的データ構造のセルプローブ計算量」.第21回ACM計算理論シンポジウム (STOC '89) の議事録. pp. 345– 354. doi : 10.1145/73007.73040 . ISBN 0897913078. S2CID 13470414。
- Grossman, Jerrold W.; Zeitman, R. Suzanne (1988年5月). 「アッカーマン関数の本質的に反復的な計算」.理論計算機科学. 57 ( 2–3 ): 327– 330. doi :10.1016/0304-3975(88)90046-1.
- ヴァン・ヘイエノールト、ジャン(1977)[訂正を加えて再版、初版1967年]『フレーゲからゲーデルへ:1879年から1931年までの数学論理学の原典』ハーバード大学出版局。
- デイヴィッド・ヒルベルト(1926)。 「Über das Unendliche」[無限について]。Mathematische Annalen (ドイツ語)。95 : 161–190。土井:10.1007/BF01206605。S2CID 121888793。
- ルルー, ジェローム (2022年2月7日).ペトリネットの到達可能性問題は原始再帰的ではない. 2021 IEEE 第62回コンピュータサイエンス基礎シンポジウム議事録. arXiv : 2104.12695 . doi :10.1109/FOCS52979.2021.00121.
- スイス、ロブ。ウェイナー、SS (1970)。「数論的関数の階層 I.」。数学ロジックとグルンドラーゲンフォルシュングのアーカイブ。13 ( 1–2 ): 39–51 .土井:10.1007/BF01967649。
- Matos, Armando B (2014年5月7日). 「アッカーマン関数の逆関数は原始再帰的である」(PDF) . 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- Meeussen, VCS; Zantema, H. (1992). 自然数の解釈に基づく項書き換えにおける導出長(PDF) (レポート). ユトレヒト大学 コンピュータサイエンス学部. ISSN 0924-3275. 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
- マイヤー、アルバート・R.;リッチー、デニス・マカリスター(1967). 「ループプログラムの計算量」. 1967年第22回全国会議議事録. ACM '67: 1967年第22回全国会議議事録. pp. 465– 469. doi : 10.1145/800196.806014 .
- モナン、ジャン=フランソワ、ヒンチー、MG(2003年)『形式手法の理解』シュプリンガー、p.61、ISBN 9781852332471。
- Munafo, Robert (1999a). 「アッカーマン関数のバージョン」. MROBのLarge Numbers . 2021年11月6日閲覧。
- ムナフォ、ロバート (1999b). 「新しい演算子と関数の発明」. MROBにおける大きな数. 2021年11月6日閲覧。
- オディフレッディ、ピエールジョルジオ(1999).古典的再帰理論. 第2巻. 論理学と数学の基礎研究. 第143巻. アムステルダム: 北ホラント. ISBN 978-0-444-50205-6. MR 1718169。
- ポールソン、ローレンス・C. (2021). 「反復形式におけるアッカーマン関数:証明支援実験」2021年10月19日閲覧。
- ペテル、ロザ(1935)。 "Konstruktion nichtrekursiver Funktionen" [非再帰関数の構築]。Mathematische Annalen (ドイツ語)。111 : 42–60 .土井:10.1007/BF01472200。S2CID 121107217。
- Pettie, S. (2002). 「オンライン最小全域木検証問題に対する逆アッカーマン法による下限値」.第43回IEEEコンピュータサイエンス基礎シンポジウム, 2002. Proceedings . pp. 155– 163. doi :10.1109/SFCS.2002.1181892. ISBN 0-7695-1822-2. S2CID 8636108。
- Porto, António; Matos, Armando B. (1980年9月1日). 「Ackermannと超大国」(PDF) . ACM SIGACT News . 12 (3): 90– 95. doi :10.1145/1008861.1008872. S2CID 29780652. 2022年10月9日時点のオリジナルより アーカイブ(PDF) .オリジナル版は1980年にACM SIGACT Newsに掲載され、2012年10月20日と2016年1月23日に改訂されました(ワーキングペーパー)
- リッチー、ロバート・ウェルズ (1965年11月). 「アッカーマン関数に基づく再帰関数のクラス」.パシフィック・ジャーナル・オブ・マスマティクス. 15 (3): 1027–1044 . doi : 10.2140/pjm.1965.15.1027 .
- ロビンソン、ラファエル・ミッチェル(1948). 「再帰と二重再帰」.アメリカ数学会報. 54 (10): 987–93 . doi : 10.1090/S0002-9904-1948-09121-2 .
- Sundblad, Yngve (1971年3月). 「アッカーマン関数:理論、計算、そして数式操作による研究」. BIT Numerical Mathematics . 11 (1): 107– 119. doi :10.1007/BF01935330. S2CID 123416408.
- Tarjan, Robert Endre (1975). 「線形ではないが優れた集合結合アルゴリズムの効率」. Journal of the ACM . 22 (2): 215– 225. doi :10.1145/321879.321884. hdl : 1813/5942 . S2CID 11105749.
- ヴァイダ、ドラゴシュ (1970)。 「アルゴリズムに似た言語のコンパイラ検証」。Bulletin Mathématique de la Société des Sciences ルーマニ共和国社会主義数学。ヌーベルシリーズ。 14 (62) (4): 487–502 . JSTOR 43679758。
- ウェイナー、SS (1970)。 「順序再帰関数の分類」。数学ロジックとグルンドラーゲンフォルシュングのアーカイブ。13 ( 3–4 ): 136–153 .土井:10.1007/bf01973619。
- Ward, Martin P. (1993年7月16日).アッカーマン関数を計算するための反復手順. CiteSeerX 10.1.1.35.9907 .
- Wichmann, Brian A. (1976年3月). 「アッカーマン関数:手続き呼び出しの効率性に関する研究」. BIT Numerical Mathematics . 16 : 103–110 . CiteSeerX 10.1.1.108.4125 . doi :10.1007/BF01940783. S2CID 16993343.
- Wichmann, Brian A. (1977年7月). 「手続きの呼び出し方、あるいはアッカーマン関数の再考」. BIT Numerical Mathematics . 16 (3): 103– 110. doi :10.1002/spe.4380070303. S2CID 206507320.
- Wichmann, Brian A. (1982年7月). 「手続き呼び出しテスト、アッカーマン関数の最新結果」(PDF) . 2022年10月9日時点のオリジナルよりアーカイブ(PDF) 。
外部リンク
- 「アッカーマン関数」.数学百科事典. EMS Press . 2001 [1994].
- ワイスタイン、エリック・W.「アッカーマン関数」。MathWorld。
この記事には、Paul E. Black著「アッカーマン関数」のパブリックドメイン資料が含まれています。アルゴリズムとデータ構造の辞書。NIST 。
- アニメーション化されたアッカーマン関数計算機
- アーロンソン、スコット(1999)「より大きな数字を言える人は誰?」
- アッカーマン関数。いくつかの値の表が含まれています。
- ブルベーカー、ベン(2023年12月4日)「一見簡単に思える問題が、私たちの宇宙には大きすぎる数字を生み出す」
- ムナフォ、ロバート。「大きな数」。Aの定義に関するいくつかのバリエーションについて説明します。
- Nivasch, Gabriel (2021年10月). 「痛みのない逆アッカーマン法」. 2007年8月21日時点のオリジナルよりアーカイブ。2023年6月18日閲覧。
- Seidel, Raimund. 「逆アッカーマン関数の理解」(PDF) .
- さまざまなプログラミング言語で書かれたアッカーマン関数(Rosetta Code上)
- スミス、ハリー・J.「アッカーマン関数」。2009年10月26日時点のオリジナルよりアーカイブ。) 少し勉強してプログラミングをします。
- Wiernik, Ady; Sharir, Micha (1988). 「非線形ダベンポート・シンツェル列の線分による平面実現」.離散幾何学と計算幾何学. 3 (1): 15– 47. doi : 10.1007/BF02187894 . MR 0918177.