Inhalt
Inhalt |
1 Logik
2 Formale Sprachen
3 Automaten
4 Berechenbarkeitstheorie
5 Komplexitätstheorie |
Literatur |
D. Hoffmann: Theoretische Informatik, Hanser, 2015
W. Ertel: Grundkurs Künstliche Intelligenz, Springer Vieweg, 2013
R. Socher: Theoretische Grundlagen der Informatik, Fachbuchverlag Leipzig, 2003.
J. Dassow: Logik für Informatiker, Teubner, 2005.
J. E. Hopcroft, R. Motwani, J. D. Ullman: Einführung in Automatentheorie, Formale Sprachen und Berechenbarkeit, Pearson, 2011. |
Lernziele |
Ziel des Faches Theoretische Informatik ist es, die theoretischen Grundlagen von Logik, formalen Sprachen, Automaten, Berechenbarkeit und Komplexitätstheorie zu vermitteln.
Die Prädikatenlogik als wichtige Grundlage für formale Verfahren in Programmverifikation, Hardwaredesign und künstlicher Intelligenz wird von Grund auf als formale Sprache mit deklarativer Semantik eingeführt. Der für automatische Beweiser und Verifikationssysteme wichtige Resolutionskalkül wird ausführlich behandelt. Es wird ein vertieftes Verständnis von formalen Sprachen und Maschinenmodellen als Voraussetzung für die Entwicklung von Suchmaschinen, Lexern, Parsern und Compilern vermittelt. Weiter werden die Grenzen der Berechenbarkeit erlernt. Die Studierenden sollen verstehen, dass es Funktionen gibt, die ein Computer prinzipiell nicht berechnen kann. Die berechenbaren Sprachen werden schließlich in der Komplexitätstheorie in Klassen eingeteilt.
Im Einzelnen werden folgende Kompetenzen vermittelt:
o Zentrale Ergebnisse zu Aussagenlogik und Beweisverfahren verstehen. Die Prädikatenlogik erlernen. Den Resolutionskalkül beherrschen. Grenzen der Logik kennen lernen. Logikprogrammierung mit Prolog durchführen können.
o Die Chomsky-Hierarchie verstehen. Formale Sprachen mit Hilfe von Grammatiken erzeugen können. Zentrale Ergebnisse zu regulären und kontextfreien Sprachen beherrschen und nutzen können, insbesondere Pumping-Lemmata, reguläre Ausdrücke und CYK-Algorithmus. Anwendungsmöglichkeiten formaler Sprachen wiedergeben können. Abschlusseigenschaften und Entscheidbarkeitsergebnisse für die verschiedenen Sprachtypen kennen.
o Zentrale Ergebnisse zu endlichen Automaten und Kellerautomaten verstehen und anwenden können. Weitere Automatenmodelle kennen lernen und verwenden können, z.B. Transduktor.
o Verschiedene Konzepte und Varianten von Turingmaschinen und deren Ausdrucksmächtigkeit erlernen und anwenden können. Zusammenhänge verschiedener Berechenbarkeitsbegriffe und Programmiersprachenkonzepte erlernen. Zusammenhang von Turingmaschinen und Computern sowie die Church'sche These verstehen. Zentrale Entscheidbarkeitsbegriffe und deren Zusammenhänge herleiten können. Grenzen der Berechenbarkeit bzw. algorithmischen Lösbarkeit und das Halteproblem verstehen. Unentscheidbarkeit von Problemen mit Reduktion beweisen können.
o Algorithmische Komplexität nach dem O-Kalkül beherrschen. Zentrale Ergebnisse zu Komplexitätsklassen für Probleme (Komplexitätstheorie) erlernen. Grenzen der effizienten Berechenbarkeit und das SAT-Problem verstehen. NP-Vollständigkeit von Problemen mit polynomieller Reduktion beweisen können. |
Voraussetzungen |
Programmieren, Grundlagen der Informatik, Mathematik-Grundlagen |
Leistungsnachweis |
lt. aktueller SPO, gültig ab WS1718: PF benotet (Testat + M)
Am Ende des Semesters findet eine mündliche Prüfung statt. Durch Vorführen und Erklären von Übungsaufgaben (Testate) können im Laufe des Semesters Bonuspunkte für die mündliche Prüfung erworben werden. |