Theoretische Informatik Sibylle Schwarz Westsächsische Hochschule Zwickau Dr. Friedrichs-Ring 2a, RII 263 http://www.fh-zwickau.de/~sibsc/ sibylle.schwarz@fh-zwickau.de SS 2012 1
Einordnung der Theoretischen Informatik Informatik Wissenschaft von der Darstellung und Verarbeitung symbolischer Information durch Algorithmen Teilgebiete der Informatik: theoretisch technisch Sprachen zur Formulierung von Information und Algorithmen, Möglichkeiten und Grenzen der maschinellen Berechenbarkeit, Grundlagen für technische und praktische (und angewandte) Informatik maschinelle Darstellung von Information Mittel zur Ausführung von Algorithmen praktisch Entwurf und Implementierung von Algorithmen angewandt Anwendung von Algorithmen 2
Anwendungen der theoretischen Informatik Formale Sprachen Repräsentation von Problemen in maschinenlesbarer Form (Mensch-Maschine-Kommunikation, Modellierung) Ausdrucksstärke und Flexibilität von Programmiersprachen Übersetzung von Programmiersprachen in ausführbaren Code Maschinenmodelle Möglichkeiten und Grenzen verschiedener Modelle zur Ausführung von Algorithmen Berechenbarkeitstheorie Welche Probleme sind überhaupt algorithmisch (mit Hilfe verschiedener Maschinenmodelle) lösbar? Auch negative Antworten sind sehr hilfreich (sparen Aufwand für ungeeignete Lösungsansätze) Komplexitätstheorie Welche Probleme sind mit beschränkten Ressourcen (z.b. Zeit, Speicherplatz) lösbar? Für welche Probleme existieren schnelle Algorithmen? 3
Prinzipien der theoretische Informatik ältester Zweig der Informatik (lange vor Computern) Mathematische Prinzipien: Abstraktion ermöglicht verallgemeinerte Aussagen und breit einsetzbare Verfahren, Ergebnisse und Verfahren oft nicht sofort praktisch anwendbar, müssen auf spezielle Situationen angepasst werden. Beweisbarkeit erfordert präzise Modellierung des Problems Nachweis der Korrektheit von Hard- und Software (Tests können dies nicht!) Wissen aus der theoretischen Informatik veraltet kaum. 4
Inhalt der Lehrveranstaltung Formale Sprachen Alphabet, Wort, Sprache Wortersetzung Grammatiken, Chomsky-Hierarchie Maschinenmodelle Endliche Automaten Kellerautomaten Turing-Maschinen Berechenbarkeit berechenbare Funktionen Berechnungsmodelle These von Church algorithmische Entscheidbarkeit / Unentscheidbarkeit Komplexität Komplexitätsmaße Komplexitätsklassen P, NP, PSPACE jeweils mit vielen Beispielen 5
Literatur Uwe Schöning: Theoretische Informatik - kurzgefasst (Spektrum 2001) John E. Hopcroft, Jeffrey D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie (Addison-Wesley 1990) Dirk W. Hoffmann: Theoretische Informatik (Hanser 2009) Rolf Socher: Theoretische Grundlagen der Informatik (Hanser 2008) Ulrich Hedtstück: Einführung in die Theoretische Informatik (Oldenbourg 2007) Gottfried Vossen, Kurt-Ulrich Witt: Grundkurs Theoretische Informatik (Vieweg 2006) Alexander Asteroth, Christel Baier: Theoretische Informatik. Eine Einführung in Berechenbarkeit, Komplexität und formale Sprachen (Pearson 2002) Renate Winter: Theoretische Informatik (Oldenbourg 2002) 6
Organisation http://www.fh-zwickau.de/~sibsc/lehre/ss12/ti/ Vorlesung (in HS2) Z1 Mittwoch 15:00-16:30 in HS2 Z1 Freitag 11:20-12:50 in R 304 Z2 Mittwoch 13:30-15:00 in R 307 Hausaufgaben (Voraussetzung zur Prüfungszulassung) schriftliche Aufgaben praktische Aufgaben (Autotool) Übungen 2 Gruppen: Freitag 13:30-15:00 Uhr Z1: 112079/2 in R 304 Z2: 112079/1 in PBS 102 Fragen zum Vorlesungsstoff Besprechung der schriftlichen Übungsaufgaben Prüfung: Klausur 90 min (Hilfsmittel: handgeschriebenes A4-Blatt) 7
Formale Sprachen natürliche Sprachen Rechtschreibung: korrekte Wörter Grammatik: Aufbau korrekter Sätze Definition von Programmiersprachen: Syntax Form der Sprachelemente Semantik Bedeutung der Sprachelemente und -strukturen Pragmatik Regeln zur zweckmäßigen Anwendung Syntax: Schlüsselwörter, Bezeichner, Darstellung von Zahlen,... Programmstrukturen: Form der Ausdrücke, Anweisungen, Deklarationen,... 8
Formale Sprachen: Beispiel Syntax der Autotool-Lösungen (AL-Modell) listtofm[(x,true),(y,false),(z,false)] Regeln (EBNF): belegung ::= "listtofm" "[" var-wert-paare "]" var-wert-paare ::= "" var-wert-paar var-wert-paar "," var-wert-paare var-wert-paar ::= "(" var-name, wert ")" wert ::= "True" "False" 9
Maschinenmodell: endlicher Automat Beschreibung des dynamischen Verhaltens von Systemen Modellierung von Abläufen Beispiele: Bedienoperationen an Geräten oder Software Schaltfolgen von Ampelanlagen Ablauf von Geschäftsprozessen Steuerung von Produktionsanlagen 10
Beispiel: Einlassautomat mit Karte definiert durch Zustände: gesperrt, frei Startzustand: gesperrt Aktionen (Eingabesymbole): Karte (anlegen), Durchgehen, Timeout Zustandsübergänge(gesperrt, Karte) frei (frei, Karte) frei (frei, Durchgehen) gesperrt (frei, Timeout) gesperrt definiert mögliche (erlaubte) Folgen von Aktionen ( Karte Karte ( Durchgehen + Timeout )) Diese Folgen lassen sich durch reguläre Ausdrücke darstellen. 11
Anwendung bei der Übersetzung von Programmen Höhere Programmiersprachen (z.b. C, Java) erfordern Übersetzung von Quell- in Maschinen- oder Byte-Code Quellcode Zwischendarstellung Java-Bytecode Übersetzung in zwei Phasen: 1. Analyse-Phase (Front-End): Transformation des Quellcodes in eine Zwischendarstellung 2. Synthese-Phase (Back-End): Transformation der Zwischendarstellung in Java-Bytecode 12
Analyse-Phase Quellcode Scanner Folge von Token Parser Syntaxbaum lexikalische Analyse (Scanner) lineare Analyse des Quelltextes, Aufteilung in Einheiten (Token) z.b. Schlüsselwörter, Bezeichner, Zahlen reguläre Sprachen, endliche Automaten Syntaxnalyse (Parser) hierarchische Struktur des Quelltextes z.b. Ausdrücke, Verzweigungen, Schleifen kontextfreie Sprachen, Kellerautomaten semantische Analyse Annotationen im Syntaxbaum, z.b. Typprüfungen 13
Einsatz ähnlicher Analyse-Methoden Übersetzung von Daten zwischen verschiedenen Formaten Verarbeitung von Domain-spezifischen Sprachen Textformatierung kontextabhängige Hilfe in Entwicklungsumgebungen statische Analyse zur Fehlersuche in Programmen Interpreter graphische Editoren (z.b. für UML-Diagramme) mit automatischer Programmgenerierung 14
Berechenbarkeit / Entscheidbarkeit Halteproblem: Kann ein (Test-)programm U existieren, welches für jedes beliebige (Dienst-)Programm P (Eingabe als Quelltext) entscheidet, ob P nach endlich vielen Schritten anhält? Nein Folgerungen: Alle Versuche, ein solches Programm zu schreiben, müssen fehlschlagen. Suche nach Verfahren, die für möglichst viele (Dienst-)Programme P entscheiden, ob P nach endlich vielen Schritten anhält, ist sinnvoller. Entwickler von P (Dienstleister) muss nachweisen, dass sein Programm P nach endlich vielen Schritten anhält 15
Komplexität Beispiel Primzahltest Problem: Ist eine gegebene Zahl n eine Primzahl? Instanz des Problems: Ist 12347 eine Primzahl? lösbar durch den Algorithmus: 1. Für alle i {2,..., n}: Test: Ist n durch i teilbar? ja: Ende mit Ausgabe n ist nicht prim. nein: weiter (mit Test für i + 1) 2. Ausgabe: n ist prim. Test ist für große Zahlen aufwendig. Geht es besser? Was bedeutet aufwendig und einfach? Wie aufwendig ist eine Berechnung? Wie aufwendig ist die Lösung eines Problemes? 16
Wörter und formale Sprachen 17
Beispiele banane ist ein Wort (Zeichenkette) mit Symbolen aus der Menge {a, b, e, n}, neben und abbbeeeab auch, ananas und ab + bea nicht 2009 ist ein Wort mit Symbolen aus der Menge {0, 2, 9}, 90 und 09020090 auch, 2090 nicht (x + y) (z x) ist ein Wort mit Symbolen aus der Menge {x, y, z, (, ), +,, }, ()xz(xy + auch, x + 3 z nicht ( p p) q ist ein Wort mit Symbolen aus der Menge {p, q,,,, (, )}, q (p q) und )( p auch, p q nicht otto holt obst. ist ein Wort mit Symbolen aus der Menge {otto, obst, holt,., },.otto..otto auch, los otto nicht 18
Begriffe Notationen: Für eine Menge A heißt A n = A A } {{ } n = {w 1 w n i : w i A} Menge aller Wörter der Länge n über A (n-tupel, Vektoren, Listen, Zeichenketten) A = {n N} An A 0 = {ε} Alphabet (endliche) Menge A von Symbolen Menge aller Wörter über A mit leerem Wort ε Wort endliche Folge von Symbolen w = w 1 w n mit i {1,..., n} : w i A Länge eines Wortes w = Anzahl der Symbole in w Anzahl der Vorkommen eines Symboles in einem Wort w a = Anzahl der a in w (für a A) Sprache Menge von Wörtern L A 19
Beispiele für Sprachen Menge aller englischen Wörter L 1 {a,..., z} Menge aller deutschen Wörter L 2 {a,..., z, ß,ä,ö,ü} Menge aller möglichen DNA L 3 {A, T, G, C} Menge aller natürlichen Zahlen in Dezimaldarstellung L 4 {0,..., 9} (evtl. mit führenden Nullen) Menge aller natürlichen Zahlen in Binärdarstellung (Bitfolgen beliebiger Länge) L 5 {0, 1} Menge aller deutschen Sätze L 6 (L 2 {.,,,!,?, (, ), }) Problem: Für die automatische Verarbeitung von Sprachen ist eine endliche Darstellung notwendig (auch für unendliche Sprachen). 20
Verkettung Verkettung von Wörtern: : A A A, wobei für alle Wörter u = u 1 u m A, v = v 1 v n A gilt u v = u 1 u m v 1 v n Beispiel: anne marie = annemarie Eigenschaften der Operation : ist assoziativ, d.h. für alle Wörter u, v, w A gilt (u v) w = u (v w) Das leere Wort ε ist neutral für, d.h. w A : (ε w = w ε = w) Damit ist (A,, ε) ein Monoid (Halbgruppe mit neutralem Element). ist nicht kommutativ. Gegenbeispiel: u = marie, v = anne u v = marieanne annemarie = v u 21
Umkehrung (gespiegeltes Wort) Umkehrung von w = w 1 w n : w R = w n w 1 Beispiele: marie R = eiram, 2009 R = 9002, 101 R = 101 ( to ( ( m (ate) R) R n ) R ) R =... Fakt Für jedes Wort w A gilt ( w R) R = w. Beweis: Für beliebiges w = w 1... w n A gilt w R = w n w 1 (nach Definition von R ) und damit (w R ) R = (w n w 1 ) R = w 1... w n (nach Def. von R ). Wegen w 1... w n = w gilt (w R ) R = w. Fakt Für zwei beliebige Wörter u, v A gilt (u v) R = v R u R. 22
Palindrome Palindrom: Wort w mit w = w R B: anna, neben, ε, jedes Wort der Länge 1 Die Menge aller Palindrome über dem Alphabet A ist L pal = {w A w = w R } = {w w R w A } {w a w R w A a A} } {{ } } {{ } L pal0 L pal1 Beispiele für Wörter aus L pal : otto = ot to = ot (ot) R für w = ot A = {a,..., z} reliefpfeiler = relief p feiler = relief p (relief ) R für w = relief A = {a,..., z} 1 = ε 1 ε = ε 1 ε R für A = {0, 1} ε = ε ε = ε ε R 23
Relationen auf Wörtern (binäre Relation = Menge geordneter Paare) Präfix-Relation (Anfangswort): A A Für zwei Wörter u = u 1 u m A, v = v 1 v n A gilt genau dann u v, wenn ein Wort w A existiert, so daß u w = v gilt. Beispiele: an anna (mit w = na) n anna tom tomate (mit w = ate) oma tomate für jedes Wort u A gilt ε u (mit w = u) für jedes Wort u A gilt u u (mit w = ε) 24
Postfix- und Infix-Relation Postfix-Relation: Für zwei Wörter u = u 1 u m A, v = v 1 v n A heißt u genau dann Postfix (Suffix) von v, wenn ein Wort w A existiert, so dass w u = v gilt. Beispiel: enten ist Postfix von studenten Infix-Relation (Teilwort, Faktor): Für zwei Wörter u = u 1 u m A, v = v 1 v n A heißt u genau dann Infix von v, wenn zwei Wörter w, w A existieren, so dass w u w = v gilt. Beispiel: uwe ist Infix von sauwetter satt ist kein Infix von sauwetter 25