Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
4.5. REKURSIVE FUNKTIONEN 115<br />
wir jetzt mit partiellen Funktionen (das ist nicht überraschend, denn die Tur<strong>in</strong>gberechenbaren<br />
Funktionen s<strong>in</strong>d im allgeme<strong>in</strong>en auch partiell).<br />
Def<strong>in</strong>ition. Für jede partielle (k+1)-stellige Funktion f(n1, . . .,nk, nk+1) bezeichnen<br />
wir mit µf die folgende partielle k-stellige Funktion:<br />
µf(n1, . . . , nk) ist die kle<strong>in</strong>ste Zahl i mit f(n1, . . . , nk, i) = 0;<br />
falls ke<strong>in</strong>e solche Zahl i existiert, ist µf(n1, . . .,nk) undef<strong>in</strong>iert.<br />
E<strong>in</strong>e Funktion heißt rekursiv (oder µ-rekursiv), wenn sie durch die Basisfunktionen<br />
und endlich viele Anwendungen von<br />
1. Verknüpfung,<br />
2. primitiver Rekursion und<br />
3. M<strong>in</strong>imierung µ<br />
def<strong>in</strong>iert werden kann.<br />
Beispiel 10. Diepartielle Vorgängerfunktion<br />
n − 1 falls n > 0<br />
pred(n) =<br />
undef. für n = 0<br />
ist rekursiv, denn für die Funktion<br />
f(n, m) = (succm) ˙− n<br />
(siehe Beispiel 8) gilt<br />
pred(n) = µ((succm) ˙− n).<br />
Beispiel 11. Die Subtraktion <br />
n − m falls n ≥ m<br />
sub(n, m) =<br />
undef. falls n < m<br />
ist rekursiv: wir haben<br />
sub(n, 0) = n<br />
sub(n, m + 1) = pred(sub(n, m)),<br />
also ist sub primitiv-rekursiv durch g(n) = π1 1 (n) und h(n, m, i) = pred(i) =<br />
pred(π3 3(n, m, i)) def<strong>in</strong>iert (g und h s<strong>in</strong>d rekursiv).<br />
Beispiel 12. Die Division<br />
k falls n = mk<br />
n : m =<br />
undef. falls n nicht durch m teilbar ist<br />
ist rekursiv. Der erste Versuch wäre, n : m als µ(n − m ∗ k) zu def<strong>in</strong>ieren, denn<br />
n − m ∗ k = 0 genau dann, wenn k = n : m. Das ergibt leider 0 : 0 = 0. Deswegen<br />
müssen wir n − m ∗ k durch n − (succ(pred(m)) ∗ k ersetzen:<br />
n : m = µf(n, m)<br />
für<br />
f(n, m, k) = n − succ(pred(m)) ∗ k = sub(n, mal(succ(pred(m))), k).<br />
Jetzt gilt: die Division durch m = 0 ist undef<strong>in</strong>iert, für m > 0 ist f(n, m, k) =<br />
n − m ∗ k und µf(n, m) = n : m genau dann, wenn n : m def<strong>in</strong>iert ist.<br />
Satz 2. Jede rekursive Funktion ist Tur<strong>in</strong>g-berechenbar.<br />
Beweis. Es genügt zu den Punkten 1. - 3. aus Satz 1 e<strong>in</strong>en vierten Punkt h<strong>in</strong>zuzufügen:<br />
4. Falls f Tur<strong>in</strong>g-berechenbar ist, so ist es auch µf.