Definieren Sie einige Grundfunktionen:
pni:Nn→N:(x1,x2,…,xn)↦xi
Von nun an werde ich , um ( x 1 , x 2 , … , x n ) zu bezeichnen.xn¯(x1,x2,…,xn)
Eine Komposition definieren:
Gegebene Funktionen
- jeweils mit der Signatur N k → Ng1,g2,…,gmNk→N
- f:Nm→N
Konstruieren Sie die folgende Funktion:
h:Nk→N:xk¯↦h(xk¯)=f(g1(xk¯),g2(xk¯),…,gm(xk¯))
Primitive Rekursion definieren:
Gegebene Funktionen
- f:Nk→N
- g:Nk+2→N
Konstruiere die folgende (stückweise) Funktion:
h:Nk+1→N:(xk¯,y+1)↦{f(xk¯),g(xk¯,y,h(xk¯,y)),y+1=0y+1>0
Alle Funktionen, die unter Verwendung von Kompositionen und primitiver Rekursion auf Basisfunktionen ausgeführt werden können , werden als primitiv rekursiv bezeichnet . Per Definition heißt es so. Es besteht zwar eine Verknüpfung mit Funktionen, die sich selbst aufrufen, es ist jedoch nicht erforderlich, sie miteinander zu verknüpfen. Sie könnten Rekursion als Homonym betrachten.
Diese obige Definition und Konstruktion wurde von Gödel konstruiert (einige andere Personen waren ebenfalls beteiligt), um alle Funktionen zu erfassen, die berechenbar sind, dh es gibt eine Turing-Maschine für diese Funktion. Beachten Sie, dass das Konzept einer Turing-Maschine noch nicht beschrieben wurde oder zumindest sehr vage war.
Zum Glück kam jemand namens Ackermann und definierte die folgende Funktion:
- Ack:N2→N
- Ack(0,y)=y+1
- Ack(x+1,0)=Ack(x,1)
- Ack(x+1,y+1)=Ack(x,Ack(x+1,y))
Diese Funktion ist berechenbar, aber es gibt keine Möglichkeit, sie nur mit den obigen Konstruktionen zu konstruieren! (dh ist nicht primitiv rekursiv) Dies bedeutet, dass Gödel und seine Gruppe nicht alle berechenbaren Funktionen in ihrer Konstruktion erfassen konnten!Ack
Gödel musste seine Klasse von Funktionen erweitern, damit konstruiert werden konnte. Er tat dies, indem er Folgendes definierte:Ack
Grenzenlose Minimierung
- g:Nk→N
- IF [f(xk¯,y)=0 AND f(xk¯,z) is defined ∀z<y AND f(xk¯,z)≠0]
g(xk¯)=y
g( xk¯) ist nicht definiert.
Letzteres mag schwer zu verstehen sein, aber es bedeutet im Grunde genommen, dass G( ( x1, x2, … , Xk) ) ist die kleinste Wurzel von f (wenn eine Wurzel existiert).
Alle Funktionen, die mit allen oben definierten Konstruktionen erstellt werden können, werden als rekursiv bezeichnet . Auch hier ist der Name rekursiv und muss nicht unbedingt mit Funktionen korrelieren, die sich selbst aufrufen. Betrachten Sie es wirklich als ein Homonym.
Rekursive Funktionen können entweder teilweise rekursive Funktionen oder vollständig rekursive Funktionen sein . Alle partiellen rekursiven Funktionen sind vollständig rekursive Funktionen. Alle primitiven rekursiven Funktionen sind total. Betrachten Sie als Beispiel für eine teilweise rekursive Funktion, die nicht vollständig ist, die Minimierung der Nachfolgerfunktion. Die Nachfolgerfunktion hat keine Wurzeln, daher ist ihre Minimierung nicht definiert. Ein Beispiel für eine vollständig rekursive Funktion (die eine Minimierung verwendet) istA c k.
Jetzt konnte Gödel die bauen A c kfunktionieren auch mit seiner erweiterten Klasse von Funktionen. Tatsächlich kann jede Funktion, die von einer Turingmaschine berechnet werden kann, mit den obigen Konstruktionen dargestellt werden, und umgekehrt kann jede Konstruktion von einer Turingmaschine dargestellt werden.
Wenn Sie neugierig sind, können Sie versuchen, Gödels Klasse zu vergrößern. Sie können versuchen, das Gegenteil von unbegrenzter Minimierung zu definieren. Das heißt, unbegrenzte Maximierung, dh die Funktion, die die größte Wurzel findet. Möglicherweise stellen Sie jedoch fest, dass die Berechnung dieser Funktion schwierig (unmöglich) ist. Sie können in das Problem der ausgelasteten Biber lesen , bei dem versucht wird , eine unbegrenzte Maximierung anzuwenden.