Theoretische Grundlagen der Informatik Prof. Dr. Sibylle Schwarz Hochschule für Technik, Wirtschaft und Kultur Leipzig Fakultät Informatik, Mathematik und Naturwissenschaften Gustav-Freytag-Str. 42a, 04277 Leipzig Zimmer Z 411 (Zuse-Bau), http://www.imn.htwk-leipzig.de/~schwarz [email protected]

WS 2013/2014

1

Informatik Informatik Lehre von der Darstellung und Verarbeitung von Information durch Algorithmen Teilgebiete der Informatik: theoretisch

technisch

Sprachen zur Formulierung von Information und Algorithmen, I Möglichkeiten und Grenzen der Berechenbarkeit durch Algorithmen, I Grundlagen für technische und praktische (und angewandte) Informatik I

maschinelle Darstellung von Information Mittel zur Ausführung von Algorithmen (Rechnerarchitektur, Hardware-Entwurf, Netzwerk, . . . ) I I

praktisch Entwurf und Implementierung von Algorithmen (Betriebssysteme, Compilerbau, SE, . . . ) angewandt Anwendung von Algorithmen (Text- und Bildverarbeitung, Datenbanken, KI, Medizin-, Bio-, Wirtschafts-, Medieninformatik, . . . ) 2

Inhalt der Lehrveranstaltung Theoretische Grundlagen der Informatik Einführung in formale Methoden in der Informatik, insbesondere Modellierung von Daten durch I Mengen I Wörter und formale Sprachen I Terme Abläufen durch I Zustandübergangssysteme I Abstrakte Maschinen I Berechnungsmodelle Eigenschaften (von Daten und Abläufen) durch Logiken I klassische Aussagenlogik I klassische Prädikatenlogik (der 1. Stufe) 3

Modellierung von Daten Beispiel Skatkarten Farben: Karo, Herz, Pik, Kreuz Menge F = {♦, ♥, ♠, ♣} Werte:

Zahlen: 7, 8, 9, 10 Menge Z = {7, 8, 9, 10} I Bilder: Bube, Dame, König, As Menge B = {B, D, K , A} Menge aller Werte: Z ∪ B I

Menge aller Karten: F × (Z ∪ B) Spielkarten sind die Elemente dieser Menge, (♠, 9) ∈ F × (Z ∪ B) z.B. (♥, B) ∈ F × (Z ∪ B), wichtiges Ziel der Modellierung in der Informatik: Repräsentation von Daten in einer Form, die maschinell dargestellt und verarbeitet werden kann Datentypen (abstrakte und konkrete) 4

Modellierung Modelle sind Abstraktionen realer Dinge, Eigenschaften, Beziehungen, Vorgänge I

Auswahl von (für den Anwendungsbereich, zur Problemlösung) wichtigem Wissen

I

Vernachlässigung unwichtiger Details

Beispiele: I

Liniennetzplan

I

Grundriss

I

Stundenplan

I

Kostenplan

spezielle Form der Modelle abhängig von I

Problembereich

I

geplante Verwendung 5

Logik Beispiel: 1. Tom besucht heute das Kino oder das Konzert. Tom ist nicht im Kino. Also besucht Tom das Konzert. √ 2. √2 ist eine rationale oder eine irrationale Zahl. 2 6∈ .√ Also ist 2 irrational.

Q

gemeinsames Schema: Aus (P oder Q) und (nicht P) lässt sich Q schließen. formal: {P ∨ Q, ¬P} |= Q maschinelle Verarbeitung logischer Formelmengen z.B. durch SAT-Solver, Inferenzsysteme, Prolog-Interpreter 6

Formale Sprachen Modellierung von Daten, Abläufen und Systemen I

Zeichen (Alphabet) z.B. {A,E,O,M,T}, {0, 1}

I

Folgen von Zeichen (Zeichenketten, Wörter) z.B. TOMATE, 10100

I

Mengen von Wörtern (Sprachen) z.B. Menge aller Wörter, die das Teilwort OMA enthalten Menge aller Wörter, die auf 00 enden

I

Mengen von Sprachen (Sprachklassen) z.B. alle Sprachen, die nur endliche viele Wörter enthalten

endliche Darstellung unendlicher Sprachen, z.B. durch reguläre Ausdrücke, Grammatiken Eignung verschiedener Sprachklassen zur maschinellen Darstellung von Daten und Abläufen 7

Zustandsübergangssysteme Münzenspiel: Startzustand : 6 Münzen auf einem Stapel Spielzug : zwei Münzen von einem Stapel nehmen und auf jeden Nachbarstapel je eine Münze legen I

In welchen Zuständen sind gar keine Züge möglich?

I

Welche Zustände sind aus dem Startzustand erreichbar?

I

Wieviele Züge können (mindestens / höchstens) gespielt werden, bis kein Zug mehr möglich ist?

I

Verliert (kann nicht mehr ziehen) der erste oder der zweite Spieler, wenn zwei Spieler abwechselnd ziehen?

Startzustand: ...

6

... 8

Vorteile der formalen Darstellung

Abstraktion von unwichtigen Details (Entwicklung und Verwendung von Modellen) Präzisierung der relevanten Aussagen (eindeutige Semantik) Systematisches Lösen (auch maschinell) von formal dargestellten Problemen möglich Struktureigenschaften formaler Beschreibungen Schlussweisen unabhängig von Bedeutung der Aussagen

9

Einordnung der LV in Teilgebiete der Informatik theoretisch

Eigenschaften formaler Beschreibungs- und Programmiersprachen I Möglichkeiten und Grenzen der Berechenbarkeit durch Algorithmen, I Logik als Modellierung-Sprache (Formulierung von Information und Algorithmen) I Grundlagen für technische und praktische (und angewandte) Informatik I

technisch Mathematische Grundlagen der digitalen Informationsverarbeitung (maschinelle Darstellung, Übermittlung und Verarbeitung von Information) praktisch Modellierung, Darstellung, Spezifikation von Algorithmen und Daten Grundlagen der Softwareentwicklung Anwendung logischer Verfahren zur Verifikation der Korrektheit von Programmen angewandt Anwendung der in der Softwareentwicklung, Wissensverarbeitung, KI

10

Lernziele

I

Fähigkeit zur Abstraktion

I

Grundkenntnisse in Modellbildung

I

Grundverständnis der Logik als Sprache der Informatik

I

Beweisverfahren

I

Zusammenhänge zu anderen Gebieten der Informatik und Mathematik

11

Literatur Folien zur Vorlesung, jeweils nach der Vorlesung veröffentlicht unter www.imn.htwk-leipzig.de/~schwarz/lehre/ws13/tgi/ empfohlene Bücher: Formale Sprachen und Berechnungsmodelle I

zur Modellierung: I Uwe Kastens, Hans Kleine Büning: Modellierung - Grundlagen und formale Methoden, Hanser 2008

I

zur Logik I Michael Huth, Mark Ryan: Logic in Computer Schience, Cambridge University Press 2010 I Uwe Schöning: Logik für Informatiker, Spektrum, 1995 I Martin Kreuzer, Stefan Kühling: Logik für Informatiker, Pearson Studium, 2006

I

zu formalen Sprachen und Berechnungsmodellen: I Uwe Schöning: Theoretische Informatik - kurzgefasst, Spektrum 2001 I John E. Hopcroft, Jeffrey D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie, Addison-Wesley 1990

12

Informatik studieren Selbstudium: Vor- und Nachbereitung jeder Lehrveranstaltung (Vorlesung, Seminar, Praktikum, ...) Unterlagen zu den Lehrveranstaltungen (eigene Mitschrift, Skript, Folien, Zusatzmaterial, Übungsaufgaben) durcharbeiten Übungsaufgaben regelmäßig und rechtzeitig lösen, (Aufgaben vom Typ der) Übungsaufgaben gehören zum Stoff der LV und werden geprüft Bücher benutzen (Bibliothek), enthalten oft zusätzliche Übungsaufgaben, Informationen aus dem Internet sind oft unzuverlässig Lerngruppen bilden und gemeinsam lernen Nachfragen bei Dozenten (E-Mail, Sprechzeit, nach der Lehrveranstaltung,. . . ), Mitstudenten, älteren Studenten, . . . 13

Organisation der Lehrveranstaltung Folien, Übungsserien, Termine, Änderungen, ... unter www.imn.htwk-leipzig.de/~schwarz/lehre/ws13/tgi/ Modulbeschreibung INB-TGI: portal.imn.htwk-leipzig.de/studium/ ordnungen-und-modulkataloge 90 h für Präsenzstudium + 120 für Selbststudium Lehrveranstaltungen für jeden Studenten: I

wöchentlich zwei Vorlesungen (60 SWS)

I

wöchentlich eine Übung (30 SWS)

Vor- und Nachbereitung: schriftliche Aufgaben (ÜS) praktische Aufgaben (Autotool) Literaturstudium Selbststudium: Vor- und Nachbereitung (90 h) Prüfungsvorbereitung (30 h) 14

Schriftliche Hausaufgaben – Seminar schriftliche Übungsserien wöchentlich unter www.imn.htwk-leipzig.de/~schwarz/lehre/ws13/tgi

Lernziele bei der Bearbeitung der Übungsserien: I

Nachbereitung der letzten Vorlesung anhand der Vorlesungsfolien und (der angegebenen) Literatur

I

Vorbereitung der nächsten Vorlesung

I

Vorbereitung der Seminarvorträge zu jeder Aufgabe

Übungen: I

Besprechung der Lösungen der schriftlichen Hausaufgaben (Vorrechnen durch Studenten, Prüfungszulassung)

I

Fragen zum aktuellen Vorlesungsstoff und zu den neuen schriftlichen und praktischen Hausaufgaben 15

Praktische Hausaufgaben – Autotool https: //autotool.imn.htwk-leipzig.de/cgi-bin/Super.cgi

Account anlegen: 1. Click „HTWK “ 2. Daten eintragen (korrekte Matrikelnummer, Email [email protected]) 3. Click „absenden“ Passwort wird an die angegebene Email-Adresse geschickt (Geduld, kann dauern). Account benutzen: I

Anmeldung mit Matrikelnummer (Click „Login“)

I

Passwort ändern (Click „update“)

I

„Einschreiben“ in Übungsgruppe

I

Aufgabe ansehen und lösen (Click „Solve“) 16

Prüfung Klausur

Aufgabentypen aus den Übungsserien

Zulassungsvoraussetzungen:

regelmäßige erfolgreiche Lösung der Hausaufgaben, d.h.: I

mindestens dreimal richtiges „Vorrechnen“ von Übungsaufgaben in den Übungen

I

50 % aller Punkte für praktische Pflichtaufgaben (Autotool)

17

Was bisher geschah

Inhalt und Organisation der Lehrveranstaltung

Modellierungsbeispiele: I

Modellierung von Daten: Skatkarten, Spielzustände

I

Modellierung von Abläufen: Münzenspiel, ÜA lineares Solitaire

I

Modellierung von Eigenschaften: ÜA Landsleute

18

Syntax und Semantik Semantik (Bedeutung) Was wird dargestellt? Syntax (Darstellungsform) Wie wird es dargestellt? (meist viele verschiedene Möglichkeiten) Beispiele: I Lineares Solitaire (Zustände) Semantik: Spielzustand im linearen Solitaire Syntax: Möglichkeiten, z.B. Z ∈ {0, 1}∗ , Z ∈ {S, K }∗ , Z ∈ {, ◦}∗ I Lineares Solitaire (Ablauf) Semantik: möglicher Verlauf eines Spieles Syntax: Möglichkeiten, z.B. I I

I

Folge von Spielzuständen Modellierung der Spielzüge (als Regeln) und Folge der angewendeten Regeln Weg in der graphischen Darstellung des Spieles 19

Prozess beim Lösen von Aufgaben (Problemen) Analyse der (informalen) Aufgabe, Identifikation von I Aufgabenbereich (Kontext) I Eingabedaten (Typ, mögliche Werte) I gewünschte Lösung (Typ, Eigenschaften, Zusammenhang mit Eingabe) Modellierung (Spezifikation, formale Darstellung) von I Aufgabenbereich (Kontext) I Eingaben I Lösungen Modellierung von Daten und deren Eigenschaften Entwurf einer Lösungsstrategie für die modellierte Aufgabe (mit vorhandenen oder neuen Methoden) Modellierung von Berechnungen und deren Eigenschaften Realisierung der Lösestrategie im Modellbereich Ausführung der Lösestrategie im Modellbereich Übertragung der Lösung vom Modellbereich in die Realität

20

Beispiel (informale Aufgabe)

Gesucht sind alle Skatkarten, die von einer gegebenen Skatkarte in einem Null-Spiel (also ohne Trümpfe) gestochen werden.

21

Analyse der Aufgabe (Aufgabenbereich) Worum geht es? Unterscheidung der für die reale Aufgabe wichtigen bzw. unwichtigen Eigenschaften, z.B.: I

Blatt für welches Spiel (z.B. Skat, Doppelkopf)? im Beispiel: Skatblatt, d.h. Jede Karte hat genau eine der Farben ♦, ♥, ♠, ♣ , und ist eine Zahl zwischen 7 und 10 oder ein Bild B,D,K,A

I

deutsches oder französisches Blatt?

I

Stichregeln innerhalb einer Farbe? Ordnung zwischen Karten derselben Farbe

I

Trumpfregeln?

22

Analyse der Aufgabe: Ein- und Ausgabedaten Eingaben: Welche Art Daten sind gegeben? (Typen, Bereiche) Eingabe im Beispiel: eine Karte aus einem Skatblatt, beschrieben durch ein Paar (Farbe, Wert) Was sind die gewünschten Lösungen? Typ: z.B. ja/nein (evtl. mit Begründung), Plan, Gewinnstrategie, Typ der Lösung im Beispiel: Menge von Karten Eigenschaften Zusammenhang zwischen Ein- und Ausgaben Eigenschaften der Lösung im Beispiel: Menge aller Karten mit 1. derselben Farbe wie die gegebene Karte 2. kleinerem Wert als die gegebene Karte 23

Modellierung (Spezifikation, formale Darstellung) Aufgabenbereich (Kontext): Skatblatt, d.h. Menge aller Karten: K = F × {Z ∪ B} mit F = {♦, ♥, ♠, ♣} , Z = {7, 8, 9, 10} und B = {B, D, K , A} Ordnung der Karten derselben Farbe (also auf Z ∪ B): 7 < 8 < 9 < 10 < B < D < K < A Karten unterschiedlicher Farben stechen einander nicht Eingabedaten: eine Karte e ∈ K Lösung: Typ: Menge von Karten, d.h. M ⊆ K Eigenschaften Zusammenhang zwischen Ein- und Ausgaben: für jede Karte k ∈ K gilt genau dann k ∈ M, wenn 1. Farbe(k ) = Farbe(e) und 2. Wert(k ) < Wert(e) 24

Modellierung von Daten Darstellung der Objekte und ihrer Beziehungen zueinander I

Spielzustände im linearen Solitaire (Z ∈ {0, 1}∗ ), Eigenschaften, Beziehungen dazwischen z.B. Eigenschaft „Endzustand“, Relation „geht über zu“

I

Skatkarten (k ∈ F × (Z ∪ B)), Eigenschaften, Beziehungen dazwischen z.B. Eigenschaften „Lusche“,„Trumpf“, Relation „sticht“

I

N, mit Eigenschaften, Beziehungen, Operationen

z.B. Eigenschaften „gerade“, „prim“, Relationen ≤, =, |, Operationen +, −, ·, mod, div, Nachfolger

I

R, mit Eigenschaften, Beziehungen, Operationen

z.B. Eigenschaft „rational“, Relationen ≤, =, Operationen +, −, ·, allgemein: (algebraische) Struktur (M, R, F ) M Menge von Daten (Trägermenge) R Eigenschaften, Relationen auf M F Operationen auf M 25

(Konkrete) Datentypen (konkreter) Datentyp: I

Trägermenge (nichtleer, Menge aller Werte)

I

Eigenschaften von und Relationen zwischen den Elementen der Trägermenge

I

Operationen auf der Trägermenge

= (algebraische) Struktur Beispiele: I

integer mit +,-,*,/

I

string mit ++, reverse

I

boolean mit And, Or, Not

I

string ∪ integer mit length

26

Einfache und zusammengesetzte (konkrete) Datentypen einfache Datentypen, z.B. int, bool, float, ... zusammengesetzte Datentypen Konstruktion durch die Operationen I Vereinigung ∪ von Datentypen Beispiel Skat: W = Z ∪ B I kartesisches Produkt × von Datentypen: Beispiel Skat: K = F × W mehrfaches Produkt desselben Typs, z.B. Tupel Beispiel Skat: Blatt in der Hand nach dem Austeilen ∈ K 10 I rekursive Datentypen, z.B. Listen I Abbildung zwischen Datentypen (Funktionen) 27

Zusammengesetzte Datentypen (konkreter) Datentyp: I Menge von Werten (Daten) I Menge von Relationen und Operationen auf diesen Werten Beispiele: I Daten: Telefonnummern, Namen Operationen: Suchen der Telefonnummer zu einem Namen I Daten: Studentendaten Operationen: Sortieren nach Name, Matrikelnummer, Noten Gruppen einteilen, zusammenlegen I Daten: Bestellungen Operationen: Einfügen, Löschen, Dringlichste finden, nach Betrag sortieren I Daten: Orte mit Verbindungen Operationen: kürzeste Verbindung suchen I Daten: arithmetische Ausdrücke Operationen: Teilausdrücke ersetzen, Wert berechnen 28

Zusammengesetzter Datentyp: Papierstapel

I

Trägermengen: I I

Typ Blatt (oben einseitig bedruckt) Typ Stapel (von Blättern)

I

Eigenschaft: „ist leer“

I

Operationen: top : Stapel → Blatt oberes Blatt auf dem Stapel pop : Stapel → Stapel oberes Blatt vom Stapel entfernen push : (Blatt × Stapel) → Stapel Blatt oben auf den Stapel legen

29

Eigenschaften der Stapel-Operationen Operationen: top : Stapel → Blatt pop : Stapel → Stapel push : (Blatt × Stapel) → Stapel einige Zusammenhänge zwischen den Stapel-Operationen: für alle Blätter (Stapelelemente) e und alle Stapel s gilt: I Wird zuerst ein Blatt e auf einen Stapel s gelegt und dann von diesem Stapel das obere Blatt weggenommen, enthält man den ursprünglichen Stapel s pop(push(e, s)) = s I top(push(e, s)) = e I push(top(s), pop(s)) = s Beobachtung: Dieselben Eigenschaften gelten auch für Bücher-, Teller- und andere Stapel, sind also unabhängig vom Typ der Stapelelemente 30

Abstrakte Datentypen Abstraktion von der Realisierung (Trägermenge, Implementierung der Operationen) Abstrakter Datentyp (ist Beschreibung einer ganzen Klasse konkreter Datentypen): Signatur enthält Typ- und Funktionsdeklarationen (Syntax) im Stapel-Beispiel: top : Stapel → Blatt pop : Stapel → Stapel push : (Blatt × Stapel) → Stapel Axiome: formale Definition der Eigenschaften und Zusammenhänge zwischen Operationen (Semantik) im Stapel-Beispiel: I pop(push(e, s)) = s I top(push(e, s)) = e I push(top(s), pop(s)) = s Ein Konkreter Datentyp (algebraische Stuktur) (M, R, F ) ist Instanz (Implementierung, Realisierung) eines abstrakten Datentypes gdw. alle Relationen aus R und Operationen aus F alle im ADT definierten Bedingungen erfüllen

31

Was bisher geschah I

Beziehung zwischen Realität und Modell

I

Semantik (Bedeutung) und Syntax (Darstellungsform)

I

Schritte zum Lösen von Aufgaben (Problemen)

I

Analyse und formale Darstellung informal gegebener Aufgaben

I

algebraische Strukturen (M, F , R) mit M Menge von Daten (Trägermenge) F Funktionen auf M R Eigenschaften, Relationen auf M

I

einfache und zusammengesetzte Datentypen

I

konkrete und abstrakte Datentypen

32

Mathematische Grundlagen Relationen und Operationen auf Mengen (mehr dazu in LV Mathe) I

Element-Beziehung x ∈ M zwischen Individuen und Mengen

I

Teilmengen-Relation zwischen Mengen A ⊆ B gdw. : für alle x ∈ A gilt auch x ∈ B

I

Operationen auf Mengen: I I I

Vereinigung: A ∪ B = {x | x ∈ A oder x ∈ B} (kartesisches) Produkt: A × B = {(x, y ) | x ∈ A und y ∈ B} Folgen (mehrfaches Produkt über S derselben Menge): Ai = A × · · · × A, Notation A∗ = i∈N Ai | {z } i−mal

I

I

N

Für jedes i ∈ gilt Ai+1 = A × Ai , wobei A1 = A Potenzmenge (Menge aller Teilmengen) einer Menge A: 2A = {M ⊆ A} Menge aller Funktionen von Menge A in Menge B: B A = {f : A → B} (Potenzmenge ist Spezialfall mit B = {0, 1}) 33

Algebraische Strukturen – Beispiele I

Menge aller Menschen Relationen: älter-als, Geschwister (zweistellig) einstellige Relationen (Eigenschaften): blond Funktion (einstellig): Mutter

I

Menge aller natürlichen Zahlen Relationen: ≥ (zweistellig), | (teilt, zweistellig) einstellige Relationen (Eigenschaften): prim, gerade Funktion: Nachfolger (einstellig), + (zweistellig)

I

Menge 2 aller Punkte der Ebene Relationen: kleinerer-Abstand-von-0 (zweistellig), bilden-gleichseitiges-Dreieck (dreistellig) Funktionen: verschieben (einstellig), Mittelpunkt (zweistellig)

I

Menge A∗ aller endlichen Wörter (Vektoren) über Alphabet A Relation: Anfangswort (zweistellig), lexikographische Ordnung Funktionen: Spiegelung (einstellig), Verkettung (zweistellig)

N

R

34

Algebraische Strukturen desselben Types A Menge {0, 1} mit I Konstanten 0, 1 I Funktionen min, max (zweistellig) I Eigenschaft gerade I Relation ≤ (zweistellig) B Menge aller Studenten im Raum mit I Konstanten Anton, Berta I Funktionen Älterer, kleinere-Matrikelnummer(zweistellig) I Eigenschaft blond I Relation befreundet (zweistellig) C Menge 2N mit I Konstanten ∅, I Funktionen ∩, ∪ (zweistellig) I Eigenschaft endlich I Relation ⊆ (zweistellig)

N

35

Signaturen Gemeinsamkeiten der Strukturen A, B, C: I I I I

zwei Konstanten (nullstellige Funktionen) zwei zweistellige Funktionen eine Eigenschaft (einstellige Relation) eine zweistellige Relation

Bezeichnung der Relationen und Funktionen durch Symbole (mit zugeordneter Stelligkeit): Signatur Σ = (ΣF , ΣR ) mit Mengen ΣF = {(f , n) | n ∈ } von Funktionssymbolen (mit Stelligkeit) ΣR = {(R, n) | n ∈ } von Relationssymbolen (mit Stelligkeit) (nullstellige Funktionssymbole heißen Konstantensymbole) Signatur definiert einen Typ von Strukturen Strukturen mit derselben Signatur können sich unterscheiden in

N N

I I

Trägermenge Bedeutung der Funktions- und Relationssymbole 36

Beispiele für Signaturen

I

Signatur für arithmetische Ausdrücke über natürlichen, rationalen, reellen, . . . Zahlen ΣF = {(+, 2), (−, 2), (·, 2), (/, 2)}∪ je ein nullstelliges Symbol für jede Zahl aus der Trägermenge ΣR = {(=, 2), (≤, 2)}

I

Signatur für aussagenlogische Formeln ΣF = {(∨, 2), (∧, 2), (→, 2), (¬, 1), (f, 0), (t, 0)}, ΣR = ∅

I

Signatur für alle drei Strukturen A, B, C auf früherer Folie: ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} ΣR = {(zwiebel, 1), (tomate, 2)}

37

Terme gegeben:

N

I

funktionale Signatur ΣF = {(f , n) | n ∈ } (Relationssysmbole kommen in Termen nicht vor)

I

Menge

X von Individuenvariablen

Definition (induktiv)

X

Die Menge Term(ΣF , ) aller Terme über der (funktionalen) Signatur ΣF mit Variablen aus der Menge ist definiert durch: IA Jede Variable x ∈

X

X ist ein Term. (X ⊆ Term(ΣF , X))

IS Sind (f , n) ∈ ΣF (f ist n-stelliges Funktionssymbol) und t1 , . . . , tn Terme aus Term(ΣF , ), dann ist f (t1 , . . . , tn ) ein Term aus Term(ΣF , ).

X

X

Terme haben Baumstruktur verschiedene Darstellungen möglich, z.B. Infix-, Präfix-, Postfixform Terme ohne Variablen heißen Grundterme. Menge aller Grundterme: Term (ΣF , ∅) 38

Terme – Beispiele I

X

für ΣF = {(f , 1), (g, 2), (h, 2), (c, 0)} und = {x, y , z} gilt z.B. c ∈ Term(ΣF , ∅) ⊆ Term(ΣF , ) (Grundterm) z ∈ Term(ΣF , ), aber z 6∈ Term(ΣF , ∅) (kein Grundterm) f (c) ∈ Term(ΣF , ∅) ⊆ Term(ΣF , ), h(f (x), c) ∈ Term(ΣF , ), aber h(f (x), c) 6∈ Term(ΣF , ∅) f 6∈ Term(ΣF , ), h(c) 6∈ Term(ΣF , ), x(c) 6∈ Term(ΣF , )

X

X

X

X

X

X

Q

X

I

für ΣF = {(+, 2), (−, 2), (·, 2), (/ 2)} ∪ {(q, 0) | q ∈ } ist Term(ΣF , ∅) die Menge aller arithmetischen Ausdrücke (Terme) mit rationalen Zahlen (z.B. 3/5+1/4), Term(ΣF , {a, b, c}) die Menge aller arithmetischen Ausdrücke (Terme) mit rationalen Zahlen und Variablen aus der Menge {a, b, c} (z.B. 3a+2b/c),

I

ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} I apfel ∈ Term(Σ , ∅), Grundterm F I kirsche (x, pflaume(y , banane)) ∈ Term(Σ , {x, y , z}) F kein Grundterm I banane(apfel(pflaume, kirsche(pflaume))) 6∈ Term(Σ , F I pflaume(apfel, kirsche(banane, apfel)) ∈ Term(Σ , ∅) F

X) 39

Was bisher geschah

I

Beziehung zwischen Realität und formalem Modell

I

Semantik (Bedeutung) und Syntax (Darstellungsform)

I

algebraische Strukturen (M, F , R) mit M Menge von Daten (Trägermenge) F Funktionen auf M R Eigenschaften, Relationen auf M

I

Signaturen Σ = (ΣF , ΣR )

I

Menge aller Terme Term(ΣF , ) über der funktionalen Signatur ΣF und der Variablenmenge

X

X

40

Wiederholung Terme Definition (induktiv)

X

Die Menge Term(ΣF , ) aller Terme über der (funktionalen) Signatur ΣF mit Variablen aus der Menge ist definiert durch: IA Jede Variable x ∈

X

X ist ein Term. (X ⊆ Term(ΣF , X))

IS Sind (f , n) ∈ ΣF (f ist n-stelliges Funktionssymbol) und t1 , . . . , tn Terme aus Term(ΣF , ), dann ist f (t1 , . . . , tn ) ein Term aus Term(ΣF , ).

X

X

Beispiele: I

Für die Signatur ΣF = {(f , 2), (g, 1), (a, 0)} und die Variablenmenge = {x, y , z} gilt f (g(x), f (y , g(f (a, z)))) ∈ Term(ΣF , ), a(f (a, f (x, b(c)))) 6∈ Term(ΣF , )

X

X

I

X

Für die Signatur ΣF = {(z, 0), (s, 1)} gilt z ∈ Term(ΣF , ∅), s(s(z)) ∈ Term(ΣF , ∅), allgemein:

Term(ΣF , ∅) = {s(. . . (s(z)) . . .) | i ∈ | {z }

N}

i−mal

41

Menge aller Variablen in einem Term Definition (induktiv):

X

Für jeden Term t ∈ Term(ΣF , ) ist die Menge var(t) aller in t vorkommenden Variablen definiert durch: IA: falls t = x ∈

X (Variable), dann var(t) = {x}

IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann var(t) = var(t1 ) ∪ · · · ∪ var(tn )

Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt var(t) = {x, y }

42

Anzahl der Variablenvorkommen in einem Term Definition (induktiv):

X

Für jeden Term t ∈ Term(ΣF , ) ist die Anzahl varcount(t) aller Variablenvorkommen in t definiert durch: IA: falls t = x ∈

X (Variable), dann varcount(t) = 1

IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann varcount(t) = varcount(t1 ) + · · · + varcount(tn ) Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt varcount(t) = 3 varcount(t) ist die Anzahl aller mit Variablen markierten Blätter im Termbaum von t Allgemein gilt varcount(t) ≥ |var(t)| 43

Tiefe des Terms Definition (induktiv):

Für jeden Term t ∈ Term(ΣF , durch: IA: falls t = x ∈

X) ist seine Tiefe tiefe(t) definiert

X (Variable), dann tiefe(t) = 0

IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann tiefe(t) = 1 + max{tiefe(t1 ), . . . , tiefe(tn )} (wobei max(∅) = 0)

Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt tiefe(t) = . . .

44

Postorder-Folge des Terms Definition (induktiv):

Für jeden Term t ∈ Term(ΣF , postorder(t) definiert durch: IA: falls t = x ∈

X) ist seine Postorder-Folge

X (Variable), dann postorder(t) = x

IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann postorder(t) = postorder(t1 ) ◦ · · · ◦ postorder(tn ) ◦ f (◦ Verkettung)

Beispiel: Für t = f (g(x, a), g(f (a, y ), x)) gilt postorder(t) = . . .

45

Menge aller Teilterme eines Terms Definition (induktiv):

Für jeden Term t ∈ Term(ΣF , Teilterme t definiert durch: IA: falls t = x ∈

X) ist die Menge TT(t) aller

X (Variable), dann TT(t) = {x}

IS: falls t = f (t1 , . . . , tn ) mit (f , n) ∈ ΣF , dann TT(t) = {t} ∪ TT(t1 ) ∪ · · · ∪ TT(tn )

Beispiel: Für t = g(f (a, x), x) gilt TT(t) = . . .

46

Prinzip der strukturellen Induktion Beobachtung: Bestimmung von Variablenmenge, Anzahl der Variablenvorkommen, Menge der Teilterme, Tiefe eines Terms, Postorder-Folge geschah nach demselben Schema: Definition einer Funktion f : Term(ΣF ,

X) → M durch

Induktion über die Struktur des Terms Für jeden Terme t ∈ Term(ΣF , definiert durch:

X) ist der Funktionswert f (t)

IA: Definition des Funktionswertes f (t) für Variablen t = x ∈ (Blätter im Termbaum)

X

IS: Definition des Funktionswertes f (t) für zusammengesetzten Terme t = f (t1 , . . . , tn ) durch eine Kombination der Funktionswerte der direkten Teilterme von t (also t1 , . . . , tn ) 47

Beweise durch strukturelle Induktion Nachweis, dass eine Eigenschaft E für alle Terme t ∈ Term(ΣF , ) gilt durch

X

Induktion über die Struktur des Terms

X

Die Eigenschaft E ist für jeden Term t ∈ Term(ΣF , ) erfüllt, wenn man die folgenden beiden Aussagen nachweisen kann: IA: E gilt für jede Variable t = x ∈

X (Blätter im Termbaum)

IS: Falls E für n Terme t1 , . . . , tn gilt und (f , n) ∈ ΣF , dann gilt E auch für t = f (t1 , . . . , tn ) IV : E gilt für die Terme t1 , . . . , tn IH : E gilt für f (t1 , . . . , tn ) (mit (f , n) ∈ ΣF ) IB : Nachweis, dass IH aus IV folgt. prominenter Spezialfall: Beweise durch vollständige Induktion (für (mehr dazu in den Mathematik-LV)

N) 48

Σ-Strukturen (Semantik) Definition Zu einer Signatur Σ = (ΣF , ΣR ) heißt A = (A, J·KA ) genau dann Σ-Struktur, wenn I

A 6= ∅ Trägermenge (Universum)

I

für jedes (f , n) ∈ ΣF gilt Jf KA : An → A (Jf KA ist eine n-stellige Funktion auf A)

I

für jedes (R, n) ∈ ΣR gilt JRKA ⊆ An (JRKA ist eine n-stellige Relation auf A)

Für jedes Symbol s aus der Signatur Σ bezeichnet JsKA die Bedeutung (Semantik) von s in der Struktur A. Beispiel: Für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(c, 0)} und ΣR = {(b, 1), (f , 2)} ist die Struktur A = (A, J·KA ) mit A = Menge aller Studenten in diesem Raum, JcKA = Student links hinten, JbKA = blond, Jf KA = befreundet eine Σ-Struktur 49

Beispiele für Σ-Strukturen I

für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(+, 2), (1, 0)} und ΣR = {(≤, 2)} sind z.B. ( , {+, 1}, {≤}) und ( , {+, 1}, {≤}) Σ-Strukturen für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(f , 2), (c, 0)} und ΣR = {(R, 2)} sind z.B. ( , {+, 0}, {|}) und ( , {, 2}, {≤}) Σ-Strukturen Für die Signatur Σ = (ΣF , ΣR ) mit ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} ΣR = {(zwiebel, 1), (tomate, 2)} sind z.B. die folgenden Strukturen Σ-Strukturen:

N

I

Q

N

I

I

I

Q

A = ({0, 1}, J·KA ) mit JapfelKA = 0, JbananeKA = 1 JkirscheKA = min, JpflaumeKA = max JzwiebelKA = {0}, JtomateKA = ≤ B = ( , J·KB ) mit JapfelKB = 3, JbananeKB = −1 JkirscheKB (x, y ) = x y , JpflaumeKB (x, y ) = x − y JzwiebelKB = 2 (gerade), JtomateKB = {(x, y ) | x < y }

R

Z

50

Wert von Grundtermen in Strukturen gegeben: funktionale Signatur ΣF = {(f , n) | n ∈ ΣF -Struktur A = (A, J·KA )

N}

Definition (induktiv) Der Wert des ΣF -Grundtermes t = f (t1 , . . . , tn ) ∈ Term(ΣF , ∅) in der ΣF -Struktur A = (A, J·KA ) ist JtKA = Jf KA (Jt1 KA , . . . , Jtn KA ) Fehlt hier der Induktionsanfang? nein, als Spezialfall enthalten: Für t = c mit (c, 0) ∈ ΣF (Konstante) gilt JtKA = JcKA (Bedeutung der Konstante c in A, gegeben in Definition von A) 51

Beispiel Signatur Σ = (ΣF , ΣR ) mit ΣF = {(apfel, 0), (banane, 0), (kirsche, 2), (pflaume, 2)} ΣR = {(zwiebel, 1), (tomate, 2)} s = apfel t = pflaume(apfel, kirsche(banane, apfel)) Σ-Struktur A = (A, J·KA ) mit

A =

N

JapfelKA = 5

JbananeKA = 3

für alle a, b ∈ A: JkirscheKA (a, b) = a + b

für alle a, b ∈ A: JpflaumeKA (a, b) = a · b

JzwiebelKA = {0, . . . , 10}

JtomateKA = {(2n, n) | n ∈

JsKA = 5 JtKA = . . .

N} 52

Weiteres Beispiel s = apfel t = pflaume(apfel, kirsche(banane, apfel)) Σ-Struktur B = (B, J·KB ) mit B = {0, 1} JapfelKB = 0

JbananeKB = 1

für alle a, b ∈ B: JkirscheKB (a, b) = min(a, b)

für alle a, b ∈ B: JpflaumeKB (a, b) = max(a, b) JzwiebelKB = {0}

JtomateKB = {(0, 0), (0, 1), (1, 1)}

JsKB = JapfelKB = 0,

JtKB = . . . 53

Noch ein Beispiel s = apfel t = pflaume(apfel, kirsche(banane, apfel)) Σ-Struktur D = (D, J·KD ) mit

D = 2N JapfelKD = ∅

JbananeKD =

N

für alle M, N ∈ D: JkirscheKD (M, N) = M ∩ N

für alle M, N ∈ D: JpflaumeKD (M, N) = M ∪ N JzwiebelKD = {M ⊆

N | |M| ∈ N}

JtomateKD = {(M, N) ∈ D 2 | M ⊆ N}

JsKD = JapfelKD = ∅,

JtKD = . . . 54

Äquivalenz von Grundtermen in einer Struktur Definition ΣF -Grundterme s, t ∈ Term(ΣF , ∅) mit JsKA = JtKA heißen äquivalent in A (s ≡A t). In den Beispielen oben gilt s ≡B t, aber s 6≡A t. aus dem Mathematik-Unterricht (Schule): Äquivalenz von Termen lässt sich oft durch syntaktische Umformungen (Termersetzung) testen z.B. Ausklammern, Ausmultiplizieren, Summanden vertauschen usw.

55

Was bisher geschah I

Beziehung zwischen Realität und formalem Modell

I

Semantik (Bedeutung) und Syntax (Darstellungsform) von Daten

Syntax (Terme): I

Signaturen Σ = (ΣF , ΣR )

I

Term(ΣF ,

I

strukturelle Induktion über Terme (für Funktionen, Beweise)

X): Menge aller Terme über ΣF und X

Semantik von Termen: I

algebraische Strukturen (M, F , R)

I

Σ-Strukturen A = (A, J·KA ) mit I

I I

A 6= ∅ Trägermenge (Universum) für jedes (f , n) ∈ ΣF gilt Jf KA : An → A für jedes (R, n) ∈ ΣR gilt JRKA ⊆ An

I

Werte von Grundtermen in Σ-Strukturen (induktiv definiert)

I

Äquivalenz von Grundtermen in Σ-Strukturen 56

Interpretationen für Terme mit Variablen gegeben: Signatur Σ = (ΣF , ΣR ), Variablenmenge Σ-Struktur A = (A, J·KA ) Term t ∈ Term(ΣF , )

X

X

Problem: Welchen Wert in A repräsentieren Variablen x ∈

X

X?

Lösung: Belegung β : → A der Individuenvariablen (ordnet jeder Variablen einen Wert aus der Trägermenge von A zu)

Definition Eine (Σ-)Interpretation für einen Term t ∈ Term(ΣF , Paar (A, β) aus I I

X) ist ein

einer Σ-Struktur A = (A, J·KA ) und

einer Belegung β :

X → A.

57

Beispiele Signatur Σ = {(f , 2), (g, 2), (a, 0)}, Variablenmenge I

N

Interpretation (A, α) mit Σ-Struktur A = ( , J·KA ), wobei ∀m, n ∈ ∀m, n ∈

N: N:

JaKA = 1 Jf KA (m, n) = m + n JgKA (m, n) = m · n

und Variablenbelegung α : {x, y } → α(x) = 2 und α(y ) = 1 I

X = {x, y }

N, wobei

Interpretation (B, β) mit Σ-Struktur B = (2{a,b,c} , J·KB ): 2{a,b,c}

∀M, N ∈ ∀M, N ∈ 2{a,b,c}

JaKB = {b, c} : Jf KB (M, N) = M \ N : JgKB (M, N) = M ∪ N

und Variablenbelegung β : {x, y } → 2{a,b,c} , wobei β(x) = ∅ und β(y ) = {b} 58

Interpretation von Termen mit Variablen Definition (induktiv) Für jede Signatur Σ = (ΣF , ΣR ), jede Interpretation (A, β) mit A = (A, J·KA ) und β : → A ist der Wert des Termes t ∈ Term(ΣF , ) in (A, β) definiert durch

X

X

IA falls t = x ∈

X, dann JtK(A,β) = β(x)

IS falls t = f (t1 , . . . , tn ), dann

JtKA = Jf KA Jt1 K(A,β) , . . . , Jtn K(A,β)



Der Wert eines Termes in einer Interpretation ((A, J·KA ), α) ist ein Element aus A.

59

Beispiele Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (b, 0), (f , 1), (g, 2), (h, 2)} und ΣR = ∅ Variablenmenge = {x, y }

X

Σ-Struktur S = (S, J·KS ) mit S JaKS JbKS ∀d ∈ S : Jf KS (d) ∀d, e ∈ S : JgKS (d, e) ∀d, e ∈ S : JhKS (a, b) Variablenbelegungen

β : {x, y } → γ : {x, y } →

= = = = = =

N

5 3 1+d d +e d ·e

N mit β(x) = 0, β(y ) = 1 N mit γ(x) = 2, γ(y ) = 0

Terme s = g(h(f (a), x), h(x, y )) und t = h(f (x), g(y , a)) JsK(S,β) = . . . , JtK(S,β) = . . . , JsK(S,γ) = . . . , JtK(S,γ) = . . . (Tafel) 60

Mehrsortige Signaturen

S

mehrsortige Signatur (mit Sorten aus einer Menge ) enthält Relationssymbole mit Argumenttypen (s ⊆ ∗ ) Funktionssymbole mit Argument-und Ergebnistypen (f : ∗ → )

S

S

S

mehrsortige Signatur Σ mit Sorten

S = {Si | i ∈ I}

Beispiel: Bücher mit Autoren und Erscheinungsjahr I

Sorten: B (Bücher), P (Personen), J (Jahreszahlen), 2B (Mengen von Büchern),

I

Funktionssymbole (mit Argument-und Ergebnistypen): erscheinungsjahr :B →J erstesBuch :P →B gemeinsameBücher : P × P → 2B Relationen (mit Argumenttypen): Autor ⊆B×P Coautor ⊆ P × P

I

61

Terme über mehrsortigen Signaturen

S

gegeben: mehrsortige Signatur Σ mit Menge von Sorten Variablenmenge 0 = × (jede Variable mit einer zugeordneter Sorte aus )

X X S

S

Definition (induktiv)

S

X

Für jede Sorte S ∈ ist die Menge TermS (Σ, 0 ) aller Terme der Sorte S mit Variablen aus der Menge 0 definiert durch: IA: {x | (x : S) ∈

X

X0 } ⊆ TermS (ΣF , X0 )

IS: Für alle f mit (f : S1 × · · · × Sn → S) ∈ Σ und alle Tupel (t1 , . . . , tn ), wobei für alle k ∈ {1, . . . , n} gilt tk ∈ TermSk (Σ, 0 ), ist f (t1 , . . . , tn ) ∈ TermS (Σ, 0 )

X

X

Spezialfall: Jede Konstante f : S ∈ Σ ist Σ-Term der Sorte S. Beispiele: t = erscheinungsjahr(erstesBuch(x)) mit (x : P) ∈ 0 ist ein Term in TermJ (Σ, 0 ) erstesBuch(erscheinungsjahr(x)) ist kein Term

X

X

62

Mehrsortige Σ-Strukturen

S

gegeben: -sortige Signatur Σ

S

Σ-Struktur A = ({AS | S ∈ }, J·KA ) mit

S

I

für jede Sorte S ∈ eine nichtleere Menge AS (Trägermenge, Universum der Sorte)

I

für jedes Funktionssymbol f : S1 . . . Sn → S eine Funktion Jf KA : AS1 × . . . × ASn → AS

I

für jedes Relationssymbol R : S1 × . . . × Sn eine Relation JRKA ⊆ AS1 × . . . × ASn

S

S

Wert von Termen mit -sortiger Signatur Σ in der -sortigen Struktur A = ({AS | S ∈ }, J·KA ) analog zur Definition für einsortige Signaturen und Strukturen

S

63

Relationen als mehrsortige Funktionen Beispiel: (einsortiges) Relationssymbol (r , 2) Signatur Σ = (ΣF , ΣR ) mit ΣF = ∅ und ΣR = {(r , 2)} Interpretation in einer einsortigen Σ-Struktur A mit Träger |A| und Jr KA ⊆ |A| × |A| Einführung der Sorten S (für Trägermenge) und

B

= {f, t} (für Wahrheitswerte)

Definition der Funktion fr : S × S →

B mit

∀(x, y ) ∈ S 2 : (x, y ) ∈ r gdw. fR (x, y ) = t

64

Relationen als mehrsortige Funktionen für beliebige Stelligkeit n: Übersetzung jedes Relationssymbols (r , n) ∈ ΣR in ein Funktionssymbol fr : S n → , so dass

B

∀(x1 , . . . , xn ) ∈ S n : (x1 , . . . , xn ) ∈ r gdw. fr (x1 , . . . , xn ) = t

Jeder relationalen (einsortigen) Signatur ΣR läßt sich eine zweisortige funktionale Signatur Σ0 = Σ0F ∪ Σ0R zuordnen: Σ0F

= {f : S n → S | (f , n) ∈ ΣF }

Σ0R = {fr : S n →

B | (r , n) ∈ ΣR }

Analog lassen sich mehrsortige Relationen durch mehrsortige Funktionen ersetzen. Es genügt also, mehrsortige Strukturen ohne Relationen zu betrachten. 65

Abstrakter Datentyp (Interface) – Beispiel Aufgabe: Verwaltung einer Menge ganzer Zahlen (z.B. ID-Nummern), so dass festgestellt werden kann, ob eine Zahl darin enthalten ist und Zahlen hinzugefügt und entfernt werden können.

B

Sorten (Wertebereiche): Zahl, Menge, Wahrheitswert ( ) Signatur: Funktionen zum Finden, Hinzufügen, Entfernen

B B

contains : Menge × Zahl → add, remove : Menge × Zahl → Menge isempty : Menge → emptyset : Menge Axiome (definieren die Semantik der Operationen): ∀n ∈ Zahl ∀s ∈ Menge ∀n ∈ ∀s ∈ Menge ∀n ∈ ∀s ∈ Menge ∀m, n ∈ ∀s ∈ Menge ∀n ∈

N N N N

: : : : :

isempty((emptyset) = t, contains(emptyset, n) = f, contains(add(s, n), n) = t, contains(remove(s, n), n) = f, add(add(s, n), m) = add(add(s, m), n), add(add(s, n), n) = add(s, n), . . . 66

Konkreter Datentyp (Implementierung) – Beispiel verschiedene Möglichkeiten zur Darstellung der Sorten: 1. Wahrheitswerte z.B. als {0, 1}, {−1, 0} 2. Zahlen in verschiedenen Zahlendarstellungen, z.B. dezimal, binär, zu anderer Basis, Maschinenzahlen (eingeschränkter Bereich) 3. Mengen als (sortierte) Folgen (mit / ohne Wiederholungen) von Zahlen 4. Zuordnung Zahl → {f, t} mit t, falls Zahl in der Menge, f sonst (charakteristische Funktion) 5. {0, 1}-Folgen abstrakter Datentyp: Signatur Σ und Axiome Φ, exakte Formulierung der Aufgabe, Spezifikation konkreter Datentyp: Σ-Struktur, welche Φ erfüllt (Modell für Φ) Umsetzung, Implementierung (mehr dazu in LV Algorithmen und Datenstrukturen) 67

Wiederholung ADT Stack (Stapel, Keller) Sorten E: Elementtyp, S: Stapel von Elementen vom Typ E, (Wahrheitswerte)

B

Signatur Σ: top pop push new isEmpty Axiome , z.B. ∀s ∀s ∀s ∀s

∈S ∈S ∈S ∈S

:S :S :E ×S : :S

∀e ∈ E ∀e ∈ E ∀e ∈ E ∀e ∈ E

: : : :

→E →S →S S →

B

isEmpty(new) isEmpty(push(e, s)) top(push(e, s)) pop(push(e, s)) push(top(s), pop(s))

= = = = =

t f e s s 68

Was bisher geschah: Modellierung von Daten I

Beziehung zwischen Realität und formalem Modell

I

Semantik (Bedeutung) und Syntax (Darstellungsform) von Daten

I

Beispiel (ÜA) lineares Solitaire

Syntax: I

Signaturen Σ = (ΣF , ΣR )

I

Terme in Term(ΣF ,

I

strukturelle Induktion über Terme (für Funktionen, Beweise)

X)

Semantik: I

algebraische Strukturen (M, F , R)

I

Interpretationen (A, β) mit I I

I

Σ-Struktur A = (A, J·KA ) Belegung der Individuenvariablen β :

X→A

Werte von Termen in Interpretationen 69

Wörter – 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 70

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 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∗ 71

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). 72

Verkettung von Wörtern 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. ∀u, v , w ∈ A∗ : (u ◦ v ) ◦ w = u ◦ (v ◦ w) I

Das leere Wort ε ist neutrales Element für ◦, d.h. ∀w ∈ A∗ : ε ◦ w = w ◦ ε = w

◦ ist nicht kommutativ. Gegenbeispiel: u = marie, v = anne u ◦ v = marieanne 6= annemarie = v ◦ u 73

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



m ◦ (ate)R

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

R

R

R !R ◦n

= ...

= w.

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

74

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 75

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 u v v genau dann, wenn ein Wort w ∈ A∗ existiert, so dass 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 = ε) 76

Postfix- und Infix-Relation auf Wörtern Postfix-Relation: Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ 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 = 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

77

Sprachen als Mengen Sprachen L ⊆ A∗ sind Mengen von Wörtern Mengenrelationen auf Sprachen: L ⊆ L0 gdw.

∀w ∈ A∗ : w ∈ L → w ∈ L0

L = L0 gdw.

∀w ∈ A∗ : w ∈ L ↔ w ∈ L0

Mengenoperationen auf Sprachen: L ∪ L0 = {w | w ∈ L ∨ w ∈ L0 } L ∩ L0 = {w | w ∈ L ∧ w ∈ L0 } L \ L0 = {w | w ∈ L ∧ w 6∈ L0 } Komplement einer Sprache L ⊆ A∗ : L = A∗ \ L Beispiel: [ [ L= An L= An ∪

N

n∈3

N

n∈{3i+1|i∈ }

[

N

An

n∈{3i+2|i∈ } 78

Was bisher geschah

I I

Alphabet, Wort, Sprache Operationen auf Wörtern: I I

Spiegelung R Verkettung ◦

I

Palindrome

I

Relationen zwischen Wörtern: Präfix, Infix, Postfix

I

Mengenoperationen und -relationen auf Sprachen: ∪, ∩, , \, ⊆, =

79

Weitere Operationen auf Sprachen Verkettung ◦ von Sprachen: L1 ◦ L2 = {u ◦ v | u ∈ L1 ∧ v ∈ L2 } Beispiel: L1 = {111, 1, 10} L2 = {00, 0} L1 ◦ L2 = {111, 1, 10} ◦ {00, 0} = {1110, 11100, 10, 100, 1000}

Spiegelung LR = {w R | w ∈ L} Beispiel: L = {a, ab, aba, abab} LR = {a, ba, aba, baba}

80

Iterierte Verkettung I

für Sprachen L ⊆ A∗ L0 = {ε}

∀n ∈

N:

Ln+1 = Ln ◦ L = L · · ◦ L} | ◦ ·{z n+1−mal

L∗ =

[ n∈

I

N

Ln

L+ =

[

N

Ln

n∈ \{0}

für Wörter u ∈ A∗ : ∈ A∗ ,

u ∗ = {u}∗ = {u n | n ∈

un

= u · · u} | ·{z

u+

= u ∗ \ {ε} = {u}+ = {u n | n ∈

n−mal

N \ {0}}

N}

⊆ A∗

⊆ A∗

Beispiele: (101)3 a∗ ∗

(ab)

= 101101101

und

1013 = 10111

N} = {ε, a, aa, aaa, . . .} | i ∈ N} = {ε, ab, abab, ababab, . . .}

= {ai | i ∈ = {(ab)

i

81

Mehr Beispiele für Sprachen

I

{aa, b}∗

N ∧ ∀i ∈ {1, . . . , n} : ui ∈ {aa, b}}

=

{u1 ◦ · · · ◦ un | n ∈

=

{ε, b, aa, bb, aab, baa, bbb, aaaa, aabb, baab, bbaa, bbbb, . . .}

I

∅ ◦ {aba, bb} = . . .

I

{ε} ◦ {aba, bb} = . . .

I

{bb}∗ = {w ∈ b∗ | |w| ∈ 2 } = . . . {0}∗ )∗

N

= {w ∈ {0, 1}∗ | w1 = 1} ∪ {ε}

I

({1} ◦

I

({a} ∪ {b, ab})∗ = . . .

82

Reguläre Ausdrücke – Syntax Die Menge RegExp(A) aller regulären Ausdrücke über einem Alphabet A ist (induktiv) definiert durch: IA: ∅ ∈ RegExp(A), ε ∈ RegExp(A) und für jedes Symbol a ∈ A gilt a ∈ RegExp(A) IS: für alle E ∈ RegExp(A) und F ∈ RegExp(A) gilt (E + F ), EF , (E)∗ ∈ RegExp(A). Beispiele: ε + a, ε + ∅, (a + ∅)∗ , ε + ((ab)∗ a)∗ dieselbe Definition kürzer: RegExp(A) = Term(ΣF , ∅) für die Signatur ΣF = {(∅, 0), (ε, 0), (∗ , 1), (+, 2), (·, 2)} ∪ {(a, 0) | a ∈ A} (Baumdarstellung) 83

Beispiele (ohne überflüssige Klammern) I

Für A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} gilt 0+(1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9)∗ ∈ RegExp(A)

I

Für A = {0, 1} gilt I I

(1 + ε)∗ + (10)∗ ∈ RegExp(A) (0 + 11)∗ + ((0 + (1)∗ )0)∗ ∈ RegExp(A)

Oft werden A E + = EE ∗ En = E · · E} | ·{z n−mal

∗



E n∗ = E · · E} | ·{z n−mal

für n ∈

N als Kurzbezeichnungen verwendet. 84

Reguläre Ausdrücke – Semantik Jeder reguläre Ausdruck E ∈ RegExp(A) repräsentiert eine Sprache L(E) ⊆ A∗ . L(∅) L(ε) ∀a ∈ A : L(a) ∀E, F ∈ RegExp(A) : L(E + F ) ∀E, F ∈ RegExp(A) : L(EF ) ∀E, F ∈ RegExp(A) : L(E ∗ )

= ∅ = {ε} = {a} = L(E) ∪ L(F ) = L(E) ◦ L(F ) ∗ = (L(E))

Eine Sprache L ⊆ A∗ heißt genau dann regulär, wenn ein regulärer Ausdruck E ∈ RegExp(A) existiert, so dass L = L(E). Beispiel: Die Menge L aller Dezimaldarstellungen natürlicher Zahlen ist regulär wegen L = L (0 + (1 + 2 + · · · + 9)(0 + 1 + · · · + 9)∗ )

85

Beispiele Für A = {a, b} gilt

N} | i ∈ N}

L(ab∗ ) = {a, ab, abb, abbb, abbbb, . . .} = {abi | i ∈ ∗

L((ab) ) = {ε, ab, abab, ababab, . . .} = {(ab) L((a + b)∗ ) = {a, b}∗

i

L(a∗ b∗ ) = {u ◦ v | u ∈ a∗ ∧ v ∈ b∗ } L((a∗ b∗ )∗ ) = {a, b}∗ L(A∗ aba) = {u ◦ aba | u ∈ A∗ }∗

Reguläre Ausdrücke ermöglichen eine endliche Darstellung unendlicher Sprachen.

86

Beispiele regulärer Sprachen

I

L1 = ∅, wegen ∅ ∈ RegExp(A) und L(∅) = ∅ = L1

I

L2 = {a, bab}, wegen a + bab ∈ RegExp(A) und L(a + bab) = L2

I

L3 = {w ∈ {a, b, c}∗ | abba v w}, wegen abba(a + b + c)∗ ∈ RegExp(A) und L(abba(a + b + c)∗ ) = L3

I

{w ∈ {a, b, c}∗ | aa oder bbb sind Infix von w}

I I I

N {w ∈ {a, b}∗ | |w|a ∈ 2N}

{w ∈ {a, b}∗ | |w| ∈ 2 }

alle möglichen HTWK-Email-Adressen

87

Äquivalenz regulärer Ausdrücke

Zwei reguläre Ausdrücke E, F ∈ RegExp(A) heißen genau dann äquivalent, wenn L(E) = L(F ) gilt.

Beispiele: I

(a + b)∗ , (a∗ + b∗ )∗ und a∗ (ba∗ )∗ sind äquivalent

I

ab∗ und (ab)∗ sind nicht äquivalent

I

(11 + 0 + 110 + 011)∗ und (11 + 0)∗ sind . . .

88

Was bisher geschah Alphabet, Wort, Sprache Wörter: I

Operationen auf Wörtern: Verkettung ◦, Spiegelung

I

Relationen auf Wörtern: Palindrom (Eigenschaft), Präfix (v), Infix, Postfix

R

Sprachen (Mengen von Wörtern) I

Operationen auf Sprachen: Mengenoperationen ∪, ∩, , \ Verkettung ◦ und Spiegelung R von Sprachen iterierte Verkettung ∗

I

Relationen zwischen Sprachen: Mengenrelationen ⊆, =

Reguläre Ausdrücke, reguläre Sprachen 89

Weitere Relationen auf A∗ (Halb-)Ordnungen (Definition in Mathe-LV) Präfix-, Postfix-, Infix-Relation auf A∗ bei gegebener Reihenfolge < auf dem Alphabet A: lexikographische Ordnung auf A∗ : ∀u, v ∈ A∗ : u ≤lex v gdw. 1. u v v oder 2. ∃w ∈ A∗ ∃a, b ∈ A : a < b ∧ wa v u ∧ wb v v quasi-lexikographische Ordnung auf A∗ : ∀u, v ∈ A∗ : u ≤qlex v gdw. 1. |u| ≤ |v | oder 2. |u| = |v | ∧ u ≤lex v Beispiele: für A = {a, b} mit a < b I ab v aba, ab ≤lex aba, ab ≤qlex aba I abab 6v abba, aber abab ≤lex abba und abab ≤qlex abba, I aaa ≤lex ab, aber aaa 6≤qlex ab I ab 6≤lex aaba, aber ab ≤qlex aaba 90

Interessante Fragen für Sprachen I

Ist ein gegebenes Wort w ∈ A∗ in der Sprache L ⊆ A∗ enthalten? (Wortproblem)

I

Enthält die Sprache L ⊆ A∗ nur endlich viele Wörter?

I

Gilt L1 ⊆ L2 für zwei Sprachen L1 , L2 ⊆ A∗ ?

I

Gilt L1 = L2 für zwei Sprachen L1 , L2 ⊆ A∗ ?

I

Ist eine gegebene Sprache L ⊆ A∗ regulär? (d.h. L = L(E) für einen regulären Ausdruck E ∈ RegExp(A))

I

Woran erkennt man, dass eine Sprache nicht regulär ist?

Alle Antworten sind für endliche Sprachen einfach, aber für unendliche Sprachen in endlicher Darstellung (z.B. durch reguläre Ausdrücke) meist schwierig.

91

Interessante Fragen für reguläre Ausdrücke I

Ist für einen gegebenen regulären Ausdruck E ∈ RegExp(A) ein gegebenes Wort w ∈ A∗ in der Sprache L(E) enthalten? (Wortproblem)

I

Gilt L(E) = ∅ für einen gegebenen regulären Ausdruck E ∈ RegExp(A)?

I

Gilt L(E) = A∗ für einen gegebenen regulären Ausdruck E ∈ RegExp(A)?

I

Sind zwei gegebene reguläre Ausdrücke E ∈ RegExp(A) und F ∈ RegExp(A) äquivalent? (also L(E) = L(F ))

I

Gilt L(E) ⊆ L(F ) für zwei gegebene reguläre Ausdrücke E ∈ RegExp(A) und F ∈ RegExp(A)?

I

Existiert für zwei gegebene reguläre Ausdrücke E ∈ RegExp(A) und F ∈ RegExp(A) ein Wort w ∈ A∗ mit w ∈ L(E) \ L(F )? 92

Wortproblem praktisch – Beispiele Eingabe : Sprache L ⊆ A∗ , z.B. durch regulären Ausdruck E mit L = L(E), Wort w ∈ A∗ Frage: Gilt w ∈ L? Ausgabe: ja oder nein (evtl. mit Begründung) I

Syntaktische Tests: I Ist die gegebene Zeichenkette die Dezimaldarstellung einer ganzen Zahl? (Sprache: Menge aller gültigen Dezimaldarstellungen) I Ist die gegebene Zeichenkette eine korrekt geformte Email-Adresse (der HTWK)? I Ist der gegebene Quelltext ein syntaktisch korrektes Java-Programm? I Ist die gegebene Zeichenkette die Binärdarstellung einer geraden Zahl? (durch drei teilbaren Zahl, usw.)

I

Folgen von Aktionen: I An- und Ausziehen (in umgekehrter Reihenfolge) I Ist eine Folge von Aktionen möglich / zulässig ? I Führt eine Folge von Nutzereingaben zu einem Fehler? 93

Wiederholung: Lineares Solitaire Startkonfiguration : n Spielsteine nebeneinander (oder andere Ausgangsposition) Spielzug : Münze springt über einen benachbarten Stein auf dahinterliegendes leeres Feld formale Modellierung: Konfiguration (Spielzustand): w ∈ {0, 1}∗ Startkonfiguration: 0 . . . 0 |1 .{z . . 1} 0 . . . 0 ∈ {0, 1}∗ n−mal

(oder anderes Wort w ∈ {0, 1}∗ ) mögliche Züge: an beliebiger passender Position 110 → 001 011 → 100 (Paare (l, r ) ∈ {0, 1}∗ × {0, 1}∗ , notiert l → r ) 94

Wortersetzungssysteme (Semi-Thue-Systeme, Axel Thue, 1914). Alphabet A Wortersetzungsregel (l, r ) ∈ A∗ × A∗ (notiert l → r ) Wortersetzungssystem (SRS) endliche Menge von Wortersetzungsregeln Beispiele: I A = {0, 1} I I

I

Regel 110 → 001, SRS S = {110 → 001, 011 → 100}

A = {a, b, c} I I

Regel ba → ab, SRS S = {a → ab, ba → c, abc → ε}

95

Anwendung von Wortersetzungsregeln Eine Regel l → r ist auf ein Wort w ∈ A∗ anwendbar, falls l ein Infix von w ist. Beispiel: Regel ma → ε ist I

auf tomate anwendbar, u = to, v = te,

I

auf am, motte und meta nicht anwendbar.

Eine Anwendung der Regel l → r auf ein Wort w = u ◦ l ◦ v ∈ ergibt das Wort u ◦ r ◦ v . (Ersetzung des Teilwortes l durch r ) Beispiel: ab → a angewendet auf baababa = u ◦ l ◦ v I

mit u = ba und v = aba ergibt baaaba

I

mit u = baab und v = a ergibt baabaa 96

Ableitungsschritt Ableitungsschritt (u, (l → r ), p, v ) im Wortersetzungssystem S mit u ∈ A∗ : Ausgangswort l → r ∈ S: auf u anwendbare Regel p ∈ {1, . . . , |u|}: Position im Wort u, an der der (gewählte) Infix l beginnt v ∈ A∗ : nach Anwendung der Regel l → r an Position p auf u entstandenes Wort Beispiel: S = {ab → ba, a → b}, u = aba mögliche Ableitungsschritte in S (aba, (ab → ba), 1, baa) (aba, (a → b), 3, abb) (aba, (a → b), 1, bba) 97

Ein-Schritt-Ableitungsrelation Jedes Wortersetzungssystem S ⊆ A∗ × A∗ definiert eine Relation →S ⊆ A∗ × A∗ , wobei genau dann u →S v gilt, wenn ein Ableitungsschritt (u, (l → r ), p, v ) mit (l → r ) ∈ S existiert.

Beispiel: Für S = {ab → ba, a → b} gilt I

aba →S baa wegen (aba, (ab → ba), 1, bba)

I

aba →S bba wegen (aba, (a → b), 1, bba)

I

aba →S abb wegen (aba, (a → b), 3, abb)

I

aba 6→S bbb

98

Ableitungen Eine Folge von Ableitungsschritten (u, (l1 → r1 ), p1 , u2 ), (u2 , (l2 → r2 ), p2 , u3 ), · · · , (un−1 , (ln−1 → rn−1 , pn−1 , v )

im Wortersetzungssystem S heißt Ableitung von u nach v in S. v heißt in S aus v ableitbar gdw. eine Ableitung von u nach v in S existiert. Beispiel: S = {ab → ba, a → b}, u = aba Folge von Ableitungsschritten (aba, (ab → ba), 1, baa), (baa, (a → b), 3, bab), (bab, (a → b), 2, bbb) ab→ba

a→b

a→b

aba −→ baa −→ bab −→ bbb

Länge der Ableitung = Anzahl der Ableitungsschritte In jedem System S existiert für jedes u ∈ A∗ die leere Ableitung (der Länge 0) von u nach u. 99

Beispiele S1 = {||| → |} mit u = ||||||| und v = |||| Was wird hier „berechnet“? Anderes Wortersetzungssystem mit derselben Wirkung?

S2 = {11 → 1, 00 → 1, 01 → 0, 10 → 0} und u = 1101001 Wirkung verschiedener Ableitungreihenfolgen?

S3 = {c → aca, c → bcb, c → a, c → b, c → ε} und u = c Menge aller in S3 ableitbaren Wörter, die kein c enthalten?

100

Ersetzungsrelation Jedes Wortersetzungssystem S ⊆ (A∗ × A∗ ) definiert die Ersetzungsrelation →∗S ⊆ (A∗ × A∗ ), wobei genau dann u →∗S v gilt, wenn eine Ableitung von u nach v existiert. Beispiel: S = {a → aa}, I

für jedes n ≥ 1 gilt ba →∗S b |a ·{z · · a} n

wegen ba →S baa →S baaa →S · · · →S b |a ·{z · · a} n

I

b →∗S b, aber für kein Wort w 6= b gilt b →∗S w

(→∗S ist die reflexive transitive Hülle von →S )

101

Sprachen aus Wortersetzungssystemen Jedes Paar (Wortersetzungssystem S, Anfangswort w ∈ A∗ ) über einem Alphabet A definiert die Sprache L(S, w) = {v ∈ A∗ | w →∗S v } (alle Wörter v , die von w durch eine Ableitung in S erreicht werden) Beispiel: S = {c → aca, c → bcb, c → ε}, w = c L(S, w) = {w ◦ c ◦ w R } (Menge aller Palindrome über {a, b, c}, die höchstens an der mittleren Position ein c enthalten) Jedes Paar (Wortersetzungssystem S, Menge M ⊆ A∗ ) über einem Alphabet A definiert die Sprache [ L(S, M) = L(S, w) w∈L

(alle Wörter v , die von irgendeinem w ∈ M durch eine Ableitung in S erreicht werden) 102

Ausdrucksstärke von Wortersetzungssystemen Wortersetzungssysteme (SRS) I

ermöglichen eine endliche Darstellung unendlicher Sprachen. (als Erzeugungsvorschrift für alle Wörter der Sprache) Beispiele: L ({ε → aaa}, ε) = {a3n | n ∈ } = L((aaa)∗ ) L ({2 → 020, 2 → 121}, 2) = {w2w R | w ∈ {0, 1}∗ }

N

I

können zur Modellierung von Zuständen und Übergängen dazwischen verwendet werden z.B. Spiele, Ausführung von Programmen, Programmverifikation Beispiel: lineares Solitaire

I

können Berechnungen simulieren (Bestimmung von erreichbaren Wörtern ohne Nachfolger) Beispiel: ε ∈ L ({||| → |}, ||||||)

103

Was bisher geschah I

Alphabet, Wort, Sprache

I

Operationen und Relationen auf Wörtern und Sprachen

I

interessante Fragen für Sprachen und Wörter (Wortproblem)

Reguläre Ausdrücke I

Syntax, Semantik

I

endliche Darstellung evtl. unendlicher Sprachen

Wortersetzungssysteme S ⊆ A∗ × A∗ I

Wortersetzungssregel l → r mit l, r ∈ A∗

I

Ersetzungsschritt in S

I

Ableitung in S: endliche Folge von Ersetzungsschritten

I

von Wortersetzungssystem S ⊆ A∗ × A∗ und Startwort w ∈ A∗ definierte Sprache L(S, w) ⊆ A∗ 104

Wortproblem für durch reguläre Ausdrücke definierte Sprachen ∗

Wortproblem (L, w) ∈ 2(A ) × A∗ ist definiert durch: I

Wort w ∈ A∗

I

Sprache L ⊆ A∗

und bedeutet: Gilt w ∈ L? durch reguläre Ausdrücke definierte Sprachen L = L(E) sind definiert durch I

regulären Ausdruck E ∈ RegExp(A)

Wortproblem (L(E), w) für durch reguläre Ausdrücke definierte Sprache L(E) ist definiert durch: I

Wort w ∈ A∗

I

regulären Ausdruck E ∈ RegExp(A∗ )

und bedeutet: Gilt w ∈ L(E)? Beispiele: I

Wortproblem (L(a∗ b∗ ), ab) (Gilt ab ∈ L(a∗ b∗ )?)

I

Wortproblem (L(a∗ b∗ ), ba) (Gilt ba ∈ L(a∗ b∗ )?) 105

Wortproblem für durch SRS erzeugte Sprachen Wortproblem (L, w) ist definiert durch: I

Wort w ∈ A∗

I

Sprache L ⊆ A∗

und bedeutet: Gilt w ∈ L? durch SRS erzeugte Sprache L = L(S, u) ist definiert durch I

Wortersetzungssystem S ⊆ A∗ × A∗

I

Startwort u ∈ A∗

Wortproblem (L(S, u), w) für eine durch ein SRS erzeugte Sprache ist definiert durch: I

Wort w ∈ A∗

I

Wortersetzungssystem S ⊆ A∗ × A∗

I

Startwort u ∈ A∗

und bedeutet: Gilt w ∈ L(S, u)? Beispiele: I

Wortproblem (L({a → aa, a → bb, ba → ab}, a), abab)

I

Wortproblem (L({aa → a, bb → ε}, abba), ε) 106

SRS-Wortproblem und Ableitbarkeit Wortproblem (L(S, u), w) mit I

Wort w ∈ A∗

I

Wortersetzungssystem S ⊆ A∗ × A∗

I

Startwort u ∈ A∗

bedeutet: Gilt w ∈ L(S, u)? alternative Formulierung: Gilt u →∗S w? Darstellung der Ableitungsrelation →S als (unendlicher) gerichteter Graph GS = (V , E) mit Knoten: V = A∗ Kanten: E = {(u, v ) ∈ A∗ | u →S v } ⊆ V 2 u →∗S w gilt genau dann, wenn in GS ein Pfad (zusammenhängende Folge von Kanten) von u nach w existiert. Beispiel: (Tafel) S = {ab → ba}, abab →∗S baba, aber abab 6→∗S abaa, abab 6→∗S aabb 107

Lösungsverfahren für SRS-Wortprobleme Lösung des Wortproblems und anderer Fragen zu Sprachen ist für endliche Sprachen einfach, für unendliche Sprachen oft nicht. Darstellung der Sprache durch ein Wortersetzungssystem kann helfen. Idee: Lösung des Wortproblem w ∈ L(S, u) durch Standardverfahren: Suche eines Pfades von u nach w im Ableitungsgraphen des Wortersetzungssystems S Problem: I

Pfadsuche ist Standardverfahren für endliche Graphen. (mehr dazu in LV Algorithmen und Datenstrukturen)

I

Ableitungsgraphen von Wortersetzungssystemen sind meist unendlich.

Standardverfahren anwendbar, wenn Suche in einer endlichen Menge von Wörtern (endlichem Teilgraphen) genügt 108

Nichtverlängernde Wortersetzungssysteme Ein Wortersetzungssystem S heißt genau dann nichtverlängernd, wenn für jede Regel (l → r ) ∈ S gilt: |l| ≥ |r |. Wortproblem (L, w): Eingabe : Sprache L ⊆ A∗ , Wort w ∈ A∗ Frage: Gilt w ∈ L? Ausgabe: ja oder nein Beispiel: S = {ab → ba, ac → a}, u = abcac, w = aacb

Satz Für jedes nichtverlängernde Wortersetzungssystem S ⊆ A∗ × A∗ und beliebige Wörter u, w ∈ A∗ ist das Wortproblem (L(S, u), w) in endlicher Zeit maschinell korrekt lösbar. Idee: Pfadsuche im endlichen Teilgraphen aller Wörter v ∈ A∗ mit |v | ≤ |u| 109

Nichtverkürzende Wortersetzungssysteme Ein Wortersetzungssystem S heißt genau dann nichtverkürzend, wenn für jede Regel (l → r ) ∈ S gilt: |l| ≤ |r |. Beispiel: S = {a → ba, b → a}, u = ba, w = bba, w 0 = aab

Satz Für jedes nichtverkürzende Wortersetzungssystem S ⊆ A∗ × A∗ und beliebige Wörter u, w ∈ A∗ ist das Wortproblem (L(S, u), w) in endlicher Zeit maschinell korrekt lösbar. Idee: Pfaduche im endlichen Teilgraphen aller Wörter v ∈ A∗ mit |u| ≤ |v | ≤ |w|

110

Wortersetzungssysteme mit verlängernden und verkürzenden Regeln Beispiel:  c     c      c aca S=    bcb     ada   bdb

→ → → → → → →

baaca, aacba, bbcabb, d, d, d, d

                  

Für Wortersetzungssysteme S mit verlängernden und verkürzenden Regeln existiert im Allgemeinen kein maschinelles Verfahren, welches für beliebige Wörter u, w ∈ A∗ feststellt, ob u →∗s w gilt. 111

Ableitbare Wörter über Teilalphabet Beispiele: A = {a, b, c},  c →      c → c → S=   c →    c →

aca, bcb, ε, a, b

          

L(S, c) = {u ◦ d ◦ u R | u ∈ {a, b}∗ ∧ d ∈ {a, b, c, ε}}

Menge aller Wörter in L(S, c) ∩ {a, b}∗ : Palindrome über {a, b} c ist Hilfssymbol zur Erzeugung der Palindrome 112

Natürliche Sprache Wortersetzungssystem S enthält die Regeln: Satz → Subjekt Prädikat . Subjekt → mArtikel mSubstantiv Subjekt → wArtikel wSubstantiv mArtikel → Der wArtikel → Die mSubstantiv → Hund wSubstantiv → Sonne Prädikat → bellt Prädikat → scheint Alphabet A = {Der, Die, Hund, Sonne, bellt, scheint, .}∪ { Satz, Subjekt, Prädikat, nArtikel, mArtikel, nSubstantiv, mSubstantiv} Ableitbare Wörter in L(S, Satz ) ohne Hilfssymbole aus der Menge {Satz, Subjekt, Prädikat, mArtikel, wArtikel, mSubstantiv, wSubstantiv}: Menge korrekter deutscher Sätze (dieser einfachen Form mit ausschließlich den Worten Der, Die, Hund, Sonne, bellt, scheint). 113

Aussagenlogik Wortersetzungssystem S enthält die Regeln: Formel → Variable Formel → Konstante Formel → ( ¬ Formel ) Formel → ( Formel ∨ Formel ) Formel → ( Formel ∧ Formel ) Variable → p Variable → q Konstante → t Konstante → f Alphabet A =

{t, f, p, q, ¬, ∨, ∧, (, )} ∪{ Formel,Variable, Konstante}

Wörter in L(S, Formel ) ∩ {t, f, p, q, ¬, ∨, ∧, (, )}∗ : Menge AL({p, q}) aller aussagenlogischen Formeln mit Aussagenvariablen aus der Menge {p, q} 114

Dezimaldarstellung natürlicher Zahlen Wortersetzungssystem S enthält die Regeln Zahl → 0 Zahl → 1Ziffernfolge .. . Zahl Ziffernfolge

→ → .. .

9Ziffernfolge 0Ziffernfolge

Ziffernfolge Ziffernfolge

→ →

9Ziffernfolge ε

Alphabet {0, . . . , 9} ∪ { Zahl, Ziffernfolge } Wörter in L(S, Zahl ) ∩ {0, . . . , 9}∗ : Menge aller Dezimaldarstellungen natürlicher Zahlen 115

Programmiersprachen Java-Syntax (Ausschnitt) in Backus-Naur Form (BNF) (John Backus, Peter Naur)

a → r1 |r2 | . . . |rn statt mehrerer Regeln a → r1 , . . . , a → rn ::= statt → (in ASCII darstellbar) Hilfssymbole markiert durch < und >

116

Definition Grammatik Grammatik G = (N, T , P, S) mit Nichtterminalsymbole endliche Menge N (Hilfssymbole) Terminalsymbole endliche Menge T (Alphabet der erzeugten Sprache) Wortersetzungssystem P ⊆ (N ∪ T )+ × (N ∪ T )∗ (Produktionen) Startsymbol S ∈ N Beispiel: G = (N, T , P, S) mit N = {S}, = {0, 1},   S → 0S1 P = S → ε

T

117

Grammatiken: Beispiele I

G = (N, T , P, E) mit N = {E, F , G}, T = {(, ), a, +, ·} und   E → G,         E → E + G,       G → F, P= G → G · F,           F → a,     F → (E)

I

G = (N, T , P, S) mit N = {S, A, B, C}, T  S → aSBC,     S → aBC,      CB → BC, aB → ab, P=   bB → bb,      bC → bc,   cC → cc

= {a, b, c}                    118

Ableitungen in Grammatiken Ableitung in Grammatik G = (N, T , P, S): Ableitung im Ersetzungssystem P mit Startwort S Beispiel: G = (N, T , P, S) mit N = {S, A, B} = {0, 1}  S    S P = A    B

T

→ → → →

0SA 0A 1 A

      

Ableitung: S → 0SA → 0S1 → 00A1 → 0011

119

Durch Grammatiken definierte Sprachen Grammatik G = (N, T , P, S) definiert die Sprache L(G) = {w ∈ T ∗ | S →∗P w} = L(P, S) ∩ T ∗ Beispiel: G = (N, T , P, S) mit N = {S, Z } = {0, 1}  S      S Z P =   Z    Z

T

→ → → → →

1Z , 0, 0Z , 1Z , ε

          

definiert die Sprache L(G) = . . .

120

Äquivalenz von Grammatiken Zwei Grammatiken G1 und G2 heißen genau dann äquivalent, wenn L(G1 ) = L(G2 ) gilt. Beispiel: G1 = (N1 , {0, 1}, P1 , S) mit N1 = {S, A, B} und   S → 0SA       S → 0A P1 = A → 1       B → A und G2 = (N2 , {0, 1}, P2 , S 0 ) mit N2 = {S 0 } und  P2 = S 0 → 0S 0 1, S 0 → 01 sind äquivalent wegen L(G1 ) = L(G2 ) = . . .

121

Chomsky-Hierarchie (Noam Chomsky, 1956) Eine Grammatik G = (N, T , P, S) ist vom Chomsky-Typ 0 immer, 1 falls für jede Regel (l → r ) ∈ P gilt: |l| ≤ |r | (monoton, kontextsensitiv) 2 falls Typ 1 und für jede Regel (l → r ) ∈ P gilt: l ∈ N (kontextfrei) 3 falls Typ 2 und für jede Regel (l → r ) ∈ P gilt: r ∈ (T ∪ TN) (regulär) Eine Sprache L ⊆ T ∗ heißt vom Typ i für i ∈ {0, . . . , 3}, falls L \ {ε} = L(G) für eine Grammatik G vom Typ i. Li bezeichnet die Menge aller Sprachen vom Typ i. Es gibt Sprachen, die durch keine Grammatik erzeugt werden, also keinen Chomsky-Typ haben (Begründung später). 122

Beispiele I

G = ({S}, {a, b}, P, S) mit P = {S → aSb, S → ab, S → a, S → b} ist vom Typ 2

I

G = ({S, A, B}, {a, b}, P, S) mit P = {S → aA, A → aB, B → bB, B → b} ist vom Typ 3

I

G = ({A, B, C}, {a, b, c}, P, A) mit  A → aABC,     A → aBC,     CB → BC,  aB → ab, P=   bB → bb,      bC → bc,   cC → cc

                  

ist vom Typ 1 erzeugt die Sprache L(G) = . . . 123

Was bisher geschah I

Alphabet, Wort, Sprache

I

Operationen und Relationen auf Wörtern und Sprachen

I

interessante Fragen für Sprachen und Wörter z.B. Wortproblem

endliche Darstellungen von (möglicherweise unendlichen) Sprachen: I

Reguläre Ausdrücke (Terme, Syntax) und durch sie beschriebene Sprachen (Semantik)

I

Wortersetzungssysteme (Konstruktionsanleitung) und durch sie erzeugte Sprachen Grammatiken (Konstruktionsanleitung)

I

I I I I I

Terminal-, Nichtterminalsymbole Ableitungen in Grammatiken durch Grammatiken erzeugte Sprachen Äquivalenz von Grammatiken Chomsky-Hierarchie für Grammatiken und Sprachen 124

Dyck-Sprache Klammerpaar (, ) Dyck-Sprache: Menge aller korrekt geklammerten Ausdrücke erzeugt durch Grammatik G = ({S}, {(, )}, P, S) mit    S → ε  S → SS P =   S → (S) Beispiele: I

()(()()) ∈ L(G)

I

())(6∈ L(G)

125

Allgemeine Dyck-Sprachen Menge aller korrekt geklammerten Ausdrücke mit n Paaren von Klammern: (i , )i für i ∈ {1, . . . , n} erzeugt durch Grammatik G = ({S}, {(i , )i | i ∈ {1, . . . , n}}, P, S) mit   S → ε P = ∪ {S → (i S)i | i ∈ {1, . . . , n}} S → SS

Symbole müssen nicht notwendig Klammern sein, z.B. aacdacababdbbcabdb ∈ Dyck-Sprache mit a statt (1 , b statt )1 , c statt (2 und d statt )2

126

Beispiel G = ({A, B, C}, {a, b, c}, P, A) mit  A →     A →      CB → aB → P=   bB →      bC →   cC →

aABC, aBC, BC, ab, bb, bc, cc

                  

erzeugt die Sprache L(G) = . . .

127

Beispiel

G = ({Z , F }, {ab}, P, Z ) mit  Z      Z F P=   F    F

→ → → → →

0, 1F , ε 0F , 1F

          

erzeugt die Sprache L(G) = . . .

128

Wiederholung Chomsky-Hierarchie Eine Grammatik G = (N, T , P, S) ist vom Chomsky-Typ 0 immer, 1 falls für jede Regel (l → r ) ∈ P gilt: |l| ≤ |r | (monoton, kontextsensitiv) 2 falls Typ 1 und für jede Regel (l → r ) ∈ P gilt: l ∈ N (kontextfrei) 3 falls Typ 2 und für jede Regel (l → r ) ∈ P gilt: r ∈ (T ∪ TN) (regulär) Eine Sprache L ⊆ T ∗ heißt vom Typ i für i ∈ {0, . . . , 3}, falls L \ {ε} = L(G) für eine Grammatik G vom Typ i. Li bezeichnet die Menge aller Sprachen vom Typ i. Es gibt Sprachen, die durch keine Grammatik erzeugt werden, also keinen Chomsky-Typ haben (Begründung später). 129

Grammatiken mit ε-Regeln ε-Regel : Wortersetzungsregel der Form l → ε Beispiele: I

G1 = ({A, B}, {0, 1}, P1 , A) mit P1 = {A → 1B0, B → 1B0, B → ε} ist äquivalent zu G2 = ({A}, {0, 1}, P2 , A) mit P2 = {A → 1A0, A → 10} (ohne ε-Regel)

I

G = ({A}, {0, 1}, P, A) mit P = {A → 1A0, A → ε} ist nicht äquivalent zu einer Grammatik ohne ε-Regel, weil ε ∈ L(G) Aber: L(G) \ {ε} wird von einer Grammatik ohne ε-Regel erzeugt (L(G) \ {ε} = L(G2 )) 130

ε-Sonderregel in kontextfreien Grammatiken Wiederholung: Sprache L ⊆ T ∗ heißt kontextfrei (Typ 2), wenn eine kontextfreie Grammatik G mit L(G) = L \ ε existiert. ästhetischer wäre: L(G) = L, deshalb kontextfreie Grammatik G = (N, X , P, S) mit ε-Sonderregel: Regel S → ε erlaubt (aber nicht benötigt), falls S in keiner rechten Regelseite in P vorkommt.

Fakt Zu jeder kontextfreien Sprache L existiert eine kontextfreie Grammatik mit ε-Sonderregel, so dass L = L(G) gilt. (neues Startsymbol S 0 und Regeln S 0 → ε, S 0 → S hinzufügen)

Folgerung Zu jeder regulären Sprache L existiert eine reguläre Grammatik mit ε-Sonderregel, so dass L = L(G) gilt. 131

Eliminierung der ε-Regeln – Beispiel G = ({A, B, S}, {0, 1}, P, S) mit P = {S → AB, A → 1AB, A → ε, B → 0, B → ε, }

1. (schrittweise) Berechnung der Menge aller NT A mit A →∗P ε (löschbare NT): hier: M = {A, B, S} 2. Hinzufügen modifizierter Kopien jeder Regel, die NT aus M auf der rechten Seite enthält. Modifikation: Weglassen des NT rechts, auch Kombinationen hier neu: S → A, S → B, S → ε, A → 1A, A → 1B, A → 1 3. Löschen aller ε-Regeln bis auf ε-Sonderregel Die so konstruierte Grammatik ist kontextfrei, enthält höchstens die ε-Sonderregel und ist äquivalent zu G.

132

Reguläre Sprachen Jede reguläre Sprache L ⊆ A∗ I

ist definiert durch einen regulären Ausdruck E ∈ RegExpA

I

wird erzeugt von einer regulären Grammatik G = (N, T , P, S) mit T = A

Beispiel: Die Sprache aller Binärdarstellungen natürlicher Zahlen ohne führende Nullen L(G) = {0} ∪ {1} ◦ {0, 1}∗ I

ist definiert durch den regulären Ausdruck 0 + 1(0 + 1)∗

I

wird erzeugt von der regulären Grammatik G = ({Z , F }, {ab}, P, Z ) mit P = {Z → 0, Z → 1F , F → ε, F → 0F , F → 1F }

oder nur mit ε-Sonderregel (Tafel) 133

Ableitungsbäume für kontextfreie Grammatiken Beispiel: Grammatik G = (N, T , P, E) mit N = {E, F }, T = {a, b, c, (, ), +, ∗}, P = {E → (E + E), E → F ∗ F , F → E, E → a, E → b, E → c} Ableitung für w = (c ∗ a + (b + a ∗ a)) allgemein: Grammatik G = (N, T , P, S) Ableitung S →P w1 →P w2 →P · · · →P wn = w für w in G Ableitungsbaum zu einem Wort w in der kontextfreien Grammatik G (induktive Definition): I

Wurzel mit Markierung S

I

für jeder Anwendung einer Regel A →P r1 · · · rn : Verzweigung bei Symbol A in n Kinder mit Markierungen r1 . . . , rn

I

Markierung der Blätter (von links nach rechts): Wort w

Ein Ableitungsbaum repräsentiert i.A. mehrere Ableitungen. 134

Rechts- und Linksableitungen Eine Ableitung für w in einer kontextfreien Grammatik G heißt Linksableitung , falls in jedem Schritt das am weitesten links stehende Nichtterminal Rechtsableitung , falls in jedem Schritt das am weitesten rechts stehende Nichtterminal ersetzt wird.

Zu jedem Ableitungsbaum für w in G existieren I

genau eine Linksableitung für w in G und

I

genau eine Rechtsableitung für w in G.

135

Mehrdeutige kontextfreie Grammatiken Grammatik G heißt eindeutig , falls für jedes Wort w ∈ L(G) genau ein Ableitungsbaum in G existiert. mehrdeutig , sonst. Beispiel: Grammatik G = (N, T , P, E) mit N = {S}, T = {a} und P = {S → SS, S → a} für w = aaa Eindeutigkeit von Grammatiken ist z.B. beim Entwurf von Programmiersprachen (Syntax) wichtig. „dangling else“-Problem (z.B. in C, Java): ::= if then ::= if then else Was bedeutet: if C1 then if C2 then A else B 136

Inhärent mehrdeutige Sprachen Sprachen L, für die keine eindeutige Grammatik G mit L = L(G) existiert, heißen inhärent mehrdeutig. Beispiel: L = {al bm c n | l, m, n > 0 ∧ (l = m ∨ m = n)} ist inhärent mehrdeutig. L = L1 ∪ L2 mit L1 = {al bm c n | l, m, n > 0 ∧ l = m} = {al bl c n | l, n > 0} L2 = {al bm c n | l, m, n > 0 ∧ m = n} = {al bn c n | l, n > 0} Für jedes Wort in L1 ∩ L2 existieren in jeder Grammatik, die L erzeugt, zwei Ableitungsbäume. 137

Was bisher geschah Alphabet, Wort, Sprache Operationen und Relationen auf Wörtern und Sprachen I interessante Fragen für Sprachen und Wörter z.B. Wortproblem endliche Darstellungen von (möglicherweise unendlichen) Sprachen: I Reguläre Ausdrücke (Terme, Syntax) und durch sie beschriebene Sprachen (Semantik) I Wortersetzungssysteme (Konstruktionsanleitung) und durch sie erzeugte Sprachen I Grammatiken (Konstruktionsanleitung) und durch sie erzeugte Sprachen I reguläre Sprachen I

I

I I

I

beschrieben durch reguläre Ausdrücke erzeugt von regulären Grammatiken

kontextfreie Sprachen I I

Ableitungsbäume Mehrdeutigkeit

138

Mächtigkeitsvergleich unendlicher Mengen Eine Menge M heißt genau dann höchstens so mächtig wie die Menge N, wenn eine surjektive Funktion f : N → M existiert. (f : N → M ist surjektiv, gdw. ∀x ∈ M∃n ∈ N : f (n) = x) Beispiele: I I

M = {1, 2, 3} ist höchstens so mächtig wie N = {a, b, c, d}

N ist höchstens so mächtig wie 3N

Zwei Mengen M und N heißen genau dann gleichmächtig, wenn I

M höchstens so mächtig wie N und

I

N höchstens so mächtig wie M ist.

(genau dann, wenn eine bijektive Funktion f : N → M existiert) Beispiele: I I

M = {1, 2, 3, 4} und N = {a, b, c, d} sind gleichmächtig

N und 3N sind gleichmächtig.

139

Abzählbarkeit Eine Menge M heißt genau dann abzählbar, wenn sie höchstens so mächtig wie ist. (also eine surjektive Funktion f : → M existiert)

N

N

(Unendliche) Mengen, die nicht abzählbar sind, heißen überabzählbar. Beispiele: I

N, Menge aller geraden Zahlen, Menge aller Primzahlen, jede endliche Menge, Menge aller Paare natürlicher Zahlen, sind abzählbar,

I

Q

R ist überabzählbar.

140

Erstes Diagonalverfahren von Cantor (z.B. zum Nachweis der Abzählbarkeit einer Menge)

Satz Die Menge alle Paare natürlicher Zahlen ist abzählbar. Beweisidee (Tafel): zweidimensionale (unendliche) Darstellung diagonale Durchquerung Dovetailing: analoge Idee zur sequentiellen Simulation paralleler Berechnungen I

Für jedes endliche Alphabet A ist die Menge A∗ abzählbar.

I

Für jedes endliche Alphabet A ist jede Sprache L ⊆ A∗ abzählbar. 141

Zweites Diagonalverfahren von Cantor (z.B. zum Nachweis der Überabzählbarkeit einer Menge)

Satz Es existieren überabzählbar viele unendliche 01-Folgen. ({0, 1}ω ist überabzählbar.) Beweisidee: indirekt (Tafel) allgemeinere Aussage:

Satz (Cantor) Für jede Menge M ist ihre Potenzmenge 2M von M mächtiger als M.

142

Beispiele überabzählbarer Mengen

R

N

[0, 1) ⊂ ist mächtiger als . Es gibt überabzählbar viele reelle Zahlen im Intervall [0, 1]. ist mächtiger als . Es gibt überabzählbar viele reelle Zahlen. N 2 (Menge aller Mengen natürlicher Zahlen) ist mächtiger als . (Überabzählbarkeit der Menge M = 2N ) Es gibt überabzählbar viele Mengen natürlicher Zahlen. ∗ {0,1} 2 Menge aller Sprachen L ⊆ {0, 1}∗ ist mächtiger als {0, 1}∗ . Es gibt überabzählbar viele Sprachen über dem Alphabet {0, 1}. ∗ A 2 für beliebiges endliches Alphabet A Für jedes endliche Alphabet A ist die Menge aller Sprachen über A überabzählbar.

R

N

N

143

Lässt sich jede Sprache durch eine Grammatik repräsentieren? Existiert zu jeder Sprache L ⊆ A∗ eine Grammatik G mit L = L(G)? Nein (Gegenbeispiel später) Begründung: (Aussage für A = {0, 1} zu zeigen, genügt) 1. Wieviele Grammatiken über dem endlichen Alphabet A gibt es? abzählbar viele (weil Grammatiken endliche Beschreibungen sind, nach erstem Diagonalverfahren von Cantor) 2. Wieviele Sprachen L ⊆ A∗ gibt es? überabzählbar viele (zweites Diagonalverfahren von Cantor) Damit existieren sogar sehr viel mehr (überabzählbar viele) Sprachen, die nicht durch Grammatiken beschrieben werden können. Warum sind Grammatiken trotzdem wichtig / interessant? 144

Wortproblem für von Grammatiken erzeugte Sprachen Wortproblem (L, w) ist definiert durch: Wort w ∈ A∗ I Sprache L ⊆ A∗ I

und bedeutet: Gilt w ∈ L? Jede durch eine Grammatik G erzeugte Sprache L = L(G) ist definiert durch die Grammatik G = (N, T , P, S) mit I I

endliche Mengen N, T , S ∈ N Wortersetzungssystem P ⊆ (N ∪ T )+ × (N ∪ T )∗

Wortproblem (L(G), w) für von einer Grammatik erzeugten Sprache ist definiert durch: Wort w ∈ A∗ I Grammatik G = (N, T , P, S) I

und bedeutet: Gilt w ∈ L(G)?

Satz Für jede monotone Grammatik G (Chomsky-Typ 1) ist das Wortproblem (L(G), w) in endlicher Zeit maschinell korrekt lösbar. (folgt aus entsprechendem Satz für nichtverkürzende Wortersetzungssysteme)

145

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 146

Analyse-Phase Quellcode

Scanner Parser −→ Folge von Token −→ Syntaxbaum

lexikalische Analyse (Scanner) lineare Analyse des Quelltextes, Aufteilung in Einheiten (Token) z.B. Schlüsselwörter, Bezeichner, Operatorsymbole, Zahlen reguläre Sprachen (reguläre Ausdrücke, reguläre Grammatiken, . . . ) Syntaxnalyse (Parser) hierarchische Struktur des Quelltextes z.B. Ausdrücke, Verzweigungen, Schleifen kontextfreie Sprachen (kontextfrie Grammatiken, . . . ) semantische Analyse Annotationen im Syntaxbaum, z.B. Typprüfungen 147

Einsatz ähnlicher Analyse-Methoden

I

Übersetzung von Daten zwischen verschiedenen Formaten

I

Verarbeitung von Domain-spezifischen Sprachen

I

Textformatierung

I

kontextabhängige Hilfe in Entwicklungsumgebungen

I

statische Analyse zur Fehlersuche in Programmen

I

Interpreter

I

graphische Editoren (z.B. für UML-Diagramme) mit automatischer Programmgenerierung

148

Darstellung von Termmengen durch kontextfreie Grammatiken

X

Wiederholung: induktive Definition für Term(ΣF , ) Die Menge Term(ΣF , ) aller Terme über der (funktionalen) Signatur ΣF mit Variablen aus der Menge ist definiert durch:

X

IA Jede Variable x ∈

X

X ist ein Term. (X ⊆ Term(ΣF , X))

IS Sind (f , n) ∈ ΣF (f ist n-stelliges Funktionssymbol) und t1 , . . . , tn Terme aus Term(ΣF , ), dann ist f (t1 , . . . , tn ) ein Term aus Term(ΣF , ).

X

X

kontextfreie Grammatik für Term(ΣF , ∅) in Präfixform: G = ({S}, T , P, S) mit T

= {s | ∃n : (s, n) ∈ ΣF } ∪

P

= {S → s | (s, 0) ∈ Σ}

X ∪ {(, ), , }

∪{S → s(S) | (s, 1) ∈ Σ} ∪{S → s(S, S) | (s, 2) ∈ Σ} . ∪ .. ∪{S → x | x ∈

X}

149

Beispiel funktionale Signatur ΣF = {(a, 0), (b, 0), (f , 1), (g, 2), (h, 3))}, Variablenmenge {x, y } kontextfreie Grammatik für Term(ΣF , ) in Präfixform: G = ({S}, {a, b, f , g, h, x, y , (, ), , }, P, S) mit   S → a         S → b          S → f (S)  S → g(S, S) P=    S → h(S, S, S)          S → x       S → y

X

Ableitung des Terms f (h(g(a, x), b, y ): S

→ f (S) → f (h(S, S, S)) → f (h(S, b, S)) → f (h(S, b, y )) → f (h(g(S, S), b, y )) → f (h(g(a, S), b, y )) → f (h(g(a, x), b, y ))

ähnlich für Postfix- und Infixform (ggf. Operatorpräferenzen beachten) 150

Beispiel: HTML-Tabellen von der Homepage zu dieser LV:

ungerade Woche: Montag 9:30 - 11:00 Uhr in LNW006 Dienstag 15:30 - 17:00 Uhr in G327 gerade Woche: Dienstag 9:30 - 11:00 Uhr in LNW006 Mittwoch 11:15 - 12:45 Uhr in LNW006

151

Grammatik für HTML-Tabellen Grammatik G = ({T , R, C, S}, ASCII, P, T ) mit

Beispiel-Ableitung (Linksableitung): T → R → C R → S C R →∗ ungerade Woche: C R → ungerade Woche: S C R →∗ ungerade Woche: Montag C R → ...

Jedes in G ableitbare Wort ist Quelltext einer HTML-Tabelle.

152

Formale Sprachen – Zusammenfassung I

Alphabet, Wort, Sprache

I

Operationen und Relationen auf Wörtern und Sprachen

I

interessante Fragen für Sprachen und Wörter z.B. Wortproblem

endliche Darstellungen von (möglicherweise unendlichen) Sprachen: I

Reguläre Ausdrücke (Terme, Syntax) und durch sie beschriebene Sprachen (Semantik)

I

Wortersetzungssysteme (Konstruktionsanleitung) und durch sie erzeugte Sprachen

I

Grammatiken (Konstruktionsanleitung) und durch sie erzeugte Sprachen (Chmosky-Hierarchie)

I

Äquivalenz 153

Formale Sprachen – Spezialfälle kontextfreie Sprachen (Chomsky-Typ 2) erzeugt von kontextfreien Grammatiken Ableitungsbäume, Mehrdeutigkeit schnelle Verfahren zur Lösung des Wortproblems Anwendungen z.B. in Parsern für Programmtransformationen (z.B. Compiler), Verarbeitung natürlicher Sprache reguläre Sprachen (Chomsky-Typ 3) definiert durch reguläre Ausdrücke, erzeugt von regulären Grammatiken sehr schnelle Verfahren zur Lösung des Wortproblems Anwendungen z.B. in Scannern für Programmtransformationen (z.B. Compiler), Suche in Texten 154

Logik in der Informatik theoretische Informatik, Grundlagen: Beschreibung von formalen Sprachen und Berechnungsmodellen (klassische Prädikatenlogik) technische Informatik, z.B. Digitaltechnik: Logikgatter / Schaltnetze (klassische Aussagenlogik) Spezifikation: Definition der Anforderungen an Hardware Verifikation der Korrektheit von Hardware praktische Informatik, z.B. Programmierung: Spezifikation: Definition der Anforderungen an Software Verifikation der Korrektheit von Software Datentypen: definiert durch Eigenschaften (statt Realisierung) (klassische Prädikatenlogik, modale und temporale Logiken) angewandte Informatik, z.B. Datenbanken, künstliche Intelligenz: Wissensrepräsentation / Expertensysteme Problemlösen / automatischen Beweisen (klassische und nichtklassische Logiken, Fuzzy-Logik) allgemein: Logik als Sprache zur Formulierung und Manipulation geeigneter formaler Modelle der Realität

155

Logik – Geschichte I

Logik in Philosophie, Rhetorik (Syllogismen) Aristoteles (384 - 322 v.Chr.)

I

Grundlagen der Rechentechnik Aussagenlogik George Boole (1815 - 1864)

I

Mathematische Logik Formalisierung des Beweisens (Begriffe und Schlußregeln) Gottfried Wilhelm Leibniz (1646 - 1716) Gottlob Frege (1848 - 1925) David Hilbert (1862 - 1943) Kurt Gödel (1906 - 1978) Unvollständigkeitssatz

I

formale Grundlagen der (theoretischen) Informatik Alonzo Church (1903 - 1995) Alan Turing (1912 - 1954) 156

Aussagen Aussage = Behauptung Beispiele: I

Es regnet.

I

Die Straße ist naß.

I I

9 ist eine Primzahl. √ 2∈

I

3 3 (Erweiterung zur Modal- und Temporallogiken)

I

Aussagen über alle Elemente „großer“ Mengen aufwendig (Erstellung, Platzbedarf), z.B. n-Damen-Problem

I

keine Aussagen über Elemente einer unendlichen Mengen oder Mengen unbestimmter Mächtigkeit möglich, z.B. I Jede durch 4 teilbare Zahl ist gerade. I In jedem zusammenhängenden Graphen mit ≥ 2 Knoten hat jeder Knoten einen Nachbarn. I Es ist nicht alles Gold was glänzt. (Erweiterung zur Prädikatenlogik) 222

Modellierung in Prädikatenlogik

Grundannahme: Die zu modellierende Welt besteht aus Individuen, die Eigenschaften haben und zueinander in Beziehungen (Relationen, Funktionen) stehen.

Prädikatenlogik zur Formalisierung von Aussagen über Eigenschaften oder Beziehungen von Individuen aus algebraischen Strukturen

223

Prädikatenlogische Aussagen – Beispiele Personen sind genau dann Geschwister, wenn sie dieselbe Mutter oder denselben Vater haben. I A ist genau dann Nachfahre von B, wenn B A’s Vater oder A’s Mutter ist oder ein Elternteil von A Nachfahre von B ist. I Nachfahren derselben Person sind verwandt. Individuenbereich: Menge von Personen Beziehungen: Nachfahre, verwandt, Geschwister Funktionen: Mutter, Vater I

Primzahlen sind genau diejenigen natürlichen Zahlen, die genau zwei verschiedene Teiler haben. I Gerade Zahlen sind genau diejenigen natürlichen Zahlen, die durch 2 teilbar sind. I Es existieren gerade Primzahlen. I Nachfolger ungerader Primzahlen sind nicht prim. I Das Quadrat jeder geraden Zahl ist gerade. Individuenbereich: Menge aller natürlichen Zahlen Eigenschaft: prim, gerade Beziehung: teilt Funktion: Nachfolger, Quadrat I

N

224

Signaturen und Terme (Wiederholung) Syntax: Signatur Σ = (ΣF , ΣR ), Menge von Variablen Terme Term(Σ, ) (nur ΣF relevant), Grundterme Term(Σ, ∅)

X

X

Semantik: I

I

I I

I

Σ-Struktur A = (A, J·KA ): I nichtleere Trägermenge A I für jedes (f , n) ∈ Σ eine Funktion Jf KA : An → A F n I für jedes (R, n) ∈ Σ eine Relation JRK A ⊆A R

Σ-Interpretation (A, α) mit Σ-Struktur A = (A, J·KA ) und Belegung der Individuenvariablen α :

X→A

Wert JtKA des Grundtermes t ∈ Term(Σ, ∅) in Σ-Struktur A,

Äquivalenz von Grundtermen s, t ∈ Term(Σ, ∅) in Struktur A: s ≡A t gdw. JsKA = JtKA Wert JtK(A,α) des Termes t ∈ Term(Σ, (A, α)

X) in Σ-Interpretation

225

Beispiele (Wiederholung) Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (f , 1)} und ΣR = {(P, 1), (R, 2)}, Variablenmenge = {x, y } Σ-Struktur S = (S, J·KS ) mit

X

S = {0, 1, 2} JaKS

= 1

JPKS

= {0, 2}

für alle d ∈ S: Jf KS (d) = 2 − d JRKS

= {(1, 0), (1, 2), (2, 2)}

Belegung β : {x, y } → {0, 1, 2}: β(x) = 0, β(y ) = 1 Werte der folgenden Terme aus Term(Σ, ) in der Interpretation (S, β): JaK(S,β) = . . ., Jy K(S,β) = . . ., Jf (a)K(S,β) = . . ., Jf (f (x))K(S,β) = . . . f (f (a)) ≡S f (a) ≡S a

X

226

Atome (elementare Aussagen)

Aussagenlogik : Aussagenvariable, bekommt festen Wahrheitswert durch Belegung Prädikatenlogik : (parametrisierte) Aussage über Eigenschaften von oder Beziehungen zwischen Individuen Wahrheitswert abhängig von beteiligten Individuen z.B. nebeneinander(x, y ),gerade(n) , x < 3, x < y , geschwister(x, mutter(y ))

227

Atome – Syntax Atom elementare Formel, repräsentiert Eigenschaften von oder Beziehungen zwischen Individuen Signatur Σ = (ΣF , ΣR ) mit I

Menge ΣF von Funktionssymbolen mit Stelligkeit (f , n)

I

Menge ΣR von Relationssymbolen mit Stelligkeit (R, n)

Definition Menge aller Σ-Atome mit Variablen aus der Menge Atom(Σ,

X:

X) = {R(t1 , . . . , tn ) | (R, n) ∈ ΣR und t1 , . . . , tn ∈ Term(ΣF , X)}

Atome ohne Individuenvariablen heißen Grundatome. Menge aller Grundatome: Atom(Σ, ∅) 228

Atome – Beispiele I

Signatur Σ = (ΣF , ΣR√) mit ΣF = {(1, 0), (2, 0), ( , 1), (+, 2)} ΣR = {(=, 2), (≤, 2)} Variablenmenge = {x, y , z}

X

I I I

I

X X

√ √ √x = 2 ∈ Atom(Σ, ) ) (aber x + 2 ∈ Term(ΣF , px + 2√ 6∈ Atom(Σ, p√ 1+ 2≤ 2 ∈ Atom(Σ, ∅)

X))

Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (b, 0), (k , 2), (d, 2)} ΣR = {(P, 1), (Q, 2)} Variablenmenge = {x, y }

X

I I I I I

X

y 6∈ Atom(Σ, ) P(x) ∈ Atom(Σ, ) P(a) ∈ Atom(Σ, ∅) P(Q(P(a), k (x, y ))) 6∈ Atom(Σ, ) Q(k (a, d(y , a)), x) ∈ Atom(Σ, )

X

X X

229

Atome – Semantik

X

Signatur Σ = (ΣF , ΣR ), Variablenmenge Menge Atom(Σ, ) aller Atome mit Variablen aus Σ-Interpretation (A, α) mit

X

I

X

Σ-Struktur A = (A, J·KA )

X→A Wert des Atomes a = P(t1 , . . . , tn ) ∈ Atom(Σ, X) in der Interpretation I

Belegung der Individuenvariablen α :

(A, α):

JaK(A,α)

= JP(t1 , . . . , tn )K(A,α)

 = JPKA Jt1 K(A,α) , . . . , Jtn K(A,α)   1 falls Jt1 K(A,α) , . . . , Jtn K(A,α) ∈ JPKA = 0 sonst

(Spezialfall Atom a mit (a, 0) ∈ ΣF : JaK(A,α) = JaKA ) Der Wert eines Atomes in einer Interpretation (A, α) ist ein Wahrheitswert. Der Wert von Grundatomen in einer Interpretation (A, α) hängt nicht von der Belegung α ab. 230

Semantik von Atomen – Beispiele Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (f , 1)} und ΣR = {(P, 1), (R, 2)}, Variablenmenge = {x, y } Σ-Struktur S = (S, J·KS ) mit

X

S = {0, 1, 2} JaKS

= 1

JPKS

= {0, 2}

für alle d ∈ S: Jf KS (d) = 2 − d JRKS

= {(1, 0), (1, 2), (2, 2)}

Belegung β : {x, y } → {0, 1, 2}: β(x) = 0, β(y ) = 1 Wert der folgenden Atome aus Atom(Σ, ) in der Interpretation (S, β) (Tafel): JP(x)K(S,β) = . . . , JP(a)K(S,β) = . . ., JP(f (a))K(S,β) = . . . , JP(f (f (x)))K(S,β) = . . ., JR(x, a)K(S,β) = . . ., JR(f (y ), x)K(S,β) = . . .

X

231

Prädikatenlogik (der ersten Stufe) – Syntax bekannt: aussagenlogische Junktoren t, f, ¬, ∨, ∧, →, ↔ neu: Σ-Atome, Quantoren ∀, ∃

Definition (induktiv)

X

Die Menge FOL(Σ, ) aller Formeln der Prädikatenlogik (der ersten Stufe, first order logic) über der Signatur Σ mit (Individuen-)Variablen aus der Menge ist definiert durch:

X

X

X

IA: Atom(Σ, ) ⊆ FOL(Σ, ) (alle Atome sind Formeln) IS:

I

I

X

Aus {ϕ1 , . . . , ϕn } ⊆ FOL(Σ, ) folgt für jeden n-stelligen Junktor ∗: ∗(ϕ1 , . . . , ϕn ) ∈ FOL(Σ, ) Aus ϕ ∈ FOL(Σ, ) und x ∈ folgt {∀xϕ, ∃xϕ} ⊆ FOL(Σ, )

X

X

X

X

Baumstruktur der Formeln (analog zur Definition von Termen) FOL(Σ, ) ist eine formale Sprache (Welcher Chomsky-Typ?))

X

232

Beispiele I

Signatur Σ = (ΣF , ΣR ) mit ΣF = {(a, 0), (f , 1)} und ΣR = {(P, 1), (R, 2)} Variablenmenge = {x, y } Formeln aus FOL(Σ, ):

X

I

X

ϕ1

=

P(f (x))

ϕ2

=

(P(x) ↔ (¬P(f (x)) ∧ (∀x∃y ((P(x) ↔ P(y )) ∧ R(x, y )))))

ϕ3

=

∀x∀y ϕ2

Σ = (∅, ΣR ) mit ΣR = {(p, 0), (q, 0)},

X=∅

Formeln aus FOL(Σ, ∅): ψ1

= p∨q

ψ2

= ¬p ∨ ¬(q ∨ p)

(Syntax der Aussagenlogik ist Spezialfall der FOL-Syntax) 233

Variablen in Formeln Eine Individuenvariablen x ∈

X kommt vor in

Term t, falls t = x oder t = f (t1 , . . . , tn ) und x in einem ti vorkommt Atom a = p(t1 , . . . , tn ), falls x in einem ti vorkommt Formel ϕ, falls x in einem Atom in ϕ (Teilformel von ϕ, die Atom ist) vorkommt. var(ϕ) Menge aller in ϕ vorkommenden Indiviuenvariablen Ein Vorkommen der Indiviuenvariablen x in ϕ heißt gebunden , falls x in einer Teilformel von ϕ der Form ∃xψ oder ∀xψ vorkommt, bvar(ϕ) Menge aller in ϕ gebundenen vorkommenden Variablen frei , sonst fvar(ϕ) Menge aller in ϕ frei vorkommenden Variablen var(ϕ) = fvar(ϕ) ∪ bvar(ϕ) gilt immer. fvar(ϕ) ∩ bvar(ϕ) 6= ∅ ist möglich. 234

Beispiele ϕ1 = R(x, a) ϕ2 = ∃xR(x, f (y , x))

bvar(ϕ1 ) = ∅, fvar(ϕ1 ) = {x} bvar(ϕ2 ) = {x}, fvar(ϕ2 ) = {y }

ϕ3 = (P(x) ↔ (¬P(f (x)) ∧ (∀x∃y ((P(x) ↔ P(y )) ∧ R(x, y ))))) bvar(ϕ3 ) = {x, y }, fvar(ϕ3 ) = {x} ϕ4 = ∀x∀y ϕ3

bvar(ϕ4 ) = {x, y }, fvar(ϕ4 ) = ∅

235

Was bisher geschah klassische Prädikatenlogik (der ersten Stufe) FOL(Σ,

X)

Syntax: I Wiederholung: I I

I I I

Signaturen Σ = (ΣF , ΣR ) Terme Term(Σ, )

X

X) Formeln in FOL(Σ, X) Atome in FOL(Σ,

Variablenvorkommen in einer Formel ϕ ∈ FOL(Σ, freie (fvar(ϕ)), gebundene (bvar(ϕ)) Vorkommen

X):

Semantik: I Wiederholung: I I I

I

Σ-Strukturen S = (S, J·KS ), Belegungen der Individuenvariablen, Σ-Interpretationen Wert von Termen in Σ-Interpretationen

Wert von Atomen in Σ-Interpretationen 236

Modifizierte Interpretationen Signature Σ, Variablenmenge

X

Σ-Struktur S = (S, J·KS )

X → S der Variablen aus X in S modifizierte Belegung β[x 7→ a] : X → S mit

Belegung β :

 β[x 7→ a](y ) =

a für y = x β(y ) sonst

Σ-Interpretation (S, β) mit I I

Σ-Struktur S = (S, J·KS ) Variablenbelegung β :

X→S

modifizierte Interpretation (S, β[x 7→ a]) 237

Wert in Interpretationen Wert in Σ-Interpretation (S, β) mit S = (S, J·KS ) I

I

I

I

X: JxK(S,β) = β(x) ∈ S eines Termes t = f (t1 , . . . , tn ) ∈ Term(Σ  F , X): einer Individuenvariable x ∈

JtK(S,β) = Jf KS Jt1 K(S,β) , . . . , Jtn K(S,β) ∈ S

X

eines Atomes a = p(t1 , . . . , tn ) ∈ Atom(Σ, ): JaK(S,β) = JpKS (Jt1 K(S,β) , . . . , Jtn K(S,β) ) ∈ {0, 1} einer Formel ϕ ∈ FOL(Σ,

X): JϕK(S,β) ∈ {0, 1}

J¬ϕK(S,β) = 1 − JϕK(S,β)

Jϕ ∨ ψK(S,β) = max(JϕK(S,β) , JψK(S,β) ) Jϕ ∧ ψK(S,β) = min(JϕK(S,β) , JψK(S,β) )

J∃xϕK(S,β) = max{JϕK(S,β[x7→a]) | a ∈ S}

J∀xϕK(S,β) = min{JϕK(S,β[x7→a]) | a ∈ S}

238

Beispiele Σ = (ΣR , ΣF ) mit ΣF = {(f , 1)},ΣR = {(R, 2)}, ϕ = ¬R(x, y ) ∧ ∃zR(z, z)

I

I

X = {x, y , z}

ψ = ∀x∃yR(x, f (y ))

Σ-Struktur A = (A, J·KA ) mit A = {a, b, c} Jf KA (a) = Jf KA (b) = c, Jf KA (c) = a JRKA = {(a, a), (b, a), (a, c)} Belegung α(x) = b, α(y ) = a , α(z) = b JϕK(A,α) = . . . JψK(A,α) = . . .

Z

Σ-Struktur B = (B, J·KB ) mit B = Jf KB (d) = −d, JRKB =≤ Belegung β(x) = 5, β(y ) = 3, β(z) = −1, JϕK(B,β) = . . . JψK(B,β) = . . . 239

Spezialfall Aussagenlogik – Semantik Σ = (ΣF , ΣR ) mit ΣR = {(p, 0) | p ∈ P} (Aussagenvariablen) Σ-Struktur S = (S, J·KS ) definiert für jedes p ∈ P : JpKS ∈ {0, 1} (Trägermenge S irrelevant) Struktur S definiert also eine Belegung WS : P → {0, 1} der Aussagenvariablen mit Wahrheitswerten durch für alle Atome p ∈ P:

WS (p) := JpKS

Dann gilt auch für alle Formeln ϕ ∈ FOL(Σ, ∅) (= AL(P)):

JϕKS = WS (ϕ)

Beispiel: Σ = (ΣF , ΣR ) mit ΣF = ∅, ΣR = {(a, 0), (b, 0), (c, 0)} ϕ = a ∧ (¬c ∨ b) Σ-Struktur S = (S, J·KS ) mit JaKS = JcKS = 1 und JbKS = 0 WS (a) = WS (c) = 1 und WS (b) = 0 (aussagenlogischer) Wert WS (ϕ) = 0 (= JϕKS )

240

Modelle für Formeln (analog zu Aussagenlogik) Σ-Interpretation (S, β) erfüllt (ist Modell für) die Formel ϕ ∈ FOL(Σ, ) genau dann, wenn JϕK(S,β) = 1.

X

X

Menge aller Modelle der Formel ϕ ∈ FOL(Σ, )  S = (S, J·KS ) ist Σ-Struktur und β : Mod(ϕ) = (S, β) und JϕK(S,β) = 1 Formel ϕ ∈ FOL(Σ,

X→S



X) heißt

erfüllbar gdw. Mod(ϕ) 6= ∅

(z.B. ∀x (P(x) ∨ Q(x)))

unerfüllbar gdw. Mod(ϕ) = ∅

(z.B. ∀xP(x) ∧ ∃x¬P(x) )

allgemeingültig gdw. Mod(ϕ) = {(S, β) | S = (S, J·KS ) ist Σ-Struktur und β :

X → S}

(Menge aller Σ-Interpretationen) 241

Beispiele ϕ = R(x) ∧ ∃y ((¬R(y )) ∧ E(y , x)) I

Struktur G = ({1, . . . , 4}, J·KG ) mit JRKG = {1, 2, 4}, JEKG = {(1, 2), (3, 2)} und Belegung α : {x, y } → {1, . . . , 4} mit α(x) = 2, α(y ) = 2 (G, α) ∈ Mod(ϕ)

I

Struktur H = ({a, b}, J·KH ) mit JRKH = {a}, JEKH = {(a, a), (b, b)}, Belegung β : {x, y } → {a, b} mit β(x) = a, β(y ) = a (H, β) 6∈ Mod(ϕ)

I

Struktur J = ( , J·KJ ) mit JRKJ = 2 (Menge aller geraden Zahlen), JEKJ = {(i, i + 1) | i ∈ } und Belegung γ : {x, y } → mit γ(x) = γ(y ) = 0 (J , γ) ∈ Mod(ϕ)

Z

Z

Z Z

242

Semantische Äquivalenz von Formeln (analog Aussagenlogik)

Für ϕ, ψ ∈ FOL(Σ, X ) gilt ϕ≡ψ

gdw.

Mod(ϕ) = Mod(ψ)

Beispiele: I

¬∀xP(x) ≡ ∃x¬P(x)

I

∀x∃yR(x, y ) 6≡ ∀x∃yR(y , x)

I

∀x∃yR(x, y ) 6≡ ∃x∀yR(x, y )

243

Wichtige Äquivalenzen mit Quantoren ¬∀xϕ ≡ ∃x¬ϕ ¬∃xϕ ≡ ∀x¬ϕ ∀xϕ ∧ ∀xψ ≡ ∀x(ϕ ∧ ψ) ∃xϕ ∨ ∃xψ ≡ ∃x(ϕ ∨ ψ) ∀x∀y ϕ = ∀y ∀xϕ ∃x∃y ϕ = ∃y ∃xϕ für x 6∈ fvar(ψ) und ∗ ∈ {∨, ∧} gilt außerdem ∀xϕ ∗ ψ ≡ ∀x(ϕ ∗ ψ) ∃xϕ ∗ ψ ≡ ∃x(ϕ ∗ ψ) ∃y ϕ ≡ ∃xϕy 7→x

(gebundene Umbenennung)

∀y ϕ ≡ ∀xϕy 7→x

(gebundene Umbenennung) 244

Was bisher geschah

X

klassische Prädikatenlogik (der ersten Stufe) FOL(Σ, ) FOL(Σ, )-Syntax: I Wiederholung: Signaturen, Terme I Atome, Formeln in FOL(Σ, ) I Variablenvorkommen in einer Formel ϕ ∈ FOL(Σ, ): frei (fvar(ϕ)), gebunden (bvar(ϕ)) FOL(Σ, )-Semantik: I Wiederholung:

X

X

X

X

I I

I I

Σ-Interpretationen Werte von Termen in Σ-Interpretationen

Werte von Atomen, Formeln in Σ-Interpretationen analog Aussagenlogik: I I I

Modellmengen (Un-)Erfüllbarkeit, Allgemeingültigkeit Äquivalenz von Formeln

AL(P) als Spezialfall (Syntax und Semantik): AL(P) = FOL(Σ, ∅) mit ΣR = {(p, 0) | p ∈ P} (Fragment der Prädikatenlogik FOL(Σ, ))

X

245

Modelle von Formelmengen Menge aller Modelle der Formelmenge Φ ⊆ FOL(Σ, \ Mod(Φ) = Mod(ϕ)

X):

ϕ∈Φ

Beispiele: Signatur Σ = (ΣF , ΣR ) mit ΣF = {(f , 1)}, ΣR = {(P, 1), (R, 2)}, Φ = {P(x), ∀x∃yR(x, f (y ))} I Für Σ-Interpretation (A, α) mit Struktur A = ({1, 2, 3}, J·KA ) mit Jf KA (1) = Jf KA (3) = 2, Jf KA (2) = 3, JPKA = {1, 2}, JRKA = {(1, 3), (2, 2), (3, 2)}, und Belegung α : {x, y } → {a, b, c}, wobei α(x) = α(y ) = 2 gilt (A, α) ∈ Mod(Φ) I Für Σ-Interpretation (B, β) mit Struktur B = ( , J·KB ) mit ∀n ∈ : Jf KB (n) = 3n, JPKB = 3 , JRKB = ≤ und Belegung β : {x, y } → mit β(x) = 2, β(y ) = 0 gilt (B, β) 6∈ Mod(Φ)

N

N

N

N

246

Mehr Modelle von Formelmengen

Φ = {∀x(P(x) ∨ P(y )), ∀x∀y ((P(x) ∧ E(x, y )) → ¬P(y )))}

I

Für (A, α) mit A = ({0, . . . , 5}, J·KA ), wobei JPKA = {0, 2} und JEKA = {(i, i + 1) | i ∈ {0, . . . , 4}} und α(x) = 1, α(y ) = 2 gilt (A, α) ∈ Mod(Φ)

I

Für (B, β) mit B = ( , J·KB ), wobei JPKB = 2 und JEKB = {(i, i + 1) | i ∈ } und α(x) = α(y ) = 0 gilt (B, β) ∈ Mod(Φ)

Z

Z

Z

247

Semantische Folgerung (analog Aussagenlogik) Für Φ ⊆ FOL(Σ, X ) und ψ ∈ FOL(Σ, X ) gilt Φ |= ψ

gdw.

Mod(Φ) ⊆ Mod(ψ)

Beispiele: I

{∀x(P(x) ∨ Q(x)), ¬P(y )} |= Q(y )

I

{∀x(P(x) ∨ Q(x)), ¬P(x)} |= Q(x)

I

{∀x(P(x) ∨ Q(x)), ∀x¬P(x)} |= ∀xQ(x)

I

{∀x(P(x) ∨ Q(x)), ∃x¬P(x)} 6|= ∀xQ(x)

248

Allgemeingültigkeit, Erfüllbarkeit, Folgerungen analog zur Aussagenlogik gelten auch in FOL(Σ, Zusammenhänge wie

X)

X

I

Eine Formel ϕ ∈ FOL(Σ, ) ist genau dann allgemeingültig, wenn die Formel ¬ϕ unerfüllbar ist.

I

Φ |= ψ gdw. Φ ∪ {¬ψ} unerfüllbar.

I

ϕ ≡ ψ gdw. ϕ |= ψ und ψ |= ϕ.

I

Für jede Formelmenge Φ und jede Formel ψ ∈ Φ gilt Φ |= ψ.

I

Für jede unerfüllbare Formelmenge Φ und jede Formel ψ gilt Φ |= ψ.

Für Formeln ohne Quantoren gilt außerdem: I Zu jeder Formel ϕ ∈ AL(P) ohne Quantoren existieren I I I

eine äquivalente Formel ϕ1 ∈ AL(P) in NNF, eine äquivalente Formel ϕ2 ∈ AL(P) in CNF und eine äquivalente Formel ϕ3 ∈ AL(P) in DNF. 249

Sätze Jede Formel ϕ ∈ FOL(Σ,

X) mit fvar(ϕ) = ∅ heißt Satz.

Beispiele: I

∀x∀y (R(x, y ) → R(y , x)) ist ein Satz.

I

R(x, y ) → R(y , x), ∀x(R(x, y ) → R(y , x)), ∃y (R(x, y ) → R(y , x)), ∀x(R(x, y ) → ∃yR(y , x)) sind keine Sätze.

für ϕ ∈ FOL(Σ,

X) mit fvar(ϕ) = {x1, . . . , xn }:

universeller Abschluß ∀ϕ := ∀x1 · · · ∀xn ϕ existentieller Abschluß ∃ϕ := ∃x1 · · · ∃xn ϕ

Fakt Für jede Formel ϕ ∈ FOL(Σ,

X) sind ∀ϕ und ∃ϕ Sätze. 250

Modelle von Sätzen

X

Auf den Wert eines Satzes ϕ ∈ FOL(Σ, ) in einer Interpretation I = (S, β) hat die Belegung β keinen Einfluss, d.h. für beliebige Belegungen α, β : → S gilt

X

JϕK(S,α) = JϕK(S,β) Beispiel: ϕ = ∀x∃y (P(x) ∧ E(x, y ) → ¬P(y ))

X

Für Sätze ϕ ∈ FOL(Σ, ) genügt es also, den Wert in Strukturen (statt in Interpretationen) zu betrachten: JϕKS := JϕK(S,β)

für eine beliebige Belegung β :

Menge aller Modelle des Satzes ϕ ∈ FOL(Σ,

X→S

X):

Mod(ϕ) = {S | S = (S, J·KS ) ist Σ-Struktur und JϕKS = 1} 251

Modelle von Satzmengen Signatur Σ = (∅, ΣR ) mit ΣR = {(R, 2)}    ∀x R(x, x),  ∀x∀y (R(x, y ) → R(y , x)) , Φ=   ∀x∀y ∀z ((R(x, y ) ∧ R(y , z)) → R(x, z)) I

I I

Für Σ-Struktur A = ({a, b, c}, J·KA ) mit JRKA = {(a, a), (a, c), (b, b), (c, a), (c, c)} gilt A ∈ Mod(Φ)

N

Für Σ-Struktur B = ( , J·KB ) mit JRKB = ≤ gilt B 6∈ Mod(Φ)

Mod(Φ) = Menge aller Σ-Strukturen S, in denen JRKS eine Äquivalenzrelation ist.

252

Charakterisierung von Strukturen durch Sätze Beispiel: Graphen mit Knotenfärbung Signatur Σ = (∅, ΣR ) mit ΣR = {(R, 1), (G, 1), (B, 1), (E, 2)}   ∀x¬E(x, x),         ∀x∀y (E(x, y ) → E(y , x)),       ∀x(R(x) ∨ G(x) ∨ B(x)), Φ= ∀x(R(x) → ¬(G(x) ∨ B(x)),       ∀x(G(x) → ¬(R(x) ∨ B(x)),         ∀x(B(x) → ¬(G(x) ∨ R(x)) (jeder Knoten mit genau einer Farbe aus {R, G, B} gefärbt) Mod(Φ) = Menge aller ungerichteten schlingenfreien Graphen mit Knotenfärbung mit Farben aus {R, G, B} 253

Mehr Beispiele Σ = (ΣF , ΣR ) mit ΣR = {(=, 2), (R, 2), (P, 1)} Vereinbarung: Bedeutung von = fest, Identität auf Trägermenge I

Strukturen mit mindestens zwei Elementen in der Trägermenge, ∃x∃y ¬(x = y )

I

Strukturen mit unendlicher Trägermenge,    ∀x¬R(x, x),  ∀x∀y ∀z (R(x, y ) ∧ R(y , z) → R(x, z)) , Φ=   ∀x∃y (R(x, y ))

I

2-färbbare (bipartite) Graphen ∀x∀y (R(x, y ) → (P(x) ↔ ¬P(y )) 254

Charakterisierung algebraischer Strukturen I

Signatur Σ = (ΣF , ΣR ) mit ΣF = ∅, ΣR = {(R, 2), (=, 2)}   ∀x R(x, x), ∀x∀y ((R(x, y ) ∧ R(y , x)) → x = y ) , ΦPO = ∀x∀y ∀z ((R(x, y ) ∧ R(y , z)) → R(x, z)) Mod(ΦPO ) = alle Mengen mit partieller Ordnung R, z.B. ( , ≤), ( , |), (2X , ⊆)

N

I

Z

Signatur Σ = (ΣF , ΣR ) mit ΣF = {(◦, 2)}, ΣR = {(=, 2)} ΦH = {∀x ∀y ∀z (x ◦ (y ◦ z) = (x ◦ y ) ◦ z)}

N

Z

Mod(ΦH ) = alle Halbgruppen, z.B. ( , +), (2 , ·), (A∗ , ◦) I

Signatur Σ = (ΣF , ΣR ) mit ΣF = {(◦, 2), (e, 0)}, ΣR = {(=, 2)} ΦM = {∀x ∀y ∀z (x ◦ (y ◦ z) = (x ◦ y ) ◦ z) , ∀x(x ◦ e = x)}  ∗ Mod(ΦM ) = alle Monoide, z.B. ( , ·, 1), (A∗ , ◦, ε), 2A , ∪, ∅

Z

I

Signatur Σ = (ΣF , ΣR ) mit ΣF = {(◦, 2), (e, 0)}, ΣR = {(=, 2)}   ∀x ∀y ∀z (x ◦ (y ◦ z) = (x ◦ y ) ◦ z) , ΦKG = ∀x(x ◦ e = x), ∀x∃y (x ◦ y = e), ∀x∀y (x ◦ y = y ◦ x)

N

Q

Mod(ΦKG ) = alle kommutativen Gruppen, z.B. (2 , +, 0), ( , ·, 1) 255

Was bisher geschah klassische Prädikatenlogik (der ersten Stufe) FOL(Σ, FOL(Σ, )-Syntax:

X

I

Signaturen, Terme, Atome, Formeln in FOL(Σ,

I

freie und gebundene Variablenvorkommen in Formeln und Formelmengen

FOL(Σ,

X)

X)

X)-Semantik:

I

Σ-Strukturen, Σ-Interpretationen

I

Werte von Termen, Atomen, Formeln in Σ-Interpretationen analog Aussagenlogik:

I

I I I I

Modellmengen (Un-)Erfüllbarkeit, Allgemeingültigkeit Äquivalenz von Formeln semantische Folgerungen

Sätze und Satzmengen (Syntax, Semantik) Charakterisierung von Strukturen durch Satzmengen z.B. Äquivalenzrelationen, Graphenklassen, Halbgruppen usw. 256

Wiederholung: Abstrakte Datentypen (ADT) Sorten (Typen) Signatur Σ = (ΣF , ΣR ) definiert die Darstellungsform, Typdeklarationen (Syntax) Axiome: Menge Φ ⊆ FOL(Σ, ) von Sätzen oft (∀-quantifizierte) Gleichungen zwischen Termen, beschreibt die gewünschten Eigenschaften von und Zusammenhänge zwischen den Symbolen, definiert die Bedeutung der Symbole (Semantik)

X

Spezifikation von Software-Schnittstellen (Interface): Darstellung der Anforderungen an jede Implementierung (oft durch Formelmengen ⊆ FOL(Σ, ), Axiome)

X

Abstraktion von konkreten Repräsentationen der Daten (Trägermengen) und konkrete Implementierung der Operationen 257

Wiederholung: Konkrete Datentypen

konkreter Datentyp (= Σ-Struktur) S = (S, J·KS ) mit I

Menge S von Daten (Trägermengen)

I

für jedes Symbol s in Σ die Bedeutung JsKS (Implementierung)

Jeder ADT repräsentiert eine Menge konkreter Datentypen: genau alle Implementierungen (Σ-Strukturen), die alle Axiome des ADT erfüllen

258

Abstrakter Datentyp (Beispiel) ADT für (Blickrichtung in) Himmelsrichtungen Norden, Osten, Süden, Westen mit Operationen für Rechts- und Linksabbiegen und Umlenken ADT Himmelsrichtungen (Spezifikation): Sorten: Himmelsrichtung (HR) = {N, O, S, W} Signatur: N, O, S, W : HR rechts, links, um : HR → HR Axiome:  rechts(N) = O, links(N) = W, um(N) = S, . . .    ∀h ∈ HR : rechts(links(h)) = h, ∀h ∈ HR : links(rechts(h)) = h,    ∀h ∈ HR : rechts(rechts(h)) = um(h), . . .

      

259

Konkreter Datentyp (Beispiele) Implementierung des ADT Himmelsrichtungen, z.B.:   cos ϕ − sin ϕ I als Punkte im 2 mit Drehmatrizen sin ϕ cos ϕ     0 1 0 −1 ϕ = −π/2 : R = ϕ = π/2 : L = −1 0 1 0

R

A = ({(0, 1), (1, 0), (0, −1), (−1, 0)}, J·KA ) mit JNKA = (0, 1), JOKA = (1, 0), JSKA = (0, −1), JWKA = (−1, 0),      x x ∀(x, y ) : JrechtsKA (x, y ) = R ∧ JlinksKA (x, y ) = L y y ∀(x, y ) : JumKA (x, y ) = (−x, −y ) Ist diese Implementierung korrekt (d.h. Modell aller Axiome)? I

B = ({0, 1, 2, 3}, J·KB ) mit JNKB = 0, JOKB = 1, JSKB = 2, JWKB = 3, ∀x : JrechtsKB (x) = (x + 1) mod 4 ∀x : JlinksKB (x) = (x − 1) mod 4, ∀x : JumKB (x) = (x + 2) mod 4 Ist diese Implementierung korrekt? 260

Spezifikation und Verifikation Jeder ADT spezifiziert eine Menge konkreter Datentypen: genau alle Implementierungen (Σ-Strukturen), die alle Axiome des ADT erfüllen Menge aller korrekten Implementierungen des ADT = Modellmenge der Menge Φ der Axiome des ADT Verifikation: formaler Nachweis der Korrektheit von Implementierungen bzgl. der Spezifikation (ADT) oft durch Ableitungen in geeigneten Kalkülen (maschinelle Unterstützung durch Werkzeuge wie z.B. Coq, pvs, Isabelle, KIV, KeY) (mehr dazu in LV im Master-Studium) 261

Prädikatenlogisches Ableiten Aussagen wie z.B. die folgende lassen sich i.A. nicht durch Nachprüfen aller Interpretationen zeigen: In jeder Menge mit einer Äquivalenzrelation R gilt ϕ = ∀x∀y ∀z (R(x, y ) ∧ R(x, z) → R(y , z)) d. h.    ∀x R(x, x)  ∀x∀y (R(x, y ) → R(y , x)) |= ϕ   ∀x∀y ∀z (R(x, y ) ∧ R(y , z) → R(x, z))

Syntaktische Methoden sind daher in Prädikatenlogik noch viel wichtiger als in Aussagenlogik 262

Gültigkeitsproblem Wiederholung: (Allgemein)-Gültigkeitsproblem in einer Logik gegeben: Formel ϕ in dieser Logik Frage: Ist ϕ allgemeingültig? als formale Sprache (Wortproblem): G = {ϕ | Mod(¬ϕ) = ∅} Erfüllbarkeits- und Folgerungsproblem sind darauf reduzierbar. für jede Logik interessant: Gibt es automatische Verfahren (Algorithmen), die dieses Problem entscheidet, also zu jeder gegebenen Formel dieser Logik die Frage korrekt mit ja oder nein beantwortet? Logiken, für die es solche Algorithmen gibt, heißen entscheidbar. 263

Wiederholung: Kalkül des natürlichen Schließens Kalkül: Menge von Axiomenschemata , d.h. Schema für Formeln, deren Gültigkeit vorausgesetzt wird, Regelschemata zur syntaktischen Ableitung weiterer gültiger Formeln aus Formelmengen (Axiomen und Hypothesen) Kalkül des natürlichen Schließens: Für jeden Junktor ∗ eine Einführungsregel (∗I) Junktor in der Folgerung (unten), aber in keiner Voraussetzung (oben) des Regelschemas, I eine Eliminierungsregel (∗E) Junktor in einer Voraussetzung (oben), aber nicht in der Folgerung (unten) des Regelschemas, I

Ableitungsschritt: Anwendung einer geeignet instanziierten Regel auf schon Hypothesen und abgeleitete Formeln Ableitung (Beweis): Kombination von Ableitungsschritten (Baumform) 264

Kalkül des natürlichen Schließens: Junktoren A B (∧I) A∧B

A ∧ B (∧E) A

A (∨I) A∨B

B (∨I) A∨B

[A] .. . B (→I) A→B f (fE) A

A

A ∧ B (∧E) B [A] [B] .. .. . . A∨B C C (∨E) C

A → B (→E) B [A] .. . f (¬I) ¬A

A f

¬A (¬E)

265

Kalkül des natürlichen Schließens: Regeln für ∀ für neu eingeführte Konstante a (repräsentiert „beliebiges“ Element):

A[x 7→ a] (∀I) ∀xA

für beliebigen Term t, in welchem keine Variable durch Einsetzen für x in A gebunden wird:

∀xA (∀E) A[x 7→ t]

Schlussregeln korrekt , weil ∀ϕ: {ϕ[x 7→ a]} |= ∀xϕ

{∀xϕ} |= ϕ[x 7→ t]

(∀I) Um ∀xA abzuleiten, muss man zeigen, dass A[x 7→ a] für eine neu eingeführte Konstante a (repräsentiert beliebiges Element) gilt. (∀E) Falls ∀xA abgeleitet, gilt auch für jeden beliebigen Term t, in dem keine Variable durch Einsetzen in A gebunden wird, A[x 7→ t]. 266

Beispiele für Ableitungen mit ∀-Regeln I

Alle Hunde bellen. Max ist ein Hund. Also bellt Max. ∀x(H(x) → B(x)), H(m) `N B(m)

I

∀x(H(x) → B(x)) (∀E) H(m) → B(m) H(m) (→E) B(m) Jede nichtnegative Zahl ist gleich ihrem Betrag. ∀x(x ≥ 0 → x = |x|), ∀x(x ≥ 0) `N ∀x(x = |x|) ∀x(x ≥ 0 → x = |x|) (∀E) n ≥ 0 → n = |n| (→E) n = |n| (∀I mit „beliebiger“ Zahl n) ∀x(x = |x|) ∀x(P(x) ∧ Q(x)) `N ∀xP(x) ∧ ∀xQ(x) ∀x(x ≥ 0) (∀E) n≥0

I

267

Kalkül des natürlichen Schließens: Regeln für ∃ für beliebigen Term t, in welchem keine Variable durch Einsetzen für x in A gebunden wird:

für neu eingeführte Konstante a: ∃xA

A[x 7→ t] (∃I) ∃xA [A[x 7→ a]] .. . B (∃E) B

Schlussregeln korrekt , weil ∀ϕ: {ϕ[x 7→ t]} |= ∃xϕ

{∃xϕ, ϕ[x 7→ a] → ψ} |= ψ

(∃I) Hat man für einen Term t gezeigt, dass A[x 7→ t] gilt, kann man daraus ∃xA ableiten. (∃E) Falls ∃xA schon abgeleitet wurde und B für eine neu eingeführte Konstante a aus der Annahme A[x 7→ a] abgeleitet werden kann, dann ist damit auch B abgeleitet. (Bei jeder Anwendung von (∃E) muss eine eigene neue Konstante eingeführt werden) 268

Beispiele für Ableitungen mit ∃-Regeln I

2 ist gerade. 2 ist eine Primzahl. Also gibt es gerade Primzahlen. G(2), P(2) `N ∃x(G(x) ∧ P(x))

I

G(2) P(2) (∧I) G(2) ∧ P(2) (∃I) ∃x(G(x) ∧ P(x)) Manche Studenten sind klug und fleißig. Also sind manche klug und manche fleißig. ∃x(K (x) ∧ F (X )) `N ∃xK (x) ∧ ∃xF (x)) [K (a) ∧ F (a)] K (a) ∃x(K (x) ∧ F (x)) ∃xK (x)

∃xK (x)

(∃I) (∃E mit a) ∃xK (x) ∧ ∃xF (x)

I

[K (b) ∧ F (b)]

(∧E)

F (b) ∃x(K (x) ∧ F (x)) ∃xF (x)

∃xF (x)

(∧E)

(∃I) (∃E mit b)

(∧I)

∃x(P(x) ∧ ¬Q(x)), ∀x(P(x) → R(x)) `N ∃x(R(x) ∧ ¬Q(x)) 269

Aufzählbarkeit Ableitungsrelation z.B. durch Erweiterung des Kalkül des natürlichen Schließens auf Prädikatenlogik Mit Hilfe logischer Kalküle (z.B. des natürlichen Schließens) lassen sich alle allgemeingültigen Formeln ϕ ∈ FOL(Σ, ) algorithmisch aufzählen (nacheinander angeben).

X

Idee: Alle Formeln „gleichzeitig“ ableiten (dove tailing) Bei jedem erfolgreichen Versuch Formel ausgeben und diese Berechnung für diese Formel abbrechen. Es gibt aber kein Verfahren, welches algorithmisch entscheidet (d.h. für jede beliebige Formel ϕ ∈ FOL(Σ, ) in endlicher Zeit die Antwort ja/nein berechnet), ob eine gegebene Formel allgemeingültig ist (in der Aufzählung vorkommt).

X

270

Unentscheidbarkeit der Prädikatenlogik der ersten Stufe FOL(Σ,

X)

Satz Es existiert kein Algorithmus, der für jede beliebige Formel ϕ ∈ FOL(Σ, X ) entscheidet, ob ϕ allgemeingültig ist. (Das Gültigkeitsproblem in) FOL(Σ,

X) ist also unentscheidbar.

Im Gegensatz dazu gilt für die Aussagenlogik AL(P):

Satz Es existiert (wenigstens) ein Algorithmus, der für jede beliebige Formel ϕ ∈ AL(P) entscheidet, ob ϕ allgemeingültig ist. (Test endlich vieler endlicher Strukturen genügt, z.B. Wahrheitswerttabellen, Modellmengen, Kalküle,. . . ) (Das Gültigkeitsproblem in) AL(P) ist also entscheidbar. 271

Zusammenfassung: Logik(en) in der Informatik einige prominente Anwendungen: I Digitaltechnik (AL) I Abstrakte Datentypen (FOL) (mehr dazu in LV Algorithmen und Datenstrukturen) I Wissensrepräsentation und -verarbeitung (AL, FOL, nichtklassische Logiken) mehr dazu in LV Künstliche Intelligenz I Semantic Web (FOL, Beschreibungslogiken, OWL) I Problemlösen, Planung (AL, FOL) I Multiagentensysteme (FOL, Epistemische Logik) I deklarative Programmierung (AL, FOL) (logische Programmierung, Constraint-Programmierung) I Beschreibung von Abläufen (FOL, temporale Logiken) I Spezifikation des Verhaltens von Software und Systemen (AL, FOL, Temporale Logiken, Prozesslogiken) (mehr dazu in LV zu Verifikationstechniken) 272

Anwendung: Wissensrepräsentation und -verarbeitung

I

Entscheidungstabellen, - Bäume, -Diagramme

I

Regelbasiertes Schließen

I

unvollständiges Wissen, nichtmonotones Schließen

I

unscharfes Wissen, fuzzy logic, probabilistische Logik

I

Klassifizierung, Diagnose

I

Zusammenhänge zwischen Begriffen, Ontologien

I

Darstellung von Wissen im Semantic Web

I

Planen, z.B. Stundenpläne, Ablaufpläne

273

Anwendung: logische Programmierung Prolog-Programm P: liest(paul,krimi). liest(tina,arztroman). liest(bob,X). mag(tina,X) :- liest(X,krimi). repräsentiert die Formelmenge    liest(paul, krimi), liest(tina, arztroman),  ∀x(liest(bob, x)), P=   ∀x(liest(x, krimi) → mag(tina, x)) Anfrage: ?- mag(tina,X). repräsentiert die Formel ψ = mag(tina,X) (Wen mag Tina?) Paar (Programm, Anfrage) repräsentiert das Problem: Für welche Belegungen β gilt P |= β(ψ)? Lösung durch SLD-Resolution (Kalkül zum Schließen in einem geeigneten FOL(Σ, )-Fragment)

X

274

Anwendung: Wortmodelle Alphabet A: (endliche) Menge von Symbolen) Wort w = w1 · · · wn ∈ A∗ als I

Funktion w : {1, . . . , n} → A (von Positionen auf Symbole) mit ∀i ∈ {1, . . . , n} : w(i) = wi

I

Für Σ = (ΣF , ΣR ) mit ΣR = {(≤, 2)} ∪ {(a, 1) | a ∈ A} Σ-Struktur w = ({1, . . . , n}, J·Kw ) mit

J≤Kw =≤ ∀a ∈ A : JaKw = {i ∈ {1, . . . , n} | wi = a}

Beispiel: A = {a, b, c}, logische Beschreibung der Mengen aller Wörter, I

die kein a enthalten: ¬∃x a(x)

I

die mindestens ein a und ein b enthalten: ∃x a(x) ∧ ∃x b(x)

I

die mit a beginnen: ∀x (∀y (x ≤ y ) → a(x))

I

in denen nach jedem a ein b steht (nicht notwendig direkt): ∀x (a(x) → ∃y (x ≤ y ∧ b(y ))) 275

Anwendung: Korrektheit von Systemen Modellierung des Verhaltens von Systemen (zeitliche Abläufe, Zeitpunkte in ), z.B.

N

I

∀n∃m(n ≤ m ∧ P(n) → Q(m))

I

∃n∀m(m > n → ¬P(n)))

Spezifikation (Anforderungen), z.B.: I

Ein Fehlerzustand wird nie erreicht. ¬∃n Fehler(n)

I

Jeder Fehler wird sofort nach dem Auftreten behoben. ∀n (Fehler(n) → ¬Fehler(n + 1)))

I

Jeder einmal gestellte Auftrag a wird irgendwann erledigt. ∀a∀n ( gestellt(a, n) → ∃m(n ≤ m ∧ erledigt(a, m)))

276

Zustandsübergangssysteme Zustandsübergangssystem (Q, X , δ) Q (endliche) Menge von Zuständen X endliche Menge von Aktionen δ : X → (Q × Q) Übergangsrelationen δ ordnet jeder Aktion a ∈ X eine Relation δ(a) ⊆ Q × Q zu (Graph mit Kantenfärbung, Farben: Aktionen) Ziel: Spezifikation (formale Beschreibung von Anforderungen) von Zustandsübergangssystemen Prädikatenlogik zur Darstellung der Eigenschaften von I

Zuständen

I

(zulässigen) Aktionen

I

Wirkung der Aktionen (Zustandsübergänge) 277

Beispiel: lineares Solitaire Q = {0, 1}∗ Zustände (mögliche Spielkonfigurationen) X = {(011 → 100), (110 → 001)} Aktionen (zulässige Spielzüge) δ : {(011 → 100), (110 → 001)} → {0, 1}∗ × {0, 1}∗ (z.B. (101101, 110001) ∈ δ(011 → 100)) Zustandsübergänge bei Ausführung von Zügen, (u, v ) ∈ δ(011 → 100) gdw. |u| = |v | ∧  i ∈ {2, . . . , |u| − 1}  ∧ui−1 = 0 ∧ ui = 1 ∧ ui−1 = 1 ∃i   ∧vi−1 = 1 ∧ vi = 0 ∧ vi−1 = 0  ∧∀j (j 6= i − 1 ∧ j 6= i ∧ j 6= i + 1) → uj = vj

   

278

Beispiel: Münzschließfach Aktionen: A aufschließen Eigenschaften: g bezahlt Z zuschließen o offen O Tür öffnen b belegt S Tür schließen G Geld einwerfen Beispiele für Anforderungen (Spezifikation): Am Münzschließfach sollen nur Abläufe (Wort w ∈ {A, Z , O, S, G}∗ ) möglich sein, die folgende Anforderungen (Eigenschaften) erfüllen: I

Offene Fächer können nicht zugeschlossen werden. ∀x(o(x) → ¬∃yZ (x, y ))

I

In belegte Fächer kann kein Geld eingeworfen werden. ∀x(b(x) → ¬∃yG(x, y ))

I

Kein nicht bezahltes Fach kann zugeschlossen werden. ¬∃x(¬g(x) ∧ ∃yZ (x, y ))

Dazu werden auch häufig nichtklassische Logiken verwendet. (z.B. Temporallogiken: (entscheidbare) FOL-Fragmente) 279

Beispiel Münzschließfach {b}

∅ Entwurf des Systems:

S

O {o}

G

A S {g, o}

Z {g}

O Beispiele für mögliche Abläufe (während eines Tages) w ∈ {A, Z , O, S, G}∗ : I

OGSZAGSZA: zwei Belegungszyklen

I

OSOSOS: Tür wiederholt öffnen und schließen

I

ε

I

OSOGSOSZASOSOGSZASO

Jeder mögliche Ablauf erfüllt die Spezifikation (Anforderungen):   ∀x(o(x) → ¬∃yZ (x, y )), ∀x(b(x) → ¬∃yG(x, y )), Φ= ¬∃x(¬g(x) ∧ ∃yZ (x, y )) 280

Berechnungen als Zustandsübergangssysteme imperative Programmierung (von-Neumann-Modell): Ausführungsmodell: abstrakte Maschine Berechnung eines imperativen Programmes p: Ausführung des Programmes p mit Eingabe i, d.h. (endliche oder unendliche) Folge von Zuständen einer abstrakten Maschine Zustand: Speicherbelegung Modellierung einer Berechnung (Ausführung eines Programmes) durch Folge von Zustandsübergängen (Rechenschritte) formale Beschreibung der Semantik (Wirkung) eines imperativen Programmes p: Abbildung (partielle Funktion) von Eingaben auf Ausgaben (und Nebenwirkungen) 281

Beispiel: Vertauschen Aufgabe: Vertauschen zweier Zahlen Zustände (x, y , z) ∈

N3, wobei

x = Wert der Variable (Speicherplatz) a y = Wert der Variable (Speicherplatz) b z = Wert der Variable (Speicherplatz) c

Programm: c := a a := b b := c

Zustandsübergangssystem der Berechnung für a = 3, b = 5: (3, 5, ?) start c := a (3, 5, 3) a := b (5, 5, 3) b := c (5, 3, 3) 282

Eigenschaften von Berechnungen Spezifikation (formale Beschreibung des Verhaltens) eines Vorbedingung: ϕ Programmes p: Nachbedingung: ψ Bedeutung: Beginnt die Ausführung des Programmes in einem Zustand, der die Vorbedingung ϕ erfüllt, dann gilt im Zustand nach Programmende die Nachbedingung ψ. Verifikation: Nachweis, dass ein imperatives Programm korrekt ist (also seine Spezifikation erfüllt) Idee: Induktion über die Programmstruktur (Baum) aus IA: elementaren Anweisungen (Zuweisungen, Unterprogrammaufrufe) und IS: Operationen zur Kombination von Anweisungen: Nacheinanderausführung, Verzweigung, Wiederholung 283

Nachweis der Eigenschaften von Berechnungen Spezifikation durch Hoare-Tripel: {ϕ} p {ψ} Beispiel Vertauschen: {a = x ∧ b = y }c := a; a := b; b := c{a = y ∧ b = x} einige Ableitungsregeln im Hoare-Kalkül: {ϕ} c1 {ψ} {ψ} c2 {η} (Nacheinanderausführung) {ϕ} c1 ; c2 {η} ϕ → ϕ0

{ϕ0 } c {ψ 0 } {ϕ} c {ψ}

ψ0 → ψ

(Abschwächung)

{ϕ ∧ B}c{ϕ} (Wiederholung) {ϕ} while B c {ϕ ∧ ¬B} Axiom: {ϕ[x 7→ t]} x := t {ϕ}

(Zuweisung) 284

Zustandsübergangssystem Münzschließfach 0 S

4 A

O

Z S

1

G

3

2 O

Aktionen: A aufschließen Eigenschaften: g bezahlt (2, 3) Z zuschließen o offen (1, 2) O Tür öffnen b belegt (4) S Tür schließen G Geld einwerfen 285

Endliche Automaten – Definition

NFA (nondeterministic finite automaton) A = (X , Q, δ, I, F ) mit X endliches Alphabet, Q endliche Menge von Zuständen, δ Übergangsrelationen δ : X → (Q × Q), I ⊆ Q Startzustände, F ⊆ Q akzeptierende Zustände.

286

NFA: Beispiel A = (X , Q, δ, {0, 3}, {2, 3, 4}) mit X

= {a, b, c}

Q = {0, 1, 2, 3, 4} δ(a) = {(0, 0), (0, 1), (1, 3)} δ(b) = {(0, 0), (1, 2)} δ(c) = {(0, 3), (3, 3), (4, 1)}

a,b a

0 c 3

b

1 a

2

c c

4 287

Eigenschaften endlicher Automaten NFA A = (X , Q, δ, I, F ) heißt vollständig , falls ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≥ 1 deterministisch (DFA) , falls 1. |I| = 1 und 2. ∀a ∈ X ∀p ∈ Q : |{q | (p, q) ∈ δ(a)}| ≤ 1 Beispiele: a,b

b b

0

1 a

vollständig nicht deterministisch

b

a

0

b

a b

b

0

1

nicht vollständig deterministisch

1 a

vollständig deterministisch

288

Pfade in endlichen Automaten

Für einen NFA A = (X , Q, δ, I, F ) und ein Wort w ∈ X ∗ heißt eine Folge von Zuständen p = (p0 , p1 , . . . , pn ) ∈ Q ∗ genau dann Pfad für w in A, wenn gilt: 1. p0 ∈ I und 2. ∀i ∈ {1, . . . , n} : (pi−1 , pi ) ∈ δ(wi ) akzeptierender Pfad für w in A, wenn zusätzlich gilt: 3. pn ∈ F

289

Beispiel b

NFA A = ({a, b}, {0, 1}, δ, {0}, {0}) mit δ(a) = {(0, 1)} und δ(b) = {(0, 0), (0, 1), (1, 0)}

a,b 0

1 b

Pfade für I

abbb: a b b b 0 → 1 → 0 → 0 → 0 ∈ F (akzeptierend) a b b b 0 → 1 → 0 → 0 → 1 6∈ F (nicht akzeptierend) a b b b 0 → 1 → 0 → 1 → 0 ∈ F (akzeptierend)

I

aba: a b a 0 → 1 → 0 → 1 6∈ F (nicht akzeptierend)

I

aa existieren nicht: 0 → 1 → ?

a

a

290

Akzeptanz durch endliche Automaten NFA A akzeptiert ein Wort w gdw. ein akzeptierender Pfad für w in A existiert. Beispiel: NFA A aus vorigem Beispiel (Tafel) I

akzeptiert das Wort abbb (z.B.) über den akzeptierenden Pfad a b b b 0→1→0→1→0∈F

I

akzeptiert das Wort aba nicht, weil 0 → 1 → 0 → 1 der einzige Pfad für aba in A ist und im Zustand 1 6∈ F endet,

I

akzeptiert das Wort aa nicht, weil dafür kein Pfad in A existiert.

a

b

a

A akzeptiert genau alle Wörter, in denen auf jedes a sofort ein b folgt, also genau die Wörter in der Sprache L(b + ab)∗ . 291

NFA-akzeptierbare Sprachen NFA A = (X , Q, δ, I, F ) akzeptiert die Sprache L(A)

= {w ∈ X ∗ | ∃ akzeptierender Pfad für w in A}   ∃(p0 , . . . , p|w| ) ∈ Q ∗ :     p0 ∈ I ∧ p|w| ∈ F = w ∈ X ∗   ∧ ∀i ∈ {1, . . . , |w|} : (pi−1 , pi ) ∈ δ(wi )

Sprache L(A) beschreibt das Verhalten (Semantik) des NFA Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0), (2, 2)} und δ(b) = {(0, 0), (0, 1), (1, 2), (2, 2)} akzeptiert L(A) = . . . Eine Sprache L ⊆ X ∗ heißt genau dann NFA-akzeptierbar, wenn ein NFA A mit L = L(A) existiert. Menge aller NFA-akzeptierbaren Sprachen: REC(NFA) Beispiel: L = {w | w enthält ein Infix aa oder bba} ist NFA-akzeptierbar. 292

Beispiele NFA-akzeptierbarer Sprachen

I

L1 = {w ∈ {0, 1}∗ | |w|0 ist ungerade }

I

L2 = {w ∈ {a, b}∗ | w beginnt mit ab und endet mit ba}

I

L3 = L(G) mit G = ({S, T }, {0, 1}, P, S) mit P = {S → 11T , T → 0S, T → 0}

I

L4 = L(E) mit E = (a + b)∗ ab∗

I

L5 = L(F ) mit F = ((a + b)c)∗

Beobachtung: Diese Sprachen lassen sich alle durch reguläre Ausdrücke repräsentieren.

293

Was bisher geschah I I

Modellierung durch Zustandsübergangssysteme NFA A = (X , Q, δ, I, F ) I I

vollständig deterministisch (DFA)

I

Akzeptanz von Wörtern durch NFA

I

von einem NFA A akzeptierte Sprache L(A) Verhalten von A, Semantik

I

NFA-akzeptierbare Sprachen REC(NFA)

I

Operationen auf Sprachen: I I

Mengenoperationen ∪, ∩, , \ Sprachoperationen ◦, ∗ , R

I

reguläre Ausdrücke E ∈ RegExp(X ), repräsentierte Sprache L(E) ⊆ X ∗

I

Grammatiken G = (N, X , P, S) erzeugte Sprache L(G) ⊆ X ∗ 294

Isomorphie endlicher Automaten Zwei NFA A = (X , Q, δ, I, F ) und B = (X , Q 0 , δ 0 , I 0 , F 0 ) sind genau dann isomorph, wenn eine bijektive Funktion h : Q → Q 0 existiert, so daß I

genau dann s ∈ I , wenn h(s) ∈ I 0 ,

I

genau dann f ∈ F , wenn h(f ) ∈ F 0 und

I

für jedes a ∈ X : genau dann (p, q) ∈ δ(a), wenn (h(p), h(q)) ∈ δ 0 (a).

Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {0}) mit δ(a) = {(0, 1), (1, 2), (2, 0)} und δ(b) = {(0, 2), (1, 0), (2, 1)} und B = ({a, b}, {α, β, γ}, δ, {β}, {β}) mit δ(a) = {(α, β), (β, γ), (γ, α)} und δ(b) = {(α, γ), (β, α), (γ, β)} sind isomorph mit h(0) = β, h(1) = γ, h(2) = α. (Graphisomorphie zwischen gerichteten Graphen mit markierten Kanten)

Fakt Isomorphie von NFA ist eine Äquivalenzrelation. 295

Äquivalenz endlicher Automaten Zwei NFA A, B heißen genau dann äquivalent, wenn L(A) = L(B) gilt. Beispiel: Der NFA A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 1)} und δ(b) = {(1, 1), (1, 2)} und der NFA B = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 1), (2, 1), (3, 3)} und δ(b) = {(0, 3), (1, 2), (2, 2), (3, 3)} sind äquivalent. Warum?

Fakt Äquivalenz endlicher Automaten ist eine Äquivalenzrelation.

Fakt Isomorphe endliche Automaten sind äquivalent. Also: Umbenennung der Zustände eines NFA ändert die Semantik (akzeptierte Sprache) nicht. 296

Vervollständigung von NFA Motivation: In vollständigen NFA existiert zu jedem Wort wenigstens ein Weg, Akzeptanz des Wortes durch Menge der mit dem letzten Symbol erreichten Zustände auf allen Wegen feststellbar.

Satz Zu jedem NFA existiert ein äquivalenter vollständiger NFA. (Hinzufügen eines zusätzlichen nichtakzeptierenden Zustandes, falls notwendig) Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0), (1, 2)} und δ(b) = {(0, 1)} äquivalenter vollständiger NFA B = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 0), (1, 2), (2, 3), (3, 3)} und δ(b) = {(0, 1), (1, 3), (2, 3), (3, 3)} 297

Wiederholung: Pfade in NFA b

NFA A = ({a, b}, {0, 1}, δ, {0}, {0}) mit δ(a) = {(0, 1)} und δ(b) = {(0, 0), (0, 1), (1, 0)}

a,b 0

1 b

Pfade für I

abbb: a b b b 0 → 1 → 0 → 0 → 0 ∈ F (akzeptierend) a b b b 0 → 1 → 0 → 0 → 1 6∈ F (nicht akzeptierend) a b b b 0 → 1 → 0 → 1 → 0 ∈ F (akzeptierend)

I

aba: a b a 0 → 1 → 0 → 1 6∈ F (nicht akzeptierend)

I

aa existieren nicht: 0 → 1 → ?

a

a

Alle Pfade für ein Wort w in einem NFA A lassen sich in einem Baum zusammenfassen. (Tafel) 298

Vorteil deterministischer Automaten a,b

Beispiele: 0

b

a,b

a

1

0

a,b b

1

Akzeptanz der Wörter aab, bba ? Zu jedem DFA A = (X , Q, δ, I, F ) und jedem Wort w ∈ X ∗ I

existiert in A höchstens ein Pfad für w,

I

lässt sich in höchstens |w| Schritten feststellen, ob A das Wort w akzeptiert,

I

lässt sich in höchstens |w| Schritten feststellen, ob A das Wort w nicht akzeptiert.

Existiert zu jedem NFA ein äquivalenter DFA? 299

Nachfolgermengen in NFA Nachfolgermengen im NFA A = (X , Q, δ, I, F ): NA (a, p) = {q ∈ Q | (p, q) ∈ δ(a)} (a-Nachfolger von p ∈ Q) Menge aller Zustände, die über eine a-Kante aus dem Zustand p erreichbar sind S NA (a, M) = p∈M NA (a, p) (a-Nachfolger von M ⊆ Q) Menge aller Zustände, die über eine a-Kante aus einem Zustand aus M erreichbar sind b a,b

Beispiel:

0

1 b

Nachfolgermengen der Zustände: NA (a, 0) = {1}

NA (a, 1) = ∅

NA (b, 0) = {0, 1}

NA (b, 1) = {1}

Nachfolgermengen aller Mengen von Zuständen: NA (a, {0}) = {1} NA (b, {0}) = {0, 1} NA (a, ∅) = ∅

NA (a, {1}) = ∅ NA (b, {1}) = {0} NA (b, ∅) = ∅

NA (a, {0, 1}) = {1} NA (b, {0, 1}) = {0, 1} 300

Konstruktion von DFA aus NFA allgemeines Verfahren: gegeben: NFA A = (X , Q, δ, I, F ) gesucht: DFA B = (X , QB , δB , IB , FB ) mit L(A) = L(B) Konstruktion: (Potenzmengen-Konstruktion) Automat B = (X , QB , δB , IB , FB ) mit Q B = 2Q IB = {I} FB = {M ⊆ Q | F ∩ M 6= ∅} für jedes a ∈ X : δB (a) = {(M, NA (a, M)) | M ⊆ Q} Beispiel: Konstruktion eines DFA B äquivalent zum NFA A aus dem vorigen Beispiel häufige Variante: Einschränkung auf von IB erreichbare Zustände 301

Korrektheit der Konstruktion Fakt Der nach der Potenzmengenkonstruktion aus dem Automaten A = (X , Q, δ, I, F ) konstruierte Automat B = (X , QB , δB , IB , FB ) ist ein endlicher Automat, vollständig, deterministisch und äquivalent zu A. Begründungen für Endlichkeit: Weil Q endlich, ist auch 2Q = QB endlich. Vollständigkeit: Für jedes Symbol a ∈ X und jeden Zustand M ∈ QB existiert in B genau ein (also mindestens ein) a-Nachfolger von M, nämlich NA (a, M). Determinismus:

1. Startzustand IB = I ist eindeutig bestimmt, 2. Für jedes Symbol a ∈ X und jeden Zustand M ∈ QB existiert in B genau ein (also höchstens ein) a-Nachfolger von M, nämlich NA (a, M).

Äquivalenz: Nachweis von L(A) ⊆ L(B) und L(B) ⊆ L(A) durch „Übersetzung“ der akzeptierenden Pfade 302

Praktische Bedeutung Ob ein Wort w in einer regulären Sprache L enthalten ist, lässt sich mit einem DFA A mit L(A) = L schnell bestimmen (O(|w|)) aber: (evtl. aufwendige) Vorbereitung notwendig (Konstruktion des DFA A mit L(A) = L) Vorbereitung lohnt sich für häufige Anwendung, z.B. in I

Übersetzerbau einmal Konstruktion der DFA für Schlüsselwörter und Konstantendarstellungen (z.B. Gleitkomma-Darstellungen) Syntaxcheck und -analyse für viele Programme

I

Suchmaschinen einmal Konstruktion des DFA für Suchwort / Suchwörter Durchsuchen vieler Texte (schnell)

303

Ausblick Transformation von NFA in äquivalente DFA (Potenzmengenkonstruktion) ist Grundlage für I

Automatenkonstruktionen für Sprachoperationen (Komplement, Schnitt)

I

eindeutige Darstellung regulärer Sprachen (Minimalautomat) notwendig zur algorithmischen Feststellung der Gleichheit zweier regulärer Sprachen

I

Transformation von DFA in reguläre Ausdrücke

später: Grundideen der Potenzmengen-Konstruktion: I

Zusammenfassung der Nachfolgermengen garantiert I Determinismus (und Vollständigkeit) und I Äquivalenz der Automaten

I

Endlichkeit der Menge aller möglichen Zustände

Funktionieren ähnliche Ideen auch für andere Maschinenmodelle? Antworten (Vorschau): I

nein für Kellerautomaten

I

ja für Turing-Maschinen 304

NFA für Komplement NFA-akzeptierbarer Sprachen Beispiel: vollständiger DFA A = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 3), (2, 2), (3, 3)} und δ(b) = {(0, 3), (1, 2), (2, 2), (3, 3)} allgemeines Verfahren: gegeben: vollständiger DFA A = (X , Q, δ, I, F ) gesucht: NFA B mit L(B) = L(A) Konstruktion: DFA B = (X , Q, δ, I, Q \ F )

Fakt Der oben definierte NFA B akzeptiert die Sprache L(A).

305

NFA für Vereinigung NFA-akzeptierbarer Sprachen Beispiel: NFA A = ({a, b}, {0, 1}, δA , {0}, {0}) mit δA (a) = {(0, 1), (1, 0)} und δA (b) = ∅ NFA B = ({a, b}, {2, 3, 4}, δB , {2}, {4}) mit δB (a) = {(2, 3), (4, 3)} und δB (b) = {(3, 4)} allgemeines Verfahren: gegeben: NFA A = (X , QA , δA , IA , FA ) und NFA B = (X , QB , δB , IB , FB ) mit QA ∩ QB = ∅ (Zustände umbenennen, falls notwendig) gesucht: NFA C mit L(C) = L(A) ∪ L(B) Konstruktion: NFA C = (X , QA ∪ QB , δC , IA ∪ IB , FA ∪ FB ) mit ∀a ∈ X : δC (a) = δA (a) ∪ δB (a)

Fakt Der oben definierte NFA C akzeptiert die Sprache L(A) ∪ L(B). Zu gegebenen Automaten A und B lässt sich damit auch ein Automat C mit L(C) = L(A) ∩ L(B) = L(A) ∪ L(B) (deMorgan) konstruieren. (Dazu existieren aber auch effektivere Methoden.) 306

NFA mit ε-Übergängen ε-NFA: NFA ohne Einschränkung δ(ε) = IQ , stattdessen δ(ε) ⊇ IQ (zusätzliche Kanten im Automatengraphen mit Beschriftung ε) ε-NFA vereinfachen oft die Modellierung von Sprachen und Abläufen. Beispiel: A = ({a, b, c}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0)}, δ(b) = {(1, 1)}, δ(c) = {(2, 2)} und δ(ε) = {(0, 1), (1, 2)} Akzeptanz von Wörtern analog zu NFA: ε-NFA A = (X , Q, δ, I, F ) akzeptiert ein Wort w ∈ X ∗ genau dann, wenn δ ∗ (w) ∩ (I × F ) 6= ∅. δ ∗ (w) = δ ∗ (ε) ◦ δ(w1 ) ◦ δ ∗ (ε) ◦ · · · ◦ δ ∗ (ε) ◦ δ(wn ) ◦ δ ∗ (ε)

ε-NFA A im Beispiel oben akzeptiert die Sprache L(A) = a∗ b∗ c ∗

Fakt Zu jedem NFA A existiert ein äquivalenter ε-NFA B mit genau einem Startzustand und genau einem akzeptierenden Zustand. 307

NFA für Verkettung NFA-akzeptierbarer Sprachen Beispiel: NFA A = ({a, b}, {0}, δA , {0}, {0}) mit δA (a) = ∅ und δA (b) = {(0, 0)} NFA B = ({a, b}, {1, 2, 3}, δB , {1, 3}, {2}) mit δB (a) = {(3, 2), (3, 3)} und δB (b) = {(1, 2)} allgemeines Verfahren: gegeben: NFA A = (X , QA , δA , IA , FA ) und NFA B = (X , QB , δB , IB , FB ) mit QA ∩ QB = ∅ gesucht: NFA C mit L(C) = L(A) ◦ L(B) Konstruktion: 1. (A0 ≡ A ∧ |FA0 | = 1): ε-NFA A0 = (X , QA ∪ {fA }, δA0 , IA , {fA }) mit ∀a ∈ X : δA0 (a) = δA (a) und δA0 (ε) = δA (ε) ∪ {(q, fA ) | q ∈ FA } 2. (B 0 ≡ B ∧ |IB 0 | = 1): ε-NFA B 0 = (X , QB ∪ {sB }, δB0 , {sB }, FB ) mit ∀a ∈ X : δB0 (a) = δB (a) und δB0 (ε) = δB (ε) ∪ {(sB , q) | q ∈ IB } 3. (◦): ε-NFA C = (X , QA ∪ QB ∪ {fA , sB }, δC , IA , FB ) mit ∀a ∈ X : δC (a) = δA0 (a) ∪ δB0 (a) und δC (ε) = δA0 (ε) ∪ δB0 (ε) ∪ {(fA , sB )}

Fakt Der oben definierte ε-NFA C akzeptiert die Sprache L(A) ◦ L(B).

308

NFA für iterierte Verkettung Beispiel: NFA A = ({a, b}, {0, 1, 2, 3}, δA , {0}, {3}) mit δA (a) = {(0, 1), (2, 3)} und δA (b) = {(1, 2)} allgemeines Verfahren: gegeben: NFA A = (X , Q, δA , I, F ) gesucht: NFA B mit L(B) = L(A)∗ Konstruktion: 1. (A0 ≡ A ∧ |IA0 | = 1 ∧ |FA0 | = 1): ε-NFA A0 = (X , QA ∪ {sA , fA }, δA0 , {sA }, {fA }) mit ∀a ∈ X : δA0 (a) = δA (a) und δA0 (ε) = {(sA , q) | q ∈ IA } ∪ {(q, fA ) | q ∈ FA } 2. (∗ ): ε-NFA B = (X , QA ∪ {sA , fA }, δB , {sA }, {fA }) mit ∀a ∈ X : δB (a) = δA0 (a) und δB (ε) = δA0 (ε) ∪ {(sA , fA ), (fA , sA )}

Fakt Der oben definierte ε-NFA B akzeptiert die Sprache L(A)∗ . 309

Abschlusseigenschaften von REC(NFA) Satz Sind L und L0 NFA-akzeptierbare Sprachen, dann sind auch die Sprachen I

L ∪ L0 (Vereinigung)

I

L (Komplement)

I

L ∩ L0 (Schnitt)

I

L ◦ L0 (Verkettung)

I

Ln , L∗ (iterierte Verkettung)

I

LR (Spiegelung)

NFA-akzeptierbar. dieselbe Aussage kürzer: Die Menge REC(NFA) ist abgeschlossen unter I

Mengenoperationen: ∪,

I

Sprachoperationen ◦, ∗ ,

(und damit auch ∩ und \) R 310

Reguläre Ausdrücke und NFA Satz Eine Sprache L ⊆ X ∗ ist genau dann durch einen regulären Ausdruck definiert, wenn sie NFA-akzeptierbar ist. zu zeigen ist: 1. Jede durch einen regulären Ausdruck definierte Sprache ist NFA-akzeptierbar. (Für jeden regulären Ausdruck E existiert ein NFA A mit L(E) = L(A).) 2. Jede NFA-akzeptierbare Sprache ist durch einen regulären Ausdruck definiert. (Für jeden NFA A existiert ein regulärer Ausdruck E mit L(E) = L(A).)

311

Konstruktion: Regulärer Ausdruck → NFA zu zeigen: Für jeden regulären Ausdruck E existiert ein NFA A mit L(E) = L(A). Beispiel: E = ab∗ + b Induktive Konstruktion des NFA A (Induktion über die Struktur des regulären Ausdruckes E): IA L(∅), L(ε) und L(a) für alle a ∈ X sind NFA-akzeptierbar (Tafel) IS sind L(E) und L(F ) NFA-akzeptierbar, dann sind auch I I I

L(E + F ) = L(E) ∪ L(F ), L(EF ) = L(E) ◦ L(F ) und L(E ∗ ) = L(E)∗

NFA-akzeptierbar (wegen Abgeschlossenheit von REC(NFA) unter ∪, ◦, ∗ ) 312

NFA und reguläre Grammatiken Beispiel: NFA A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 1)} und δ(b) = {(1, 0), (1, 2)} reguläre Grammatik G = ({S, B}, {a, b}, P, S) mit P = {S → aB, B → bS, B → b} definieren beide die Sprache L(A) = L(G) = (ab)+

Satz Eine Sprache L ⊆ X ∗ ist genau dann NFA-akzeptierbar, wenn L \ {ε} von einer regulären Grammatik (Chomsky-Typ 3) erzeugt wird.

313

Konstruktion: reguläre Grammatik → NFA gegeben: reguläre Grammatik G = (N, X , P, S) (Chomsky 3) Konstruktion: NFA A = (X , Q, δ, I, F ) mit Q = N ∪ {f }

mit f 6∈ N

I = {S} F

= {f }

für jedes a ∈ X : δ(a) = {(A, B) | (A → aB) ∈ P} ∪{(A, f ) | (A → a) ∈ P} Beispiel: Zur regulären Grammatik G = ({S, B}, {0, 1}, P, S) mit P = {S → 0B, B → 0B, B → 1S, B → 0} wird der NFA A = ({0, 1}, {S, B, f }, δ, {S}, {f }) mit δ(0) = {(S, B), (B, B), (B, f )} und δ(1) = {(B, S)} konstruiert.

Fakt Für den wie oben zur Grammatik G konstruierten NFA A gilt L(G) = L(A). 314

Konstruktion: NFA → reguläre Grammatik gegeben: NFA A = (X , Q, δ, I, F ) Konstruktion: reguläre Grammatik G = (N, X , P, S) mit N = Q ∪ {S} mit S 6∈ Q [ {p → aq | (p, q) ∈ δ(a)} P = a∈X



[

{S → aq | ∃s ∈ I : (s, q) ∈ δ(a)}

a∈X



[

{p → a | ∃f ∈ F : (p, f ) ∈ δ(a)}

a∈X

Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 2)} und δ(b) = {(1, 1), (2, 1)} konstruierte Grammatik G = ({S, 0, 1, 2}, {a, b}, P, S) mit P = {0 → a1, 1 → b1, 1 → a2, 2 → b1, S → a1, 1 → a}

Fakt Für die wie oben aus dem NFA A konstruierte Grammatik G gilt L(G) = L(A) \ {ε}.

315

Was bisher geschah I

I

Modellierung durch Zustandsübergangssysteme, z.B. Münzschließfach, Fahrkartenautomat, lineares Solitaire NFA A = (X , Q, δ, I, F ) (endlicher Automat) I I

vollständig, Vervollständigung deterministisch (DFA), Potenzmengenkonstruktion

I

Akzeptanz von Wörtern durch NFA

I

von einem NFA A akzeptierte Sprache L(A) Verhalten, Semantik des NFA A

I

NFA-akzeptierbare Sprachen REC(NFA)

REC(NFA) ist abgeschlossen unter den Operationen ∪, ∩, , ◦, ∗ , R

316

Algorithmische Lösungen für reguläre Sprachen alle Sprachen in Eingaben endlich beschrieben, z.B. als NFA Wortproblem Eingabe: (L, w), Ausgabe: ja, falls w ∈ L, sonst nein (Suche nach mit w markiertem Pfad im Automatengraphen) Leerheit Eingabe: L, Ausgabe: ja, falls L = ∅, sonst nein (Erreichbarkeit akzeptierender Zustände in NFA für L) Vollständigkeit Eingabe: L, Ausgabe: ja, falls L = X ∗ (also L = ∅), sonst nein (Erreichbarkeit im Automaten für L) Endlichkeit Eingabe: L, Ausgabe: ja, falls L endlich, sonst nein (Suche nach akzeptierendem Weg mit Schleife) Disjunktheit Eingabe: L1 , L2 , Ausgabe: ja, falls L1 ∩ L2 = ∅, sonst nein Inklusion Eingabe: L1 , L2 , Ausgabe: ja, falls L1 ⊆ L2 , sonst nein ? (Test L1 ∩ L2 = ∅) Gleichheit Eingabe: L1 , L2 , Ausgabe: ja, falls L1 = L2 , sonst nein ? (Test (L1 ∩ L2 ) ∪ (L2 ∩ L1 ) = ∅)

317

Wiederholung: Chomsky-Hierarchie Eine Grammatik G = (N, T , P, S) ist vom Chomsky-Typ 0 immer, 1 falls für jede Regel (l → r ) ∈ P gilt: |l| ≤ |r | (monoton, kontextsensitiv) 2 falls Typ 1 und für jede Regel (l → r ) ∈ P gilt: l ∈ N (kontextfrei) 3 falls Typ 2 und für jede Regel (l → r ) ∈ P gilt: r ∈ (T ∪ TN) (regulär) Eine Sprache L ⊆ T ∗ heißt vom Typ i für i ∈ {0, . . . , 3}, falls L \ {ε} = L(G) für eine Grammatik G vom Typ i. Li bezeichnet die Menge aller Sprachen vom Typ i. Es gibt Sprachen, die durch keine Grammatik erzeugt werden, also keinen Chomsky-Typ haben. Warum? Für jedes endliche Alphabet X ist I

die Menge aller Grammatiken G = (N, X , P, S) abzählbar,

I

die Menge 2(X



)

aller Sprachen über X überabzählbar. 318

Charakterisierungen regulärer Sprachen Für jede Sprache L ⊆ X ∗ über einem endlichen Alphabet X sind die folgenden Aussagen äquivalent: I

L ist regulär,

I

es existiert ein regulärer Ausdruck E ∈ RegExp(X ) mit L = L(E),

I

L ∈ L3 (L hat Chomsky-Typ 3),

I

es existiert eine reguläre Grammatik G = (N, X , P, S) mit L \ {ε} = L(G),

I

es existiert ein NFA A = (X , QA , δA , IA , FA ) mit L = L(A),

I

es existiert ein DFA B = (X , QB , δB , IB , FB ) mit L = L(B).

Die Menge L3 aller regulären Sprachen ist abgeschlossen unter den Operationen ∪, ∩, , ◦, ∗ , R

319

Wiederholung: Kontextfreie Grammatiken Grammatik G = (N, T , P, S) vom Chomsky-Typ 2 Alle Regeln in P haben die Form l → r mit l ∈ N und r ∈ (N ∪ T )+ Grammatik G = (N, T , P, S) erzeugt die Sprache L(G) = {w ∈ T ∗ | S →∗P w}

I

Syntax regulärer (arithmetischer, logischer) Ausdrücke

I

Syntax von Programmiersprachen (zusammengesetzte Ausdrücke und Anweisungen)

320

Wiederholung: Beispiele kontextfreier Sprachen Dyck-Sprache: Menge aller korrekt geklammerten Ausdrücke, a für ( und b für ) erzeugt durch die Grammatik GD = ({S}, {a, b}, PD , S) mit PD = {S → ε, S → SS, S → aSb} (Chomsky-Typ 2 mit ε-Sonderregel) Palindrom-Sprache (über X = {a, b}) erzeugt durch Grammatik GP = ({S}, {a, b}, PP , S) mit PP = {S → ε, S → a, S → b, S → aSa, S → bSb} (Chomsky-Typ 2 mit ε-Sonderregel) Łukasiewicz-Sprache: Menge aller Preorder-Durchquerungen von Binärbäumen mit Markierungen der Blätter mit a und inneren Knoten mit b erzeugt durch Grammatik GL = ({S}, {a, b}, PL , S) mit PL = {S → b, S → aSS} Warum sind diese Sprachen nicht NFA-akzepzierbar? 321

Maschinenmodelle Definition (endliche Beschreibung) durch I interne Steuerung (z.B. endliche Menge von Zuständen) I externen Speicher mit speziellen Zugriffsmöglichkeiten I Typ des Speicherinhaltes (z.B. endliches Wort über endlichem Alphabet) I Zugriffsmethode (z.B. Lesen / Schreiben, einmal / wiederholt, feste Reihenfolge) Konfigurationen (Momentaufnahmen) und endlich beschriebene Menge zulässiger Übergänge zwischen Konfigurationen schrittweise Berechnung : Folge von Konfigurationen von einer Startkonfiguration über zulässige Konfigurationsübergänge Akzeptanz einer Eingabe durch akzeptierende Berechnung: endliche Konfigurationenfolge zu einer akzeptierenden Konfiguration

322

NFA als Maschinenmodell algorithmische Lösung des Wortproblems w ∈ L für reguläre Sprachen L (gegeben durch NFA A mit L = L(A)) NFA A = (X , Q, δ, I, F ) als abstrakte Maschine: externer Speicher Eingabeband aus einzelnen Speicherzellen (enthält ein Wort w ∈ X ∗ ) interner Speicher enthält einen Zustand aus Q Steuerelement Zugriff auf I Eingabeband (externer Speicher): Lesen Bewegung in jedem Schritt eine Zelle nach rechts I Zustand (interner Speicher): Lesen und Schreiben

323

Arbeitsweise des Maschinenmodells NFA Start Steuerelement (Lesekopf) in einem Startzustand über der ersten Zelle des Eingabewortes Schritt

I I

I

NFA liest Zeichen in der Zelle unter dem Lesekopf Zustandsübergang im Steuerelement (entsprechend Übergangsrelation und gelesenem Symbol) Lesekopf bewegt sich zur rechten Nachbarzelle

Ende Lesekopf auf Zelle ohne Eingabesymbol NFA akzeptiert das Eingabewort, falls akzeptierender Zustand im internen Speicher

324

Konfigurationen eines NFA NFA A = (X , Q, δ, I, F ) Konfiguration (q, w) mit aktuellem Zustand q ∈ Q und ungelesenem Teil des Eingabewortes w ∈ X ∗ Startkonfiguration (s, u) mit Startzustand s ∈ I und Eingabewort u ∈ X ∗ Akzeptierende Konfiguration (f , ε) mit akzeptierendem Zustand f ∈ F Folgekonfiguration zur Konfiguration (p, aw) mit a ∈ X und w ∈ X ∗ : Konfiguration (q, w) mit (p, q) ∈ δ(a) Notation: (p, aw) ` (q, w) Berechnung für Eingabewort w ∈ X ∗ in A: Folge ((q0 , u0 ), . . . , (qn , un )) von Konfigurationen, wobei für alle i ∈ {0, . . . , n − 1} gilt (qi , ui ) ` (qi+1 , ui+1 ) akzeptierende Berechnung für Eingabewort w ∈ X ∗ in A: Berechnung für w mit Endkonfiguration (qn , vn ) = (f , ε) (analog zu akzeptierendem Pfad für w in A) 325

Beispiel A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0), (1, 2)} und δ(b) = {(0, 1), (2, 2)} b

a b

0

1

a

2

Eingabewort aabab Startkonfiguration (0, aabab) Endkonfiguration (2, ε) akzeptierende Berechnung für Eingabewort aabab in A: (0, aabab) ` (0, abab) ` (0, bab) ` (1, ab) ` (2, b) ` (2, ε) Man bemerke die Analogie zum akzeptierenden Pfad a

a

b

a

b

0→0→0→1→2→2 für aabab in A

326

Maschinenmodelle und Algorithmen Algorithmus: in Schritte geordnete Arbeitsvorschrift I

endliche Beschreibung

I

eines schrittweise ausgeführten Verfahrens

I

in einer formalen Beschreibungssprache.

Arbeitsweise abstrakter Maschinen: I

endliche Beschreibung in einer formalen Sprache (Übergangsrelation, Programm)

I

schrittweise Bearbeitung

I

(Ergebnis nach endlich vielen Schritten)

Jede abstrakte Maschine führt einen Algorithmus aus. (z.B. zur Lösung des Wortproblems (L, w) für reguläre Sprachen L) 327

Parameter abstrakter Maschinenmodelle Verschiedene Maschinenmodelle unterscheiden sich in I

Art (Datentyp) und Kapazität des internen und externen Speichers

I

Art des Zugriffs auf internen und externen Speicher

I

Reihenfolge der Zugriffe (einmalig, wiederholt)

I

Determinismus

Maschinen definieren (akzeptieren) Sprachen: Menge aller Eingaben mit akzeptierenden Berechnungen Maschinenmodelle definieren Sprachklassen: Menge aller durch eine solche Maschine definierten Sprachen

328

Kellerautomaten – Motivation L = {wcw R | w ∈ {a, b}∗ } ist kontextfrei, aber nicht regulär (NFA-akzeptierbar). gesucht: (einfaches) Maschinenmodell, welches die Sprache L akzeptiert Maschine benötigt Speicher für Folge von Symbolen, um auf diese in umgekehrter Reihenfolge zugreifen zu können passender ADT für den internen Speicher mit dieser Eigenschaft: Stack (Keller) mit seinen Operationen zum I

Einfügen (push)

I

Lesen des „oberen “ Symbols (top)

I

Entfernen des „oberen “ Symbols (pop)

Kellerautomat (pushdown automaton, PDA): Erweiterung von NFA (mit ε-Übergängen) um internen Speicher (Keller, Stack) 329

Kellerautomaten – Definition nichtdeterministischer Kellerautomat (PDA) A = (X , Q, Γ, δ, q0 , F , ⊥) mit X Alphabet (endlich, nichtleer) Q Menge von Zuständen (endlich, nichtleer) Γ Kelleralphabet (endlich, nichtleer) q0 ∈ Q Startzustand F ⊆ Q Menge der akzeptierenden Zustände δ : (X ∪ {ε}) → (Q × Q × Γ × Γ∗ ) Übergangsrelationen mit Änderung des Kellerinhaltes ⊥ ∈ Γ Kellerboden-Symbol

330

PDA – Beispiel PDA A = ({a, b, c}, {q0 , p, q}, {⊥, A, B}, δ, q0 , {q}, ⊥) mit δ(a) = {(q0 , q0 , K , AK ), (p, p, A, ε)} mit K ∈ {⊥, A, B} δ(b) = {(q0 , q0 , K , BK ), (p, p, B, ε)} mit K ∈ {⊥, A, B} δ(c) = {(q0 , p, K , K )} mit K ∈ {⊥, A, B} δ(ε) = {(p, q, ⊥, ⊥)} a: b:

K | AK K | BK

q0

a: b:

c:K |K

A|ε B|ε

p

ε:⊥|⊥

q

mit K ∈ {⊥, A, B}

331

PDA – Konfigurationen Konfiguration (q, w, k ) ∈ Q × X ∗ × Γ∗ mit I

Zustand q ∈ Q

I

(noch zu lesendes) Eingabewort w ∈ X ∗

I

Kellerinhalt k ∈ Γ∗

I

Startkonfigurationen (q0 , w, ⊥) mit w ∈ X ∗ beliebig

I

Übergang zwischen Konfigurationen: (p, aw, Gk ) ` (q, w, k 0 k ) mit (p, q, G, k 0 ) ∈ δ(a) für k ∈ Γ∗ und (p, w, Gk ) ` (q, w, k 0 k ) mit (p, q, G, k 0 ) ∈ δ(ε) für k ∈ Γ∗

I

akzeptierende Konfigurationen (q, ε, k ) mit q ∈ F , k ∈ Γ∗

akzeptierende Berechnung (Konfigurationenfolge) für w in A: Folge (q0 , w0 , k0 ) ` · · · ` (qn , wn , kn ) von Konfigurationen mit 1. (q0 , w0 , k0 ) ist eine Startkonfiguration mit w0 = w. 2. (qn , wn , kn ) ist eine akzeptierende Konfiguration mit wn = ε. 3. Für jedes i ∈ {1, . . . , n} gilt (qi−1 , wi−1 , ki−1 ) ` (qi , wi , ki ). 332

Von PDA akzeptierte Sprachen PDA A = (X , Q, Γ, δ, q0 , F , ⊥) akzeptiert das Wort w ∈ X ∗ gdw. eine akzeptierende Berechnung (Konfigurationenfolge) mit der Startkonfiguration (q0 , w, ⊥) existiert. PDA A = (X , Q, Γ, δ, q0 , F , ⊥) akzeptiert die Sprache L(A) = {w ∈ X ∗ | A akzeptiert w}

Sprache L heißt PDA-akzeptierbar gdw. ein PDA A mit L = L(A) existiert. PDA A und B heißen äquivalent gdw. L(A) = L(B)

333

PDA-Akzeptanz – Beispiel PDA A = ({a, b}, {q0 , p, q}, {⊥, x}, δ, q0 , {q}, ⊥) mit δ(a) = {(q0 , q0 , K , xK )} für K ∈ {x, ⊥} δ(b) = {(p, p, x, ε)} δ(ε) = {(q0 , p, K , K ), (p, q, ⊥, ⊥)} mit K ∈ {x, ⊥} a : K | xK

q0

b:x |ε ε:K |K

p

ε:⊥|⊥

q

für K ∈ {x, ⊥} A akzeptiert das Wort aabb über die Konfigurationenfolge (q0 , aabb, ⊥) ` (q0 , abb, x⊥) ` (q0 , bb, xx⊥) ` (p, bb, xx⊥) ` (p, b, x⊥) ` (p, ε, ⊥) ` (q, ε, ⊥) und ε über die Konfigurationenfolge (q0 , ε, ⊥) ` (p, ε, ⊥) ` (q, ε, ⊥) aber nicht abb, aba Es gilt L(A) = {an bn | n ∈ } Damit ist die Sprache {an bn | n ∈ } PDA-akzeptierbar.

N

N

334

Deterministische PDA PDA A = (X , Q, Γ, δ, q0 , F , ⊥) heißt deterministisch (DPDA) gdw. ∀a ∈ X ∀q ∈ Q ∀K ∈ Γ : |{(p, B) | (q, p, K , B) ∈ δ(a) ∪ δ(ε)}| ≤ 1 Sprache L heißt deterministisch kontextfrei gdw. ein deterministischer PDA A mit L = L(A) existiert. Beispiele:

N} ist deterministisch kontextfrei,

I

L = {an bn | n ∈

I

L0 = {wcw R ∈ {a, b}∗ | w ∈ {a, b}∗ } ist deterministisch kontextfrei,

I

L00 = {waw R ∈ {a, b}∗ | w ∈ {a, b}∗ } nicht.

Die Menge aller durch deterministische PDA akzeptierbaren Sprachen ist eine echte Teilmenge der Menge aller durch PDA akzeptierbaren Sprachen. 335

Was bisher geschah abstrakte Maschinenmodelle: I

Definition: I I I

Steuerelement externer Speicher (Ein- und Ausgabe) interner Speicher

I

Konfiguration (Start-, akzeptierend, Übergänge)

I

Berechnung

I

akzeptierte Sprache einer Maschine

I

akzeptierte Sprachklasse eines Maschinenmodells

PDA (Kellerautomat) A = (X , Q, Γ, δ, q0 , F , ⊥) I

nichtdeterministisch (PDA)

I

deterministisch (DPDA)

Menge aller durch DPDA akzeptierbaren Sprachen ist eine echte Teilmenge der Menge aller durch PDA akzeptierbaren Sprachen. Beispiel: L = {waw R | w ∈ {a, b}∗ } ∈ REC(PDA) \ REC(DPDA) 336

Schnitt PDA-akzeptierbarer mit regulären Sprachen Satz I

Sind L eine PDA-akzeptierbare und L0 eine reguläre Sprache, dann ist die Sprache L ∩ L0 PDA-akzeptierbar.

I

Sind L eine durch einen DPDA-akzeptierbare und L0 eine reguläre Sprache, dann ist die Sprache L ∩ L0 durch einen DPDA akzeptierbar.

gegeben: PDA A = (X , QA , Γ, δA , iA , FA , ⊥) mit L = L(A) DFA B = (X , QB , δB , {iB }, FB ) mit L0 = L(B)

N

Beispiel: Dyck-Sprache ∩ a∗ b∗ = {an bn | n ∈ } Produktkonstruktion: PDA C = (X , QA × QB , Γ, δ, (iA , iB ), FA × Fb , ⊥) mit   (pA , qA , G, k ) ∈ δA (a) ∀a ∈ X : δ(a) = ((pA , pB ), (qA , qB ), G, k ) | ∧(pB , qB ) ∈ δB (a) δ(ε)

=

{((pA , pB ), (qA , pB ), G, k ) | (pA , qA , G, k ) ∈ δA (ε)}

Für den oben konstruierten PDA C gilt L(C) = L(A) ∩ L(B). 337

Spezialfall: Schnitt regulärer Sprachen schon bekannt: REC(NFA) ist unter ∩ abgeschlossen.

gegeben: DFA A = (X , QA , δA , {iA }, FA ) DFA B = (X , QB , δB , {iB }, FB ) Beispiel: (ab)∗ ∩ a∗ b∗ a∗ Produktkonstruktion: DFA C = (X , QA × QB , δ, {(iA , iB )}, FA × Fb ) mit   (pA , qA ) ∈ δA (a) ∀a ∈ X : δ(a) = ((pA , pB ), (qA , qB )) | ∧(pB , qB ) ∈ δB (a) Für den oben konstruierten DFA C gilt L(C) = L(A) ∩ L(B). 338

PDA – Akzeptanz durch leeren Keller alternative Akzeptanzbedingung akzeptierende Konfigurationen: (q, ε, ε) mit q ∈ Q beliebig Angabe akzeptierender Zustände überflüssig Beispiel: L = {an bn | n ∈ } ist PDA-akzeptierbar durch PDA A = ({a, b}, {q0 , p}, {⊥, x}, δ, q0 , ⊥) mit δ(a) = {(q0 , q0 , K , xK )} für K ∈ Γ δ(b) = {(p, p, x, ε)} δ(ε) = {(q0 , p, K , K ), (q0 , p, ⊥, ε), (p, p, ⊥, ε)} für K ∈ {x, ⊥}

N

b: ε:

a : K | xK

q0

ε: ε:

K |K ⊥|ε

x |ε ⊥|ε

p

für K ∈ {x, ⊥} 339

Akzeptanzbedingungen für PDA zwei Möglichkeiten zur Definition akzeptierender Konfigurationen: 1. Akzeptanz durch akzeptierenden Zustand (analog NFA): (q, ε, k ) mit q ∈ F und k ∈ Γ∗ beliebig 2. Akzeptanz durch leeren Keller: (q, ε, ε) mit q ∈ Q beliebig Beispiel: Die Sprache L = {an bn | n ∈ durch akzeptierende Zustände akzeptiert durch den PDA A = ({a, b}, {q0 , p, q}, {⊥, x}, δ, q0 , {q}, ⊥) mit a : K | xK

q0

b:x |ε ε:K |K

p

ε:⊥|⊥

q

N} wird mit leerem Keller akzeptiert durch den PDA B = ({a, b}, {q0 , p, q}, {⊥, x}, δ, q0 , ⊥) mit a : K | xK ε: ε: q0

b: ε: K |K ⊥|ε

x |ε ⊥|ε

p

für K ∈ {x, ⊥} 340

Äquivalenz beider Akzeptanzbedingungen Satz 1. Zu jedem PDA mit akzeptierenden Zuständen existiert ein äquivalenter PDA, der mit leerem Keller akzeptiert. 2. Zu jedem PDA, der mit leerem Keller akzeptiert, existiert ein äquivalenter PDA mit akzeptierenden Zuständen. Idee (PDA-Transformationen): 1. PDA mit akzeptierenden Zuständen → PDA mit leerem Keller: neues Kellerboden-Symbol und neuen Endzustand hinzufügen, ursprünglicher Automat arbeitet „darüber“, nach Übergang in einen akzeptierenden Zustand ε-Übergänge in diesem akzeptierenden Zustand zum Entfernen aller restlichen Kellersymbole 2. PDA mit leerem Keller → PDA mit akzeptierenden Zuständen: neuen (einzigen) akzeptierenden Zustand hinzufügen, für jeden Übergang in eine Konfiguration mit leerem Keller einen Übergang in diesen akzeptierenden Zustand hinzufügen. 341

Kontextfreie Grammatiken und PDA schon bekannt: L3 = REC(NFA) Die Menge aller regulären (Chomsky-Typ 3) Sprachen ist genau die Menge aller NFA-akzeptierbaren Sprachen. Nachweis durch Übersetzungen I

reguläre Grammatik G → NFA A mit L(A) = L(G)

I

NFA A → reguläre Grammatik G mit L(A) = L(G)

Satz L2 = REC(PDA) Die Menge aller kontextfreien (Chomsky-Typ 2) Sprachen ist genau die Menge aller PDA-akzeptierbaren Sprachen. 342

Kontextfreie Grammatik → PDA Lemma Zu jeder kontextfreien Grammatik G existiert ein PDA A mit L(A) = L(G). Beispiel: Łukasiewicz-Sprache erzeugt durch die Grammatik G = ({S}, {a, b}, P, S) mit P = {S → b, S → aSS} gegeben: kontextfreie Grammatik G = (N, X , P, S) Idee: Tiefensuche im Ableitungsbaum (Linksableitung) PDA A = (X , {q}, N ∪ X , δ, q, S) mit δ(ε) ∀a ∈ X : δ(a)

= {(q, q, B, w) | B → w ∈ P} = {(q, q, a, ε)}

akzeptiert mit leerem Keller Für den so konstruierten PDA A gilt L(A) = L(G). Nachweis: Eindeutige Zuordnung zwischen Linksableitungen S → u 1 A1 v 1 → u 1 u 2 A2 v 2 → · · · → u 1 . . . u m−1 Am−1 v m−1 → w = u 1 . . . u m und akzeptierenden Berechnungen für w = u 1 . . . u m (q, w, S) ` (q, u 1 . . . u m , u 1 A1 v 1 ) ` · · · ` (q, u 2 . . . u m , A1 v 1 ) ` (q, u 2 . . . u m , u 2 A2 v 2 ) ` · · · ` (q, u m , u m ) ` · · · ` (q, ε, ε) 343

PDA → kontextfreie Grammatik Beispiel: PDA A = ({a, b}, {q}, {X , ⊥}, δ, q, ⊥} (LK-Akzeptanz) mit δ(a) = {(q, q, X , XX )(q, q, ⊥, X ⊥)}, δ(b) = {(q, q, X , ε)} und δ(ε) = {(q, q, ⊥, ε)}

Lemma Zu jedem PDA A existiert eine kontextfreie Grammatik G mit L(A) = L(G). Nacheinanderausführung der Konstruktionen PDA → kontextfreie Grammatik → PDA führt zur folgenden Aussage:

Folgerung Zu jedem PDA existiert ein äquivalenter PDA mit einem Zustand, der mit leerem Keller akzeptiert. 344

PDA → kontextfreie Grammatik (Vorbereitung) Fakt Jeder PDA A = (X , Q, Γ, δ, q0 , ⊥) (LK-Akzeptanz) ist äquivalent zu einem PDA B = (X , Q 0 , Γ0 , δ 0 , q00 , ⊥0 ) (LK-Akzeptanz) mit der Eigenschaft ∀a ∈ X ∪ {ε} ∀(p, q, G, w) ∈ δ 0 (a) : |w| ≤ 2 Konstruktion: für jedes a ∈ x ∪ {ε} Ersetzung jedes Überganges (p, q, G, w) ∈ δ(a) für w = w1 . . . wn mit n > 2 durch die Regeln (p, p1 , G, wn−1 wn ) ∈ δ(a) (p1 , p2 , wn−1 , wn−2 wn−1 ) ∈ δ(ε) .. . (pn−1 , q, w2 , w1 w2 ) ∈ δ(ε) mit neu hinzugefügten Zuständen p1 , . . . , pn−1 345

PDA → kontextfreie Grammatik (Idee) gegeben: PDA A = (X , Q, Γ, δ, q0 , ⊥) (LK-Akzeptanz) mit ∀a ∈ X ∪ {ε} ∀(p, q, G, w) ∈ δ(a) : |w| ≤ 2 Ziel: Konstruktion einer kontextfreien Grammatik G = (N, X , P, S), so dass die Linksableitungen in G genau den akzeptierenden Berechnungen in A entsprechen. akzeptierende Berechnung für w in A: (q0 , w, ⊥) ` · · · ` (q, ε, ε) mögliche Konfigurationsübergänge in A: I

oberes Kellersymbol löschen (p, q, A, ε) ∈ δ(a) für a ∈ X ∪ {ε} entspricht Grammatikregel (p, A, q) → a

I

oberes Kellersymbol durch genau ein neues ersetzen (p, q, A, B) ∈ δ(a) für a ∈ x ∪ {ε} entspricht Grammatikregel (p, A, q 0 ) → a(q, B, q 0 ) für alle q 0 ∈ Q

I

oberes Kellersymbol durch genau zwei neue ersetzen (p, q, A, BC) ∈ δ(a) für a ∈ x ∪ {ε} entspricht Grammatikregel (p, A, q 0 ) → a(q, B, r )(r , C, q 0 ) für alle q0, r ∈ Q 346

PDA → kontextfreie Grammatik (Konstruktion) gegeben: PDA A = (X , Q, Γ, δ, q0 , ⊥) (LK-Akzeptanz) mit ∀a ∈ X ∪ {ε} ∀(p, q, G, w) ∈ δ(a) : |w| ≤ 2 Konstruktion kontextfreier Grammatik G = (N, X , P, S) mit

N =

(Q × Γ × Q) ∪ {S}

P = {S → (q0 , ⊥, q) | q ∈ Q} ∪ {(p, B, q) → a | (p, q, B, ε) ∈ δ(a)} ∪ {(p, B, q) → a(p0 , C, q) | (p, p0 , B, C) ∈ δ(a) ∧ q ∈ Q} ∪ {(p, B, q) → a(p0 , C, q)(q, D, q 0 ) | (p, p0 , B, CD) ∈ δ(a) ∧ q, q 0 ∈ Q}

Für die so konstruierte Grammatik G gilt L(A) = L(G). 347

PDA → kontextfreie Grammatik (Beispiel) PDA A = ({a, b}, {q}, {X , ⊥}, δ, q, ⊥} (LK-Akzeptanz) mit δ(a) = {(q, q, X , XX )(q, q, ⊥, X ⊥)}, δ(b) = {(q, q, X , ε)}, δ(ε) = {(q, q, ⊥, ε)} G = (N, X , P, S) zu A mit N = {S, (q, ⊥, q), (q, X , q)}  S → (q, ⊥, q)      (q, X , q) → b (q, ⊥, q) → ε P =   (q, X , q) → a(q, X , q)(q, X , q)    (q, ⊥, q) → a(q, X , q)(q, ⊥, q)

wegen (q, q, X , ε) ∈ δ(b) wegen (q, q, ⊥, ε) ∈ δ(ε) wegen (q, q, X , XX ) ∈ δ(a) wegen (q, q, ⊥, X ⊥) ∈ δ(a)

348

Abschlusseigenschaften von CF Sind L1 und L2 kontextfreie Sprachen, dann sind auch I

L1 ∪ L2

I

L1 ◦ L2

I

L∗1

I

L1 ∩ L0 für jede reguläre Sprache L0

kontextfreie Sprachen. Die Menge aller kontextfreien Sprachen ist nicht abgeschlossen unter I

Schnitt Beispiel: L1 = {ai bi c k | i, k > 0} ∈ CF und L2 = {ai bk c k | i, k > 0} ∈ CF, aber L1 ∩ L2 = {ai bi c i | i > 0} 6∈ CF nicht.

I

Komplement (Warum ?) 349

Algorithmische Lösungen für kontextfreie Sprachen algorithmisch entscheidbar sind Wortproblem: Eingabe (L, w) (durch PDA A mit L = L(A)) Ausgabe: ja, falls w ∈ L, sonst nein (Akzeptanz durch A) I Leerheit: Eingabe L (durch CFG G mit L = L(G)), Ausgabe: ja, falls L(G) = ∅, sonst nein (ja, falls Startsymbol der Grammatik kein Terminalwort erzeugt) I Endlichkeit: Eingabe L, Ausgabe: ja, falls L endlich, sonst nein (Pumping-Lemma, hier nicht gezeigt) I

nicht algorithmisch entscheidbar sind Inklusion: Eingabe L1 , L2 , Ausgabe: ja, falls L1 ⊆ L2 , sonst nein I Gleichheit: Eingabe L1 , L2 , Ausgabe: ja, falls L1 = L2 , sonst nein I Disjunktheit: Eingabe L1 , L2 , Ausgabe: ja, falls L1 ∩ L2 = ∅, sonst nein I Kontextfreiheit des Schnittes: Eingabe L1 , L2 , Ausgabe: ja, falls L1 ∩ L2 kontextfrei, sonst nein I

350

Was bisher geschah Reguläre Sprachen (REG): erzeugt durch reguläre Grammatik (Chomsky-Typ 3), akzeptiert von NFA, DFA abgeschlossen unter ∪, ∩, , ◦, ∗ , R Anwendungen z.B. Suchen von Zeichenketten in Texten, Darstellung von Bezeichnern, Konstanten nicht-reguläre Sprachen , z.B. {an bn | n ∈ }, Dyck-Sprachen, 2 {w ∈ {a, b}∗ | w = w R }, {an | n ∈ }

N

N

Kontextfreie Sprachen (CF): erzeugt durch kontextfreie Grammatik (Chomsky-Typ 2) akzeptiert von PDA abgeschlossen unter ∪, ◦, ∗ , R Anwendungen z.B. Syntax regulärer und arithmetischer Ausdrücke, Formeln, Programmier- und Beschreibungssprachen, (natürlichen Sprachen), nicht-kontextfreie Sprachen , z.B. {an bn c n | n ∈ }, 2 {ww | w ∈ {a, b}∗ }, {an | n ∈ }

N

N

351

Wiederholung: Maschinenmodelle Definition (endliche Beschreibung) durch I interne Steuerung (z.B. endliche Menge von Zuständen) I externen und internen Speicher mit speziellen Zugriffsmöglichkeiten I Typ des Speicherinhaltes (z.B. endliches Wort über endlichem Alphabet) I Zugriffsmethode (z.B. Lesen / Schreiben, einmal / wiederholt, feste Reihenfolge) Konfigurationen (Momentaufnahmen) und endliche Menge zulässiger lokaler Übergänge zwischen Konfigurationen schrittweise Berechnung : Folge von Konfigurationen von einer Startkonfiguration über zulässige Konfigurationsübergänge Akzeptanz einer Eingabe durch akzeptierende Berechnung: endliche Konfigurationenfolge zu einer akzeptierenden Konfiguration

352

Unendliche Konfigurationsfolgen Jede Instanz eines Maschinenmodells (gegebener NFA, DFA, PDA, DPDA, TM) definiert ein Zustandsübergangssystem (gerichteter Graph): Knoten: Konfigurationen (Zustände) darunter Start- und akzeptierende Konfigurationen Kanten: zulässige Konfigurationsübergänge Beispiel: PDA B = ({a}, {0, 1}, {⊥, X }, δB , 0, {0}, ⊥) mit δA (a) = {(0, 1, ⊥, ⊥), (0, 1, X , X )}, δA (ε) = {(0, 1, ⊥, X ⊥), (1, 0, X , ε)} Beobachtung: In PDA mit ε-Übergängen können unendliche Konfigurationsfolgen existieren. Aber: Akzeptierende Konfigurationsfolgen für endliche Wörter sind immer endlich. Deshalb sind unendliche Konfigurationsfolgen für die Definition von Sprachen und Sprachklassen endlicher Wörter irrelevant. 353

Wiederholung – Sprachen vom Chomsky-Typ 0 Regeln der Form l → r mit l ∈ (N ∪ T )+ und r ∈ (N ∪ T )∗ Beispiel: G = ({A, B, C}, {a, b, c}, P, A) mit   A → aABC         A → aBC          CB → BC  aB → ab P=      bB → bb          bC → bc     cC → cc (sogar Chomsky-Typ 1) definiert die Sprache L(G) = {an bn c n | n ∈

N \ {0}} 354

Turing-Maschine – Idee Ziel: Maschinenmodell für Sprachen vom Chomsky-Typ 0 (und 1) Komponenten des Maschinenmodells: I

Steuereinheit: Lese/Schreib-Kopf

I

interner Speicher: 1. endliche Menge von Zuständen (Lesen / Schreiben) 2. beidseitig unendliches Arbeitsband aus Zellen I

I

I

Typ des Speicherinhaltes: endliches Wort über endlichem Alphabet (Arbeitsalphabet) Zugriffsmethode: Lesen / Schreiben Bewegung des Lese/Schreib-Kopfes auf ein Nachbarfeld

externer Speicher: 3. beidseitig unendliches Eingabeband aus Zellen I

I

Typ des Speicherinhaltes: endliches Wort über endlichem Alphabet (Eingabealphabet) Zugriffsmethode: Lesen Bewegung des Lese-Kopfes auf ein Nachbarfeld

übliche Vereinfachung der Struktur: Zusammenfassen der Bänder im internen und externen Speicher zu einem Eingabe- und Arbeitsband (2,3) mit Lese/Schreib-Zugriff 355

Turing-Maschine – Definition Turing-Maschine (TM) M = (X , Q, Γ, δ, q0 , F , ) mit X endliches Eingabealphabet Q endliche Menge von Zuständen Γ ⊃ X endliches Arbeitsalphabet δ ⊆ (Γ × Q × Γ × Q × {L, R, N}) Übergangsrelation q0 Startzustand F akzeptierende Zustände  ∈ Γ \ X Leere-Zelle-Symbol TM M heißt deterministisch gdw. ∀a ∈ Γ∀q ∈ Q : | {(a, q, b, p, x) | p ∈ Q, b ∈ Γ, x ∈ {L, R, N}}∩δ| ≤ 1

356

Beispiele für Turing-Maschinen I

TM M1 = ({a, b}, {q0 , f }, {a, b, }, δ, q0 , {f }, ) mit δ = {(a, q0 , a, q0 , L), (b, q0 , b, q0 , L), (, q0 , , f , R)}

I

TM M2 = ({a, b}, {q0 , qa , qb , f }, {a, b, }, δ, q0 , {f }, ) mit      (a, q0 , , qa , R), (b, q0 , , qb , R),    (a, qa , a, qa , R), (b, qa , b, qa , R), δ= (a, qb , a, qb , R), (b, qb , b, qb , R),       (, q0 , , f , R), (, qa , a, f , R), (, qb , b, f , R)

I

TM M3 = ({1}, {q0 , q1 , q2 , q3 , q4 , f }, {1, x, }, δ, q0 , {f }, ) mit δ

= {(1, q0 , 1, q1 , R), (1, q1 , x, q2 , R), (1, q2 , 1, q3 , R)} ∪ {(1, q3 , x, q2 , R), (1, q4 , 1, q4 , L), (x, q1 , x, q1 , R)} ∪ {(x, q2 , x, q2 , R), (x, q3 , x, q3 , R), (x, q4 , x, q4 , L)} ∪ {(, q1 , , f , L), (, q2 , , q4 , L), (, q4 , , q0 , R)} 357

Konfigurationen einer TM TM M = (X , Q, Γ, δ, q0 , F , ) Konfiguration (u, q, v ) ∈ (Γ∗ × q × Γ∗ ) bedeutet: I I I

aktueller Bandinhalt: w = uv aktueller Zustand der TM: q Schreib-/Lesekopf der TM zeigt auf erstes Symbol von v (Leere-Zelle-Symbol, falls v = ε)

Startkonfigurationen (, q0 , w) mit w ∈ X ∗ akzeptierende Konfigurationen (u, q, v ) mit q ∈ F Konfigurationsübergänge von (ua, p, bv ): für (b, p, c, q, R) ∈ δ : (ua, p, bv ) ` (uac, q, v ) für (b, p, c, q, L) ∈ δ : (ua, p, bv ) ` (u, q, acv ) für (b, p, c, q, N) ∈ δ : (ua, p, bv ) ` (ua, q, cv )

358

Akzeptanz durch TM TM M = (X , Q, Γ, δ, q0 , F , ) M akzeptiert das Wort w ∈ X ∗ gdw. eine Folge k0 , . . . , kn von Konfigurationen ki ∈ Γ∗ × Q × Γ∗ exisiert, so dass gilt: 1. k0 = (, q0 , w) ist die Startkonfiguration mit Eingabe w 2. kn ∈ Γ∗ × F × Γ∗ ist eine akzeptierende Konfiguration 3. für jedes i ∈ {1, . . . , n} ist ki−1 ` ki ein zulässiger Konfigurationsübergang Beispiele: n L(M1 ) = L(M2 ) = {a, b}∗ , L(M3 ) = {1(2 ) | n ∈

N}

M akzeptiert die Sprache L(M) = {w ∈ X ∗ | M akzeptiert w} L ⊆ X ∗ heißt Turing-akzeptierbar gdw. eine TM M mit L = L(M) existiert. 359

Was bisher geschah Maschinenmodelle: endliche Automaten: alle regulären Sprachen (Chomsky-Typ 3) durch nichtdeterministisches (NFA) und deterministisches (DFA) Maschinenmodell akzeptierbar. (Transformation von NFA in äquivalente DFA möglich.) REC(NFA) = REG abgeschlossen unter ∪, ∩, , ◦, ∗ , R PDA : alle kontextfreien Sprachen (Chomsky-Typ 2) durch nichtdeterministisches Maschinenmodell (PDA) akzeptierbar, aber nicht durch deterministisches Maschinenmodell (keine Transformation möglich) REC(PDA) = CF abgeschlossen unter ∪, ◦, ∗ , R und Schnitt mit REG, aber nicht unter ∩, TM : REC(TM) entspricht Chomsky-Typ ? akzeptieren deterministisches und nichtdeterministisches Modell dieselbe Sprachklasse ? abgeschlossen unter ? 360

NFA (X , Q, δ, I, F ) I

I

Eingabeband (externer Speicher) enthält w ∈ X ∗ Zugriff durch Lesekopf auf einer Zelle des Eingabebandes, Bewegung auf rechte Nachbarzelle interner Speicher: q ∈ Q, Zugriff Lesen / Schreiben

PDA (X , Q, Γ, δ, q0 , F , ⊥) I

I

Eingabeband (externer Speicher) enthält w ∈ X ∗ Zugriff durch Lesekopf auf einer Zelle des Eingabebandes keine Bewegung oder Bewegung auf rechte Nachbarzelle interner Speicher: I I

q ∈ Q, Zugriff Lesen / Schreiben Stack k ∈ Γ∗ (Zugriff mit push, pop, top)

TM (X , Q, Γ, δ, q0 , F , ) I

I

(Eingabe- und Arbeits-)Band (externer und interner Speicher) enthält zu Beginn w ∈ X ∗ Zugriff durch Lese/Schreibkopf auf eine Zelle keine, Rechts- oder Links-Bewegung auf Nachbarzelle interner Speicher: q ∈ Q, Zugriff Lesen / Schreiben 361

Turing-Maschine – Beispiel TM M = ({a, b, c}, {q0 , q1 , q2 , q3 , f }, {a, b, x, }, δ, q0 , {f }, ) mit   (, q0 , , f , N),        (, q3 , , q0 , R),          (a, q , x, q , R),   0 1       (a, q , a, q , R),   1 1       (a, q , a, q , L),   3 3       (b, q1 , x, q2 , R),   (b, q2 , b, q2 , R), δ=    (b, q3 , b, q3 , L),          (c, q , x, q , L),   2 3       (x, q , x, q , R),   0 0       (x, q , x, q , R),   1 1       (x, q , x, q , R),   2 2     (x, q3 , x, q3 , L) akzeptiert L(M) = {an bn c n | n ∈

N} 362

Berechnung einer Turing-Maschine Möglichkeiten für Berechnungen einer TM M für ein Eingabewort w: 1. Berechnung endet in einer akzeptierenden Konfiguration (u, p, v ) (d.h. p ∈ F ), 2. Berechnung endet in einer nicht-akzeptierenden Konfiguration (u, p, v ) (d.h. p 6∈ F ), 3. Berechnung endet nicht (unendliche Berechnung). Im Fall 1 akzeptiert M das Eingabewort w, in Fall 2 und 3 nicht. Zu jeder TM M existiert eine TM M 0 , so dass L(M) = L(M 0 ) und in M 0 jede endliche nicht-fortsetzbare Berechnung in einer akzeptierenden Konfiguration endet. (d.h. Fall 2 kommt in M 0 nicht vor)

363

Alternative Akzeptanzbedingung für TM TM M = (X , Q, Γ, δ, q0 , F , ) hält in einer Konfiguration (u, q, v ) ∈ Γ∗ × Q × Γ∗ gdw. aus (u, q, v ) kein Konfigurationsübergang in M möglich ist. Zu jeder TM M existiert eine TM M 0 mit L(M) = L(M 0 ) ohne Nachfolgekonfigurationen aus akzeptierenden Konfigurationen. (evtl. neuen akzeptierenden Zustand hinzufügen)

Fakt Zu jeder TM M existiert eine TM M 0 mit L(M) = L(M 0 ), die nur in akzeptierenden Konfigurationen hält. (Schleifen in nicht-akzeptierenden Zuständen hinzufügen)

Fakt Zu jeder TM M existiert eine TM M 0 , so dass für jedes w ∈ M akzeptiert w gdw. M 0 bei Eingabe von w hält.

X∗ :

Akzeptierende Zustände sind bei Akzeptanz durch Halt irrelevant (analog PDA-Akzeptanz durch leeren Keller). 364

TM für Verschiebung TM M = ({0, •, 1}, {q0 , q1 , q2 , q3 , q4 , q5 , f }, {0, 1, •, }, δ, q0 , {f }, ) mit   (, q1 , , q4 , L),        (0, q0 , 0, q0 , R),          (0, q , •, q , L),   1 2       (1, q , 1, q , R),   0 0     (1, q1 , •, q3 , L), δ=   (•, q0 , •, q1 , R),         (•, q , 0, q , R), 5 2         (•, q , 1, q , R), 5 3        (•, q4 , , f , N),      (•, q5 , •, q1 , R) akzeptiert jedes Eingabewort aus (0 + 1)∗ • (0 + 1)∗ , verschiebt dabei den Teil nach dem • um eine Zelle nach links 365

Operationen auf TM-akzeptierbaren Sprachen gegeben: TM A, TM B (Akzeptanz durch Halt) gesucht: TM C mit

∩: L(C) = L(A) ∩ L(B) ∪: L(C) = L(A) ∪ L(B) ◦: L(C) = L(A) ◦ L(B) ∗:

L(C) = L(A)∗

R:

L(C) = L(A)R

Skizzen zu Konstruktionen der TM C (Tafel) mit Turing-Maschinen für „Hilfsarbeiten“, z.B. Verschieben, Kopieren, Zerlegen von Wörtern, Steuerung der abwechselnden Ausführung mehrerer TM 366

Was bisher geschah Turing-Maschine (X , Q, Γ, δ, q0 , F , ) I

akzeptiert Sprache L ⊆ X ∗ (durch akzeptierende Zustände oder Halt)

I

ändert i.A. während der Berechnung den Inhalt (w ∈ Γ∗ ) des Arbeitsbandes

I

Menge REC(TM) der TM-akzeptierbaren Sprachen ist abgeschlossen unter ∪, ∩, ◦,∗ ,R , aber nicht unter

I

Akzeptieren deterministische und nichtdeterministische TM dieselbe Sprachklasse?

I

REC(TM) entspricht Chomsky-Typ ?

367

Nichtdeterministische TM TM M = ({0, 1}, {p, q, f }, {0, 1, }, δ, p, {f }, ) mit   (0, p, 1, p, R),         (1, p, 1, p, R),   (1, p, 1, q, R), δ=    (1, q, 1, q, R),        (, q, , f , N) akzeptiert z.B. das Wort 11011 mit (u.A.) folgender Berechnung

(, p, 11011) ` (1, p, 1011) ` (11, p, 011) ` (111, p, 11) ` (1111, q, 1) ` (11111, q, ) ` (11111, f , )

368

Simulation nichtdeterministischer TM Satz Zu jeder nichtdeterministischen TM M existiert eine deterministische TM M 0 mit L(M) = L(M 0 ). Beweisidee: Menge aller möglichen Berechnungen von M für Eingabe w bilden einen Baum (evtl. mit unendlichen Pfaden): Knoten : Konfigurationen Wurzel : Startkonfiguration (Startzustand, Eingabewort) Blätter : akzeptierende Konfigurationen Kanten : zulässige Konfigurationsübergänge in M M0

führt Breitensuche in diesem Baum durch (simuliert parallele Berechnung aller Möglichkeiten), Bandinhalt von M 0 sind Konfigurationen aus M M 0 akzeptiert, sobald eine akzeptierende Konfiguration von M auf dem Band steht. 369

Beispiel - Sprache vom Chomsky-Typ 0 Regeln l → r mit l ∈ (T ∪ N)+ , r ∈ (T ∪ N)∗ G = ({S, T , }, {0, 1}, P, S) mit  S → 1S101     S → 01S00     S → 110S11    0S0 → T P= 0T 0 → T      1S1 → T     1T 1 → T   T → ε

                      

Gilt ε ∈ L(G) ? S



110S11 → 11001S0011 → 11001110S110011



110011101S101110011 → 11001110T 01110011

→∗ 110T 011 → 11T 11 → 1T 1 → T → ε 370

TM und Sprachen vom Chomsky-Typ 0 Satz Die Menge aller Sprachen, die von einer TM akzeptiert werden, ist genau die Menge aller Sprachen vom Chomsky-Typ 0. Idee der Konstruktionen: I

Grammatik → TM: M berechnet für das Eingabewort w (letztes Wort einer Ableitung) eine Ableitung in der Grammatik „rückwärts“. (Evtl. wird dabei der Bandinhalt geeignet verschoben.) TM akzeptiert, wenn Bandinhalt = Startsymbol

I

TM → Grammatik: Grammatik erzeugt für jedes mögliche Eingabewort w einen „Kandidaten“ w 0 (Startkonfiguration der TM mit Eingabe w). Grammatik-Regeln beschreiben die lokalen Änderungen bei Konfigurationsübergängen der TM (Simulation der Berechnung der TM auf w durch Ableitung in der Grammatik). Wird in der Ableitung eine akzeptierende Konfiguration errreicht, „Übersetzung“ des Kandidaten w 0 in Terminalwort w. 371

Beispiel - Sprache vom Chomsky-Typ 1 (monotone, kontextsensitive Grammatik) Regeln l → r mit l, r ∈ (T ∪ N)+ mit |l| ≤ |r | G = ({S, R, T , A, B}, {a, b}, P, S) mit  S → RT     R → RB    BT → AA P= BA → AA      RA → ba   aA → aa

              

Ableitung für das Wort baaaa S → RT → RBT → RBBT → RBBBT → RBBAA → RBAAA → RAAAA → baAAA → baaAA → baaaA → baaaa 372

TM mit linear beschränktem Band (LBA) TM M = (X , Q, Γ, δ, q0 , F , ) heißt linear beschränkt (LBA) gdw. 1. M nichtdeterministisch und 2. für jede bei Eingabe von w in M erreichbare Konfiguration upv ∈ Γ∗ × Q × Γ∗ gilt |uv | ≤ |w|.

Satz Die Menge aller Sprachen, die von einer TM mit linear beschränktem Band akzeptiert werden, ist genau die Menge aller Sprachen vom Chomsky-Typ 1.

373

Abschlusseigenschaften von L0 und L1 Die Menge L0 aller Turing-akzeptierbaren Sprachen (Chomsky-Typ 0) ist abgeschlossen unter: I

∩ (sequentieller Akzeptanztest durch beide TM)

I

∪ ((pseudo-)paralleler Akzeptanztest durch beide TM)

I

◦,

I

R



(nichtdeterministische Zerlegung und Test)

Die Menge aller Turing-akzeptierbaren Sprachen ist nicht unter Komplement abgeschlossen. (Nachweis durch Gegenbeispiel später) Die Menge L1 aller Sprachen vom Chomsky-Typ 1 ist abgeschlossen unter ∪, ∩, , ◦, ∗ ,

R

Abschluss unter : Immerman, Szelepcsényi (1987) 374

Zusammenfassung: Turing-akzeptierbare Sprachen I

Deterministische TM akzeptieren dieselbe Sprachklasse wie nichtdeterministische TM, und zwar genau alle Sprachen vom Chomsky-Typ 0

I

Die Menge aller TM-akzeptierbaren Sprachen ist abgeschlossen unter ∪, ∩, ◦, ∗ , aber nicht unter (Gegenbeispiel später)

I

Wortproblem, Leerheit, Endlichkeit und Gleichheit sind für TM-akzeptierbare Sprachen nicht algorithmisch entscheidbar

alternative Bezeichnung: Die Menge aller TM-akzeptierbaren Sprachen ist genau die Menge aller aufzählbaren Sprachen.

375

Zusammenfassung: LBA-akzeptierbare Sprachen I

(Nichtdeterministische) linear beschränkte TM (LBA) akzeptieren genau alle Sprachen vom Chomsky-Typ 1 (kontextsensitiv)

I

Ob deterministische und nichtdeterministische LBA dieselbe Sprachklasse akzeptieren, ist noch unbekannt (LBA-Problem)

I

Die Menge aller von LBA akzeptierten Sprachen (Chomsky-Typ 1) ist abgeschlossen unter ∪, ∩, , ◦, ∗ ,

R

I

Wortproblem ist für LBA-akzeptierbare Sprachen ist algorithmisch entscheidbar. (schon früher gezeigt: Wortproblem für nichtverlängernde Wortersetzungssysteme)

I

Leerheit, Endlichkeit und Gleichheit kontextsensitiver Sprachen sind nicht algorithmisch entscheidbar. 376

Beispiel - Berechnung einer TM M = ({a, b}, {q0 , q1 , q2 , q3 }, {a, b, }, δ, q0 , ) mit δ = {(a, q0 , , q1 , R), (b, q0 , , q2 , R), (, q0 , , q0 , N)} ∪{(a, q1 , a, q1 , R), (b, q1 , b, q1 , R), (, q1 , a, q3 , N)} ∪{(a, q2 , a, q2 , R), (b, q2 , b, q2 , R), (, q2 , b, q3 , N)} (deterministisch, Akzeptanz durch Halt) akzeptiert die Sprache L(M) = (a + b)+ für Eingabewort I

w = aw 0 : Bandinhalt bei Halt w 0 a

I

w = bw 0 : Bandinhalt bei Halt w 0 b

377

TM zur Berechnung von Funktionen Idee: deterministische TM M berechnet eine Funktion fM : X ∗ → Γ∗ Eingabe w ∈ X ∗ : Inhalt des Arbeitsbandes bei Start der Berechnung (Eingabewort) Ausgabe v ∈ Γ∗ : Inhalt des Arbeitsbandes nach Halt der TM Wenn M bei Eingabe von w nicht hält, ist der Wert fM (w) nicht definiert. TM M berechnet i.A. nur eine partielle Funktion fM : X ∗ → Γ∗ da fM nur für durch Halt akzeptierte Wörter w ∈ X ∗ definiert ist 378

Turing-berechenbare Funktionen Jede deterministische TM M definiert die (partielle) Funktion fM : X ∗ → Γ∗ , wobei ∀w ∈ X ∗ ( v falls Bandinhalt v , nachdem M hält fM (w) = nicht definiert falls M nicht hält Beispiel: M = ({a, b}, {q0 , q1 , q2 , q3 }, {a, b, }, δ, q0 , ) mit δ = {(a, q0 , , q1 , R), (b, q0 , , q2 , R), (, q0 , , q0 , N)} ∪{(a, q1 , a, q1 , R), (b, q1 , b, q1 , R), (, q1 , a, q3 , N)} ∪{(a, q2 , a, q2 , R), (b, q2 , b, q2 , R), (, q2 , b, q3 , N)} definiert die Funktion ( vx falls w = xv mit x ∈ {a, b} und v ∈ {a, b}∗ fM (w) = nicht definiert falls w = ε Eine Funktion f : X ∗ → X ∗ heißt Turing-berechenbar gdw. eine deterministische TM M mit f = fM existiert. 379

Beispiele I

I

g : {1}∗ → {1}∗ mit g(w) für alle w ∈ {1}∗ undefiniert ist berechenbar durch die TM M = ({1}, {q0 }, {1, }, δ, q0 , ) mit δ = {(q0 , 1, q0 , 1, N), (q0 , , q0 , , N)} f : {a, b}∗ → {a, b}∗ mit für alle w ∈ {a, b}∗ gilt ( am+n falls w = am ban f (w) = nicht definiert sonst ist berechenbar durch die TM M = ({a, b}, {q0 , q1 , q2 , f }, {a, b, }, δ, q0 , ) mit δ = {(a, q0 , a, q0 , R), (b, q0 , a, q1 , R), (, q0 , , q0 , N)} ∪{(a, q1 , a, q1 , R), (b, q1 , b, q1 , N), (, q1 , , q2 , L)} ∪{(a, q2 , , f , N)} 380

Turing-berechenbare Funktionen auf Codierung natürlicher Zahlen, z.B. in I I

N

N → {1}∗ Binärcodierung c2 : N → {0, 1}∗

Unärcodierung c1 :

Beispiele: I

M = ({1}, {q0 , q1 }, {1, }, δ, q0 , ) mit δ = {(q0 , 1, q0 , 1, R), (q0 , , q1 , 1, N)} berechnet die Funktion fM (x) = x + 1 in Unärcodierung

I

M = ({0, 1}, {q0 , q1 , q2 , q3 , f }, {0, 1, }, δ, q0 , ) mit δ = {(0, q0 , 0, q0 , R), (1, q0 , 1, q0 , R), (, q0 , , q1 , L)} ∪{(0, q1 , 1, q3 , L), (1, q1 , 0, q2 , L), (, q1 , , q1 , N)} ∪{(0, q2 , 1, q3 , L), (1, q2 , 0, q2 , L), (, q2 , 1, f , R)} ∪{(0, q3 , 0, q3 , L), (1, q3 , 1, q3 , L), (, q3 , , f , R)} berechnet die Funktion fM (x) = x + 1 in Binärcodierung (ohne führende 0) 381

Was bisher geschah

NFA, DFA, PDA und Turing-Maschinen können I

Sprachen L ⊆ X ∗ akzeptieren.

deterministische Turing-Maschinen können außerdem I

(partielle) Funktionen f : X ∗ → X ∗ berechnen (Zahlen, Tupel von Zahlen,. . . codiert als Wörter in X ∗ , z.B. für X = {1} oder X = {0, 1} )

382

Beispiel: Unärcodierung → Binärcodierung f : {1}∗ → {0, 1}∗ Transformation Unär- → Binärcodierung wird (z.B.) berechnet von TM M = ({1}, {q0 , q1 , q2 , q3 , q4 , f }, {1, 0, x, y , }, δ, q0 , {f }, ) mit   (1, q , x, q , R), (, q , , q , L), 0 0 0 1      (x, q , x, q , L), (, q , , q , R),      1 1 1 2       (x, q , y , q , L), (, q , , q , L),   2 3 2 4     (y , q2 , y , q2 , R), (1, q2 , 1, q2 , R), (0, q2 , 0, q2 , R), δ= (, q3 , 1, q2 , R), (0, q3 , 1, q2 , R),           (1, q , 0, q , L), (y , q , y , q , L) 3 3 3 3        (y , q4 , , q4 , L), (0, q4 , 0, q4 , L), (1, q4 , 1, q4 , L),      (, q4 , , f , R)

383

Mehrstellige Turing-berechenbare Funktionen auf Codierung von Tupeln (x1 , . . . , xk ) ∈ c(x1 ) • c(x2 ) • · · · • c(xk )

N

k

N

durch

mit Trennzeichen •

Beispiel: TM M = ({1, •}, {q0 , q1 , q2 , f }, {1, •, }, δ, q0 , ) mit δ = {(1, q0 , 1, q0 , R), (•, q0 , 1, q1 , R), (, q0 , , q0 , N)} ∪{(1, q1 , 1, q1 , R), (•, q1 , •, q1 , N), (, q1 , , q2 , L)} ∪{(1, q2 , , f , N)} berechnet die Funktion fM (x, y ) = x + y (in Unärcodierung)

N

N

Eine Funktion f : k → heißt Turing-berechenbar gdw. eine deterministische TM M existiert, so dass für jede Eingabe (x1 , . . . , xk ) ∈ k gilt

N

f (x1 , . . . , xk ) = y gdw. fM (c(x1 ) • · · · • c(xk )) = c(y ) 384

Codierung von TM (Gödelnummer) (Kurt Gödel 1906 - 1978) Darstellung jeder TM M = (X , Q, Γ, δ, q0 , ) als (endliches) Wort über dem endlichen Alphabet X 0 = X ∪ Γ ∪ Q ∪ {L, R, N}∪ Klammern ∪ Trennzeichen möglich Menge aller Codierungen von TM ist Sprache über X 0 Codierung als {0, 1}-Folge: I

Alphabet, Zustände, Richtungen in Unärcodierung (∈ 1∗ )

I

Trennzeichen, Klammern als Folgen ∈ 0∗

Gödelnummer einer TM M: Darstellung von M in maschinenlesbarer Form, z.B. ∈ {0, 1}∗ (als Eingabe für eine TM geeignet) Die Menge aller {0, 1}-Folgen, die korrekten Codierungen von TM sind, ist I

abzählbar

I

TM-akzeptierbar (sogar regulär). 385

Beispiel: Gödelnummer einer TM Codierung einer TM als Wort aus {0, 1}∗ Beispiel: TM M = (X , Q, Γ, δ, q1 , ) in {0, 1}∗ mit I X = {1, } mit c(1) = 1, c() = 11 I Q = {q0 , q1 } mit Startzustand q0 : c(q0 ) = 1, c(q1 ) = 11 I B = {L, R, N} mit c(L) = 1, c(R) = 11, c(N) = 111 I δ = {(q0 , , q1 , 1, R), (q1 , , q0 , 1, L), (q0 , 1, q1 , 1, L)} (busy beaver) für jeden Übergang u = (p, a, q, b, r ) ∈ δ: Codierung : c(u) = c(p)0c(a)0c(q)0c(b)0c(r ) c(q0 , , q1 , 1, R) = 101101101011 c(q1 , , q0 , 1, L) = 11011010101 c(q0 , 1, q1 , 1, L) = 1010110101 Codierung der TM M: c(M) = 000c(q0 , , q1 , 1, R)00c(q1 , , q0 , 1, L)00c(q0 , 1, q1 , 1, L)000 386

Nicht Turing-berechenbare Funktionen Ist jede partielle Funktion f : X ∗ → X ∗ (f : X ∗ → Y ∗ , f : → , f : n → ) Turing-berechenbar?

N N

N

N

Nein (Gegenbeispiel später) Begründung: (Aussage für X = {0, 1} zu zeigen, genügt) 1. Wieviele Turing-Maschinen über einem endlichen Alphabet gibt es? abzählbar viele (weil TM endlich codiert werden können, nach erstem Diagonalverfahren von Cantor) 2. Wieviele partielle Funktionen f : X ∗ → X ∗ gibt es? überabzählbar viele (zweites Diagonalverfahren von Cantor) Damit existieren sogar sehr viel mehr (überabzählbar viele) partielle Funktionen f : X ∗ → X ∗ (f : X ∗ → Y ∗ , f : → , f : n → ), die nicht von TM berechnet werden können.

N N

N

N

Warum sind TM als Berechnungsmodell trotzdem interessant? 387

Intuitiver Berechenbarkeitsbegriff Eine partielle Funktion f : X ∗ → X ∗ ist berechenbar, falls I

eine Rechenvorschrift oder

I

ein Algorithmus oder

I

ein Programm (in beliebiger Programmiersprache) oder

I

eine deterministische Turingmaschine

N

existiert, welche für jedes x ∈ bei Eingabe von x den Wert f (x) ausgibt, falls f (x) definiert ist.

weitere Berechnungsmodelle: Registermaschinen, while-Programme, partiell rekursive Funktionen, λ-Kalkül, . . .

388

These von Church (Alonzo Church 1903-1995) Für alle bisher vorgeschlagenen intuitiven Definitionen für berechenbare Funktionen lässt sich beweisen, dass sie dieselbe Klasse von Funktionen bestimmen. These von Church: Die Menge aller Turing-berechenbaren Funktionen ist genau die Menge aller intuitiv berechenbaren Funktionen. (unbeweisbar, weil Definition durch „Intuition“ zu ungenau)

389

Programmierung Bisher: Jede TM löst eine spezielles Problem (Wortproblem für eine Sprache, Berechnung einer Funktion) üblicher Computer kann (theoretisch, bei beliebiger Rechenzeit und Speicherplatz) I

beliebige Algorithmen (Programme) ausführen, d.h.

I

jede berechenbare Funktion berechnen (nach These von Church)

I

ist also universell (programmierbar).

Gibt es programmierbare TM?

390

Universelle TM TM U heißt universelle TM, falls für I

jede TM M und

I

jedes Eingabewort v gilt fU (c(M) • v ) = fM (v )

d.h. falls die TM M bei Eingabe v hält , dann hält auch U bei Eingabe (c(M) • v ) mit Ausgabe fM (v ), nicht hält , dann hält auch U bei Eingabe (c(M) • v ) nicht. TM U kann die Berechnung jeder TM M simulieren. TM U interpretiert die Codierung (das Programm) c(M). U ist also eine programmierbare Turing-Maschine. 391

Arbeitsweise einer universellen TM Universelle TM U speichert die I

Codierung der Machine M und

I

Startkonfiguration q0 w

auf dem Arbeitsband und berechnet I

die Folge der Konfigurationen von M (durch Zugriff auf die Übergangsrelation von M).

Codierung c(M) ist also beides: 1. Beschreibung einer speziellen TM M 2. Programm für eine universelle TM

392

Entscheidbarkeit von Sprachen charakteristische Funktion einer Menge (Sprache) L ⊆ X ∗ : ( 1 falls w ∈ L χL : X ∗ → {0, 1}, wobei ∀w ∈ X ∗ : χL (w) = 0 sonst Sprache (Menge) L ∈ X ∗ heißt entscheidbar gdw. die Funktion χL berechenbar ist. (Entscheidende TM muss also bei jeder Eingabe halten.) Sprache (Menge) L ∈ X ∗ heißt semi-entscheidbar gdw. die „halbe“ charakteristische Funktion χ0L : X ∗ → {0, 1} berechenbar ist: ( 1 falls w ∈ L ∗ 0 ∀w ∈ X : χL (w) = nicht definiert sonst

Fakt Eine Sprache ist genau dann semi-entscheidbar, wenn sie Turing-akzeptierbar (aufzählbar) ist. 393

Beispiele entscheidbarer Sprachen

I

jede endliche Sprache L = {w1 , . . . , wn } (für jedes i nacheinander Test, ob Eingabe = wi )

I

jede Sprache vom Chomsky-Typ 1 (Wortproblem für monotone Grammatiken),

I

{an | n ∈

I

Menge aller Primzahlen (z.B. in Unärdarstellung),

I

Menge aller Primzahlzwillinge, d.h. Paare (p, p + 2) mit Primzahlen p und p + 2

2

N}, {a2

n

|n∈

N},

394

Was bisher geschah Deterministische Turingmaschinen M können (partielle) Funktionen f : X ∗ → X ∗ berechnen, d.h. bei Eingabe w I falls f (w) nicht definiert ist, nicht halten, I falls f (w) = v , mit Bandinhalt v halten. Sprachen L ⊆ X ∗ akzeptieren durch Halt oder durch akzeptierende Zustände, entscheiden , d.h. χL berechnen.

I

intuitiver Berechenbarkeitsbegriff

I

These von Church

395

Beispiel TM M = ({0, 1}, {q0 , q1 , q2 , q3 }, {0, 1, }, δ, q0 , {q3 }, ) mit    (0, q0 , , q1 , R), (1, q0 , , q2 , R), (, q0 , , q0 , N),  (0, q1 , , q1 , R), (1, q1 , , q2 , R), (, q1 , 1, q3 , N), δ=   (0, q2 , , q1 , R), (1, q2 , , q2 , R), (, q2 , 0, q3 , N) akzeptiert die Sprache LH (M) = (0 + 1)+ durch Halt (und durch akzeptierende Zustände), berechnet die Funktion fM : ∀x ∈

N → N (binärcodiert) mit

N : fM (x) = 1−(x

 mod 2) =

entscheidet die Sprache LE (M) = (0 + 1)∗ 0

1 , falls x gerade 0 , sonst

N

(Menge 2 )

396

Menge aller entscheidbaren Sprachen – Abschlusseigenschaften Satz Eine Sprache L ist genau dann entscheidbar, wenn sowohl L als auch L TM-akzeptierbar sind. Idee: „parallele“ Ausführung der Maschinen M mit L(M) = L und N mit L(N) = L auf Eingabe w, genau eine dieser beiden TM hält: M, falls w ∈ L, sonst N Die Menge aller entscheidbaren Sprachen ist abgeschlossen unter Vereinigung wegen χL∪L0 (w) = max(χL (w), χL0 (w)) berechenbar Schnitt wegen χL∩L0 (w) = min(χL (w), χL0 (w)) berechenbar Komplement wegen χL (w) = 1 − χL (w) berechenbar Achtung (Unterschied zu TM-akzeptierbaren Sprachen): Aus der TM-Akzeptierbarkeit von L folgt i.A. nicht die TM-Akzeptierbarkeit von L. 397

Spezielles Halteproblem für TM Wiederholung: Gödelnummer einer TM M: endliche Codierung c(M) von M (z.B. als Binärwort) 1. endliche Beschreibung einer speziellen TM 2. Eingabe (Programm) für eine universelle TM (Simulator) Das spezielle Halteproblem für TM ist die Sprache S = {c(M) | TM M hält bei Eingabe c(M)}

Satz Die Sprache S ist Turing-akzeptierbar. Warum? Ist die Sprache S entscheidbar? 398

Unentscheidbarkeit des speziellen Halteproblems Satz Es existiert keine TM, welche das spezielle Halteproblem (die Sprache S) entscheidet, d.h. die folgende Funktion berechnet:   1 falls w = c(M) für eine TM M und M hält bei Eingabe von w χS (w) =  0 sonst indirekter Beweis: (analog Barbier-Problem) Annahme: N ist TM mit fN = χS Konstruktion einer TM N 0 aus N, so dass für jede TM M gilt: ( nicht definiert falls M bei Eingabe von c(M) hält fN 0 (c(M)) = 1 falls M bei Eingabe von c(M) nicht hält Ist fN 0 (c(N 0 )) definiert? Widerspruch, eine solche TM N kann also nicht existieren. 399

Komplement des speziellen Halteproblems Spezielles HP: S

=

{c(M) | TM M hält bei Eingabe c(M)}

Komplement des speziellen HP:   w ist keine Codierung einer TM oder S = w| w = c(M) und M hält bei Eingabe c(M) nicht

Folgerung Die Sprache S ist nicht Turing-akzeptierbar. Beweisidee (indirekt): I

bekannt: 1. S ist TM-akzeptierbar. 2. S ist nicht entscheidbar. 3. S TM-akzeptierbar ∧ S TM-akzeptierbar → S entscheidbar

I

Annahme: S ist TM-akzeptierbar. dann ist S entscheidbar wegen 1. und 3. Widerspruch zu 2., also Annahme falsch, also S nicht TM-akzeptierbar. 400

Folgerungen aus der Unentscheidbarkeit von S Keine der folgenden Probleme (Sprachen) ist entscheidbar: A = {c(M) • w | M hält bei Eingabe w} allgemeines Halteproblem E

= {c(M) | M hält bei Eingabe ε} Halteproblem mit leerer Eingabe

T

= {c(M) | M hält für jede beliebige Eingabe} Totalitätsproblem

I = {c(M) | M hält für irgendeine Eingabe} N = {c(M) | M hält für keine Eingabe} 401

Praktische Bedeutung nach These von Church: Das Halteproblem ist für kein intuitives Berechnungsmodell entscheidbar. Es existiert kein Programm, welches für jedes beliebige Programm P feststellt, ob P immer (für jede Eingabe) hält. (Unentscheidbarkeit des Totalitätsproblems) Es existiert kein Programm, welches für jedes beliebige Paar (P, v ) feststellt, ob das Programm P bei Eingabe von v anhält. (Unentscheidbarkeit des allgemeinen Halteproblems) Solche negativen Aussagen sind nützlich, z.B. um Ressourcenverschwendung (z.B. Arbeitskraft, -zeit) zu vermeiden. 402

Spezialfälle Für spezielle Programme P und Eingaben w lässt sich häufig automatisch feststellen, ob P bei Eingabe von w anhält. realistische Ziele: Anwendung: Programme verwenden, für die Termination für alle (relevanten) Eingaben bewiesen wurde (z.B. als Gerätetreiber) Forschung: möglichst viele und große Klassen von Programmen und Eingaben finden, für die sich Termination (oder Nicht-Termination) beweisen lässt, (Weiter-)Entwicklung von Verfahren zum Nachweis der Termination von Programmen

403

Probleme und Instanzen Problem: Sprache P ⊆ X ∗ (Codierungen einer Klasse von verwandten Aufgaben) Instanz eines Problems: Wort w ∈ X ∗ (Codierung einer speziellen Aufgabe aus dieser Klasse) Lösungsverfahren für das Problem P: Entscheidungsverfahren für P, d.h. Verfahren, welches für jede Instanz (Wort) w ∈ X ∗ bestimmt, ob w ∈ P Beispiel: Wortproblem für reguläre Sprachen Problem: WP-REG = {(c(L), w) | w ∈ L} mit endlicher Darstellung c(L) der Sprache L z.B. c(L) = A für einen NFA A mit L = L(A) Instanz: (c(A), aba) mit A = ({a, b}, {p, q}, δ, {p}, {p, q}) und δ(a) = {(p, p)}, δ(b) = {(p, q), (q, q)} Frage: Gilt (A, aba) ∈ WP-REG? wahr gdw. aba ∈ L(A) Lösungsungsverfahren (Entscheidungsverfahren), z.B. Pfadsuche im Automatengraphen

404

Probleme und Instanzen – Beispiele Enthaltensein in einer Folge (von Elementen des Typs E) Problem: F = {((x1 , . . . , xn ), y ) ∈ E ∗ × E | ∃k ∈ {1, . . . , n} : xk = y } Menge aller Paare ((x1 , . . . , xn ), y ) mit y ∈ {x1 , . . . , xn } Instanz: ((1, 3, 4, 3), 4) (Gilt ((1, 3, 4, 3), 4) ∈ F ? ) Ja, ((1, 3, 4, 3), 4) ∈ F , weil 4 ∈ {1, 3, 4} Lösungsverfahren (Entscheidungsverfahren): (beliebiges) Suchverfahren in Folgen I SAT (Erfüllbarkeitsproblem der Aussagenlogik) Problem: SAT = {ϕ ∈ AL(P) | Mod(ϕ) 6= ∅}, Menge aller erfüllbaren aussagenlogischen Formeln Instanz: ¬a ∧ (a ∨ b ∨ c) ∧ ¬c ∧ ¬b (Gilt (¬a ∧ (a ∨ b ∨ c) ∧ ¬c ∧ ¬b) ∈ SAT ?) Nein, weil Mod(ϕ) = ∅ Lösungsverfahren (Entscheidungsverfahren): I semantisch: Wahrheitswerttabellen I syntaktisch: Kalküle, z.B. natürliches Schließen, äquivalente Umformungen I

405

Probleme und Entscheidungsverfahren Problem P ist unentscheidbar gdw. kein Entscheidungsverfahren (TM, Programm, Algorithmus, . . . ) für P existiert, z.B. spezielles Halteproblem entscheidbar gdw. wenigstens ein Entscheidungsverfahren für P existiert (i.A. existieren mehrere) z.B. SAT, Suche in Folgen, Sortieren von Folgen durch verschiedene Such- und Sortierverfahren (mehr dazu in LV Algorithmen und Datenstrukturen)

Entscheidbarkeit eines Problems (Sprache) P wird i.A. durch Angabe eines Entscheidungsverfahrens für P gezeigt. Unentscheidbarkeit eines Problems P wird oft durch Reduktion bekannter unentscheidbarer Probleme (oft HP) auf P gezeigt.

406

Reduktion Reduktion des Problems P auf Problem Q: Transformation der Sprache P ⊆ X ∗ in die Sprache Q ⊆ Y ∗ , d.h. berechenbare Funktion f : X ∗ → Y ∗ mit ∀w ∈ X ∗ : w ∈ P ↔ f (w) ∈ Q (Übersetzung jeder Instanz des Problems P in eine Instanz des Problems Q) Problem P heißt genau dann reduzierbar auf Problem Q (P ≤ Q), wenn eine Reduktion f von P auf Q mit existiert. Reduzierbarkeit zwischen Problemen ist reflexiv , denn Identität ist Reduktion transitiv , denn Nacheinanderausführung zweier Reduktionen ist Reduktion 407

Postsches Korrespondenzproblem (PCP) gegeben: endliche Folge {(xi , yi ) | i ∈ {1, . . . , n}} mit xi , yi ∈ X ∗ Frage: Existiert ein Wort u ∈ {1, . . . , n}∗ mit xu1 · · · xuk = yu1 · · · yuk ? Problem: PCP = {((x1 , y1 ), . . . , (xn , yn )) | ∃w ∈ {1, . . . , n}+ : xw1 ◦ · · · ◦ xw|w| = yw1 ◦ · · · ◦ yw|w| } Menge aller „lösbaren“ PCP-Instanzen Instanz: x1 = 1, y1 = 101, x2 = 10, y2 = 00, x3 = 011, y3 = 11 (Gilt ((1, 101), (10, 00), (011, 11)) ∈ PCP ?) Ja, (((1, 101), (10, 00), (011, 11)), 1321) ∈ PCP, weil w = (1, 3, 2, 3) eine Lösung dieser Instanz ist wegen w = 101110011 = x1 x3 x2 x3 = y1 y3 y2 y3 PCP unentscheidbar, Nachweis durch Reduktion des HP auf PCP Idee: Übersetzung von Berechnungen von TM in PCP, so dass Berechnung nicht haltender TM auf PCP ohne Lösung abgebildet werden. HP unentscheidbar → PCP unentscheidbar 408

Parkettierungsproblem Überdeckung der unendlichen Ebene mit gleichgroßen quadratischen Kacheln (festgelegter Orientierung) mit farbigen Seiten (2-dimensionales Domino) n 2 Problem: Parkett = (D1 , . . . , Dn ) | ∃M ∈ D (Z ) ∀(i, j) ∈ 2 :

Z

(s(Mi,j ) = n(Mi+1,j ) ∧ o(Mj,i ) = w(Mj+1,i ))} (Menge aller Kachelmengen, mit denen sich die unendliche Ebene korrekt überdecken lässt) Instanz: C = {R, G}, D = {D0 , D1 } mit o(D0 ) = s(D0 ) = R, n(D0 ) = w(D0 ) = G o(D1 ) = s(D1 ) = G, n(D1 ) = w(D1 ) = R Gilt D ∈ Parkett, d.h. lässt sich die unendliche Ebene mit Kacheln aus D überdecken? Ja, ∀(i, j) ∈ 2 : Mj,i = D(i+j) mod 2

Z

Parkett unentscheidbar, Nachweis durch Reduktion des HP darauf Idee: Übersetzung von TM in Kachelmengen D, so dass Berechnung nicht haltender TM auf unendliche Parkettierung der Ebene abgebildet werden (Zeile i: Konfiguration zum Zeitpunkt i). HP unentscheidbar → Parkettierungsproblem unentscheidbar 409

Entscheidungsproblem der Prädikatenlogik FOL(Σ,

X) klassische Prädikatenlogik (der ersten Stufe)

Erfüllbarkeitsproblem Problem: E = {ϕ ∈ FOL(Σ, ) | Mod(ϕ) 6= ∅} Instanz , z.B. ∀x(P(x, f (y ))) Frage: Gilt ∀x(P(x, f (y ))) ∈ E ?

X

Unerfüllbarkeitsproblem Problem: U = {ϕ ∈ FOL(Σ, ) | Mod(ϕ) = ∅} Instanz , z.B. ∃x(¬p(x) ∧ p(x)) Frage: Gilt ∃x(¬p(x) ∧ p(x)) ∈ U ?

X

(Allgemein-)Gültigkeitsproblem Problem: A = {ϕ ∈ FOL(Σ, ) | Mod(¬ϕ) = ∅} Instanz , z.B. ∀x(P(x, f (y ))) Frage: Gilt ∀x(P(x, f (y ))) ∈ A ?

X

Entscheidungsproblem der Prädikatenlogik (Hilbert): algorithmische Lösung eines dieser Probleme 410

Unentscheidbarkeit der Prädikatenlogik Satz Erfüllbarkeits- Unerfüllbarkeits und Gültigkeitsproblem für FOL(Σ, ) sind TM-akzeptierbar.

X

Beweisidee: Akzeptanz durch Herleitung in einem Beweiskalkül

Satz (Gödel, Turing, 1936/37) Erfüllbarkeits- Unerfüllbarkeits und Gültigkeitsproblem für FOL(Σ, ) sind unentscheidbar.

X

Nachweis durch Reduktion des PCP auf das Gültigkeitsproblem: Konstruktion einer Formel ϕp ∈ FOL(Σ, ) zu jeder PCP-Instanz p, so dass ϕp genau dann allgemeingültig, wenn p lösbar. PCP unentscheidbar → Gültigkeitsproblem für FOL(Σ, ) unentscheidbar

X

X

411

Organisatorisches

Modul Theoretische Grundlagen der Informatik I

I

vorgesehener Zeitaufwand laut Modulbeschreibung: 90 h für Präsenzstudium als 4+2 SWS = 6h jede Woche + 120 für Selbststudium, verteilt z.B. 90h (= 6h jede Woche) + 30h Prüfungsvorbereitung Bedingung für Prüfungszulassung: I I

I

Autotool: ≥ 24 Punkte Vorrechnen: ≥ 3 Punkte

Auswertung Studentenfragebögen

412

Prüfung Wann? am 11. 2. 2014 um 12:00 - 14:00 Uhr Wo? in den Räumen GuH101, GuH116, LNW006 Treffpunkt zur Raumverteilung (Pläne): vor LNW006 (ab 11:30 Uhr) Wie? Klausur 120 min (einzige) zugelassene Hilfsmittel: ein A4-Blatt handbeschrieben Was? Inhalt der LV Aufgabentypen aus Übungsserien bekannt

Viel Erfolg!

413

TGI WS 2013/14 – Lernziele (nach Modulbeschreibung) I

theoretischen Grundbegriffe zur der Modellierung praktischer Aufgabenstellungen anwenden

I

wichtige Klassen formaler Sprachen als Grundlage von Programmier- und Beschreibungssprachen einordnen

I

die passenden abstrakten Maschinenmodelle zur Darstellung und Lösung praktischer Aufgabenstellungen einsetzen

I

praktische Aufgabenstellungen durch prädikatenlogische Formeln beschreiben

I

wissen, dass die Korrektheit von Programmen mit logischen Methoden nachweisbar ist

414

TGI WS 2013/14 – Inhalt I

Modellierung: Grundbegriffe und -techniken der Informatik mit praktischen Beispielen

I

Klassische Logiken: Formalisierung praktischer Aufgabenstellungenstellungen in Aussagen- und Prädikatenlogik (Spezifikation von Algorithmen, abstrakte Datentypen), syntaktische und sematische Lösungsverfahren, Ausdrucksstärke, Grenzen

I

Terme, strukturelle Induktion

I

Formale Sprachen: Modellierung durch Wörter und Sprachen, Operationen auf Wörtern und Sprachen, Sprachklassen, Chomsky-Hierarchie, reguläre Ausdrücke

I

Abstrakte Maschinen: Modellierung durch verschiedene Automatentypen (endliche Automaten, Kellerautomaten, Turing-Maschinen), Operationen auf Automaten, Akzeptanz durch Automaten, Zusammenhang mit formalen Sprachen, Ausdrucksstärke

I

Berechenbarkeit, These von Church, Entscheidbarkeit, unentscheidbare Probleme 415

Modellierung Ziel: maschinelle Darstellung und Verarbeitung von Informationen Weg: Formalisierung in maschinenlesbaren Sprachen Formalisierung von Daten durch Mengen (mit Mengenoperationen), Folgen Datentypen (abstrakt, konkret) Eigenschaften (Semantik) in klassischer Aussagen und Prädikatenlogik Abläufen als Zustandsübergangssysteme (Graphen mit Knoten- und Kantenmarkierungen) abstrakten Maschinen durch Maschinenmodelle NFA (DFA), PDA (DPDA), TM (LBA) Zusammenhänge mit formalen Sprachen Berechnungen abstrakter Maschinen (Spezialfall von Zustandsübergangssystemen) Beschreibungen von Daten und Abläufen (Syntax) in formalen Sprachen 416

Modellierung von Aufgaben (Problemen) gegeben: informale Aufgabenstellung Identifikation und formale Darstellung von I

Menge der Objekte und Typen

I

Zusammenhänge (Funktionen, Relationen) zwischen Objekten

I

Typen der Eingaben

I

Typen der Ausgaben

I

Eigenschaften der gewünschten Lösung (Zusammenhang zwischen Ein- und Ausgaben)

erst danach: Suche nach oder Entwurf von Lösungsverfahren

417

Anwendung: Datentypen Abstrakter Datentyp: Spezifikation von Klassen von (meist mehrsortigen) Σ-Strukturen durch Syntax (Deklaration der Operationen) I I

S

Menge von Sorten, -sortige Signatur

S

Semantik Axiome (Menge Φ ∈ FOL(Σ, X ) von Sätzen) (oft allquantifizierte Gleichungen zwischen Termen) beschreiben Eigenschaften und Zusammenhängen der Funktionen und Relationen der Signatur Konkreter Datentyp: I

Σ-Stuktur (Menge von Werten mit zugeordneten Operationen), die

I

Modell der Spezifikation Φ (Axiome) ist

Interface: Implementierung:

Signatur im abstrakten Datentyp konkreter Datentyp 418

Abstrakter Datentyp – Beispiel stack Sorten E: Elementtyp, ShEi: Stapel (stack) von Elementtyp E, B: {t, f} Signatur Σ: push top pop new empty

: ShEi × E : ShEi : ShEi : : ShEi

→ ShEi →E → ShEi ShEi → SB

(Beispiele für) Axiome: ∀s ∈ ShEi∀z ∈ E ∀s ∈ ShEi∀z ∈ E ∀s ∈ ShEi∀z ∈ E

empty(new) empty(push(s, z)) top(push(s, z)) pop(push(s, z))

= = = =

t 0 z s 419

Diagramme (Tafel) Syntax, Semantik Entscheidbarkeit von FOL und AL Prominente Klassen formaler Sprachen I

regulär

I

(deterministisch) kontextfrei

I

kontextsensitiv (Chomsky-Typ 1)

I

Turing-akzeptierbar (aufzählbar)

I

entscheidbar

mit I

Inklusionsbeziehungen dazwischen

I

typische Vertreter der Sprachklasse

I

Chomsky-Typ

I

passenden Maschinenmodellen

I

Abschlusseigenschaften 420