Ackermannova funkce - Ackermann function
v teorie vypočítatelnosti, Ackermannova funkce, pojmenoval podle Wilhelm Ackermann, je jedním z nejjednodušších[1] a nejdříve objevené příklady a celkový vypočítatelná funkce to není primitivní rekurzivní. Všechny primitivní rekurzivní funkce jsou úplné a vypočítatelné, ale funkce Ackermann ilustruje, že ne všechny celkové vypočítatelné funkce jsou primitivní rekurzivní. Po Ackermannově publikaci[2] jeho funkce (která měla tři nezáporné celočíselné argumenty) ji mnozí autoři upravili tak, aby vyhovovala různým účelům, takže dnes „funkce Ackermann“ může odkazovat na kteroukoli z mnoha variant původní funkce. Jedna běžná verze, dva argumenty Funkce Ackermann – Péter, je definován takto pro nezáporná celá čísla m a n:
Jeho hodnota rychle roste, a to i pro malé vstupy. Například, A(4, 2) je celé číslo 19 729 desetinných míst[3] (ekvivalent 265536-3 nebo 22222−3).
Dějiny
Na konci 20. let 20. století matematici Gabriel Súdán a Wilhelm Ackermann, studenti David Hilbert, studovali základy výpočtu. Připsány jsou Súdán i Ackermann[4] s objevováním celkový vypočítatelné funkce (v některých odkazech nazývané jednoduše „rekurzivní“), které nejsou primitivní rekurzivní. Súdán zveřejnil méně známé Súdánská funkce, poté krátce nato a samostatně, v roce 1928, Ackermann zveřejnil svou funkci (řecké písmeno phi ). Ackermannova funkce se třemi argumenty, , je definován tak, že pro p = 0, 1, 2, reprodukuje základní operace přidání, násobení, a umocňování tak jako
a pro p > 2 rozšiřuje tyto základní operace způsobem, který lze srovnávat s hyperoperace:
(Kromě své historické role jako totálně vypočítatelné, ale nikoli primitivní rekurzivní funkce je vidět, že Ackermannova původní funkce rozšiřuje základní aritmetické operace nad rámec umocňování, i když ne tak hladce jako varianty Ackermannovy funkce, které jsou speciálně navrženy pro ten účel - jako např Goodstein hyperoperace sekvence.)
v Na nekonečno,[5] David Hilbert předpokládal, že Ackermannova funkce nebyla primitivní rekurzivní, ale byl to Ackermann, Hilbertův osobní tajemník a bývalý student, který ve své práci hypotézu skutečně prokázal O Hilbertově konstrukci skutečných čísel.[2][6]
Rózsa Péter[7] a Raphael Robinson[8] později vyvinul dvou variabilní verzi Ackermannovy funkce, kterou si oblíbilo mnoho autorů.
Zobecněný hyperoperační sekvence, např. , je také verzí funkce Ackermann.[9]
V roce 1963 R.C. Dolar na základě intuitivní varianty se dvěma proměnnými (F[10]) na hyperoperační sekvence:[11]
- .
Ve srovnání s většinou ostatních verzí nemá funkce Buck žádné nepodstatné posuny:
Definice a vlastnosti
Ackermannova původní funkce se třemi argumenty je definováno rekurzivně takto pro nezáporná celá čísla m, n, a p:
Z různých verzí se dvěma argumenty je ta, kterou vyvinuli Péter a Robinson (někteří autoři ji nazývají „Ackermannovou funkcí“), definována pro nezáporná celá čísla m a n jak následuje:
Nemusí být hned zřejmé, že hodnocení vždy končí. Rekurze je však omezená, protože buď v každé rekurzivní aplikaci m klesá, nebo m zůstává stejný a n klesá. Pokaždé n dosáhne nuly, m klesá, takže m nakonec také dosáhne nuly. (Vyjádřeno technicky, v každém případě dvojice (m, n) klesá v lexikografický řád na párech, což je a dobře objednávající, stejně jako uspořádání jednotlivých nezáporných celých čísel; to znamená, že člověk nemůže klesnout v objednávání nekonečně mnohokrát za sebou.) Nicméně, když m klesá neexistuje žádná horní hranice toho, kolik n se může zvýšit - a často se výrazně zvýší.
Funkci Péter-Ackermann lze také vyjádřit ve vztahu k různým dalším verzím funkce Ackermann:
- hyperoperace, zastoupená v Knuthova nota se šipkou nahoru (rozšířeno na celočíselné indexy ≥ −2):
- hyperoperace, zastoupená v Conway zřetězená šipka:
- pro
- proto
- pro .
- (n = 1 a n = 2 bude korespondovat s A(m, −2) = −1 a A(m, −1) = 1, které lze logicky přidat.)
Pro malé hodnoty m jako 1, 2 nebo 3, Ackermannova funkce roste relativně pomalu vzhledem k n (nejvíce exponenciálně ). Pro m ≥ 4, ale roste mnohem rychleji; dokonce A(4, 2) je asi 2×1019728a desetinné rozšíření A(4, 3) je velmi velká jakýmkoli typickým měřítkem.
Zajímavým aspektem (Péter-) Ackermannovy funkce je, že jedinou aritmetickou operací, kterou kdy používá, je přidání 1. Její rychle rostoucí síla je založena pouze na vnořené rekurzi. To také znamená, že jeho doba chodu je alespoň úměrná jeho výkonu, a proto je také extrémně obrovská. Ve skutečnosti je ve většině případů doba běhu mnohem větší než výstup; viz. níže.
Verze s jedním argumentem F(n) = A(n, n) což zvyšuje obojí m a n zároveň převyšuje každou primitivní rekurzivní funkci, včetně velmi rychle rostoucích funkcí, jako je exponenciální funkce, faktoriální funkce, multi- a superfaktoriální funkce a dokonce i funkce definované pomocí Knuthovy šipky nahoru (kromě případů, kdy je použita indexovaná šipka nahoru). Je to vidět F(n) je zhruba srovnatelný s Fω(n) v rychle rostoucí hierarchie. Tento extrémní růst lze využít k tomu, aby to ukázal F, což je zjevně vypočítatelné na stroji s nekonečnou pamětí, jako je a Turingův stroj a tak je vypočítatelná funkce, roste rychleji než jakákoli primitivní rekurzivní funkce, a proto není primitivní rekurzivní.
V kategorii s exponenciály pomocí izomorfismu (v informatice se tomu říká kari ) lze Ackermannovu funkci definovat pomocí primitivní rekurze nad funkcionály vyššího řádu takto:
kde S (n) = n + 1 je obvyklé nástupnická funkce a Iter označuje funkční síla operátor, definovaný také primitivní rekurzí:
Funkce takto definovaný souhlasí s Ackermannovou funkcí definováno výše: .

Příklad rozšíření
Chcete-li zjistit, jak funkce Ackermann roste tak rychle, pomůže vám to rozšířit některé jednoduché výrazy pomocí pravidel v původní definici. Například lze plně vyhodnotit následujícím způsobem:
Demonstrovat jak Výsledek výpočtu je v mnoha krocích a ve velkém počtu:
Tabulka hodnot
Výpočet funkce Ackermann lze přepracovat na základě nekonečné tabulky. Nejprve umístěte přirozená čísla podél horního řádku. Chcete-li určit číslo v tabulce, vezměte číslo hned doleva. Potom použijte toto číslo k vyhledání požadovaného čísla ve sloupci daném tímto číslem a o jeden řádek nahoru. Pokud vlevo není žádné číslo, jednoduše se podívejte na sloupec se záhlavím „1“ v předchozím řádku. Tady je malá levá horní část tabulky:
n m | 0 | 1 | 2 | 3 | 4 | n |
---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | |
1 | 2 | 3 | 4 | 5 | 6 | |
2 | 3 | 5 | 7 | 9 | 11 | |
3 | 5 | 13 | 29 | 61 | 125 | |
4 | 13 | 65533 | 265536 − 3 | | | |
5 | 65533 | |||||
6 | ||||||
m |
Čísla zde, která jsou vyjádřena pouze rekurzivní umocněním nebo Knuth šípy jsou velmi velké a zabírají příliš mnoho místa na to, aby byly notovány v jednoduchých desetinných číslicích.
Navzdory velkým hodnotám vyskytujícím se v této rané části tabulky byly definovány některé ještě větší počty, například Grahamovo číslo, které nelze zapsat žádným malým počtem Knuthových šipek. Toto číslo je konstruováno technikou podobnou rekurzivní aplikaci Ackermannovy funkce na sebe.
Toto je opakování výše uvedené tabulky, ale s hodnotami nahrazenými příslušným výrazem z definice funkce, aby se vzor jasně ukázal:
n m | 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)) |
Důkaz, že funkce Ackermann není primitivní rekurzivní
Funkce Ackermann v jistém smyslu roste rychleji než kterákoli jiná primitivní rekurzivní funkce a proto není sám o sobě primitivní rekurzivní.
Konkrétně to jeden ukazuje každé primitivní rekurzivní funkci existuje nezáporné celé číslo taková, že pro všechna nezáporná celá čísla ,
Jakmile je toto stanoveno, z toho vyplývá sám o sobě není primitivní rekurzivní, protože jinak řečeno by vedlo k rozporu .
Důkaz[12] postupuje následovně: definujte třídu všech funkcí, které rostou pomaleji než funkce Ackermann
a ukaž to obsahuje všechny primitivní rekurzivní funkce. Toho se dosahuje tím, že se to ukáže obsahuje konstantní funkce, následnickou funkci, projekční funkce a že je uzavřen pod operacemi složení funkce a primitivní rekurze.
Inverzní
Protože funkce F(n) = A(n, n) uvažovaný výše roste velmi rychle, jeho inverzní funkce, F−1, roste velmi pomalu. Tento inverzní Ackermannova funkce F−1 je obvykle označeno α. Ve skutečnosti, α(n) je menší než 5 pro jakoukoli praktickou velikost vstupu n, od té doby A(4, 4) je v pořadí .
Tato inverze se objeví v čase složitost některých algoritmy, tak jako disjunktně nastavená datová struktura a Chazelle Algoritmus pro minimální kostry. Někdy se v těchto nastaveních používá Ackermannova původní funkce nebo jiné variace, ale všechny rostou podobně vysokou rychlostí. Zejména některé upravené funkce zjednodušují výraz tím, že vylučují -3 a podobné výrazy.
Dvouparametrovou variantu inverzní Ackermannovy funkce lze definovat následovně, kde je funkce podlahy:
Tato funkce vzniká při přesnějších analýzách výše zmíněných algoritmů a poskytuje propracovanější časovou vazbu. V disjunktně nastavené datové struktuře m představuje počet operací while n představuje počet prvků; v algoritmu minimální kostry, m představuje počet hran, zatímco n představuje počet vrcholů. Několik mírně odlišných definic α(m, n) existovat; například, log2 n je někdy nahrazen n, a funkce podlahy je někdy nahrazena a strop.
Jiné studie mohou definovat inverzní funkci jedné, kde m je nastaveno na konstantu, takže inverze platí pro konkrétní řádek. [13]
Inverzní funkce Ackermanna je primitivní rekurzivní.[14]
Použít jako měřítko
Funkce Ackermann, díky své definici z hlediska extrémně hluboké rekurze, může být použita jako měřítko překladač Schopnost optimalizovat rekurzi. První publikované použití Ackermannovy funkce tímto způsobem bylo v roce 1970 Dragoș Vaidou[15] a téměř současně v roce 1971 Yngve Sundblad.[16]
Seminární práci Sundblad převzal Brian Wichmann (spoluautor Referenční hodnota Whetstone ) v trilogii článků napsaných v letech 1975 až 1982.[17][18][19]
Viz také
- Teorie vypočítatelnosti
- Dvojitá rekurze
- Rychle rostoucí hierarchie
- Funkce Goodstein
- Primitivní rekurzivní funkce
- Rekurze (informatika)
Reference
- ^ Monin & Hinchey 2003, str. 61.
- ^ A b Ackermann 1928.
- ^ "Desetinné rozšíření A (4,2)". kosara.net. 27. srpna 2000. Archivovány od originál 20. ledna 2010.
- ^ Calude, Marcus & Tevy 1979.
- ^ Hilbert 1926, str. 185.
- ^ van Heijenoort 1967.
- ^ Péter 1935.
- ^ Robinson 1948.
- ^ Ritchie 1965, str. 1028.
- ^ s obráceným pořadí parametrů
- ^ Buck 1963.
- ^ Woo, Chi (2009-12-17). "Ackermannova funkce není primitivní rekurzivní | planetmath.org". planetmath.org. Archivovány od originál dne 09.05.2013.
- ^ Pettie 2002.
- ^ Matos 2014.
- ^ Vaida 1970.
- ^ Sundblad 1971.
- ^ Wichmann 1976.
- ^ Wichmann 1977.
- ^ Wichmann 1982.
Bibliografie
- Ackermann, Wilhelm (1928). „Zum Hilbertschen Aufbau der reellen Zahlen“. Mathematische Annalen. 99: 118–133. doi:10.1007 / BF01459088.
- Buck, R.C. (1963). „Matematická indukce a rekurzivní definice“. Americký matematický měsíčník. 70 (2): 128–135. doi:10.2307/2312881.
- Calude, Cristian; Marcus, Solomon; Tevy, Ionel (listopad 1979). "První příklad rekurzivní funkce, která není primitivní rekurzivní". Historia Math. 6 (4): 380–84. doi:10.1016/0315-0860(79)90024-7.
- van Heijenoort, Jean (1967). Od Frege po Gödela: Kniha pramenů v matematické logice, 1879–1931. Harvard University Press.
- Hilbert, David (1926). „Über das Unendliche“. Mathematische Annalen. 95: 161–190. doi:10.1007 / BF01206605.
- Matos, Armando B (7. května 2014). „Inverzní funkce Ackermanna je primitivní rekurzivní“ (PDF).
- Monin, Jean-Francois; Hinchey, M. G. (2003). Porozumění formálním metodám. Springer. p. 61. ISBN 9781852332471.
- Péter, Rózsa (1935). "Konstruktion nichtrekursiver Funktionen". Mathematische Annalen. 111: 42–60. doi:10.1007 / BF01472200.
- Pettie, S. (2002). Msgstr "Dolní mez inverzního Ackermannova stylu pro on-line problém s ověřením minimálního rozpětí stromu". 43. výroční sympozium IEEE o základech informatiky, 2002. Sborník: 155–163. doi:10.1109 / SFCS.2002.1181892.
- Ritchie, Robert Wells (listopad 1965). "Třídy rekurzivních funkcí založených na Ackermannově funkci". Pacific Journal of Mathematics. 15 (3): 1027–1044. doi:10.2140 / pjm.1965.15.1027.
- Robinson, Raphael M. (1948). „Rekurze a dvojitá rekurze“. Bulletin of the American Mathematical Society. 54 (10): 987–93. doi:10.1090 / S0002-9904-1948-09121-2.
- Sundblad, Yngve (březen 1971). „Ackermannova funkce. Teoretická, výpočetní a formulovaná manipulativní studie“. BIT Numerická matematika. 11 (1): 107–119. doi:10.1007 / BF01935330.
- Vaida, Dragoș (1970). "Ověření kompilátoru pro jazyk podobný Algolu". Bulletin Mathématique de la Société des Sciences Mathématiques de la République Socialiste de Roumanie, Nouvelle Série. 14 (60) (4): 487–502. JSTOR 43679758.
- Wichmann, Brian A. (březen 1976). „Ackermannova funkce: Studie účinnosti volacích procedur“. BIT Numerická matematika. 16: 103–110. doi:10.1007 / BF01940783.
- Wichmann, Brian A. (červenec 1977). "Jak volat procedury nebo druhé myšlenky na Ackermannovu funkci". BIT Numerická matematika. 16: 103–110. doi:10.1002 / spe.4380070303.
- Wichmann, Brian A. (červenec 1982). „Nejnovější výsledky testu volání procedury, funkce Ackermanna“ (PDF).
externí odkazy
- "Ackermannova funkce". Encyclopedia of Mathematics. Stiskněte EMS. 2001 [1994].
- Weisstein, Eric W. "Ackermannova funkce". MathWorld.
Tento článek zahrnuje public domain materiál zNIST dokument:Černý, Paul E. „Ackermannova funkce“. Slovník algoritmů a datových struktur.
- Animovaná kalkulačka funkcí Ackermann
- Scott Aaronson, Kdo může pojmenovat největší číslo? (1999)
- Ackermannovy funkce. Zahrnuje tabulku některých hodnot.
- Hyper-operace: Ackermannova funkce a nová aritmetická operace
- Velká čísla Roberta Munafa popisuje několik variant definice A.
- Gabriel Nivasch, Inverzní Ackermann bez bolesti na inverzní Ackermannovu funkci.
- Raimund Seidel, Porozumění inverzní Ackermannově funkci (Prezentace ve formátu PDF).
- Funkce Ackermann napsaná v různých programovacích jazycích, (zapnuto Rosettský kód )
- Ackermannova funkce (Archivováno 2009-10-24) —Některé studie a programování Harry J. Smith.