Berechenbarkeit und Komplexit¨at Vorlesung 1
Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7
RWTH Aachen
13. Oktober 2014
Thema der Vorlesung
Unter welchen Grundgesetzen arbeitet die Informatik?
Welche prinzipiellen Grenzen gibt es f¨ur den Einsatz von Algorithmen?
Welche Probleme sind mit Algorithmen / Programmen l¨osbar?
Welche nicht?
Zwei Aspekte:
Prinzipielle L¨osbarkeit (“Berechenbarkeit”) L¨osbarkeit mit praktisch vertretbarem Aufwand (“Komplexit¨at”)
Stellung in der Informatik
Berechenbarkeit:
Kernresultate in den 1930’er und 1940’er Jahren Komplexit¨at: 1970’er Jahre
Fundament der Wissenschaft Informatik
Vorgehensweise und Methoden
Vorgehensweise:
Mathematisch pr¨azise Formulierungen Training in pr¨azisen Argumentationen Methoden:
Wechselseitige Simulation von Rechnermodellen Problemreduktionen
Plan heute und Freitag
1 Organisatorisches
2 Algorithmische Probleme
3 Begriff “Algorithmus”
4 Pr¨azisierung durch das Modell der Turingmaschine
Vorlesungstermine
montags 10.15 - 11.45
an ausgew¨ahlten Terminen freitags 12.15 - 13.45 (siehe Vorlesungsplan auf der BuK-Webseite)
Organisation von ¨ Ubungen und Klausur
Zulassung und Leistungsnachweis:
mindestens 50 Punkte
4 Punkte f¨ur das korrekte L¨osen der ausgezeichneten Ubungsaufgaben¨
2 Punkte f¨ur das Vortragen einer L¨osung in den Ubungsgruppen¨
90 Punkte in der Pr¨asenz¨ubung im Januar
Aktueller Punktestand kann ¨uber L2P abgerufen werden
Ubungsbl¨atter ¨
Ver¨offentlichung: Mittwochs um 14:00 Uhr 1. Blatt wird am 15. Oktober ver¨offentlicht
Abgabe: am darauffolgenden Mittwoch um 14:00 Uhr im Sammelkasten am Lehrstuhl f¨ur Informatik 1 (Erdgeschoss des Geb¨audes E1 im Informatikzentrum, vor der T¨ure des Lehrstuhls auf der linken Seite)
Ubungen k¨onnen in Gruppen bis zu drei Personen abgegeben¨ werden.
Bonuspunkte:
Ubungspunkte werden im kleinen Umfang in der¨ Bachelorklausur ber¨ucksichtigt:
Bei 50 + 10k erworbenen ¨Ubungspunkten f¨urk ∈ {1, ...,6}
werdenk Punkte angerechnet.
Pr¨ufungen
9. Januar: Pr¨asenz¨ubung 27. Februar: Bachelorklausur 26. M¨arz: Wiederholungsklausur Anmeldung:
Ubung: ¨uber CampusOffice bis¨ 17. Oktober um 10:00 Uhr Zuteilung zu den ¨Ubungsgruppen wird am 17. Oktober bekannt gegeben
Erste ¨Ubungen finden in der Woche 20.-24. Oktober statt.
Klausur: ¨uber CampusOffice bis 21. November Homepage:
http://www-i1.informatik.rwth-aachen.de/Lehre/WS1415/VBuK.php Fragen an: buk-i1@cs.rwth-aachen.de
Was ist ein Problem ?
Informelle Umschreibung des BegriffesProblem:
F¨ur gegebene Eingaben (oder ohne Eingabe gestartet)
soll der Algorithmus ...
... bestimmte Ausgaben produzieren.
Wir ben¨otigen pr¨azisere Definitionen ...
Etappen
1 Pr¨azise Festlegung, was ein “Berechnungsproblem” ist.
2 Merkmale von Algorithmen: Was macht einen Algorithmus aus?
3 Angabe eines speziellen Typs von Algorithmus
(Turingmaschine), mit dem man alle denkbaren Algorithmen simulieren kann.
Sp¨ater: Angabe von Berechnungsproblemen, die sich nicht durch Algorithmen l¨osen lassen.
Berechnungsprobleme
EinBerechnungsproblem verlangt die Transformation oder die Erzeugung von Daten.
Hier beschr¨anken wir uns auf Daten, die durch W¨orter dargestellt sind.
Alternative:Algorithmen ¨uber nat¨urlichen Zahlen.
Wegen Korrespondenz W¨orter↔ Zahlen kein wesentlicher Unterschied.
Wir stellen eine gew¨unschte Datentransformation durch eine Wortfunktion dar.
Alphabete und W¨orter
Ein- und Ausgaben sind W¨orter ¨uber einem Alphabet Σ.
H¨aufig benutzt: Σbool ={0,1}, Σtast als Alphabet der Symbole auf einer Standardtastatur.
Σk ist die Menge aller W¨orter der L¨ange k, z.B.
{0,1}3 = {000,001,010,011,100,101,110,111}
Das leere Wort, also das Wort der L¨ange 0, bezeichnen wir mit ǫ, d.h. Σ0 ={ǫ}.
Σ∗ =S
k∈N0Σk ist derKleenesche Abschlussvon Σ.
Die W¨orter in Σ∗ lassen sich in kanonischer Reihenfolge auflisten, der L¨ange nach, und bei gleicher L¨ange lexikographisch:
ε,0,1,00,01,10,11,000,001,010,011,100,101, . . .
Berechnungsprobleme: Beispiele
Beispiel 1: Division durch 7
Zu Dezimalzahl finde den Quotienten durch 7 ohne Rest.
Wortfunktion:
f1 :{0, . . . ,9}∗ → {0, . . . ,9}∗.
(Wir setzenf1(ε) =ε. Analog auch in den weiteren Beispielen.)
Beispiel 2: Teilbarkeit durch 7
Zu Dezimalzahl entscheide, ob sie durch 7 teilbar ist.
Wortfunktion:
f2 :{0, . . . ,9}∗ → {0,1}
mitf2(u) = 1 falls Dezimalzahl u durch 7 teilbar, sonst = 0.
Weitere Beispiele
Beispiel 3: Primfaktorzerlegung
Zu einer Dezimalzahl finde ihre Primfaktorzerlegung.
Beispiel: 1207→2|2|2|3|5.
Wortfunktion:
f3 :{0, . . . ,9}∗ 7→ {0, . . . ,9,|}∗.
Beispiel 4: Teilerfremdheit
Zu zwei Dezimalzahlen teste, ob sie teilerfremd sind.
Beispiel: 20,217→1 (teilerfremd); 20,257→0 (nicht teilerfremd).
Wortfunktion:
f4 : ({0, . . . ,9}∗#{0, . . . ,9}∗ → {0,1}.
Entscheidungsprobleme als Sprachen
Beispiele 2 und 4 sind Ja-Nein-Fragen.
Derartige Entscheidungsproblemesind von der Form f : Σ∗ → {0,1}, wobei wir 0 als
”Nein“ und 1 als
”Ja“
interpretieren.
Sei L=f−1(1)⊆Σ∗ die Menge derjenigen Eingaben, die mit
”Ja“ beantwortet werden.
L ist eine Teilmenge der W¨orter ¨uber dem Alphabet Σ. Eine solche Teilmenge wird allgemein als Sprachebezeichet.
Wir geben drei weitere Entscheidungsprobleme an.
Ein Graphenproblem
Graphzusammenhang
Problemstellung: F¨ur einen gegebenen GraphenG soll bestimmt wer- den, obG zusammenh¨angend ist.
Der GraphG liege dabei in einer geeignete Kodierungcode(G)∈Σ∗ vor, z.B. als bin¨ar kodierte Adjazenzmatrix.
Die zu diesem Entscheidungsproblem geh¨orende Sprache ist L = { w ∈Σ∗ | ∃ Graph G:w =code(G) und
G ist zusammenh¨angend} .
Nullstellen von Polynomen
Hilberts 10.Problem
Zu einem Polynomp(x1, . . . ,xn) ¨uberZentscheide, ob es eine Null- stelle (z1, . . . ,zn)∈Zn gibt.
Beispiele
3x1+x2−x12
x22
7→1 (denn (z1,z2) = (0,0) ist Nullstelle).
x12
+ 17→0.
Wir geben Polynome als W¨orter vor, etwa in der LaTeX-Notation.
Entsprechende Sprache: Menge der W¨orter ¨uber Σtast, die ein Polynom mit Nullstelle darstellen.
Programmtermination
Termination von Java-Programmen
Zu einem Java-Programm mit integer-Eingabevariablen teste, ob es f¨ur Eingabe 0 terminiert.
Zugeh¨orige Sprache: Menge der W¨orter ¨uber Σtast, die ein Java-Programm darstellen, welches mit 0 initialisiert terminiert.
Zentrale Fragestellung
Welche Funktionen sind durch einen Algorithmus berechenbar?
bzw.
Welche Sprachen kann ein Algorithmus entscheiden?
Wir m¨ussen kl¨aren, was eigentlich ein Algorithmus ist.
Algorithmen
verarbeiten Eingabew¨orter schrittweise;
sind durch endlichen Text eindeutig festgelegt;
liefern bei Termination eine Ausgabe.
Der AlgorithmusA arbeite ¨uber dem Alphabet Σ.
Wir ordnen jedem AlgorithmusAeine FunktionfA zu:
TerminiertA bei Eingabew mit Ausgabev, so setzen wir fA(w) =v
TerminiertA bei Eingabew nicht, so seifA(w) undefiniert, und wir schreiben fA(w) =⊥
Partielle und totale Funktionen
Eine Funktionf mit Argumenten inM und Werten in N heißt partielle Funktion vonM nach N.
Notation:f :M N
Def(f) ={m∈M |f(m) ist definiert}
“Definitionsbereich von f”
Bild(f) ={n ∈N| ∃m∈M :f(m) =n}
“Bildbereich vonf”
GiltDef(f) =M, nennen wir f total (aufM) und schreiben f :M →N
Funktion f
ADie durchA¨uber Σ berechnete Funktion fA : Σ∗ Σ∗ ist wie folgt definiert:
Der Definitionsbereich von fA ist die Menge derw ∈Σ∗, so dass Abei Eingabe vonw terminiert.
F¨ur w ∈Def(fA) istfA(w) die Ausgabe, dieA nach Eingabe von w bei Termination liefert.
Eine Funktionf heißt (im intuitiven Sinne) berechenbar, wenn ein AlgorithmusA existiert mitf =fA.
Beispiele berechenbarer Funktionen
Σ ={0,1}
1 die Funktion f1 : Σ∗→Σ∗ mit
f1(w) = 0 falls|w|gerade, f1(w) = 1, falls |w|ungerade
2 die partielle Funktion f2 : Σ∗ Σ∗ mit
f2(w) = 0 falls|w|gerade, f2(w) undefiniert, falls |w| ungerade
3 die Konstanteε, also die Funktion f3: Σ∗ →Σ∗ mit f3(w) =ε
4 die ¨uberall undefinierte Funktion f4: Σ∗ Σ∗ mit f4(w) =⊥f¨ur alle w ∈Σ∗
Entscheidungsalgorithmen
berechnen einen Spezialfall totaler Funktionen, n¨amlich solche mit den Werten 0 und 1.
Ein EntscheidungsalgorithmusA ¨uber Σ definiert somit die Sprache LA ={w ∈Σ∗|A mit Eingabew liefert Ausgabe 1}
Eine SpracheL heißt entscheidbar, falls ein EntscheidungsalgorithmusA existiert mitL=LA.
Aufz¨ahlungsalgorithmen
Andere Variante von “Algorithmus”:
Astartet ohne Eingabe, terminiert nicht, und gibt nach und nach W¨orter aus (in irgendeiner Reihenfolge, eventuell mit
Wiederholungen)
Man fasst die Menge der ausgegebenen W¨orter zur SpracheL(A) zusammen.
Eine WortmengeL heißtaufz¨ahlbar, wenn es einen Aufz¨ahlungsalgorithmusA gibt mitL=L(A).
Beispiele aufz¨ahlbarer Sprachen
1 ¨uber dem Alphabet{0,1,2, . . . ,9}:
die Menge der Primzahlen in Dezimaldarstellung
2 ¨uber dem Alphabet Σtast:
die Menge der Polynome p(x) mit ganzzahligen Koeffizienten, die eine Nullstelle inZ haben
Aufz¨ahlung der Polynome p ( x ) mit Nullstelle
Wir nutzen die kanonische Reihenfolge der W¨orter ¨uber Σtast und extrahieren daraus eine Liste aller Polynome in x mit Koeffizienten in Z:p0(x),p1(x),p2(x), . . .
Wir nutzen daneben die folgende Reihenfolge ganzer Zahlen z: 0,1,−1,2,−2,3, . . .
Wir erstellen ein unendliches zweidimensionales Diagramm, das f¨ur alle Kombinationen (i,z) jeweils den Wert pi(z) enth¨alt.
Der gesuchte Aufz¨ahlungsalgorithmus geht im
Diagonalverfahren (siehe n¨achste Folie) alle Stellen (i,z) des Diagramms durch, berechnet jeweilspi(z) und gibt dannpi aus, wenn sich pi(z) = 0 ergibt.
Auf diese Weise entsteht eine Liste derjenigen pi(x), die eine Nullstelle in Zhaben.
Diagonalverfahren
Vier Typen von Algorithmen
Algorithmen zur Berechnung partieller Funktionen Algorithmen zur Berechnung totaler Funktionen Entscheidungsalgorithmen
(zur Bestimmung der Mitgliedschaft von W¨orten in Sprachen) Aufz¨ahlungsalgorithmen
(zur Erzeugung der Elemente von Sprachen) Das ist nicht alles.
Beispiel:
Reaktive nicht-terminierende Verfahren (wie Kommunikationsprotokolle), die w¨ahrend ihres nicht abbrechenden Laufes immer wieder Eingaben entgegennehmen und immer wieder Ausgaben liefern.
Die Kernfrage
Welche Funktionen sind berechenbar?
Welche Mengen sind entscheidbar, welche aufz¨ahlbar?
Wenn man f¨ur eine Funktion f einen Algorithmus angibt, dann ist die Berechenbarkeit klar.
Wie kann man nachweisen, dass eine Funktion f nicht berechenbar ist?
Man muss gegen alle denkbaren Algorithmen argumentieren.
Wie kann man sich einen ¨Uberblick ¨uber “alle denkbaren Algorithmen” verschaffen?
Dies ist eine Kernfrage der Informatik.