Berechnung der Ackermann-Funktion


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.


Mit Hilfe der Rekursionsvorschrift rechnet man:

Ack(2,1) = Ack(1,Ack(2,0)) = Ack(1,Ack(1,1)) = Ack(1,Ack(0,Ack(1,0))) = Ack(1,Ack(0,Ack(0,1))) = Ack(1,Ack(0,2)) = Ack(1,3) = Ack(0,Ack(1,2)) = Ack(0, Ack(0,Ack(1,1))) = Ack(0, Ack(0,Ack(0,Ack(1,0)))) = Ack(0,Ack(0,Ack(0,Ack(0,1)))) = Ack(0, Ack(0,Ack(0,2))) = Ack(0,Ack(0,3)) = Ack(0,4) = 5


Berechnung von Ack(m,n):


                  


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.