Theoretische Informatik Sibylle Schwarz Westsächsische Hochschule Zwickau Dr. Friedrichs-Ring 2a, RII 263 http://wwwstud.fh-zwickau.de/~sibsc/ [email protected]

SS 2011

1

Einordnung der Theoretischen Informatik Informatik Wissenschaft von der Darstellung und Verarbeitung symbolischer Information durch Algorithmen Teilgebiete der Informatik: theoretisch

I I I

technisch

I I

Sprachen zur Formulierung von Information und Algorithmen, Möglichkeiten und Grenzen der Berechenbarkeit durch Algorithmen, 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

Theoretische Informatik ältester Zweig der Informatik (lange vor Computern) Mathematische Prinzipien: I Abstraktion I

I

I

ermöglicht verallgemeinerte Aussagen und breit einsetzbare Verfahren, Ergebnisse und Verfahren oft nicht sofort praktisch anwendbar, müssen auf spezielle Situationen angepasst werden.

Beweisbarkeit I I

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. 3

Themen der theoretischen Informatik Formale Sprachen I

Repräsentation von Problemen in maschinenlesbarer Form (Mensch-Maschine-Kommunikation, Modellierung)

I

Ausdrucksstärke und Flexibilität von Programmiersprachen

I

Übersetzung höherer Programmiersprachen in ausführbaren Code

I

Nachweis der Korrektheit von Algorithmen (Verifikation)

Maschinenmodelle I

Möglichkeiten und Grenzen verschiedener Modelle zur Ausführung von Algorithmen

Berechenbarkeitstheorie I

Welche Probleme sind überhaupt algorithmisch (mit Hilfe eines Computers) lösbar? Auch negative Antworten sind sehr hilfreich (sparen Aufwand für unlösbare Probleme).

Komplexitätstheorie I

Für welche Probleme gibt es schnelle Algorithmen?

4

Inhalt der Lehrveranstaltung I

Formale Sprachen I I I

I

Maschinenmodelle I I I

I

Endliche Automaten Kellerautomaten Turing-Maschinen

Berechenbarkeit I I I I

I

Alphabet, Wort, Sprache Wortersetzung Grammatiken, Chomsky-Hierarchie

berechenbare Funktionen Berechnungsmodelle These von Church algorithmische Entscheidbarkeit / Unentscheidbarkeit

Komplexität I I

Komplexitätsmaße Komplexitätsklassen P, NP, PSPACE

jeweils mit vielen Beispielen 5

Literatur I I

I I I I I

I

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://wwwstud.fh-zwickau.de/~sibsc/lehre/ss11/ti/

Vorlesung (in HS2) Z1 Donnerstag 15:20-16:50 Z1 Freitag 9:20-10:50 Z2 Donnerstag 15:20-16:50 Hausaufgaben (Voraussetzung zur Prüfungszulassung) I schriftliche Aufgaben I praktische Aufgaben (Autotool) Übungen 2 Gruppen Z2 Montag 9:20-10:50 Uhr in PBS 304 Z2 Montag 11:20-12:50 Uhr in 311 (Z2 Mittwoch ca. 13:30-15:00 Uhr in 311 Ausweichtermin, freiwillige Übungen für alle) I Fragen zum Vorlesungsstoff I Besprechung der schriftlichen Übungsaufgaben Prüfung: Klausur 90 min (Hilfsmittel: handgeschriebenes A4-Blatt)

7

Formale Sprachen natürliche Sprachen I

Rechtschreibung: korrekte Wörter

I

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: I

Schlüsselwörter, Bezeichner, Darstellung von Zahlen, . . .

I

Programmstrukturen: Form der Ausdrücke, Anweisungen, Deklarationen, . . . 8

Maschinenmodell: endlicher Automat Beschreibung des dynamischen Verhaltens von Systemen

Modellierung von Abläufen

Beispiele: I

Bedienoperationen an Geräten oder Software

I

Schaltfolgen von Ampelanlagen

I

Ablauf von Geschäftsprozessen

I

Steuerung von Produktionsanlagen

9

Beispiel: Einlassautomat mit Karte definiert durch I

Zustände: gesperrt, frei

I

Startzustand: gesperrt

I

Aktionen (Eingabesymbole): Karte (anlegen), Durchgehen, Timeout

I

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. 10

Berechenbarkeit / Entscheidbarkeit Halteproblem: Kann ein Programm U existieren, welches für jedes beliebige Programm P (Eingabe als Quelltext) entscheidet, ob P nach endlich vielen Schritten anhält? Nein Folgerungen: I

Alle Versuche, ein solches Programm zu schreiben, müssen fehlschlagen.

I

Suche nach Verfahren, die für möglichst viele Programme P entscheiden, ob P nach endlich vielen Schritten anhält, ist sinnvoller.

11

Komplexität Beispiel Primzahltest Problem: Ist eine gegebene Zahl n eine Primzahl? Instanz des Problems: Ist 12347 eine Primzahl? lösbar durch Algorithmus: 1. Für alle i ∈ {2, . . . , n}: Test: Ist n durch i teilbar? I I

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? I

Was bedeutet aufwendig und einfach?

I

Wie aufwendig ist eine Berechnung?

I

Wie aufwendig ist die Lösung eines Problemes? 12

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 13

Begriffe Notationen: Für eine Menge A heißt An = A · · × A} = {w1 · · · wn | ∀i : wi ∈ A} | × ·{z n

Menge aller Wörter der Länge n über A (n-Tupel, Vektoren, Listen, Zeichenketten) S ∗ A = {n∈N} An Menge aller Wörter über A A0 = {ε}

mit leerem Wort ε

Alphabet (endliche) Menge A von Symbolen Wort endliche Folge von Symbolen w = w1 · · · wn mit ∀i ∈ {1, . . . , n} : wi ∈ A Länge eines Wortes |w| = Anzahl der Symbole in w Sprache Menge von Wörtern L ⊆ A∗

14

Beispiele für Sprachen I

Menge aller englischen Wörter L1 ⊂ {a, . . . , z}∗

I

Menge aller deutschen Wörter L2 ⊂ {a, . . . , z, ß,ä,ö,ü}∗

I

Menge aller möglichen DNA L3 ⊆ {A, T , G, C}∗

I

Menge aller natürlichen Zahlen in Dezimaldarstellung L4 ⊆ {0, . . . , 9}∗ (evtl. mit führenden Nullen)

I

Menge aller natürlichen Zahlen in Binärdarstellung (Bitfolgen beliebiger Länge) L5 ⊆ {0, 1}∗

I

Menge aller deutschen Sätze L6 ⊂ (L2 ∪ {., , , !, ?, (, ), −})∗

Problem: Für die automatische Verarbeitung von Sprachen ist eine endliche Darstellung notwendig (auch für unendliche Sprachen). 15

Verkettung Verkettung ◦ von Wörtern: ◦ : A∗ × A∗ → A∗ , wobei für alle Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ gilt u ◦ v = u1 · · · um v1 · · · vn Beispiel: anne ◦ marie = annemarie Eigenschaften der Operation ◦: I ◦ ist assoziativ, d.h. für alle Wörter u, v , w ∈ A∗ gilt (u ◦ v ) ◦ w = u ◦ (v ◦ w) I

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 6= annemarie = v ◦ u

16

Umkehrung (gespiegeltes Wort) Umkehrung von w = w1 · · · wn : w R = wn · · · w1 Beispiele: marieR = eiram, 2009R = 9002, 101R = 101 to ◦



m ◦ (ate)

Fakt Für jedes Wort w ∈ A∗ gilt w R

R

R

R

R !R ◦n

= ...

= w.

Beweis: Für beliebiges w = w1 . . . wn ∈ A∗ gilt w R = wn · · · w1 (nach Definition von R ) und damit (w R )R = (wn · · · w1 )R = w1 . . . wn (nach Def. von Wegen w1 . . . wn = w gilt (w R )R = w.

R ).



Fakt Für zwei beliebige Wörter u, v ∈ A∗ gilt (u ◦ v )R = v R ◦ u R . 17

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 Lpal = {w ∈ A∗ | w = w R } = {w ◦ w R | w ∈ A∗ } ∪ {w ◦ a ◦ w R | w ∈ A∗ ∧ a ∈ A} | {z } | {z } Lpal0

Lpal1

Beispiele für Wörter aus Lpal : I

otto = ot ◦ to = ot ◦ (ot)R für w = ot ∈ A∗ = {a, . . . , z}∗

I

reliefpfeiler = relief ◦ p ◦ feiler = relief ◦ p ◦ (relief )R für w = relief ∈ A∗ = {a, . . . , z}∗

I

1 = ε ◦ 1 ◦ ε = ε ◦ 1 ◦ εR

I

ε=ε◦ε=ε◦

für A = {0, 1}

εR 18

Relationen auf Wörtern (binäre Relation = Menge geordneter Paare) Präfix-Relation (Anfangswort): v ⊆ A∗ × A∗ Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ gilt genau dann u v v , wenn ein Wort w ∈ A∗ existiert, so daß u ◦ w = v gilt. Beispiele: I

an v anna (mit w = na)

I

n 6v anna

I

tom v tomate (mit w = ate)

I

oma 6v tomate

I

für jedes Wort u ∈ A∗ gilt ε v u (mit w = u)

I

für jedes Wort u ∈ A∗ gilt u v u (mit w = ε) 19

Postfix- und Infix-Relation Postfix-Relation: Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ heißt u genau dann Postfix 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 = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ heißt u genau dann Infix von v , wenn zwei Wörter w, w 0 ∈ A∗ existieren, so dass w ◦ u ◦ w 0 = v gilt. Beispiel: uwe ist Infix von sauwetter satt ist kein Infix von sauwetter

20