Prinzipielle Grenzen der Berechenbarkeit: Unterschied zwischen den Versionen
K (→Kontrollfragen) |
K (→Wie viele Algorithmen gibt es?) |
||
Zeile 117: | Zeile 117: | ||
Wie bei der Definition des Begriffes Algorithmus bereits erwähnt wurde, ist der Begriff der Endlichkeit von großer Bedeutung. Da ein Algorithmus eine endliche Folge von Anweisungen ist, besteht ein Algorithmus auch nur aus endlich vielen Zeichen. Mit der oben beschriebenen Gödelisierung lässt sich also jeder Algorithmus auch als eine natürliche Zahl auffassen. Weil dann die Menge aller Algorithmen eine Teilmenge der natürlichen Zahlen ist, sind die Algorithmen abzählbar. | Wie bei der Definition des Begriffes Algorithmus bereits erwähnt wurde, ist der Begriff der Endlichkeit von großer Bedeutung. Da ein Algorithmus eine endliche Folge von Anweisungen ist, besteht ein Algorithmus auch nur aus endlich vielen Zeichen. Mit der oben beschriebenen Gödelisierung lässt sich also jeder Algorithmus auch als eine natürliche Zahl auffassen. Weil dann die Menge aller Algorithmen eine Teilmenge der natürlichen Zahlen ist, sind die Algorithmen abzählbar. | ||
+ | Durch die Gödelisierung kann man die Algorithmen als Funktionen natürlicher Zahlen ansehen. Wir schreiben die Algorithmen und die möglichen Eingaben als eine unendlich große zweidimensionale Tabelle auf. An der Seite werden die Algorithmen bzw. die Funktionen und als Spaltenüberschriften werden die möglichen Eingaben angetragen: | ||
+ | |||
+ | {| {{Prettytable}} | ||
+ | |- style="background-color:#8DB6CD" | ||
+ | | style="background-color: #FFFFFF;"| || 1 || 2 || 3 || 4 || 5 || ... | ||
+ | |- | ||
+ | | style="background-color: #8DB6CD;"|<math>f_1</math> || <math>f_1(1)</math> || <math>f_1(2)</math> || <math>f_1(3)</math> || <math>f_1(4)</math> || <math>f_1(5)</math> || ... | ||
+ | |- | ||
+ | | style="background-color: #8DB6CD;"|<math>f_2</math> || <math>f_1(1)</math> || <math>f_1(2)</math> || <math>f_2(3)</math> || <math>f_2(4)</math> || <math>f_2(5)</math> || ... | ||
+ | |- | ||
+ | | style="background-color: #8DB6CD;"|<math>f_3</math> || <math>f_3(1)</math> || <math>f_3(2)</math> || <math>f_3(3)</math> || <math>f_3(4)</math> || <math>f_3(5)</math> || ... | ||
+ | |- | ||
+ | | style="background-color: #8DB6CD;"|<math>f_4</math> || <math>f_4(1)</math> || <math>f_4(2)</math> || <math>f_4(3)</math> || <math>f_4(4)</math> || <math>f_4(5)</math> || ... | ||
+ | |- | ||
+ | | style="background-color: #8DB6CD;"|<math>f_5</math> || <math>f_5(1)</math> || <math>f_5(2)</math> || <math>f_5(3)</math> || <math>f_5(4)</math> || <math>f_5(5)</math> || ... | ||
+ | |- | ||
+ | | style="background-color: #8DB6CD;"|... || ... || ... ||... || ... || ... || ... | ||
+ | |} | ||
+ | |||
+ | Diese Tabelle enthält alle Funktionen/Algorithmen. In der ersten Zeile stehen alle Funktionswerte der Funktion <math>f_1</math>, in der zweiten Zeile stehen alle Funktionswerte der Funktion <math>f_2</math> usw. | ||
+ | |||
+ | Wir definieren uns nun eine Funktion <math>g</math> wie folgt: | ||
<math> | <math> | ||
p(n)= | p(n)= |
Version vom 25. September 2009, 21:50 Uhr
Inhaltsverzeichnis |
Algorithmus
Definition
Ein Algorithmus ist eine Verarbeitungsvorschrift, die aus einer endlichen Folge von eindeutig ausführbaren Anweisungen besteht, die aus endlich vielen Eingabedaten endlich viele Ausgabedaten erzeugt und mit der man eine Vielzahl gleichartiger Aufgaben lösen kann.
Wie du sicher bemerkt hast, kommt in dieser Definition sehr oft der Begriff "endlich" vor. Dies wird später noch eine entscheidende Rolle spielen!
Wobei handelt es sich um einen Algorithmus? (Lösen einer quadratischen Gleichung) (!Auflistung aller Primzahlen) (Konstruieren eines Kreises durch 3 Punkte, die nicht auf einer Gerade liegen) (Wechseln eines Autoreifens) (!Schreiben einer Eins in der Schulaufgabe)
Gödelisierung
Wir versuchen jetzt Hilfe von der Mathematik zu erhalten. Dazu wandelt man Probleme in eine Form um, die es erlaubt, Wissen über Abbildungen innerhalb der natürlichen Zahlen zu benutzen. Um dies zu erreichen, wandelt man die Ein- und Ausgabedaten in natürliche Zahlen um. Dies kann mehr oder minder geschickt erfolgen. Kurt Gödel hat sich mit solchen Fragestellungen beschäftigt, weshalb man entsprechende Verfahren Gödelisierungen nennt.
Die 26 Buchstaben des Alphabets werden mit den Zahlen 1 bis 26 kodiert. Damit könnte man ein geschriebenes Wort als Zahl schreiben. Dekodiere die Zahl "26235945212097"! Welche Buchstabenfolge erhält man nach dem Dekodieren?
Möglichkeiten für das dekodierte Wort sind z.B.: ZWEIDEUTIG oder BFBCEIDEBATIG oder ...
|
Nun werden die 26 Buchstaben des Alphabets wie folgt kodiert: Den 26 Buchstaben des Alphabets wird jeweils eine eindeutige Zahl zwischen 1 und 26 zugeordnet. Ein Wort wird nun mit fortlaufenden Primzahlpotenzen kodiert, also wenn a die Zahl 1, b die Zahl 2, c die Zahl 3 zugeordnet wird, dann wird das Wort abbca wie folgt kodiert:
Multipliziert man diese Zahlen miteinander, erhält man die Zahl . Da die Primfaktorzerlegung eindeutig ist, wenn man die Primzahlpotenzen aufsteigend ordnet, kann man aus jeder Zahl das zugehörige Wort erzeugen. Welche Buchstabenfolge erhält man, wenn man die Zahl dekodiert?
Das dekodierte Wort lautet: INFORMATIK. Diese Art der Kodierung ist eher von theoretischer Bedeutung, weil man sehr schnell extrem große Zahlen erhält. Das obige Beispiel ergäbe ausmultipliziert ca. . Es ist auch ziemlich aufwändig diese Zahlen in Primfaktoren zu zerlegen. Aus diesem Grund sind große Primzahlen für die Verschlüsselungstechnik so wichtig.
|
Nun werden die 26 Buchstaben des Alphabets mit den Zahlen 01 bis 26 kodiert. Schreibt man die kodierten Buchstaben hintereinander, so erhält man eine Zahl. Dekodiere die Zahl 26230509060512121519.
Das dekodierte Wort lautet: ZWEIFELLOS
|
Mit der Gödelisierung lassen sich beliebige Ein- und Ausgaben in natürliche Zahlen umwandeln und umgekehrt. Diese Vorgehensweise wird häufig in der theoretischen Informatik verwendet, da sich Algorithmen dadurch als Funktionen über den natürlichen Zahlen abbilden lassen. Zur Umwandlung existieren verschiedenste Verfahren.
Definition
Eine Gödelisierung ist eine Abbildung von der Menge der Ein- und Ausgaben eines Algorithmus in die Menge der natürlichen Zahlen : . Die Abbildung muss dabei noch drei Bedingungen erfüllen:
- muss injektiv sein, d.h. jede natürliche Zahl darf höchstens das Bild von einem Programm sein; aber nicht jede natürliche Zahl muss auch ein Programm sein
- Die Bildmenge muss entscheidbar sein, es muss also einen Algorithmus geben, der Ja ausgibt, wenn die Zahl einem Programm entspricht und Nein, wenn es sich um kein Programm handelt.
- Die Umkehrfunktion muss berechenbar sein, d.h. man muss aus der natürlichen Zahl auch wieder das Programm bekommen können.
Welches der obigen Verfahren eignet sich für eine Gödelisierung? (!Kodierung mit Zahlen 1 bis 26) (Kodierung mit Zahlen 01 bis 26) (Kodierung mit Primzahlpotenzen)(!Keines der Verfahren)
Durch die Hilfe der Gödelisierung kann man also jeden Algorithmus als eine Abbildung von einer natürlichen Zahl auf eine andere ansehen.
Wie viele Algorithmen gibt es?
Wie bei der Definition des Begriffes Algorithmus bereits erwähnt wurde, ist der Begriff der Endlichkeit von großer Bedeutung. Da ein Algorithmus eine endliche Folge von Anweisungen ist, besteht ein Algorithmus auch nur aus endlich vielen Zeichen. Mit der oben beschriebenen Gödelisierung lässt sich also jeder Algorithmus auch als eine natürliche Zahl auffassen. Weil dann die Menge aller Algorithmen eine Teilmenge der natürlichen Zahlen ist, sind die Algorithmen abzählbar.
Durch die Gödelisierung kann man die Algorithmen als Funktionen natürlicher Zahlen ansehen. Wir schreiben die Algorithmen und die möglichen Eingaben als eine unendlich große zweidimensionale Tabelle auf. An der Seite werden die Algorithmen bzw. die Funktionen und als Spaltenüberschriften werden die möglichen Eingaben angetragen:
1 | 2 | 3 | 4 | 5 | ... | |
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ... | ... | ... | ... | ... | ... |
Diese Tabelle enthält alle Funktionen/Algorithmen. In der ersten Zeile stehen alle Funktionswerte der Funktion , in der zweiten Zeile stehen alle Funktionswerte der Funktion usw.
Wir definieren uns nun eine Funktion wie folgt:
Algorithmus p(n) muss in Liste sein => p=f_e => p(e)=_Def f_e(e)+1 und f_e(e) => Widerspruch
Es gibt also mehr Abbildungen als Algorithmen.
Churchsche These
Entscheidbarkeit
Berechenbarkeit
Fleißige Biber
Halte-Problem
Die Schüler der Kollegstufe besuchen verschiedene Kurse. Jeder Kurs findet einmal pro Woche statt. Belegt ein Schüler zwei Kurse, so dürfen diese nicht gleichzeitig stattfinden. Kann man mit verschiedenen Terminen auskommen? Erstelle hierzu eine Graphen, wobei ein Knoten einem Kurs entspricht. Zwei Knoten werden genau dann miteinander verbunden, wenn ein Schüler die beiden entsprechenden Kurse besucht. Man kann die Aufgabe als sogenanntes k-Farbproblem auffassen. |
Kontrollfragen
Warum Gödelisierung?