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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!