72
Endliche Automaten Klaus Becker 2010

Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

Embed Size (px)

Citation preview

Page 1: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

Endliche Automaten

Klaus Becker2010

Page 2: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

2 Endliche Automaten

Page 3: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

3 Teil 1

Zustandsbasierte Modellierung

Page 4: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

4 An der Tankstelle

Quelle: http://commons.wikimedia.org/wiki/File:Hose_(PSF).png

Kennst du diese Situation? Das Auto soll aufgetankt werden. Man fährt an die erst beste freie Zapfsäule, hält die Zapfpistole in den Tank und zieht den Hebel an der Zapfpistole an. Meistens funktioniert das. Gelegentlich kommt es aber auch vor, dass (vorerst) kein Benzin aus der Zapfpistole fließt. Hat die Tankstelle kein Benzin mehr, oder ist die Zapfpistole defekt, oder ...?

Page 5: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

5 An der TankstelleDas oben gezeigte Zustandsdiagramm zeigt in vereinfachter Form, wie sich das System Zapfpistole verhält. Bei bestimmten Ereignissen wie z.B. "Hebel anziehen" reagiert das System mit Aktionen wie z.B. "Benzin fließt". Allerdings hängt das Verhalten des Systems vom aktuellen Zustand des Systems ab.

Page 6: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

6 AufgabeDas oben gezeigte Zustandsdiagramm ist nicht vollständig. Es beschreibt z.B. nicht, was geschieht, wenn man im Zustand bereit den Hebel anzieht.Es beschreibt die Wirklichkeit auch nicht ganz korrekt. Z.B. hört des Benzin irgendwann auf, in den Tank zu fließen.Mache Vorschläge, wie ein Zustandsdiagramm aussehen könnte, das die Wirklichkeit adäquater beschreibt.

Page 7: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

7 Zustandsbasierte ModellierungDas Verhalten vieler Systeme lässt sich mit Hilfe von Zuständen beschreiben. Anhängig vom jeweiligen Zustand reagiert das System auf Ereignisse mit unterschiedlichen Aktionen. Ein solches zustandsbasiertes Verhalten lässt sich mit Hilfe eines Zustandsdiagramms übersichtlich darstellen.

Page 8: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

8 Zustandsbasierte Modellierung

Zustand

Zustandsübergang

Im Zustandsdiagramm werden alle möglichen Zustände durch Kreise (Ellipsen oder abgerundete Rechtecke) dargerstellt. Oft wird ein Zustand als Anfangszustand ausgezeichnet.Ein Zustandsübergang beschreibt, wie das System auf ein Ereignis reagiert. Das System kann in einen neuen Zustand wechseln, aber auch im bestehenden Zustand verbleiben. Oft werden bei solchen Zustandsübergängen bestimmte Aktionen ausgeführt. Manchmal hängt ein Zustandsübergang auch davon ab, ob eine bestimmte Bedingung erfüllt ist.

Page 9: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

9 Simulation eines AufzugsDer Aufzug soll nur zwischen zwei Stockwerken hin- und herpendeln. In der Kabine befinden sich zwei Knöpfe, mit denen man den Aufzug steuern kann. Zusätzlich gibt es oben und unten Haltesensoren, die den Aufzug jeweils stoppen.Bevor der Aufzug (mit Hilfe eines Python-Programms) simuliert werden kann, muss das Verhalten des Aufzugs möglichst genau beschrieben / modelliert werden.

Page 10: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

10 AufgabeEntwickle ein zustandbasiertes Modell zur Beschreibung des Aufzugverhaltens.Welche Zustände hat das System?Auf welche Ereignisse reagiert das System, welche Aktionen führt es aus?

Page 11: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

11 Ein zustandsbasiertes Modell ...

Page 12: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

12 ... und seine Implementierung# Konstanten für die Zuständeq0 = 'steht unten'q1 = 'fährt aufwärts'q2 = 'steht oben'q3 = 'fährt abwärts'

# Konstanten für die Ereignissee0 = 'HaltUnten'e1 = 'HaltOben'e2 = 'TasteUnten'e3 = 'TasteOben'

# Konstanten für die Aktionena0 = 'hinauf'a1 = 'hinab'a2 = 'stopp'...

# Klasse Aufzugclass Aufzug(object): def __init__(self): self.zustand = q0

def verarbeite(self, ereignis): if self.zustand == q0: if ereignis == e0: self.zustand = q4 aktion = a2 elif ereignis == e1: self.zustand = q4 aktion = a2 # ... elif self.zustand == q1: if ereignis == e0: self.zustand = q4 aktion = a2 # ...

# Test

aufzug = Aufzug()print(aufzug.zustand)print(aufzug.verarbeite('TasteUnten'))print(aufzug.zustand)print(aufzug.verarbeite('TasteOben'))print(aufzug.zustand)print(aufzug.verarbeite('TasteUnten'))print(aufzug.zustand)

Page 13: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

13 Aufgabe# Konstanten für die Zuständeq0 = 'steht unten'q1 = 'fährt aufwärts'q2 = 'steht oben'q3 = 'fährt abwärts'

# Konstanten für die Ereignissee0 = 'HaltUnten'e1 = 'HaltOben'e2 = 'TasteUnten'e3 = 'TasteOben'

# Konstanten für die Aktionena0 = 'hinauf'a1 = 'hinab'a2 = 'stopp'...

# Klasse Aufzugclass Aufzug(object): def __init__(self): self.zustand = q0

def verarbeite(self, ereignis): if self.zustand == q0: if ereignis == e0: self.zustand = q4 aktion = a2 elif ereignis == e1: self.zustand = q4 aktion = a2 # ... elif self.zustand == q1: if ereignis == e0: self.zustand = q4 aktion = a2 # ...

# Test

aufzug = Aufzug()print(aufzug.zustand)print(aufzug.verarbeite('TasteUnten'))print(aufzug.zustand)print(aufzug.verarbeite('TasteOben'))print(aufzug.zustand)print(aufzug.verarbeite('TasteUnten'))print(aufzug.zustand)

Ergänze in der Klasse Aufzug die Methode verarbeite gemäß der oben gezeigten zustandsbasierten Verhaltensbeschreibung. Ergänze weitere Tests des Aufzugs.

Page 14: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

14 AufgabeZur grafischen Simulation des beschriebenen Aufzug lade die Datei aufzug0.txt (siehe inf-schule) herunter und ändere die Dateiendung in aufzug0.py ab. Ergänze in der Klasse Aufzug die Methode verarbeite gemäß der gezeigten zustandsbasierten Verhaltensbeschreibung. Teste das Simulationsprogramm.

Page 15: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

15 ÜbungenAufgabe:Wie funktioniert die modellierte Digitaluhr? Beschreibe es in eigenen Worten.

Page 16: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

16 ÜbungenAufgabe:Entwickle ein zustandsbasiertes Modell zur Beschreibung der Funktionsweise eines Garagentors.Zur Steuerung des Garagentors wird eine Taste auf einem Handsender benutzt. Wenn das Tor geschlossen ist, dann führt das Drücken der Taste dazu, dass der Motor das Tor öffnet. Wird während dieses Vorgangs die Taste erneut gedrückt, stoppt das Tor. Ein nochmaliges Drücken setzt das Tor in die entgegengesetzte Richtung in Bewegung. Bei anfangs geöffnetem Tor verläuft alles entsprechend umgekehrt. Wenn das Tor die obere bzw. untere Endposition erreicht hat, wird jeweils ein Kontaktschalter geschlossen und der Motor abgeschaltet.

Page 17: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

17 ÜbungenAufgabe:Der Zugang zu Parkplätzen wird oft durch Schranken geregelt. Nur, wer im Besitz eines Schlüssels ist, kann die Schranke öffnen. Das Schließen der Schranke sowie das Öffnen bei der Ausfahrt wird durch Induktionsschleifen geregelt.Entwickle ein zustandsbasiertes Modell einer Parkplatzschranke.

Page 18: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

18 ÜbungenAufgabe:Entwickle für eines der modellierten Systeme ein Simulationsprogramm.

Page 19: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

19 Teil 2

Endliche Automaten

Page 20: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

20 GetränkeautomatZustände:

z0: 0 Euro eingezahltz50: 0,50 Euro eingezahltz100: 1 Euro eingezahltz150: 1,50 Euro eingezahlt

Ereignisse / Eingaben:

e50: 50-Cent-Münze einwerfene100: 1-Euro-Münze einwerfeneKorrektur: Korrektur-Taste drückeneWare: Ware-Taste drücken

Aktionen / Ausgaben:

aNichts: nichts auswerfena50: 50-Cent-Münze auswerfena100: 1-Euro-Münze auswerfena150: 50-Cent-Münze und 1-Euro-Münze auswerfenaGetränk: Getränk auswerfen

Page 21: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

21 AufgabeZustände:

z0: 0 Euro eingezahltz50: 0,50 Euro eingezahltz100: 1 Euro eingezahltz150: 1,50 Euro eingezahlt

Ereignisse / Eingaben:

e50: 50-Cent-Münze einwerfene100: 1-Euro-Münze einwerfeneKorrektur: Korrektur-Taste drückeneWare: Ware-Taste drücken

Aktionen / Ausgaben:

aNichts: nichts auswerfena50: 50-Cent-Münze auswerfena100: 1-Euro-Münze auswerfena150: 50-Cent-Münze und 1-Euro-Münze auswerfenaGetränk: Getränk auswerfen

Wie liest man diese Tabelle? Ergänze selbst die letzte Zeile.

Page 22: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

22 AufgabeZustand: z0Eingabe: e50Ausgabe: aNichtsZustand: z50Eingabe: e50Ausgabe:Zustand: Eingabe: e100Ausgabe:Zustand: Eingabe: eWareAusgabe:Zustand: Eingabe: eKorrekturAusgabe:Zustand: Eingabe: e50Ausgabe:Zustand: Eingabe: e50Ausgabe:Zustand: Eingabe: e50Ausgabe:Zustand: Eingabe: eWareAusgabe:Zustand:

Ergänze in dem Ablaufprotokoll die fehlenden Zustände und Ausgaben.

Page 23: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

23 Fachkonzept - endlicher AutomatDer Getränkeautomat wird als Verarbeitungseinheit modelliert, die aus Eingaben - in Abhängigkeit des aktuellen Zustands - Ausgaben erzeugt und gegebenenfalls in einen neuen Zustand wechselt. Die Verarbeitungslogik dieser Verarbeitungseinheit kann mit Hilfe eines Zustandsdiagramms oder einer Zustandstabelle festgelegt werden.

Zustandstabelle Zustandsdiagramm

Page 24: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

24 Fachkonzept - endlicher AutomatEin endlicher Automat (kurz: EA) ist eine Verarbeitungseinheit, die durch folgende Bestandteile festgelegt wird: eine nichtleere, endliche Menge Z von Zuständen eine nichtleere, endliche Menge E von Eingabesymbole eine nichtleere, endliche Menge A von Ausgabesymbole eine Überführungsfunktion f: Z x E -> Z, die jedem Paar aus aktuellem Zustand und Eingabe einen Folgezustand zuordnet eine Ausgabefunktion g: Z x E -> A, die jedem Paar aus aktuellem Zustand und Eingabe eine Ausgabe zuordnet ein ausgezeichnetes Element z0 Z, der sogenannte Anfangszustand

Z = {z0, z50, z100, z150}

E = {e50, e100, eKorrektur, eWare}

A = {aNichts, a50, a100, a150, aGetränk}f: (z0, e50) -> z50; ...

formale Beschreibung eines endlichen Automaten

g: (z0, e50) -> aNichts; ...

z0 = z0

Automatentafel

Page 25: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

25 Simulation endlicher Automaten

Automatentafel

class Automat(object): def __init__(self): # Zustände self.zustaende = ('z0','z50','z100','z150') # Eingaben self.eingaben = ('e50','e100','eKorrektur','eWare') # Ausgaben self.ausgaben = ('aNichts','a50','a100','a150','aGetraenk') # Automatentafel self.f = [[(0,1),(0,2),(0,0),(0,0)], [(0,2),(0,3),(1,0),(0,1)], [(0,3),(2,2),(2,0),(0,2)], [(1,3),(2,3),(3,0),(4,0)]] # Anfangszustand self.zustand = 0 def verarbeite(self, eingabe): (ausgabe, self.zustand) = self.f[self.zustand][eingabe] return ausgabe>>> a = Automat()>>> a.zustand0>>> a.verarbeite(1)0>>> a.zustand2

Die Implementierung benutzt ein einheitliches Schema, mit dem jeder endliche Automat simuliert werden kann. Das Schema greift dabei die Präzisierung des Fachkonzepts endlicher Automat auf.

Präzisierung erweist sich hier also als Schlüssel, um eine ganze Problemklasse (Simulation zustandsbasierter Systeme) einheitlich zu bearbeiten.

Page 26: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

26 Simulation endlicher Automaten

Automatentafel

class Automat(object): def __init__(self): self.zustaende = ('z0','z50','z100','z150') self.eingaben = ('e50','e100','eKorrektur','eWare') self.ausgaben = ('aNichts','a50','a100','a150','aGetraenk') self.f = [[(0,1),(0,2),(0,0),(0,0)], [(0,2),(0,3),(1,0),(0,1)], [(0,3),(2,2),(2,0),(0,2)], [(1,3),(2,3),(3,0),(4,0)]] self.zustand = 0 def verarbeite(self, eingabeString): if eingabeString in self.eingaben: eingabe = list(self.eingaben).index(eingabeString) (ausgabe, self.zustand) = self.f[self.zustand][eingabe] ausgabeString = self.ausgaben[ausgabe] else: ausgabeString = 'keine Verarbeitung möglich' return ausgabeString def getZustand(self): return self.zustaende[self.zustand]>>> a = Automat()>>> a.getZustand()'z0'>>> a.verarbeite('e50')'aNichts'

Page 27: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

27 ÜbungenAufgabe:Beschreibe das abgebildete zustandsbasierte Modell als endlichen Automaten. Gibt hierzu die Bestandteile des endlichen Automaten genau an.

Page 28: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

28 ÜbungenAufgabe:Entwickle analog zum Simulationsprogramm für den Getränkeautomaten ein Simulationsprogramm für den Aufzug.

Page 29: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

29 Teil 3

Spracherkennung mit endlichen Automaten

Page 30: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

30 ZahldarstellungDieser Automat verarbeitet Eingaben, erzeugt aber keine Ausgaben. An den Pfeilen zur Darstellung der Zustandsübergänge sind (mit Komma abgetrennt) nur die Eingabezeichen aufgelistet, die den jeweiligen Zustandsübergang bewirken. Es sind aber keine zugehörigen Ausgabezeichen aufgeführt.Einige Zustände sind zudem durch Doppelkreise hervorgehoben. Diese Zustände haben eine besondere Bedeutung. Wenn der Automat bei der Verarbeitung von Eingabefolgen in einen solchen Zustand gerät, dann gilt die Eingabefolge als akzeptiert, ansonsten als nicht akzeptiert.

Page 31: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

31 Aufgabe(a) Betrachte die folgenden Zeichenfolgen als Eingabefolgen, die vom oben vorgegebenen Automaten verarbeitet werden sollen. Welche dieser Zeichenfolgen werden vom Automaten akzeptiert, welche nicht?8100074.21.2.34.0.23.670.001(b) Versuche allgemein in Worten zu beschreiben, welche Zeichenfolgen vom Automaten akzeptiert werden.

Page 32: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

32 Fachkonzept - AkzeptorEin Akzeptor bzw. erkennender Automat ist eine Verarbeitungseinheit, die durch folgende Bestandteile festgelegt wird: eine nichtleere, endliche Menge Z von Zuständen eine nichtleere, endliche Menge E von Eingabesymbole eine Überführungsfunktion f: Z x E -> Z, die jedem Paar aus aktuellem Zustand und Eingabe einen Folgezustand zuordnet ein ausgezeichnetes Element z0 Z, der sogenannte Anfangszustand einer Menge ZE Z von Endzuständen

Z = {q0, q1, q2, q3, q4, q5, q6}

E = {., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

f: (q0, 0) -> q2; (q0, 1) -> q1; ...

z0 = q0 ZE = {q2, q3, q5}

Page 33: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

33 Fachkonzept - AkzeptorDie Menge E der Eingabesymbole eines Akzeptors A = (Z, E, f, z0, ZE) kann als Alphabet einer Sprache aufgefasst werden.Unter der Sprache eines Akzeptors versteht man die Menge aller Wörter über dem Alphabet E, die den Automaten vom Anfangszustand z0 in einen Endzustand aus ZE überführen.Wenn A = (Z, E, f, z0, ZE) ein gegebener Akzeptor ist, dann schreiben wir L(A) für die Sprache des Akzeptors A.

= {., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

L(A) = {0, 1, 2, ..., 12.375, ...}

Page 34: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

34 Fachkonzept - AkzeptorEin Akzeptor ist also eine Verarbeitungseinheit, die Symbole eines Eingabeworts verarbeitet und sich dabei stets in einem bestimmten Zustand befindet. Anhand des aktuellen Zustands kann dann festgestellt werden, ob das zu verarbeitende Eingabewort akzeptiert wird oder nicht.

Page 35: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

35 Experimente mit JFlapBeachte bei der Eingabe des Automaten, dass Zustandsübergänge zu verschiedenen Eingaben so wie in der folgenden Abbildung erzeugt werden. Eine Auflistung der Eingaben führt hier nicht zum gewünschten Verhalten.

Page 36: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

36 ÜbungenPython lässt eine Vielzahl an Darstellungen bei Fließkommazahlen zu:4.24.0.001.67007....(a) Teste selbst, welche Darstellungen bei Fließkommazahlen in Python erlaubt sind und welche nicht. Eine exakte Beschreibung der möglichen Zahldarstellungen findest du in den gezeigten Syntaxdiagrammen.(b) Entwickle einen Automaten ohne Ausgaben, der die in Python erlaubten Fließkommazahlen (ohne Exponent / mit Exponent) akzeptiert.

Page 37: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

37 ÜbungenEmoticons:Entwickle einen Automaten ohne Ausgabe, der Emoticons für ein lachendes Gesicht erkennt. (siehe http://de.wikipedia.org/wiki/Emoticon)

Page 38: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

38 ÜbungenMustererkennung in Texten:Oft kommt es vor, dass man einen Text daraufhin untersuchen muss, ob er ein bestimmtes Textmuster enthält (z.B. ob eine Webadresse die Zeichenkette "sex" enthält).Das soll in vereinfachter Form hier durchgespielt werden.Entwickle einen endlichen Automaten ohne Ausgaben, der Binärzahlen daraufhin untersucht, ob sie(a) die Zeichenkette 101(b) die Zeichenkette 1011enthalten.Warum ist Fall (b) schwieriger als Fall (a)?Statt Binärzahlen kannst du auch Wörter über dem Alphabet = {a, i, n} betrachten, die das Teilwort (a) "anni" bzw. (b) "nina" enthalten.

Page 39: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

39 Ausblick - TheoriebildungWir betrachten die Sprache LEMail der stark vereinfachten E-Mail-Adressen, die durch folgende Syntaxdiagramme festgelegt wird. Beachte, dass in diesen Adressen nur die Symbole b, @ und . vorkommen dürfen. Eine nach diesen Syntaxdiagrammen gültige E-Mail-Adresse ist z.B. [email protected]:Gibt es einen Akzeptor A, der die Sprache LEMail erkennt?Aufgabe:Versuche, einen Akzeptor A mit L(A) = LEMail zu konstruieren.

Page 40: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

40 Ausblick - TheoriebildungWir betrachten die Sprache LKlammer der stark vereinfachten Klammerausdrücke, die durch folgende Syntaxdiagramme festgelegt wird. Zur Sprache LKlammer gehören also alle Klammerausdrücke der Gestalt ((())), bei denen nach einer Folge öffnender Klammern genau so viele schließende Klammern folgen.Problem:Gibt es einen Akzeptor A, der die Sprache LKlammer erkennt?Aufgabe:Versuche, einen Akzeptor A mit L(A) = LKlammer zu konstruieren.

Page 41: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

41 Teil 4

Endliche Automaten und reguläre Sprachen

Page 42: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

42 Fallstudie - BinärzahlenZusammenhänge zwischen Sprachen und Automaten lassen sich sehr gut mit dem Werkzeug JFlap erkunden. In einem ersten Schritt werden solche Zusammenhänge durch Experimente erkundet. In einen zweiten Schritt werden die Zusammenhänge dann aufgegriffen und präzisiert. Als Untersuchungsgegenstand wird in diesem Abschnitt die Sprache der Binärzahlen gewählt.

Binärzahlen sind Zahlen, die im Dualsystem / Zweiersystem dargestellt sind und daher nur die Symbole 0 und 1 zur Zahldarstellung benutzen. Die folgende Zahlenreihe beschreibt, wie man im Dualsystem / Zweiersystem zählt:0, 1, 10, 11, 100, 101, 110, 111, 1000, ...Binärzahlen sind Wörter über dem Alphabet Σ = {0, 1}. Die Sprache der Binärzahlen LBin besteht aus sämtlichen Wörtern über Σ = {0, 1}, die eine Binärzahl darstellen:LBin = {0, 1, 10, 11, 100, 101, 110, 111, 1000, ...}

Page 43: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

43

JFlap: Vom Automaten zur Grammatik

Aufgabe: Wie wird die Grammatik aus dem Akzeptor erzeugt? Wenn du es verstanden hast, dann gib einen Automaten vor, erzeuge selbst die zugehörige Grammatik und überprüfe deinen Vorschlag.

Page 44: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

44

JFlap: Von der Grammatik z. Automaten

Aufgabe: Wie der Akzeptor aus der Grammatik erzeugt? Wenn du es verstanden hast, dann gib eine Grammatik vor, erzeuge selbst den zugehörigen Akzeptor und überprüfe deinen Vorschlag.

Page 45: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

45 Reguläre Sprachen

S -> 0BB -> λS -> 1AA -> 0AA -> 1AA -> λ

Zum erkennenden Automaten A lässt sich die Grammatik GA erzeugen. Es fällt auf, dass alle Produktionen dieser Grammatik GA eine bestimmte Struktur haben.

S -> 0B

Terminalsymbol

Nichtterminalsymbol

Nichtterminalsymbol

A -> λ

Nichtterminalsymbol

leeres Wort

Page 46: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

46 Fachkonzept - reguläre SpracheEine Produktion u -> v heißt regulär genau dann, wenn gilt: Die linke Seite u der Produktion ist ein Nichtterminalsymbol. Die rechte Seite v der Produktion besteht aus einem Terminalsymbol gefolgt von einem Nichtterminalsymbol, oder sie besteht nur aus dem leeren Wort.Eine Grammatik heißt regulär genau dann, wenn alle Produktionen der Grammatik regulär sind.

Eine Sprache heißt regulär genau dann, wenn es eine reguläre Grammatik gibt, die diese Sprache erzeugt.

S -> 0BB -> λS -> 1AA -> 0AA -> 1AA -> λ

S -> 0S -> 1RR -> ZRR -> λZ -> 0Z -> 1

reguläre Grammatik für LBin

nicht-reguläre Grammatik für LBin

LBin = {0, 1, 10, 11, 100, 101, 110, 111, ...}

Beachte, dass es zu einer regulären Sprache durchaus nicht-reguläre Grammatiken geben kann. Um nachzuweisen, dass eine Sprache regulär ist, reicht es aus, eine reguläre Grammatik zur Sprache zu konstruieren. Zu einer Sprache kann man stets eine Vielzahl von Grammatiken angeben. Auch wenn man noch keine reguläre Grammatik zu einer Sprache gefunden hat, so heißt das noch nicht, dass die Sprache nicht-regulär ist.

Page 47: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

47 Nichtdeterministischer Automat

A -> 1BA -> 0CA -> 1CC -> λB -> 0BB -> 1BB -> 0DB -> 1DD -> λ

Zur Grammatik G lässt sich ein Automat AG erzeugen. Es fällt auf, dass dieser Automat kein endlicher Automat im bisherigen Sinne ist.

nichtdeterministische

Zustandsübergänge

Zustandsübergänge ohne Eingaben

Page 48: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

48

Fachkonzept - Nichtdeterm. Automat

Einen endlichen Automaten, der nichtdeterministische Zustandsübergänge und λ-Übergänge zulässt, nennt man nichtdeterministischen endlichen Automaten (kurz: NFA für nondeterministic finite automaton). Entsprechend nennt man einen endlichen Automaten, der keine nichtdeterministische Zustandsübergänge und keine λ-Übergänge enthält, einen deterministischen endlichen Automaten (kurz: DFA für deterministic finite automaton).

nichtdeterministischer endlicher

Automat

deterministischer endlicher Automat

Page 49: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

49 Spracherkennung mit einem NFASpracherkennung mit nichtdeterministischen Automaten funktioniert so ähnlich wie Spracherkennung mit deterministischen Automaten. Man muss nur alle möglichen Zustandsübergänge für eine Eingabe durchspielen. Wenn nach der Verarbeitung des gesamten Eingabeworts ein Endzustand erreicht werden kann, dann gilt die Eingabe als akzeptiert, ansonsten als nicht akzeptiert.

Page 50: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

50

Zusammenhang zwischen DFA und NFA

Satz (Zusammenhang zwischen deterministischen und nichtdeterministischen Automaten):Zu jedem nichtdeterministischen erkennenden Automaten gibt es einen deterministischen erkennenden Automaten, der dieselbe Sprache erkennt. Man kann den deterministischen erkennenden Automaten automatisiert aus dem nichtdeterministischen erkennenden Automaten erzeugen.

Page 51: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

51

Theorie - reg. Sprachen und Automaten

Satz (Zusammenhang zwischen deterministischen Automaten und regulären Sprachen):Die Sprache eines deterministischen erkennenden Automaten (Akzeptors) ist regulär: Zum deterministischen erkennenden Automaten gibt es eine reguläre Grammatik, die dieselbe Sprache erzeugt, die vom Automaten erkannt wird. Man kann diese reguläre Grammatik automatisiert erzeugen.

S -> 0BB -> λS -> 1AA -> 0AA -> 1AA -> λ

Page 52: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

52

Theorie - reg. Sprachen und Automaten

Satz (Zusammenhang zwischen regulären Sprachen und nichtdeterministischen Automaten):Zu jeder regulären Sprache gibt es einen nichtdeterministischen erkennenden Automaten, der diese Sprache erkennt. Der nichtdeterministische erkennende Automat kann automatisiert aus einer reguläre Grammatik zur regulären Sprache erzeugt werden.

A -> 1BA -> 0CA -> 1CC -> λB -> 0BB -> 1BB -> 0DB -> 1DD -> λ

Satz (Zusammenhang zwischen regulären Sprachen und deterministischen Automaten):Zu jeder regulären Sprache gibt es einen deterministischen erkennenden Automaten, der diese Sprache erkennt. Der deterministische erkennende Automat kann automatisiert aus einer reguläre Grammatik zur regulären Sprache erzeugt werden.

Page 53: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

53 Anwendung der TheorieProblem:Gibt es einen Akzeptor A, der die Sprache LEMail (die durch die Syntaxdiagramme festgelegt wird) erkennt?

Lösung:Nach dem Satz über den Zusammenhang zwischen regulären Sprachen und deterministischen Automaten gibt es zu dieser Grammatik einen deterministischen erkennenden Automaten, der die von der Grammatik erzeugte Sprache erkennt. Dieser Automat kann auch Schritt für Schritt (z.B. mit Hilfe von JFlap) erzeugt werden (siehe Übungen).

E -> U@DU -> ND -> STS -> N.S -> N.ST -> bbN -> BN -> BNB -> b

E -> bUU -> bUU -> @SS -> bBB -> bBB -> .SB -> .TT -> bZZ -> b

E -> bUU -> bUU -> @SS -> bBB -> bBB -> .SB -> .TT -> bZZ -> bXX -> λ

regulär

Page 54: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

54 Anwendung der TheorieProblem:Gibt es einen Akzeptor A, der die Sprache LEMail (die durch die Syntaxdiagramme festgelegt wird) erkennt?

Lösung:Der Automat zur Erkennung von LEMail ist nichtdeterministisch. Nach dem Satz über den Zusammenhang zwischen deterministischen und nichtdeterministischen Automaten gibt es einen deterministischen erkennenden Automaten, der dieselbe Sprache erkennt. Dieser Automat kann auch Schritt für Schritt (z.B. mit Hilfe von JFlap) erzeugt werden (siehe Übungen).

NFA

Page 55: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

55 ÜbungenErzeuge mit JFlap einen Akzeptor A, der die Sprache LEMail (die durch die Syntaxdiagramme festgelegt wird) erkennt.

Page 56: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

56 ÜbungenMustererkennung in Texten:Oft kommt es vor, dass man einen Text daraufhin untersuchen muss, ob er ein bestimmtes Textmuster enthält (z.B. ob eine Webadresse die Zeichenkette "sex" enthält).Das soll in vereinfachter Form hier durchgespielt werden.Entwickle einen endlichen Automaten ohne Ausgaben, der Binärzahlen daraufhin untersucht, ob sie(a) die Zeichenkette 101(b) die Zeichenkette 1011enthalten.Warum ist Fall (b) schwieriger als Fall (a)?Statt Binärzahlen kannst du auch Wörter über dem Alphabet = {a, i, n} betrachten, die das Teilwort (a) "anni" bzw. (b) "nina" enthalten.

Page 57: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

57

JFlap: Vom reg. Ausdruck z. Automaten

JFlap kann aus einem regulären Ausdruck einen endlichen Automaten erzeugen. Der Erzeugungsprozess ist bei komplexeren regulären Ausdrücken schwer zu durchschauen. Einfacher geht das, wenn man nur Teilausdrücke von Jflap verarbeiten lässt, z.B. die regulären Ausdrücke 10 (als Beispiel für eine Konkatenation), 0+1 (als Beispiel für eine Alternative) und 1* (als Beispiel für eine Iteration). Probiere das einmal aus und versuche, das Umwandlungsverfahren zu beschreiben.

Page 58: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

58

JFlap: Vom Automaten z. reg. Ausdruck

JFlap kann ebenfalls aus einem endlichen Automaten einen regulären Ausdruck erzeugen. Probiere das einmal aus.

Page 59: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

59

Vom regulären Ausdruck z. Automaten

Ø ist ein regulärer Ausdruck.

λ ist ein regulärer Ausdruck.

Er beschreibt die leere Wortmenge {}.

Er beschreibt die Wortmenge {λ}, in der nur das leere Wort vorkommt.

Für jedes a Σ ist a ein regulärer Ausdruck.

Der reguläre Ausdruck a beschreibt die Wortmenge {a}.

Wenn α und β reguläre Ausdrücke sind, dann ist auch die Konkatenation αβ ein regulärer Ausdruck.

Wenn α die Wortmenge A und β die Wortmenge B beschreibt, dann beschreibt die Konkatenation αβ die Menge {ab | a A und b B} aller Wörter, die mit einem Wort aus A beginnen und mit einem Wort aus B enden.

Page 60: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

60

Vom regulären Ausdruck z. Automaten

Wenn α und β reguläre Ausdrücke sind, dann ist auch die Alternative α+β ein regulärer Ausdruck.

Wenn α die Wortmenge A und β die Wortmenge B beschreibt, dann beschreibt die Alternative α+β die Menge {w | w A oder w B} aller Wörter, die in A oder in B vorkommen.

Wenn α ein regulärer Ausdruck ist, dann ist auch die Iteration α* ein regulärer Ausdruck.

Wenn α die Wortmenge A beschreibt, dann beschreibt die Iteration α* die Menge A* aller Wörter, die durch endlich-maliges Aneinanderfügen von Wörtern aus A entstehen.

Page 61: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

61

Theorie - reg. Ausdrücke u. Automaten

Satz (Zusammenhang zwischen regulären Ausdrücken u. (nicht)deterministischen Automaten):Zu jedem regulären Ausdruck gibt es einen nichtdeterministischen erkennenden Automaten (und folglich auch einen deterministischen erkennenden Automaten), der die vom regulären Ausdruck beschriebene Sprache erkennt. Der (nicht)deterministische erkennende Automat kann automatisiert aus dem regulären Ausdruck erzeugt werden.

0+1(0+1)*

Page 62: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

62

Theorie - reg. Ausdrücke u. Automaten

Satz (Zusammenhang zwischen (nicht)deterministischen Automaten u. regulären Ausdrücken):Zu jedem nichtdeterministischen erkennenden Automaten (und folglich auch deterministischen erkennenden Automaten) gibt es einen regulären Ausdruck, der die vom (nicht)deterministische Automat erkannte Sprache beschreibt. Der reguläre Ausdruck kann automatisiert aus dem erkennenden Automaten erzeugt werden.Satz (über reguläre Sprachen und endliche Automaten):Die Klasse der Sprachen, die mit einer regulären Grammatik beschrieben werden können, ist identisch mit der Klasse der Sprachen, die mit einem regulären Ausdruck beschrieben werden können, ebenso mit der Klasse der Sprachen, die von deterministischen endlichen Automaten erkannt werden können, und ebenso mit der Klasse der Sprachen, die von nichtdeterministischen endlichen Automaten erkannt werden können.

Page 63: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

63 ÜbungenEntwickle systematischen einen endlichen Automaten, die die Sprache zum regulären Ausdruck a(a+b)*ab erkennt.

Page 64: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

64 ÜbungenTeste mit Hilfe von JFlap die Erzeugung von regulären Ausdrücken aus gegebenen endlichen Automaten.

Page 65: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

65 Aufwand bei der SpracherkennungGrammatiken und reguläre Ausdrücke dienen zur Beschreibung von Sprachen. Sie sind nicht auf schnelle Spracherkennung optimiert. Das zeigt sich, wenn man Experimente mit JFlap durchführt.

Page 66: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

66 Aufwand bei der SpracherkennungWenn man einen deterministischen endlichen Automaten zur Spracherkennung benutzt, dann erhält man ohne Wartezeiten direkt eine Rückmeldung.

Page 67: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

67 Grenzen von endlichen AutomatenProblem: Gesucht ist ein endlicher Automat, der die der Klammerausdrücke erkennt.

Aok(((())))

Fehler((())

Versuche, einen solchen endlichen Automaten A zu konstruieren, scheitern an der Schwierigkeit, die Anzahl der öffnenden Klammern im Automaten mitzuzählen. Es scheint, dass diese Schwierigkeit bei endlichen Automaten - die ja eine feste Anzahl von Zuständen haben - unüberwindbar ist. Die folgenden Argumentationen zeigen, dass das tatsächlich der Fall ist.

aaaabbbb

aaabb

Page 68: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

68 Grenzen von endlichen AutomatenGibt es einen endlichen Automaten, der L = {anbn | n = 1, 2, 3, ...} erkennt?

DFAok(((())))

Fehler((())

Angenommen, es gibt einen endlichen Automaten A mit L(A) = L. Dieser Automat A hat eine feste Anzahl Zustände, etwa m = 15 (die Zahl 15 ist hier willkürlich gewählt, sie spielt für die Argumentation keine Rolle). Wie wählen nun ein Wort w = akbk aus L = {anbn | n = 1, 2, 3, ...} aus mit k > m, etwa k = 16. Bei der Abarbeitung des Wortes w = akbk muss bereits bei der Verarbeitung der 16 a's mindestens ein Zustand z mindestens zweimal durchlaufen werden, denn es gibt mehr a's als Zustände. Wir nehmen einmal an, dass der Zustand z mit dem dritten a und mit dem siebten a erreicht wird. Für die folgende Argumentation ist nicht entscheidend, mit welchen a's man z erreicht, sondern nur, dass z zweimal durchlaufen wird. Es entsteht eine Schleife, die erst mit dem ersten b wieder verlassen wird. Wie die 16 b's den Automaten in einen Endzustand bringen, ist für die Argumentation ohne Belang.

aaaabbbb

aaabb

Page 69: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

69 Grenzen von endlichen AutomatenDie folgende Grafik soll die Situation verdeutlichen:- A hat m Zustände (hier m = 15).- A akzeptiert w = akbk mit k > m (hier w = a16b16).- Bei d. Verarbeitung des a-Anfangsteils von w wird ein Zustand mindestens zweimal durchlaufen werden (hier wird q3 insgesamt 4 mal durchlaufen).

Weitere spezielle Eigenschaften von A, die in der Grafik zu erkennen sind, sind für den Beweisgang nicht von Bedeutung.

Grafik entnommen aus: http://hsg.region-kaiserslautern.de/faecher/inf/material/automaten/anbn/index.php

Page 70: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

70 Grenzen von endlichen AutomatenDem Bild kann man direkt entnehmen, dass neben w = a16b16 auch andere Wörter wie a4b16 (Schleife wurde nicht durchlaufen) oder auch a8b16 (Schleife wurde einmal durchlaufen) akzeptiert werden. Der Automat akzeptiert folglich auch Wörter, die nicht zu L = {anbn | n = 1, 2, 3, ...} gehören. Das steht aber im Widerspruch zur Annahme, dass der Automat A die Sprache L = {anbn | n = 1, 2, 3, ...} erkennt. Da die Annahme, dass es einen endlichen Automaten gibt, der die Sprache L = {anbn | n = 1, 2, 3, ...} erkennt, zu einem Widerspruch führt, muss die Annahme falsch sein.

Page 71: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

71 Grenzen von endlichen AutomatenSatz (über die Grenzen von endlichen Automaten):Die Sprache L = {anbn | n = 1, 2, 3, ...} kann nicht von einem endlichen Automaten erkannt werden. Sie ist also nicht regulär.

Page 72: Endliche Automaten Klaus Becker 2010. 2 Endliche Automaten

72 LiteraturhinweiseF. Gasper, I. Leiß, M. Spengler, H. Stimm: Technische und theoretische Informatik. Bsv 1992.E. Modrow: Automaten, Schaltwerke, Sprachen. Dümmlers Verlag 1988.R. Baumann: Informatik für die Sekundarstufe II, Band 2. Klett-Verlag 1993.Informatik heute, Band 2. Schroedel-Verlag 1988.U. Schöning: Theoretische Informatik – kurzgefasst. Spektrum Akademischer Verlag 2001.J. E. Hopcroft / J. D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie. Addison-Wesley 1988.S. H. Rodger, T. W. Finley: JFLAP. Jones and Bartlett Publishers 2006....Die Darstellung hier orientiert sich an den Materialien auf den Webseiten:http://www.inf-schule.de