1 / 79

Theorie formaler Sprachen

Theorie formaler Sprachen. Klaus Becker 2004. Formale Sprachen und Automaten. Reguläre Sprachen. Endliche Automaten. Kontextfreie Sprachen. Kellerautomaten. Kontextsensitive Sprachen. Linear beschränkte TM. Allgemeine Sprachen. Turingmaschinen. Teil 1. Reguläre Sprachen.

kyria
Télécharger la présentation

Theorie formaler Sprachen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Theorie formaler Sprachen Klaus Becker 2004

  2. Formale Sprachen und Automaten Reguläre Sprachen Endliche Automaten Kontextfreie Sprachen Kellerautomaten Kontextsensitive Sprachen Linear beschränkte TM Allgemeine Sprachen Turingmaschinen

  3. Teil 1 Reguläre Sprachen

  4. Festlegung formaler Sprachen B  zNN  0 N  1N  0N N  1N Grammatik Automat Zielsetzung Ziel ist es, verschiedene Möglichkeiten zur Festlegung formaler Sprachen zu vergleichen.

  5. Die Sprache der Zustandsbezeichner (Vereinfachte) Zustandsbezeichner z0 z10 z01101 z000000 Regeln zur Bildung vereinfachter Zustandsbezeichner /1/ Der Bezeichner beginnt mit einem z. /2/ Danach kommt beliebig oft, aber mindestens einmal eine der Ziffern 0 oder 1.

  6. Grammatik (Vereinfachte) Zustandsbezeichner z0 z10 z01101 z000000 Grammatikregeln S  zAA  0A  1A  0AA  1A

  7. Übersetzung: Grammatik  Automat S  zAA  0A  1A  0AA  1A

  8. Übersetzung: Automat  Grammatik B  A  0BA  1BS  zAA  1AA  0A

  9. Exkurs: Nichtdeterministische Automaten Wahlmöglichkeit Wahlmöglichkeit Bei einem nichtdeterministischen Automaten besteht Wahlfreiheit: Der Automat kann bei einer gegebenen Eingabe von einem Zustand in verschiedene Folgezustände überführt werden. Bei einem deterministischen Automaten ist genau festgelegt, in welchen Folgezustand der Automat bei einer gegebenen Eingabe von einem Zustand aus überführt wird.

  10. Exkurs: Nichtdeterministische Automaten Unter der Sprache eines nichtdeterministischen Automaten versteht man die Menge aller Wörter (über dem Alphabet der Eingabezeichen), die den Automaten vom Anfangszustand (allg. von einem Anfangszustand) in einen Endzustand überführen können.

  11. Exkurs: Nichtdeterministische Automaten Das Teilwort z00 kann den Automaten in die Zustände q1 und q2 überführen. Wird das nächste Zeichen 1 verarbeitet, so erweist sich die bisherige Überführung in q2 als Sackgasse (rot). Die Verarbeitung von q1 aus führt in q1 (grau) oder q2 (grün).

  12. Überführung: NFA  DFA nichtdeterministischer Automat (NFA) deterministischer Automat (DFA)

  13. Äquivalenzsatz Satz (Rabin, Scott) Zu jedem nichtdeterministischen Automaten gibt es einen deterministischen Automaten, der dieselbe Sprache erkennt. Bemerkungen: Da jeder deterministische Automat auch ein nichtdeterministischer Automat ist, gilt trivialerweise auch die Umkehrung: Zu jedem deterministischen Automaten gibt es einen nichtdeterministischen Automaten, der dieselbe Sprache erkennt. Deterministische und nichtdeterministische Automaten erkennen somit dieselben Sprachen.

  14. Beweisidee Jede Menge von Zuständen des NFA ergibt einen neuen Zustand des DFA. Nicht benötigte Zustände werden weggelassen.

  15. Zusammenhang: Grammatik – Automat Grammatik  NFA NFA  Grammatik S  zAA  0A  1A  0AA  1A B  A  0BA  1BS  zAA  1AA  0A Die Übersetzung Grammatik  NFA bzw. NFA  Grammatik funktioniert nur, wenn die Grammatikregeln eine sehr einfache Gestalt haben: - Auf der linken Seite steht ein Nichtterminalsymbol.- Auf der rechten Seite steht genau ein Terminalsymbol oder ein Terminalsymbol gefolgt von einem Nichtterminalsymbol.

  16. Reguläre Grammatiken Eine Grammatik heißt regulär genau dann, wenn für jede Regel gilt: - Auf der linken Seite steht ein Nichtterminalsymbol.- Auf der rechten Seite steht genau ein Terminalsymbol oder ein Terminalsymbol gefolgt von einem Nichtterminalsymbol. Eine Sprache heißt regulär genau dann, wenn sie mit Hilfe einer regulären Grammatik beschrieben werden kann. Beispiele für reguläre Grammatikregeln: A  cA  aBA  cA Beispiele für nicht-reguläre Grammatikregeln: A  aBaAB  c

  17. Äquivalenzsatz Grammatik  NFA NFA  Grammatik S  zAA  0A  1A  0AA  1A B  A  0BA  1BS  zAA  1AA  0A Satz Jede durch einen endlichen Automaten erkennbare Sprache ist regulär. Jede reguläre Sprache kann durch einen endlichen Automaten erkannt werden.

  18. Überführung: NFA  RE (z((1+0)*))(0+1)

  19. Überführung: RE  NFA (z((1+0)*))(0+1)

  20. Äquivalenzsatz Satz (Kleene) Jede durch einen endlichen Automaten erkennbare Sprache kann durch einen regulären Ausdruck beschrieben werden. Jede durch einen regulären Ausdruck beschreibbare Sprache kann durch einen endlichen Automaten erkannt werden.

  21. Beschreibung regulärer Sprachen Folgende Sprachbeschreibungskonzepte sind äquivalent: - deterministische endliche Automaten - nichtdeterministische endliche Automaten - reguläre Grammatiken - reguläre Ausdrücke (z((1+0)*))(0+1) S  zAA  0A  1A  0AA  1A

  22. Übungen Aufgabe 1Wir betrachten die Sprache der Wörter über dem Alphabet {a,b}, die mit a beginnen und mit b enden. Zeigen Sie, dass diese Sprache regulär ist. Entwerfen Sie zu dieser Sprache eine reguläre Grammatik, einen endlichen Automaten und einen regulären Ausdruck. Aufgabe 2Wir betrachten die Sprache der Wörter über dem Alphabet {a,b,c}, die nach jedem a genau ein b enthalten. Zeigen Sie, dass diese Sprache regulär ist. Entwerfen Sie zu dieser Sprache eine reguläre Grammatik, einen endlichen Automaten und einen regulären Ausdruck. Aufgabe 3Wir betrachten die Sprache der korrekt gebildeten ganzen Zahlen. Hierzu gehören z. B. 0, 3, +3, -3. Zeigen Sie, dass diese Sprache regulär ist.

  23. Teil 2 Kontextfreie Sprachen

  24. Klammersprachen Vereinfachte Zustandsmengen ATag <a> <zm> <z>off</z> <z>low</z> <z>high</z> </zm> <az> <z>off</z> </az> ...</a> Elementliste Element ETag Ein Element besteht aus einem Anfangstag, einem Bezeichner oder einer Elementliste und einem passenden Endtag.

  25. Klammersprachen Vereinfachte Zustandsmengen <a> <zm><z>off</z><z>low</z><z>high</z></zm> <az><z>off</z></az> ...</a> Grammatik Terminalsymbole: '<', '>', '/', 'a', 'b', 'c', 'd', ... Startsymbol: <Element> Produktionen: <Abc> ::= 'a' | 'b' | 'c' | 'd' | ... <Bezeichner> ::= <Abc> | <Abc> <Bezeichner><ATag> ::= '<' <Bezeichner> '>' <ETag> ::= '<' '/' <Bezeichner> '>' <Element> ::= <ATag> <Bezeichner> <ETag> [*] <Element> ::= <ATag> <ElementListe> <ETag> [*] <ElementListe> ::= <Element> | <Element> <ElementListe> [*] Anfangs- und Endtag müssen zusammenpassen

  26. Klammersprachen XML mit vereinfachten Tags ATag < < <off> <low> <high> > < <off> > ...> <a> <zm> <z>off</z> <z>low</z> <z>high</z> </zm> <az> <z>off</z> </az> ...</a> Elementliste Element ETag Terminalsymbole: '<', '>', 'a', 'b', 'c', 'd', ... Startsymbol: <Element> Produktionen: <Abc> ::= 'a' | 'b' | 'c' | 'd' | ... <Bezeichner> ::= <Abc> | <Abc> <Bezeichner><Element> ::= '<' <Bezeichner> '>' | '<' <ElementListe> '>' <ElementListe> ::= <Element> | <Element> <ElementListe>

  27. Klammersprachen XML mit vereinfachten Tags ohne Inhalte < < <> <> <> > < <> > ...> < < <off> <low> <high> > < <off> > ...> Terminalsymbole: '<', '>' Startsymbol: <Element> Produktionen: <Element> ::= '<' '>' | '<' <ElementListe> '>' <ElementListe> ::= <Element> | <Element> <ElementListe>

  28. Klammersprachen Klammer auf, Klammer zu L = {anbn | n  1} < < <> >> aaabbb Terminalsymbole: '<', '>' Startsymbol: <Element> Produktionen: <Element> ::= '<' '>' | '<' <Element> '>' Terminalsymbole: a, b Startsymbol: S Produktionen: S ::= ab | aSb

  29. Erkennen von Klammersprachen Problem: Gesucht ist ein endlicher Automat, der Klammersprachen erkennt. < < <> <> <> > < <> >> << <<<>>>> EA ok Fehler

  30. Erkennen von Klammersprachen Schwierigkeit: Der endliche Automat muss sich merken, wie viele Klammern geöffnet sind. Zum Merken hat ein EA nur Zustände zur Verfügung. Mit endlich vielen Zuständen kann man sich aber nicht beliebig viele geöffnete Klammern merken. << <<<>>>> EA Fehler

  31. Grenzen des endlichen Automaten Satz Es gibt keinen endlichen Automaten, der die Klammersprache L = {anbn | n  1} akzeptiert. Annahme: Es gibt einen endlichen Automaten A, der L akzeptiert. A hat endliche viele Zustände. m bezeichne die Anzahl dieser Zustände. Wir betrachten jetzt ein Wort w = akbk mit k > m. Das Wort w hat also einen Anfangsteil, der mehr a‘s enthält als A Zustände hat. Bei der Verarbeitung des a-Anfangsteils von w muss zwangsläufig mindestens ein Zustand von A mindestens zweimal durchlaufen werden. Es ergibt sich folgende Situation: a . . . . . . a a a a a a b b ... ... ...

  32. Grenzen des endlichen Automaten aq a . . . . . . a a a a a a b b ... ... ... ap ar bk Es gilt: w = akbk = apaqarbk mit p+q+r=k. Betrachte w´ = apaqaqarbk. Beachte: p+q+q+r>k (mehr a‘s als b‘s). Es gilt: - w´ wird von A akzeptiert (da w´ genau wie w den AZ in einen EZ überführt). - w´ gehört nicht zur Sprache L (da mehr a’s als b’s). Dies ist ein Widerspruch zur Annahme, dass A die Sprache L = {anbn | n  1} akzeptiert. Die Annahme muss daher falsch sein. Die Aussage des Satzes ist folglich wahr.

  33. Grenzen des endlichen Automaten Folgerungen: Es gibt Sprachen (wie z. B. die oben gezeigten Klammersprachen), die - nicht von einem endlichen Automaten erkannt werden können, - nicht mit einer regulären Grammatik beschrieben werden können, - nicht mit einem regulären Ausdruck beschrieben werden können.

  34. Erweiterung des Automatenmodells Eingabeband ... < < < > > > ... Lesekopf Zustandsbasierte Verarbeitungseinheit ... > > Kellerautomat Keller

  35. Spracherkennung mit Kellerautomaten Kelleraktionen: push z Das Zeichen z auf den Stapel legen. pop Das oberste Zeichen des Stapels entfernen. Zustandsübergang: z / e: Aktion Oberstes Kellerzeichen Gelesene Eingabezeichen Spracherkennung: Ein Wort wird akzeptiert, wenn der Keller nach Abarbeitung des Wortes leer ist.

  36. Erkennung einer Klammersprache Beispiel: Der Kellerautomat erkennt die Klammersprache L = {<n>n | n  1}. Oberstes Kellerzeichen / Gelesene Eingabe : Kelleraktion Erstellt mit „Automaton Simulator“

  37. Nichtdeterministische Kellerautomaten Zustandsübergang: Eingabe , Pop-Aktion; Push-Aktion Nichtdeterminismus Nichtdeterminismus

  38. Nichtdeterministische Kellerautomaten

  39. Übung Entwickeln Sie Kellerautomaten, die die folgenden Sprachen akzeptieren: Terminalsymbole: '<', '>' Startsymbol: <Element> Produktionen: <Element> ::= '<' '>' | '<' <ElementListe> '>' <ElementListe> ::= <Element> | <Element> <ElementListe> Terminalsymbole: '<', '>', 'a', 'b', 'c' Startsymbol: <Element> Produktionen: <Abc> ::= 'a' | 'b' | 'c' <Bezeichner> ::= <Abc> | <Abc> <Bezeichner><Element> ::= '<' <Bezeichner> '>' | '<' <ElementListe> '>' <ElementListe> ::= <Element> | <Element> <ElementListe>

  40. Lösungsvorschlag Terminalsymbole: '<', '>', 'a', 'b', 'c' Startsymbol: <Element> Produktionen: <Abc> ::= 'a' | 'b' | 'c' <Bezeichner> ::= <Abc> | <Abc> <Bezeichner><Element> ::= '<' <Bezeichner> '>' | '<' <ElementListe> '>' <ElementListe> ::= <Element> | <Element> <ElementListe>

  41. Struktur der Regeln Strukturanalyse: Terminalsymbole: '<', '>' Startsymbol: <Element> Produktionen: <Element> ::= '<' '>' | '<' <ElementListe> '>' <ElementListe> ::= <Element> | <Element> <ElementListe> Terminalsymbole: '<', '>', 'a', 'b', 'c' Startsymbol: <Element> Produktionen: <Abc> ::= 'a' | 'b' | 'c' <Bezeichner> ::= <Abc> | <Abc> <Bezeichner><Element> ::= '<' <Bezeichner> '>' | '<' <ElementListe> '>' <ElementListe> ::= <Element> | <Element> <ElementListe> Auf der linken Seite steht jeweils ein Nichtterminalsymbol.Auf der rechten Seite steht ein Wort, das aus Terminal- und Nichtterminalsymbolen bestehen kann.

  42. Kontextfreie Grammatiken Eine Grammatik heißt kontextfrei genau dann, wenn für jede Regel gilt: - Auf der linken Seite steht ein Nichtterminalsymbol.- Auf der rechten Seite steht ein beliebiges Wort bestehend aus Terminal- und Nichtterminalsymbolen. Eine Sprache heißt kontextfrei genau dann, wenn sie mit Hilfe einer kontextfreien Grammatik beschrieben werden kann. Beispiele für kontextfreie Grammatikregeln: E  abE  aLbL  EL  EL Beispiele für nicht-kontextfreie Grammatikregeln: aAb  bAa

  43. Übersetzung: Grammatik  Kellerautomat Nichtdeterministischer Zustandsübergang

  44. Äquivalenzsatz Satz Eine Sprache ist kontextfrei genau dann, wenn sie von einem nichtdeterministischen Kellerautomaten erkannt wird. Beachte: Mit deterministischen Kellerautomaten kann man nur eine echte Teilmenge der kontextfreien Sprachen erkennen.

  45. Teil 3 Kontextsensitive und allgemeine Sprachen

  46. Beispiel Vereinfachte Zustandsmengen <a> <zm><z>off</z><z>low</z><z>high</z></zm> <az><z>off</z></az> ...</a> Regeln zur Bildung von XML-Ausdrücken /1/ Ein Element besteht aus einem Anfangstag, einem Bezeichner oder einer Elementliste und einem passenden Endtag. /2/ Ein Bezeichner besteht aus beliebigen alphanumerischen Zeichen.

  47. XML Vereinfachte Zustandsmengen <a> <zm><z>off</z><z>low</z><z>high</z></zm> <az><z>off</z></az> ...</a> Grammatik Terminalsymbole: '<', '>', '/', 'a', 'b', 'c', 'd', ... Startsymbol: <Element> Produktionen: <Abc> ::= 'a' | 'b' | 'c' | 'd' | ... <Bezeichner> ::= <Abc> | <Abc> <Bezeichner><ATag> ::= '<' <Bezeichner> '>' <ETag> ::= '<' '/' <Bezeichner> '>' <Element> ::= <ATag> <Bezeichner> <ETag> [*] <Element> ::= <ATag> <ElementListe> <ETag> [*] <ElementListe> ::= <Element> | <Element> <ElementListe> [*] Anfangs- und Endtag müssen zusammenpassen

  48. Eine vereinfachte Tag-Klammersprache ATag-Wort-ETag aab bcaab ba ccbaba Sprachbeschreibung L = {tut | t  {a,b}*; u  {a,b,c}*} L ist die Menge aller Wörter, die aus einem beliebigen Wort u über dem Alphabet {a,b,c} und identischem Anfangs- und Endtag t besteht, wobei t ein beliebiges (nicht-leeres) Wort über dem Alphabet {a,b} ist.

  49. Tag-Klammersprache ATag-Wort-ETag aab bcaab Grammatik – Version 1 (mit Zusatzbedingung) Startsymbol: S A ::= aA | bA |  E ::= aE | bE |  W ::= aW | bW | cW |  S ::= A W E [*][*] A und E müssen zusammenpassen

  50. Tag-Klammersprache ATag-Wort-ETag aab bcaab Grammatik – Version 2 (ohne Zusatzbedingung) Startsymbol: S S ::= aTaX | bTbXT ::= aTaX | bTbX | UaXb ::= baXaXa ::= aaXbXa ::= abXbXb ::= bbXaX ::= abX ::= bU ::= aU | bU | cU | 

More Related