Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00
Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00
Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4. Eigenschaften von <strong>Algorithmen</strong><br />
Dann ist für , also ist für immer . <br />
kommt demnach in der obigen Folge nicht vor. Offensichtlich ist aber eine einstellige<br />
Funktion auf <strong>und</strong> müßte somit in der obigen Folge aller dieser Funktionen<br />
vorkommen. Der Widerspruch läßt sich nur lösen, wenn wir die Annahme fallenlassen,<br />
sei abzählbar.<br />
Berechenbare Funktionen sind also unter allen Funktionen genauso “seltene”<br />
Ausnahmen wie ganze (oder natürliche oder rationale) Zahlen unter den reellen.<br />
Bemerkung 4.5 Die obige Beweismethode ist unter dem Namen “Cantorsches Diagonalverfahren”<br />
bekannt. Auf ähnliche Weise hat Cantor erstmals bewiesen, daß<br />
die reellen Zahlen überabzählbar sind.<br />
Nachdem wie wissen, daß berechenbare Funktionen eher seltene Ausnahmen<br />
sind, ist die Frage naheliegend, ob sich nicht-berechenbare Funktionen konkret<br />
angeben lassen. Um zu beweisen, daß eine gegebene Funktion berechenbar ist,<br />
braucht man nur einen Algorithmus anzugeben, der sie berechnet. So schwierig<br />
dies in Einzelfall sein mag, so ist es doch prinzipiell schwieriger zubeweisen,<br />
daß eine gegebene Funktion nicht berechenbar ist. Die erfordert nämlich eine Beweisführung,<br />
über alle denkbaren <strong>und</strong> möglichen <strong>Algorithmen</strong>!<br />
Derartige Ergebnisse über <strong>Algorithmen</strong> lassen sich nur gewinnen, wenn man<br />
den Begriff des Algorithmus mit hinreichender mathematischer Genauigkeit definiert,<br />
wie dies am Anfang dieses Kapitels geschah.<br />
4.2.2. Konkrete Nicht-berechenbare Funktionen<br />
Nun kehren wir zu dem Problem zurück, eine nicht berechenbare Funktion konkret<br />
anzugeben. Wir benutzen dazu ein beliebiges <strong>Algorithmen</strong>modell, welches folgenden<br />
Kriterien genügt:<br />
1. Berechnet werden partielle Funktionen £ £ über einem festen Alphabet<br />
.<br />
2. Auch die <strong>Algorithmen</strong> selbst lassen sich als Text über darstellen.<br />
Damit können <strong>Algorithmen</strong>texte wiederum als Eingaben für <strong>Algorithmen</strong> genommen<br />
werden!<br />
Bemerkung 4.6 Z.B. lassen sich Markov-<strong>Algorithmen</strong> leicht als Text über einem<br />
geeigneten Alphabet codieren. Codierungen von <strong>Algorithmen</strong> durch natürliche<br />
Zahlen gehen auf K. Gödel (1931) zurück. Man spricht von “Gödelisierung”.<br />
Definition 4.9 Sei Ü £ . Dann bezeichnet Ü die vom Algorithmus mit Text<br />
Ü berechnete Funktion. Ist Ü kein sinnvoller <strong>Algorithmen</strong>text, so sei Ü überall<br />
<strong>und</strong>efiniert.<br />
84