Theoretische Informatik

Ähnliche Dokumente
Theoretische Informatik

Theoretische Informatik

Theoretische Informatik

Formale Sprachen und Grammatiken

Programmiersprachen und Übersetzer

Grundbegriffe der Informatik

Was ist ein Compiler?

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit

Grammatiken. Einführung

Organisatorisches. Informatik II Informationen und Daten. Organisatorisches. Organisatorisches. Rainer Schrader. 13. Oktober 2008

Was bisher geschah: Formale Sprachen

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Theorie der Informatik

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Semantik von Formeln und Sequenzen

Theoretische Informatik I

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Theoretische Informatik

Zentralabitur 2017 Informatik

Einführung in die Theoretische Informatik

1 Mathematische Grundlagen

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Theoretische Informatik Automaten und formale Sprachen

Grundlagen der Theoretischen Informatik, SoSe 2008

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Zentralabitur 2018 Informatik

Primzahlen und RSA-Verschlüsselung

Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung

Theoretische Grundlagen der Informatik

Informatikgrundlagen (WS 2015/2016)

Grundlagen der Künstlichen Intelligenz

Die Informatik als junge Wissenschaft

Grundbegriffe der Informatik

Mathematische Grundlagen der Informatik 2

Wintersemester 2010/2011 Rüdiger Westermann Institut für Informatik Technische Universität München

Vorlesung Theoretische Informatik

Informatik und Informationstechnik (IT)

Logik und diskrete Strukturen

VBA-Programmierung: Zusammenfassung

2.11 Kontextfreie Grammatiken und Parsebäume

Übung Theoretische Grundlagen

Theoretische Informatik SS 04 Übung 1

Binäre Bäume Darstellung und Traversierung

Der Zwei-Quadrate-Satz von Fermat

Mächtigkeit von WHILE-Programmen

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

Grundbegriffe der Informatik

Prolog basiert auf Prädikatenlogik

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Was können Schüler anhand von Primzahltests über Mathematik lernen?

DSL Entwicklung und Modellierung

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Theoretische Grundlagen des Software Engineering

Was bisher geschah. Modellierung von Aussagen durch Logiken. Modellierung von Daten durch Mengen

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Programmierkurs Java

5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Übungen zur Softwaretechnik

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Binäre Gleitkommazahlen

Kontaktlos bezahlen mit Visa

Grundlagen der Theoretischen Informatik

Zeichen bei Zahlen entschlüsseln

Einführung in die Algebra

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

Fragen für die Klausuren

Kapitel 1: Einführung. Was ist Informatik? Begriff und Grundprobleme der Informatik. Abschnitt 1.1 in Küchlin/Weber: Einführung in die Informatik

IT-Basics 2. DI Gerhard Fließ

Binäre Suchbäume (binary search trees, kurz: bst)

Mathematische Grundlagen

Data Mining: Einige Grundlagen aus der Stochastik

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Algorithmen und Berechnungskomplexität I

Technische Informatik - Eine Einführung

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

Informatik I Tutorium WS 07/08

Beschreibung des MAP-Tools

Petri-Netze / Eine Einführung (Teil 2)

Komplexität und Komplexitätsklassen

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

VBA-Programmierung WS 2008/09

Einführung in die Informatik

Buddy - Algorithmus Handbuch für Endnutzer Stand

Mathematische Maschinen

Grundlagen der Informatik

Einführung in die Informatik

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

SEP 114. Design by Contract

Regelungs- und Systemtechnik 1. Kapitel 1: Einführung

Whitebox-Tests: Allgemeines

Transkript:

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