Die Ackermann-Funktion besitzt zwei (natürliche) Eingabewerte m und n. Sie ist rekursiv definiert:
Ack(0,n) = n + 1
Ack(m,0) = Ack(m-1,1) (falls m > 0)
Ack(m,n) = Ack(m-1,Ack(m,n-1)) (falls m,n > 0)
In der Tabelle sind einige Funktionswerte angegeben:
m \ n
0
1
2
3
4
5
...
Bildungs-gesetz
0
1
2
3
4
5
6
..
succ(n)
1
2
3
4
5
6
7
..
Summe n + 2
2
3
5
7
9
11
13
..
Produkt 2⋅n + 3
3
5
13
29
61
125
253
..
Potenz 2n+3 - 3
4
13
216-3 =65533
265536-3
.
.
.
..
mit Hyper-Potenz
5
65533
.
.
.
.
.
..
mit Hyper- Hyper-Potenz
...
..
..
..
..
..
..
..
Das rekursive Bildungsgesetz lässt sich auch an der Tabelle ablesen:
In der ersten Zeile (m = 0) findet sich der Nachfolger von n.
Der erste Wert einer neuen Zeile (n = 0 und m > 1) entspricht dem zweiten Wert in der vorhergehenden Zeile.
Die anderen Werte (m > 0 und n > 0) erhält man, indem man den Wert links von dem zu berechnenden Wert in der Tabelle als Spaltenwert der vorherigen Zeile verwendet.
Ein Beispiel: Um Ack(2,1) zu berechnen, betrachtet man den Wert links davon: Ack(2,0) = 3. Nun entnimmt man der Zeile davor (m = 1) den Wert Ack(1,3) = 5.
Also ist Ack(2,1) = Ack(1,3) = 5 bzw. mit der Definition: Ack(2,1) = Ack(1,Ack(2,0)) = 5.
Historie:
Zu Beginn des 20. Jahrhunderts besaß man mit den Peano-Axiomen als Definition der natürlichen Zahlen, der Cantorschen Mengenlehre und der Prädikatenlogik erster Stufe (als Beweiskalkül) ein Fundament der Mathematik. Allerdings störten
Antinomien wie z.B. Ein Dorfbarbier rasiert alle Menschen im Ort, die sich nicht selbst rasieren. Gehört der Barbier zur Menge der Menschen, die sich selbst rasieren oder zur Menge der Menschen, die sich nicht selbst rasieren (tertio non datur - denn eine dritte Möglichkeit
gibt es nicht)? die Mathematiker. Deshalb kam der Gedanke auf, die Grundlagen der Mathematik - im Wesentlichen die Arithmetik (Rechnen mit Zahlen), die Mengenlehre und die Logik (Beweisverfahren) - auf eine solide Basis zu stellen.
Dies sollte mithilfe eines (nachweislich widerspruchsfreien) Axiomensystems und eines von allen anerkannten Beweiskalküls (logische Schlussfolgerungen) gelingen. Diese Theorie sollte in der Lage sein, den Wahrheitsgehalt jeder mathematischen Aussage
aus den Axiomen und mithilfe des Beweiskalküls herzuleiten und alle wahren Aussagen zu beweisen. Die Theorie musste demnach widerspruchsfrei und vollständig sein.
Das dies nicht möglich ist, hat Anfang der 1930er Jahre
Kurt Gödel
österreichischer Mathematiker (* 28. April 1906 in Brünn, Österreich-Ungarn, heute Tschechien; † 14. Januar 1978 in Princeton, New Jersey, Vereinigte Staaten)
Gödel war einer der bedeutendsten Logiker des 20. Jahrhunderts.
mit seinen berühmten Unvollständigkeitssätzen gezeigt.
Im Zuge der Bemühungen vermutete 1926 der bedeutende Mathematiker
David Hilbert
deutscher Mathematiker (* 23. Januar 1862 in Königsberg; † 14. Februar 1943 in Göttingen
Seit 1895 Professor in Göttingen, leitete dort die Glanzzeit der mathematischen Fakultät ein.
, dass jede berechenbare Funktion primitiv-rekursiv sei. 1928 gab
Wilhelm Ackermann deutscher Mathematiker (* 29. März 1896 in Schönebecke (Herscheid); † 24. Dezember 1962 in Lüdenscheid)
Er promovierte 1924 in Göttingen unter Hilbert.
die nach ihm benannte Funktion an als ein Beispiel für eine berechenbare Funktion, die nicht primitiv-rekursiv ist.
Die hier vorgestellte Version mit zwei Parametern wurde 1935 von
Rozsa Peter ungarische Mathematikerin (geborene Politzer; * 17. Februar 1905 in Budapest, Österreich-Ungarn; † 16. Februar 1977 in Budapest)
vorgestellt.
Dies führte als Erweiterung zum Begriff der μ-rekursiven Funktionen, die nach der Church-Turing-These intuitiv berechenbar sind.
Die Idee der Ackermann-Funktion ist, Rechenoperationen auf den Zahlen a und b als Folge aufzufassen. Sie umfasste ursprünglich drei Parameter (a,b,n). Neben den (natürlichen) Zahlen a und b bezeichnet n darin den Grad der Rechenoperation.
Für n = 0 ist die Rechenoperation die Nachfolgerfunktion succ:
Nachfolger(a) = succ(a) = a + 1 also a um 1 erhöhen
Für n = 1 ist die Rechenoperation die Addition:
Summe a + b = (...((a + 1) + 1) + ...) + 1 = succ(succ(... (succ(a))...)) also die Nachfolger-Funktion b-mal auf a anwenden
Für n = 2 ist die Rechenoperation die Multiplikation:
Produkt a ⋅ b = a + a + ... + a also die Addition b-mal auf a anwenden
Für n = 3 ist die Rechenoperation das Potenzieren:
Potenz ab = a ⋅ a ⋅ ... ⋅ a , also die Multiplikation b-mal auf a anwenden:
Ab n = 4 stehen 'normale' Operatoren nicht mehr zur Verfügung: a Hyper-Operator b bedeutet dann b-mal a potenzieren: \( \large{a^{a^{.^{a}}}} \)
So geht es weiter ...
Man erkennt: die Ackermann-Funktion lässt sich mit 'normalen' Operatoren nicht primitiv rekursiv darstellen. Gleichwohl ist sie berechenbar, wie die oben angegebene Rechenvorschrift ausweist.
In der Tabelle sind für n<4 Bildungsgesetze angegeben, die die Folge der Rechenoperationen widerspiegeln - allerdings wegen der Verwendung von nur zwei Parametern leicht modifiziert.