18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!