Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Skript in PDF - Theoretische Informatik - Technische Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
110 KAPITEL 4. CHURCHSCHE THESE<br />
Algorithmus durchgeführt werden: wir berechnen die Menge M aller Knoten z, für<br />
die e<strong>in</strong> Pfad von x nach z führt wie folgt. Initialwert: M := {x}. Rekursiv setzen wir<br />
M := M ∪E(M), wobei E(M) die Menge aller Endknoten w der Kanten (v, w) ∈ E<br />
mit v ∈ M bezeichnet. Der Algorithmus endet, wenn M nicht mehr wächst, und<br />
dann ist die Antwort genau dann JA, wenn y ∈ M ist.<br />
Satz 2. Jede kontextsensitive Sprache ist rekursiv.<br />
Beweis. Für jede kontextsensitive Grammatik G wollen wir e<strong>in</strong>en Algorithmus f<strong>in</strong>den,<br />
der für e<strong>in</strong> beliebiges Wort w entscheidet, ob w <strong>in</strong> L(G) liegt. Ke<strong>in</strong>e Ableitung<br />
von w benutzt Wörter länger als n, der Länge von w. Es genügt also, e<strong>in</strong>en Graphen<br />
zu konstruieren, dessen Knoten alles Wörter über Σ ∪ V e<strong>in</strong>er Länge ≤ n s<strong>in</strong>d und<br />
genau die Relation ⇒ zwischen diesen Wörtern formen. Dieser Graph lässt sich mit<br />
e<strong>in</strong>em e<strong>in</strong>fachen ” brute-force“-Algorithmus konstruieren, der alle möglichen Produktionskomb<strong>in</strong>ationen<br />
durchgeht. Jetzt reicht es, e<strong>in</strong>en Algorithmus zu benutzen,<br />
der entscheidet, ob im Graph e<strong>in</strong> Pfad von S zu w führt.<br />
Schlussbemerkung. Die folgende Hierarchie von Klassen von Sprachen, die ε nicht<br />
enthalten, heißt Chomsky-Hierarchie:<br />
regulär ⊂ kontextfrei ⊂ kontextsensitiv ⊂ rekursiv ⊂ rekursiv-aufzählbar.<br />
Jede dieser Sprachklassen ist e<strong>in</strong> echter Teil der nächst höheren: die Sprache {0 n 1 n ;<br />
n ≥ 1} ist kontextfrei, aber nicht regulär (siehe 1.8 und 2.1), die Sprache {a n b n c n ;<br />
n ≥ 0} ist kontextsensitiv, aber nicht kontextfrei. Im nächsten Kapitel zeigen wir<br />
e<strong>in</strong>e Sprache Lhalt, die rekursiv aufzählbar, aber nicht rekursiv ist. Es gibt auch<br />
rekursive Sprachen, die nicht kontextsensitiv s<strong>in</strong>d, das beweisen wir aber nicht.<br />
4.5 Rekursive Funktionen<br />
Berechenbare Funktionen können auch ganz anders modelliert werden, als mit Masch<strong>in</strong>en,<br />
die sie berechnen: wir gehen von sehr e<strong>in</strong>fachen Funktionen (z.B. den konstanten<br />
Funktionen und der Nachfolgerfunktion succ) aus und wenden dann Rekursion<br />
und Verknüpfung an. Wir erhalten e<strong>in</strong>e sehr reiche Kollektion von Funktionen,<br />
die primitiv-rekursiv heißen. Es zeigt sich, dass jede primitiv-rekursive Funktion<br />
Tur<strong>in</strong>g-berechenbar ist. Leider gilt die umgekehrte Aussage nicht: es gibt Tur<strong>in</strong>gberechenbare<br />
Funktionen, die nicht primitiv-rekursiv s<strong>in</strong>d. Deshalb wird noch e<strong>in</strong><br />
M<strong>in</strong>imierungsoperator µ e<strong>in</strong>geführt. Funktionen, die sich mit primitiver Rekursion<br />
und M<strong>in</strong>imierung ableiten lassen, heißen rekursiv (oder auch µ-rekursiv). Daraus ergibt<br />
sich e<strong>in</strong>e neue Charakterisierung von Tur<strong>in</strong>g-berechenbaren Funktionen: es s<strong>in</strong>d<br />
genau die rekursiven Funktionen. Das ist e<strong>in</strong>e weitere Bestätigung der Churchschen<br />
These.<br />
Wir wollen also erst aus e<strong>in</strong>fachen Funktionen, die Basisfunktionen heißen, mit Hilfe<br />
von Verknüpfung und Rekursion weitere Funktionen def<strong>in</strong>ieren. Die Fakultätsfunktion<br />
def<strong>in</strong>iert man z.B. rekursiv mit Multiplikation, die Multiplikation wiederum<br />
rekursiv mit Addition und die Addition rekursiv mit der Nachfolgerfunktion succ.<br />
Hier endet aber diese Kette: succ ist e<strong>in</strong>e der Basisfunktionen. Wir arbeiten hier<br />
mit k-stelligen Funktionen natürlicher Zahlen, d.h. mit Funktionen<br />
k k f : → , wobei = × · · · × (k-mal), für k = 1, 2, 3, . . ..<br />
f hat also k Variablen im Bereich<br />
. Die konstante Funktion Ki mit<br />
Ki(n) = i für alle n<br />
gilt als 0-stellig, da sie von ke<strong>in</strong>er Variablen abhängt. Nicht-konstante Funktionen<br />
s<strong>in</strong>d k-stelllig für k ≥ 1.<br />
Besonders e<strong>in</strong>fache k-stellige Funktionen s<strong>in</strong>d die Projektionen πk 1 , . . . , πk k<br />
jektion πk i ordnet jedem k-Tupel se<strong>in</strong> i-tes Element zu,<br />
: die Pro