Theoretische Informatik
für Studierende der Angewandten Informatik
Sommersemester 2010
Beate Bollig
Termine
Die erste Vorlesung findet am 13. April 2010 statt.
Der Übungsbetrieb beginnt in der zweiten Vorlesungswoche.
Inhalt
Die Vorlesung „Theoretische Informatik für Studierende der Angewandten Informatik "
bietet eine Einführung in die theoretische Informatik unter besonderer Berücksichtigung
anwendungsbezogener Aspekte.
Zentrale Teilgebiete der theoretischen
Informatik werden behandelt: Komplexitätstheorie, Entscheidbarkeitstheorie,
Automatentheorie, Grammatiken, Syntaxanalyse und lineare Programmierung.
Zunächst wird diskutiert, wie sich die
algorithmische Komplexität eines Problems definieren lässt.
Darunter verstehen wir die Mindestressourcen (wie Rechenzeit), um ein Problem
zu lösen.
Es müssen
hier alle denkbaren Algorithmen für ein Problem betrachtet werden. Es zeigt
sich, dass eine derartige Theorie unabhängig vom verwendeten Rechnertyp und von
der verwendeten Programmiersprache möglich ist.
Für die meisten wichtigen Optimierungsprobleme
gibt es einen trivialen Algorithmus mit exponentieller Laufzeit. Er probiert
einfach alle möglichen Lösungen aus und wählt eine optimale Lösung.
Für sehr
viele dieser Probleme können wir zeigen, dass es entweder für sie alle
effiziente Algorithmen gibt oder für sie alle keine effizienten Algorithmen
gibt. Die Vermutung, dass die zweite Alternative wahr ist, beruht auf der
NP-ungleich-P-Hypothese. Diese Hypothese stammt aus der
NP-Vollständigkeitstheorie, einem der wohl wichtigsten Teilgebiete der theoretischen
Informatik. Diese Theorie wird vorgestellt, wobei ein neuer Zugang gewählt
wird, in dem Randomisierung als Schlüsselkonzept aufgefasst wird.
In der Entscheidbarkeitstheorie wird untersucht,
welche Probleme algorithmisch nicht lösbar sind. Dazu gehören so wichtige
Probleme wie die Verifikation von Programmen und die Entscheidung, ob zwei
Grammatiksysteme dieselbe Programmiersprache beschreiben. Für die Praxis ergibt
sich die Konsequenz, nach Algorithmen für wichtige Spezialfälle zu suchen.
Endliche Automaten modellieren Schaltwerke,
Rechnerkomponenten und Rechner mit beschränktem Speicher ebenso wie
Cola-Automaten. Die Behandlung endlicher Automaten ist grundlegend für die
Synthese und Analyse von Rechnern, die Verifikation von Hardwarekomponenten,
den Entwurf von CAD-Werkzeugen und vieles andere.
Die Syntax von Programmiersprachen wird durch
Grammatiken beschrieben. Grammatiken sollten einerseits komfortabel sein, um
Programmkonstrukte elegant zu unterstützen. Andererseits ist es notwendig, dass
der Test der syntaktischen Korrektheit, die syntaktische Zerlegung und die Compilierung
effizient möglich sind. Dazu muss die Klasse der erlaubten Grammatiksysteme
genügend eingeschränkt sein. Es wird gezeigt, warum kontextfreie Grammatiken
und ihre Einschränkungen als Grundlage von Programmiersprachen geeignet sind.
In der theoretischen Informatik wird häufig von realen Problemen
abstrahiert, um beweisbare Aussage zu erhalten. Viele der Aussagen in
der Vorlesung sind negative Aussagen, etwa dass es für ein Problem
keinen Algorithmus gibt. Auch eine solche Aussage ist für die
Praxis relevant, da man sich die Zeit für die Suche nach
einem Algorithmus, den es nicht gibt, sparen kann. Andererseits sind
die Zwischenschritte, um zu solchen Aussagen zu kommen, an vielen
Stellen abstrakter als in früheren Vorlesungen, was eine der neuen
Herausforderungen beim Verständnis der Vorlesung ist.
Eine andere Herausforderung besteht darin, dass für die exakte
Formulierung von Aussagen formalere Schreibweisen erforderlich sind.
Insbesondere die Übungen sollen dabei helfen, im Umgang mit diesen
formalen Schreibweisen Routine zu bekommen.
Literatur zur Vorlesung
Die Vorlesung richtet sich im Wesentlichen nach den folgenden Büchern:
Blum, N. (2004).
Algorithmen und Datenstrukturen - eine anwendungsorientierte Einführung.
(Kapitel 8, insbesondere Kapitel 8.1 und Kapitel 8.2)
Oldenbourg.
Wegener, I. (2003).
Komplexitätstheorie - Grenzen der Effizienz von Algorithmen.
(Kapitel 2-6)
Springer Verlag.
Wegener, I. (1999).
Theoretische Informatik - eine algorithmenorientierte Einführung.
Teubner Verlag.
Anmerkung: Die 1. Auflage unterscheidet sich nicht wesentlich
von der 2. Auflage.
Die oben genannten Kapitel aus den drei Lehrbüchern decken den Stoff der Vorlesung
vollständig ab.
Weitere Literatur
Für Kapitel 5 der Vorlesung, Lineare Programmierung, siehe
auch:
Cormen, Th. H., Leiserson, C. E., Rivest, R., Stein, C. (2001).
Introductions to algorithms. Second edition.
(Kapitel 29)
MIT Press.
Zum Thema Randomisiertes Runden siehe auch:
Hromkovic, J. (2004).
Randomisierte Algorithmen.
(Kapitel 7.3 und 7.4)
Teubner Verlag.
Das folgende Buch ergänzt den Vorlesungsinhalt, indem die wesentlichen Ideen
der Kapitel 2-4 der Vorlesung (Entscheidbarkeitstheorie, Endliche Automaten, Grammatiken und
Syntaxanalyse) und teilweise des Kapitels 1 (Komplexitätstheorie)
umgangssprachlich dargestellt werden:
Wegener, I. (1996).
Kompendium der Theoretischen Informatik - eine Ideensammlung.
Teubner Verlag.
In dem Bereich Grundlagen der Theoretischen Informatik existieren eine Vielzahl
weiterer guter Lehrbücher.
Ein gut geschriebenes Lehrbuch, in dem ähnlich
wie in der Vorlesung eine algorithmenorientierte Sichtweise verfolgt wird, ist das folgende:
Hromkovic, J. (2001).
Algorithmische Konzepte der Informatik -
Berechenbarkeit, Komplexitätstheorie, Algorithmik, Kryptographie.
Teubner Verlag.
Dieses Buch deckt jedoch nicht den ganzen Vorlesungsinhalt ab.
Eine gute Einführung in das Gebiet Automatentheorie und Formale Sprachen, die
jedoch nicht den ganzen Vorlesungsinhalt abdeckt, findet
sich auch in dem folgenden Buch:
Schöning, U. (1997).
Theoretische Informatik - kurzgefasst.
Spektrum Akademischer Verlag.
Weitere Literatur kann bei Bedarf bei der Dozentin
nachgefragt werden.
Inhalt der Vorlesung
Die Vorlesung folgt den TIfAI-Vorlesungen SoSe 2006-2009 von Detlef Sieling
und Beate Bollig.
Die aktuellen Folien der Vorlesung findet Ihr
hier
. Dort steht ebenfalls eine Liste der wichtigsten in der
Vorlesung benutzten Abkürzungen.
Für die Grundlagen der Wahrscheinlichkeitstheorie wie sie in der Vorlesung
benötigt werden, verweisen wir auf Anhang A.2 in
Wegener, I. (2003). Komplexitätstheorie - Grenzen der Effizienz von Algorithmen.
Springer Verlag.
- 13.4.2010:
Überblick über die Vorlesung, Beispielproblem
Partition, Entscheidungs- und Suchprobleme
- 15.4.2010: Begriffe Problem und Sprache,
Registermaschinen, algorithmische Komplexität,
Turingmaschinen, Sonderrolle polynomieller Rechenzeiten
- 20.4.2010: Komplexitätsklasse P,
(Wiederholung) Grundlagen aus der Wahrscheinlichkeitstheorie,
Einführung randomisierter Algorithmen,
Beispielalgorithmus ÄMA, BPM
- 22.4.2010: Komplexitätsklassen für randomisierte Algorithmen,
Probability Amplification
- 27.4.2010: Zusammenhang zwischen den Komplexitätsklassen
Nichtdeterminismus, Komplexitätsklasse NP
- 29.4.2010: Algorithmische Ähnlichkeit von Problemen,
Turing-Reduktionen, Entscheidungsvariante eines Problems
versus Optimierungsvariante
- 4.5.2010: Turing-Reduktionen zwischen nicht verwandten Problemen,
Polynomielle Reduktionen als Spezialfall von Turing-Reduktionen
- 6.5.2010: Fortsetzung Turing-Reduktionen (polynomielle Reduktionen)
zwischen nicht verwandten Problemen, NP-Vollständigkeit,
verschiedene Sichtweisen auf die Komplexitätsklasse NP
- 11.5.2010: NP-Vollständigkeit, verschiedene Sichtweisen auf die
Komplexitätsklasse NP, stereotype Turingmaschinen, Satz von Cook
- 18.5.2010: Beweis Satz von Cook, weitere NP-Vollständigkeitsbeweise
- 20.5.2010: weitere NP-Vollständigkeitsbeweise
- 25.5.2010: Fortsetzung NP-Vollständigkeit von GC;
Entscheidbarkeitstheorie: Universelle Turingmaschine,
Turing-Berechenbarkeit, rekursive und rekursiv aufzählbare Sprachen,
Churche These, Diagonalsprache, Halteproblem, universelle TMs
- 27.5.2010: spezielles Halteproblem, Satz von Rice,
Abschlusseigenschaften rekursiver und rekursiv aufzählbarer Sprachen,
- 1.6.2010: Unentscheidbarkeit (modifiziertes) Postsches Korrepondenzproblem
- 8.6.2010: Einführung Automatentheorie,
Pumping-Lemma für reguläre Sprachen
- 10.6.2010: Beweis und Anwendung Pumping-Lemma für reguläre Sprachen,
Minimierung deterministischer endlicher Automaten
- 15.6.2010: Fortsetzung Minimierung deterministischer endlicher Automaten
rechtsinvarnte Äquivalenzrelationen,
Satz von Nerode
- 1.6.2010: Fortsetzung Beweis von Nerode, NFAs,
Umwandlung NFAs in DFAs: Potenzmengenkonstruktion,
- 22.6.2010: Leerheits- und Vollständigkeitsproblem für DFAs und
NFAs, Abschlusseigenschaften für DFAs und NFAs
- 24.6.2010: reguläre Ausdrücke,
Grammatiken, Chomsky-Hierarchie
- 29.6.2010: genau die rekursiv aufzählbaren Sprachen
haben Chomsky-0-Grammatiken,
reguläre Sprachen und Chomsky-3-Grammatiken,
kontextfreie Sprachen
- 1.7.2010: Umwandlung kontextfreier Grammatiken in Chomsky-Normalform,
CYK-Algorithmus, Pumping-Lemma für kontextfreie Sprachen
- 6.7.2010: Beweis Pumping-Lemma für kontextfreie Sprachen,
Ogdens Lemma,
Abschlusseigenschaften/Algorithmen für
kontextfreie Sprachen, unentscheidbare Probleme für kontextfreie
Sprachen
- 8.7.2010: Fortsetzung unentscheidbare Probleme für kontextfreie Sprachen,
kontextsensitive Sprachen, Greibachnormalform und Kellerautomaten,
Akzeptanz mit akzeptierenden Zuständen, Akzeptanz mit leerem Stack
- 13.7.2010: NPDAs, Tripelkonstruktion, LR(k)-Grammatiken
- 15.7.2010: Fortsetzung LR(k)-Grammatiken,
Einführung lineare Optimierung, Grundlagen aus der linearen Algebra
- 20.7.2010: Arbeitsweise Simplex-Algorithmus
- 22.7.2010: Schritt 1 Simplexalgorithmus, Randomisiertes Runden
Übungen
Die aktuellen Übungsblätter werden jeweils bis
Dienstag um 10 Uhr im Netz bereitgestellt und müssen bis zum darauffolgenden
Montag um 12 Uhr abgegeben werden.
Die Besprechung erfolgt in der Woche der Lösungsabgaben in den Übungen.
Informationen zum Übungsbetrieb finden sich auf der
Übungsseite.
Studienleistungen
Für Studierende des Bachelor-Studiengangs Angewandte Informatik
ist die Erbringung von Studienleistungen Voraussetzung für die Teilnahme
an der Modulprüfung (mündliche Prüfung).
In TIfAI werden diese Studienleistungen durch regelmäßige aktive Teilnahme an den
Übungen (höchstens zweimaliges unentschuldigtes Fehlen) und Erreichen von jeweils mindestens
40% der Punkte der Übungsblätter 2-5, 6-9 und 10-14 erbracht. Die Aufgaben dürfen
in Gruppen von bis zu drei Personen bearbeitet werden, wobei jedes Gruppenmitglied alle
bearbeiteten Aufgaben der Gruppe in der besuchten Übungsgruppe vorstellen können
muß, um die jeweiligen Punkte zu erhalten.
Prüfungen
Die Prüfung findet mündlich statt,
Prüfungsgrundlage ist der Inhalt der TIfAI-Veranstaltung des Sommersemesters 2010.
Eine (unvollständige) Liste mit möglichen Prüfungsfragen hat
Detlef Sieling
hier
bereitgestellt.
Weitere mögliche Prüfungsfragen stehen im
Kompendium der Theoretischen Informatik (siehe Literaturhinweise).
PrüfungskandidatInnen bringen einen ausgefüllten und unterschriebenen
Anmeldebogen mit in die Sprechstunde der Dozentin (Di 13:00-14:00 Uhr während der Vorlesungszeit,
ansonsten nach Vereinbarung). Dieser muss spätestens
14 Tage vor der geplanten Prüfung
beim Dezernat 7.3 (Prüfungsverwaltung) eingegangen sein.
Fernmündliche, sowie elektronische Anmeldungen sind leider nicht möglich.
Geplante Prüfungsblöcke in der vorlesungsfreien Zeit nach der Veranstaltung:
17.-19.8.2010
12.-14.10.2010
Studierende, die bereits im Sommersemester 2009 ihre Studienleistungen für das Modul TIfAI erworben haben,
können auf Wunsch auch während der Vorlesungszeit geprüft werden. Entsprechende Termine können
mit mir in meiner Sprechstunde vereinbart werden.
22.7.2010 - Beate
Bollig