Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Ähnliche Dokumente
Abschlusseigenschaften. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Abschlusseigenschaften

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004

Theorie der Informatik

FORMALE SYSTEME. 10. Vorlesung: Grenzen regulärer Sprachen / Probleme für Automaten. TU Dresden, 14. November 2016.

Grundlagen der Theoretischen Informatik

Kontextfreie Sprachen

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung!

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Automaten und Formale Sprachen SoSe 2007 in Trier. Henning Fernau Universität Trier

Automaten und Formale Sprachen SoSe 2013 in Trier

Kontextfreie Sprachen

Unentscheidbare Grammatik-Probleme

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012

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

Übungsblatt 7. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18

Theoretische Grundlagen der Informatik

Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 7

Software Engineering Ergänzung zur Vorlesung

Automaten und Formale Sprachen SoSe 2007 in Trier. Henning Fernau Universität Trier

Zusammenfassung Grundzüge der Informatik 4

Ausgewählte unentscheidbare Sprachen

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Grundlagen der Theoretischen Informatik

Musterlösung Informatik-III-Klausur

Ist eine algorithmische Problemstellung lösbar und wenn ja, mit welchen Mitteln? was ist eine algorithmische Problemstellung?

Theorie der Informatik

Automaten und Formale Sprachen ε-automaten und Minimierung

Grundlagen der Theoretischen Informatik

2.2 Reguläre Sprachen Endliche Automaten

Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen. Wintersemester 2011/12

Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken

Automaten und Formale Sprachen SoSe 2013 in Trier

Maike Buchin 18. Februar 2016 Stef Sijben. Probeklausur. Theoretische Informatik. Bearbeitungszeit: 3 Stunden

Die Nerode-Relation und der Index einer Sprache L

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Einführung in die Theoretische Informatik

Aufgabentypen: Spickerblatt: kontextfrei (Typ 2): zusätzlich: u ist eine!"# v 1

Grundkurs Theoretische Informatik

Formale Sprachen. Script, Kapitel 4. Grammatiken

Grundlagen der Theoretischen Informatik

5.2 Endliche Automaten

Einführung in die Theoretische Informatik

Theoretische Informatik für Medieninformatiker

q 0 q gdw. nicht (q A) (q A) q i+1 q gdw. q i q oder ( a Σ) δ(q, a) i δ(q, a) L = {a n b n : n N} für a, b Σ, a b

Berechenbarkeit und Komplexität

Einführung in die Theoretische Informatik

Lexikalische Programmanalyse der Scanner

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Einführung in die Theoretische Informatik

Theoretische Informatik I

Theoretische Informatik Testvorbereitung Moritz Resl

Frank Heitmann 2/47. 1 Ein PDA beginnt im Startzustand z 0 und mit im Keller. 2 Ist der Automat

Das Pumping-Lemma Formulierung

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

Übungen zur Vorlesung Einführung in die Theoretische Informatik, Blatt 12 LÖSUNGEN

4.2.4 Reguläre Grammatiken

PROBEKLAUSUR SoSe 2016

Tutoraufgabe 1 (ɛ-produktionen):

Unentscheidbarkeitssätze der Logik

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

TU Berlin Nachklausur TheGI 2 Automaten und Komplexität (Niedermeier/Hartung/Nichterlein, Sommersemester 2012)

2. Gegeben sei folgender nichtdeterministischer endlicher Automat mit ɛ-übergängen:

Grundlagen der Theoretischen Informatik

A : z z A : z z : ( z, x, z ) δ

Die mathematische Seite

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

Falls H die Eingabe verwirft, so wissen wir, dass M bei Eingabe w nicht hält. M hält im verwerfenden Haltezustand. Beweis:

Grundlagen der Theoretischen Informatik

Kapitel 3: Grundlegende Ergebnisse aus der Komplexitätstheorie Gliederung

Lösungsvorschläge Blatt 4

Grundlagen der Theoretischen Informatik

Informales Beispiel. Formale Grundlagen der Informatik 1 Kapitel 6 Eigenschaften kontextfreier Sprachen. Grammatiken. Anmerkungen

8. Turingmaschinen und kontextsensitive Sprachen

Formalismen für REG. Formale Grundlagen der Informatik 1 Kapitel 7 Kontextfreie Sprachen. Das Pumping Lemma. Abschlusseigenschaften

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Unentscheidbarkeit. Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen

(Prüfungs-)Aufgaben zu formale Sprachen

Hoffmann (HAW Hamburg) Automatentheorie und formale Sprachen

Lösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie

Theoretische Informatik. Berechenbarkeit

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

Beschreibungskomplexität von Grammatiken Definitionen

Rekursiv aufzählbare Sprachen

Musterlösung der Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2012/13

2. Gegeben sei folgender nichtdeterministischer endlicher Automat mit ɛ-übergängen:

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Turing: prinzipielle Berechenbarkeit Abschnitt 4.2. Turingmaschinen: DTM Abschnitt 4.2. DTM: Akzeptieren und Entscheiden Abschnitt 4.

11.1 Kontextsensitive und allgemeine Grammatiken

Endliche Automaten. Endliche Automaten J. Blömer 1/23

Theoretische Informatik Kap 1: Formale Sprachen/Automatentheorie

Theoretische Grundlagen der Informatik

Grammatiken. Einführung

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme

Transkript:

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1

Grundlagen Theoretischer Informatik 2 Gesamtübersicht Ersetzungsverfahren: Grammatiken und Automaten Rekursionstheorie-Einführung Komplexitätstheorie-Einführung 2

Formale Sprachen Technische Sicht Automatentheorie Endliche Automaten zur Erkennung von Wörtern oder Sprachen zur Übersetzung (siehe Mealy- / Moore-Automaten Technische Informatik) Endliche Automaten mit zusätzlichen Speicherstrukturen (Zählerautomaten) Kellerautomaten Turingmaschinen Hinweis: (Pro-)Seminar über im kommenden Sommersemester Freie Themenwahl, Endliche Automaten wäre eine mögliche Stoßrichtung. Bei Interesse bitte Kontaktaufnahme per Email. 3

Lesen lernen... (aus Wikipedia 2009/10 ) Gegeben sei ein durch ein 6-Tupel (Q, Σ, Ω, δ, λ, q 0 ) definierter, deterministischer Moore-Automat mit: Q = {q 0, q 1, q 2, q 3 }, Σ = {x, y, z}, Ω = {a, b, c} und Anfangszustand q 0. Die Übergangsfunktion δ sowie die Ausgabefunktion λ können durch einen Graphen bzw. durch eine Automatentafel dargestellt werden. Darstellung von δ und λ durch einen Graphen: 4

Übersetzende Automaten kennen Sie (Mealy / Moore) aus Rechnerstrukturen Sie sind also wichtig für die Technische Informatik. Bei uns in der Theorie meist präsent in allgemeinererer Form als so genannte (rationale) Transduktoren. Viele einfache Reduktionen der Komplexitätstheorie lassen sich durch übersetzende Automaten realisieren. Auch bei übersetzenden Automaten ist das Aufsetzen weiterer Speicherstrukturen möglich. Übersetzende Turingmaschinen wurden in der VL betrachtet! 5

Formale Sprachen Linguistische Sicht Definition von Sprachen ein natürlicher Begriff. Zur Sprachbeschreibung werden (formale) Grammatiken betrachtet. Auf welcher Stufe der Chomsky-Hierarchie liegen natürliche Sprachen? Sind Chomsky-Grammatiken für natürliche Sprachen adäquat? Sprachbeschreibungsmechanismen können deutlich anders aussehen als bei uns: Nicht immer sind Ersetzungssysteme die Grundlage. 6

Formale Sprachen Algorithmische Sicht Probleme sind (mit geeigneter Codierung) Formale Sprachen. Ziel: Klassifikation von Problemen gemäß ihrer Komplexität Gegenstand der Komplexitätstheorie (und für die ganz schwierigen Fälle: auch der Rekursionstheorie) Durch Codierung sind Problemklassen (genannt Komplexitätsklassen) nichts anderes als Klassen Formaler Sprachen. Umgekehrt eignen sich klassische Bereiche aus den Formalen Sprachen, um leicht algorithmische Probleme zu formulieren, die wiederum selbst klassifiziert werden wollen! 7

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Entscheidbare Fragen Entscheidbare Fragen Probleme Wortproblem: Gegeben eine reguläre Sprache L und w Σ. Gilt w L? Leerheitsproblem: Gegeben eine reguläre Sprache L. Gilt L =? Endlichkeitsproblem: Gegeben eine reguläre Sprache L. Ist L endlich? Schnittproblem: Gegeben zwei reguläre Sprachen L 1, L 2. Gilt L 1 L 2 =? Inklusionsproblem: Gegeben zwei reguläre Sprachen L 1, L 2. Gilt L 1 L 2? Äquivalenzproblem: Gegeben zwei reguläre Sprachen L 1, L 2. Gilt L 1 = L 2? Sander Bruggink Automaten und Formale Sprachen 3 8

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Was soll das bedeuten? Wie sind reguläre Sprachen gegeben?? Wir erinnern verschiedene mögliche Eingabe-Formate : NEAs / NFAs DEAs / DFAs reguläre Ausdrücke rechtslineare Grammatiken Lesen wir also weiter, um zu verstehen, was gemeint sein könnte... 9

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Entscheidbare Fragen Entscheidbare Fragen Wortproblem (w L?) Gegeben sind L und w Σ. Lösung: Bestimme einen DFA M für L und verfolge die Zustandsübergänge von M, wie durch w vorgegeben. Endzustand wird erreicht w L Nicht-Endzustand wird erreicht w L Sander Bruggink Automaten und Formale Sprachen 4 10

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Was soll das bedeuten? Offenbar werden doch reguläre Sprachen eingegeben in unseren Algorithmus. Das klingt seltsam (und ist genau genommen falsch). Aber wir sehen auch: Hier werden DFAs als Eingabe angesehen. Das folgende Problem lässt sich also in deterministischer Polynomzeit lösen: Gegeben sei eine geeignete Codierung eines DFAs A und ein Wort w über dem Eingabealphabet von A. Entscheide, ob w L(A) liegt. Dies nennt man auch uniformes Wortproblem. 11

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Entscheidbare Fragen Entscheidbare Fragen Leerheitsproblem (L =?) Gegeben ist L. Lösung: Bestimme einen NFA M für L. L = es gibt keinen Pfad von einem Start- zu einem Endzustand. Sander Bruggink Automaten und Formale Sprachen 5 12

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Was soll das bedeuten? Jetzt geht man wohl von NFAs als Eingaben aus. Würden DFAs irgendetwas einfacher machen?! Hinweis: Dijkstra-Algorithmus zum Auffinden kürzester Wege in Graphen. 13

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Entscheidbare Fragen Entscheidbare Fragen Endlichkeitsproblem (Ist L endlich?) Gegeben ist L. Lösung: Bestimme einen NFA M für L. L ist unendlich in M gibt es unendlich viele Pfade von einem Start- zu einem Endzustand es gibt einen erreichbaren Zyklus in M, von dem aus wiederum ein Endzustand erreichbar ist. Sander Bruggink Automaten und Formale Sprachen 6 14

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Was soll das bedeuten? OK: Hier wieder NFAs als Eingaben... Wie kann man solche Kreise denn finden?! Dies ist genau das, was das reguläre Pumping-Lemma leistet : Wenn L(A) unendlich ist, lassen sich hinreichend lange Wörter w L(A) zerlegen in: w = xyz, sodass y einen Kreis beschreibt im Automatengraphen, in den x hineinführt und z herausführt. n 0: xy n z L(A). Und wenn für gewisse x, y, z gilt: n 0: xy n z L(A), so ist L(A) natürlich unendlich! 15

Lesen lernen... (Wir springen ein wenig... ) Entscheidbare Fragen Entscheidbare Fragen Effizienzgesichtspunkte: Je nach dem in welcher Darstellung eine Sprache L gegeben ist, kann die Komplexität der oben beschriebenen Verfahren sehr unterschiedlich ausfallen. Beispiel Äquivalenzproblem: L 1, L 2 gegeben als DFAs Komplexität O(n 2 ) (d.h., quadratisch viele Schritte in der Größe der Eingabe) L 1, L 2 gegeben als Grammatiken, reguläre Ausdrücke oder NFAs Komplexität NP-hart Das bedeutet unter anderem: es ist nicht bekannt, wie dieses Problem effizient gelöst werden kann. Mehr zum Thema Komplexität in der Vorlesung Berechenbarkeit und Komplexität im Wintersemester. Sander Bruggink Automaten und Formale Sprachen 10 16

Lesen lernen... (aus einer Vorlesung im Internet; Uni Düsseldorf) Was soll das bedeuten? Hier wird bei DFAs auf das (in GTI1 nur kurz) besprochene Zustandsminimieren bei DFAs angesprochen. Dadurch erhält man eine Normalform, bei der leicht auf Äquivalenz getestet werden kann. Weshalb ist denn das NICHT-Äquivalenzproblem in NP? Guess and Check (für einen Zeugen für die Nicht-Äquivalenz) 17

Alles zu abstrakt? Anwendungsbeispiel: Systemverifikation Dabei liegt die Sprache L spez der korrekten Programmverläufe vor (Spezifikation), und es soll geprüft werden, ob das vorzuliegende (technische) System Programmläufe liefert, die der Spezifikation genügen, d.h.: L spez = L sys oder wenigstens L sys L spez. Bei kleinen Systemen können die (teilweise) bekannten Techniken für reguläre Sprachen helfen! 18

Lesen lernen... (Weiter im Text... ) Programmverifikation mit regulären Sprachen Anwendung: Verifikation Ein abschließendes ausführliches Beispiel: Wir betrachten zwei Prozesse P 1, P 2, die auf eine gemeinsame Ressource zugreifen wollen. Jeder Prozess hat einen sogenannten kritischen Bereich, in dem auf die Ressource zugegriffen wird. Es darf sich jeweils nur ein Prozess im kritischen Bereich befinden. Es stehen gemeinsame Variable zur Verfügung, über die sich die Prozesse synchronisieren können. Diese Variablen sind jedoch keine Semaphore, d.h., eine atomare Operation, bei der gleichzeitig gelesen und geschrieben wird, ist nicht möglich. Wir möchten zeigen, dass der wechselseitige Ausschluß gewährleistet ist und dass gewisse Fairnessbedingungen (jeder Prozess kommt irgendwann an die Reihe) eingehalten werden. Sander Bruggink Automaten und Formale Sprachen 13 19

Lesen lernen... (Wechselseitiger Ausschluss 1. Versuch) Anwendung: Verifikation Programmverifikation mit regulären Sprachen Versuch 1: Beide Prozesse P 1, P 2 verwenden eine gemeinsame Boolesche Variable f, die mit false initialisiert wird. Programmcode für P 1, P 2 while true do 1: if (f = false?) then 2: f := true 3: Betrete kritischen Bereich... 4: Verlasse kritischen Bereich 5: f := false end end Sander Bruggink Automaten und Formale Sprachen 15 20

Lesen lernen... (Wechselseitiger Ausschluss 1. Versuch) Programmverifikation mit regulären Sprachen Anwendung: Verifikation Wir verwenden folgendes Alphabet, bestehend aus den Programm-Befehlen und den Abfragen der Booleschen Variablen: Σ = {(f := true) i, (f := false) i, (f = true?) i, (f = false?) i i {1, 2}} (Synchronisation von Prozess i mit Variable f ) {BkB i, VkB i i {1, 2}} (Prozess i betritt/verläßt kritischen Bereich). Der Index i {1, 2} gibt an, ob die jeweilige Aktion vom ersten oder vom zweiten Prozess ausgeführt wird. Sander Bruggink Automaten und Formale Sprachen 16 21

Lesen lernen... (Wechselseitiger Ausschluss 1. Versuch) Programmverifikation mit regulären Sprachen Programmverifikation mit regulären Sprachen Anwendung: Verifikation Anwendung: Verifikation Beschreibung der Abläufe eines Prozesses i als endlicher Automat: i (f = true?) i 1 5 i (f = false?) i (f := false) i VkB i i 2 4 i P i (f := true) i BkB i mit i = {(f :=true) i, (f :=false) i, (f =true?) i, (f =false?) i BkB j, VkB j } wobei j = 2, falls i = 1, und j = 1, falls i = 2. 3 i Bemerkungen: Bedeutung der Zustände 1, 2, 3, 4, 5: diese entsprechen den mit Labels markierten Programmzeilen Bedeutung der Schleifen mit Alphabetsymbolen aus i : da wir später das Kreuzprodukt bilden werden, um mehrere Automaten zu synchronisieren, dürfen Übergänge anderer Automaten, die den Prozess i nicht betreffen, nicht ausgeschlossen werden. Sie werden einfach mitgehört und haben keinen Einfluss auf die Zustandsübergänge. Sander Bruggink Automaten und Formale Sprachen 17 Sander Bruggink Automaten und Formale Sprachen 18 Etwas stimmt hier nicht! Wie sind denn i etc. definiert?! Die Indizes in der Mengenklammer müssen konsequent j sein, sonst stimmt das Mithören nicht! Kreuzprodukt : Produktmenge der Zustandsmengen wie beim Schnitt-Abschluss reg. Sprachen. 22

Lesen lernen... (Wechselseitiger Ausschluss 1. Versuch) Programmverifikation mit regulären Sprachen Programmverifikation mit regulären Sprachen Anwendung: Verifikation Anwendung: Verifikation Beschreibung der Booleschen Variable f durch einen Automaten: (f = false?) 1 (f := false) 1 (f = false?) 1 2 (f := false) 2 (f := true) 1 (f := true) 2 f (f := false) 1 (f := false) 2 F Die Sprache aller Abläufe des Gesamtsystems ist T (P 1 ) T (P 2 ) T (F ). Der Automat WA, der alle Abläufe beschreibt, die den wechselseitigen Ausschluß erfüllen (beide Prozesse sind nicht gleichzeitig im kritischen Bereich) sieht folgendermaßen aus: WA BkB 1 VkB 2 Σ\{VkB 1, BkB 2 } 2 1 3 Σ\{BkB 1, VkB 2 } (f = true?) 1 (f = true?) 2 2 (f := true) 1 (f := true) 2 VkB 1 BkB 2 Σ\{BkB 1, BkB 2 } f mit f = {BkB 1, VkB 1, BkB 2, VkB 2 }. Damit ist zu zeigen T (P 1 ) T (P 2 ) T (F ) T (WA). (Wir überprüfen das mit Hilfe des Tools Grail.) Sander Bruggink Automaten und Formale Sprachen 19 Sander Bruggink Automaten und Formale Sprachen 20 Hinweis: Grail: http://www.csd.uwo.ca/research/grail/ 23

Lesen lernen... (Wechselseitiger Ausschluss 1. Versuch) Programmverifikation mit regulären Sprachen Programmverifikation mit regulären Sprachen Anwendung: Verifikation Anwendung: Verifikation $ fmcross p1.aut < p2.aut > psynch.aut $ fmcross f.aut < psynch.aut > sys.aut $ fmcment wa.aut > wa-cment.aut $ fmcross sys.aut < wa-cment.aut > errors.aut $ fmenum errors.aut DdAXax DdAaXx DdAaxX DdaAXx [...] Die entstehende Sprache ist nicht leer! Es gibt also Abläufe, die die Bedingung des wechselseitigen Ausschluss verletzen. Einer davon ist DdAXax. Übersetzt ins ursprüngliche Alphabet: (f = false?) 2 (f = false?) 1 (f := true) 2 BkB 2 (f := true) 1 BkB 1. Grund für die Verletzung des wechselseitigen Ausschlusses: Es gibt keine atomare Schreib- und Leseoperation. Daher können beide Prozessen nacheinander die Variable auslesen, anschließend setzen beide die Variable und betreten den kritischen Bereich. Der Algorithmus ist also falsch! Sander Bruggink Automaten und Formale Sprachen 23 Sander Bruggink Automaten und Formale Sprachen 24 Wir haben also einen Fehler gegenüber der Spezifikation gefunden! Wir mussten in Grail die Eingabezeichen umdefinieren... 24

Lesen lernen... (Wechselseitiger Ausschluss 2. Versuch von Leslie Lamport) Programmverifikation mit regulären Sprachen Programmverifikation mit regulären Sprachen Anwendung: Verifikation Anwendung: Verifikation Prozess P 1 : while true do 1: f 1 := true 2: while (f 2 = true?) do skip end 3: Betrete kritischen Bereich... 4: Verlasse kritischen Bereich 5: f 1 := false end skip : Null-Operation (hat keine Auswirkungen) Prozess P 2 while true do 1: f 2 := true 2: if (f 1 = true?) then do 3: f 2 := false 4: while (f 1 = true?) do skip end else 5: Betrete kritischen Bereich... 6: Verlasse kritischen Bereich 7: f 2 := false end end Sander Bruggink Automaten und Formale Sprachen 26 Sander Bruggink Automaten und Formale Sprachen 27 Es werden zwei Boolesche Variablen benötigt, um wechselseitigen Ausschluss zu garantieren. 25

Lesen lernen... (Wechselseitiger Ausschluss 2. Versuch von Leslie Lamport) Programmverifikation mit regulären Sprachen Programmverifikation mit regulären Sprachen Anwendung: Verifikation Anwendung: Verifikation Automat für den Prozess P 1 : 1 (f 1 := true) 1 2 (f 2 = false?) 1 3 (f 2 = true?) 1 BkB 1 P 1 (f 1 := false) 1 5 VkB 1 4 Dabei gilt, dass all mögliche Aktionen von Prozess 2 enthält. Automat für den Prozess P 2 : (f 1 = true?) 2 (f 1 = false?) 2 4 (f 2 := false) 2 1 (f 2 := true) 2 2 (f 1 = true?) 2 3 (f 2 := false) 2 7 VkB 2 6 BkB 2 (f 1 = false?) 2 5 Dabei gilt, dass all mögliche Aktionen von Prozess 1 enthält. P 2 Sander Bruggink Automaten und Formale Sprachen 29 Sander Bruggink Automaten und Formale Sprachen 30 Die zugehörigen endlichen Automaten sehen schon komplizierter aus. 26

Lesen lernen... (Wechselseitiger Ausschluss 2. Versuch von Leslie Lamport) Programmverifikation mit regulären Sprachen Programmverifikation mit regulären Sprachen Anwendung: Verifikation Anwendung: Verifikation Automaten für die beiden Variablen: 1 (f 1 = false?) 2 1 (f 1 := false) 1 (f 2 = false?) 1 1 (f 2 := false) 2 (f 1 := true) 1 (f 1 := false) 1 (f 2 := true) 2 (f 2 := false) 2 (f 1 = true?) 2 2 (f 1 := true) 1 (f 2 = true?) 1 2 (f 2 := true) 2 2 F 1 F 2 1 2 1 = {(f 2 := true) 2, (f 2 := false) 2, (f 2 = true?) 1, (f 2 = false?) 1 In diesem Fall ist der wechselseitige Ausschluss erfüllt, d.h., es gilt T (P 1 ) T (P 2 ) T (F 1 ) T (F 2 ) T (WA). Überprüfung mit Grail: $ fmcross p1.aut < p2.aut > psynch.aut $ fmcross f1.aut < psynch.aut > psynch1.aut $ fmcross f2.aut < psynch1.aut > sys.aut $ fmcment wa.aut > wa-cment.aut $ fmcross sys.aut < wa-cment.aut > errors.aut $ fmenum errors.aut [keine Ausgabe] Analog für 2. BkB 1, BkB 2, VkB 1, VkB 2 Sander Bruggink Automaten und Formale Sprachen 31 Sander Bruggink Automaten und Formale Sprachen 33 27

Lesen lernen... Zusammenfassung Programmverifikation mit regulären Sprachen Anwendung: Verifikation Zusammenfassung Verifikation: Wir haben mit Hilfe von endlichen Automaten zwei Protokolle modelliert, die wechselseitigen Ausschluss realisieren sollen. Mit Hilfe der Lösungsverfahren für das Inklusions- bzw. Schnittproblem konnten wir überprüfen, ob diese Protokolle tatsächlich wechselseitigen Ausschluss realisieren. Das bedeutet: die vorgestellten Verfahren können zur Programmverifikation eingesetzt werden. Bemerkung: Bei realen Programmen hat man allerdings noch damit zu kämpfen, dass der Zustandsraum des Programms unendlich ist. Damit wird vieles unentscheidbar und muss durch approximative Verfahren gelöst werden. Sander Bruggink Automaten und Formale Sprachen 34 Moment: Gab es da nicht Unentscheidbarkeitsaussagen bei der Verifikation?! 28

Eine formalsprachliche Anwendung des PCP aus VL 10: Unter dem Schnittleerheitsproblem einer Grammatikfamilie G versteht man: Gegeben G 1, G 2 G, gilt L(G 1 ) L(G 2 ) =? Satz: Das Schnittleerheitsproblem für Typ-2-Grammatiken ist unentscheidbar. Beweisidee: Gegeben Postsches Korrespondenzproblem P über {0, 1} mit P = {(x 1, y 1 ),..., (x k, y k )} Konstruiere zwei kontextfreie Grammatiken G 1 = (N 1, T, P 1, S) und G 2 = (N 2, T, P 2, S) wie folgt:... N 1 = {S, A, B}, N 2 = {S, R}, T = {0, 1, $, a 1,..., a k } 29

Die Grammatik G 1 besitzt die Ableitungsregeln P 1 S A$B A a 1 Ax 1... a k Ax k a 1 x 1... a k x k B y r 1 Ba 1... y r k Ba k y r 1 a 1... y r k a k wobei mit w r das gespiegelte Wort zu w bezeichnet wird. Diese Grammatik G 1 erzeugt die Sprache L 1 = {a i1...a in x in...x i1 $y r j 1...y r j m a jm...a j1 n, m 1, i ν, j µ {1,..., k}} Wir führen eine zweite Grammatik G 2 mit den folgenden Regeln P 2 ein: Sie erzeugt die Sprache S a 1 Sa 1... a k Sa k R R 0R0 1R1 $ L 2 = {uv$v r u r u {a 1,..., a k }, v {0, 1} } Beide Sprachen sind übrigens sogar deterministisch kontextfrei. 30

Weitere formalsprachliche Anwendungen des PCP: Unter dem Schnittunendlichkeitsproblem einer Grammatikfamilie G versteht man: Gegeben G 1, G 2 G, gilt L(G 1 ) L(G 2 ) =? Satz: Das Schnittunendlichkeitsproblem für Typ-2-Grammatiken ist unentscheidbar. Beweisidee: Verwende gleiche Konstruktion P (G 1, G 2 ) wie soeben: P PCP es gibt eine Lösung I = (i 1,..., i n ) für P es gibt -viele Lösungen I, II, III,... für P L 1 L 2 = (L 1 L 2 P PCP) 31

Weitere formalsprachliche Anwendungen des PCP: Unter dem Schnittkontextfreiheitsproblem einer Grammatikfamilie G versteht man: Gegeben G 1, G 2 G, gilt L(G 1 ) L(G 2 ) ist vom Typ 2? Satz: Das Schnittkontextfreiheitsproblem für Typ-2-Grammatiken ist unentscheidbar. Beweis; Wieder gleiche Konstruktion P (G 1, G 2 ), setze L := L 1 L 2. Jedes Wort in L hat Form ab$c r d r, mit a = d, b = c und Index-Übereinstimmung zwischen a und b bzw. c und d Also: a ober d bekannt ab$c r d r eindeutig festgelegt! Behauptung: Falls L =, dann L ist nicht kontextfrei. 32

Annahme: L sei kontextfrei (und unendlich), d.h. Pumping-Lemma für kontextfreie Sprachen sei anwendbar, n sei die Pumpingzahl. Wähle ab$c r d r L mit n < a = d b = c Betrachte beliebige Zerlegung ab$c r d r = uvwxy mit uwy = uv 0 wx 0 y L, vx 0 und vwx n Fall (1): u a : damit a Präfix von uwy, aber b, c, d durch a festgelegt Widerspruch zu vx > 0 und uwy L. Fall (2): u < a : damit uvwx < ab und d Suffix von uwy, aber a, b, c durch d festgelegt wieder Widerspruch zu vx > 0 und uwy L. Damit also: L = L nicht kontextfrei Zusammen: P PCP L = L nicht kontextfrei P PCP L = L kontextfrei 33

Inklusionsproblem und Äquivalenzproblem sind ebenso unentscheidbar für kontextfreie Grammatiken: Nutze, dass L 1, L 2 deterministisch kontextfrei sind. Deterministisch kontextfreie Sprachen sind effektiv unter Komplementbildung abgeschlossen: Zu G 1 und G 2 kann man effektiv Grammatiken G 1 und G 2 L(G 1 ) = Komplement(L 1) und L(G 2 ) = Komplement(L 2). konstruieren mit Dann folgt L 1 L 2 = L 1 L(G 2 ) D.h. P (G 1, G 2 ) reduziert PCP auf das Inklusionsproblem kontextfreier Sprachen. Aus G 1 und G 2 konstruiere G 3 mit L(G 3 ) = L 1 L(G 2 ), dann L 1 L 2 = L 1 L(G 2 ) = L(G 2 ) L(G 3 ) = L(G 2 ) D.h. P (G 3, G 2 ) reduziert PCP auf das Äquivalenzproblem kontextfreier Sprachen. 34

Viel Erfolg bei der Prüfung! 35