Sätze und Zusammenhänge
Inhaltsverzeichnis |
Aufzählbarkeit und Semi-Entscheidbarkeit
Es geht hier um den Beweis des Satzes: Wenn eine Menge M semi-entscheidbar ist, dann ist M auch aufzählbar.
Da die Semi-Entscheidbarkeit mittels semi-charakteristischer Funktion \chi'_M behandelt wird, müssen wir damit rechnen, dass \chi'_M für gewisse Wörter w nicht definiert ist. Die zugehörige Prozedur würde ewig laufen und kein Ergebnis zurückgeben. Dies führt uns zu der Idee, Berechnungen zeitlich zu beschränken.
Zeitbeschränkte Berechnung
Hierfür wird ein Timer gestartet.
Er stellt einer zeitbeschränkten Berechnung 200 Zeiteinheiten (Ticks) zur Verfügung.
Diese Zeit reicht aus, um die 10. Fibonacci-Zahl zu berechnen:
Ein Teil der 200 Ticks ist dabei verbraucht worden.
Wenn wir die gleiche Berechnung nochmals durchführen, reicht die Zeit nicht aus. Die aktuelle Berechnung wird abgebrochen.
Noch deutlicher wird das bei einer sehr aufwändigen Berechnung, wie (fib 40). Es würde viele Stunden brauchen, um ein Ergebnis zu erzeugen. Uns reicht es also nicht zu erfahren, dass eine Rechnung in einer bestimmten Zeit nicht beendet werden konnte, während der Rechenprozess munter weiterläuft. Die Rechnung muss abgebrochen werden.
Wie wir an diesem Beispiel gut sehen konnten, ist das der Fall.
Aufgabe: Verändern Sie die Zahl der Ticks für die Berechnung von (fib 10) und versuchen Sie die Zeit herauszufinden, die zur Berechnung von (fib 10) mindestens benötigt wird.
Aufgabe: Zur Überprüfung Ihres experimentell ermittelten Resultats verwenden Sie die folgende Prozedur. Sie kann leicht für andere Anwendungen angepasst werden, indem man den (fib 10) entsprechend ersetzt.
Aufgrund der hier gewählten (unsichtbaren) Implementierung des Timer-Systems ist die Anzahl der erforderlichen Ticks Rechner- und Netz-unabhängig.
Aufgabe: Experimentieren Sie mit größeren Argumenten für fib, z.B. (fib 30), unter Vorgabe von lediglich 200 Ticks. Beachten Sie, dass eine Berechnung, für die die vorgegebene Zeit nicht ausreicht, automatisch abgebrochen wird.
Paarungsfunktion
Der programmtechnisch unproblematische Abbruch einer Berechnung bei Überschreitung einer vorgegebenen Zeit ist eine wichtige Eigenschaft, die wir im Folg. bei der Implementierung der Aufzählfunktion ausnützen werden.
Wir verwenden die Cantorsche Paarungsfunktion:
i = \pi(x,y) = \frac{(x+y)(x+y+1)}{2}+yDie Vorschriften zur Ermittlung von x und y lauten: y=i-t und x=w-y, wobei w=\left\lfloor\frac{\sqrt{8i+1}-1}{2}\right\rfloor und t=\frac{w(w+1)}{2}.
Mit dem folgenden Aufruf kann man einige der in der Tabelle eingetragenen Werte erzeugen.
$\begin{array}{c|cccccc}
x\backslash y & 0 & 1 & 2 & 3 & 4 & \dots\\\hline 0 & 0 & 2 & 5 & 9 & 14 & \dots \\ 1 & 1 & 4 & 8 & 13 & \dots & \\ 2 & 3 & 7 & 12 & \dots & & \\ 3 & 6 & 11 & \dots & & & \\ 4 & 10 & \vdots & \vdots & \vdots & \vdots &
\end{array}$
Das Format der ausgegebenen Listenelemente ist: ((x y) i).
Abzählbarkeit und Aufzählbarkeit
Aufbauschema der Wortmenge
g: A^*\mapsto \NN\setminus\{0\} wird durch die Prozedure wort->zahl berechnet.
g^{-1}: \NN\setminus\{0\}\mapsto A^* wird durch die Prozedure zahl->wort berechnet.
An welcher Position in der Menge A^* befindet sich das Wort cac?
Welches Wort steht an Position 34?
ÜA: Verändern Sie die oben eingegebenen Argumente und überprüfen Sie das jeweilige Ergebnis durch die entsprechende Umkehrfunktion.
Längenlexikografische Ordnung
Zur Definition der (zweistelligen) längenlexikografischen Ordnung ist es lediglich notwendig, die jeweils zugehörigen natürlichen Zahlen miteinander zu vergleichen (Kleinerrelation).
Entscheidbarkeit und Aufzählbarkeit
Satz: Eine Menge M, mit M\subseteq A^*, ist entscheidbar genau dann, wenn M und A^*\setminus M (Komplementmenge) aufzählbare Menge sind.
Wir wollen den Beweis des Teils "Wenn M und A^*\setminus M aufzählbare Mengen sind, dann ist M eine entscheidbare Menge." mit einem ausführbaren Beispiel illustrieren.
Wir wählen für f die Aufzählprozedur für die ungeraden Zahlen und für g die Aufzählprozedur für die geraden Zahlen. Damit erzeugen wir die betrachteten Mengen M und A^*\setminus M.
Von beiden Mengen schauen wir uns jeweils 10 Elemente an.
Wie man sieht, haben wir es mit Mengen von Zahlwörtern zu tun.
Die Prozedure für \chi_M wurde so konstruiert, wie im Beweis angegeben. Erproben Sie selbst einige Aufrufbeispiele mit selbstgewählten Wörtern aus A^*, also Wörtern natürlicher Zahlen.