Benutzer-Werkzeuge

Webseiten-Werkzeuge


se:automatentheorie

**Dies ist eine alte Version des Dokuments!**

Automatentheorie

Grundlagen

  • Ein Alphabet ist eine endliche nicht-leere Menge S. Ein Element s ∈ S heißt Symbol oder Zeichen.
  • s = s1…sn, si ∈ S, i = 1…n heißt Wort über S.
  • S+ := { s | s Wort über S } Menge der Wörter über S, die aus mindestens einem Zeichen bestehen.
  • Sei s ∈ S+. |s| := Länge des Wortes := Anzahl der Symbole im Wort s.
  • Sei s ∈ S. |s|t := die Anzahl des Auftretens des Symbols t im Wort s.
  • Sn := { s ∈ S+ | |s| = n } Menge der Wörter über S der Länge n.
  • Konkatenation: Seien s = s1…sn ∈ S+, si ∈ S, i = 1…n, t = t1…tm ∈ S+, ti ∈ S, i = 1…m. st = s1…snt1…tm ∈ S+ heißt Konkatenation von s mit t.
  • L ⊆ S</sup> heißt (formale) Sprache über S. ==== Backus-Naur-Form ==== * Formale (Meta-)Sprache zur Beschreibung von formalen Sprachen * Symbole: ::=, |, {}
    ===== Einleitung ===== * Einordung "Automatentheorie" * Formalisierung reaktiver Systeme (diskrete Systeme) * diskrete Systeme (Automatentheorie) ∈ kontinuierliche Systeme ∈ technische Kybernetik ∈ Kybernetik (Wissenschaft von der Funktion komplexer Systeme) * Funktion endlicher Automaten: Eingaben → (innere) Zustände → Ausgaben * Automaten werden von außen bedient, interagieren also mit ihrer Umwelt. * Sie reagieren auf Eingaben mit bestimmten zugeordneten Ausgaben. * Ihre Arbeitsweise ist gekennzeichnet durch die Abfolge unterscheidbarer Schritte und Stadien der Bearbeitung der Ein- und Ausgaben.
    * Klassifizierung * Endliche erkennende Automaten * am weitesten reduzierte Automaten * keine Äußerungen nach außen * nächste Stufe: minimale Reaktion (binär, z.B. Lampe an/aus) * Eingaben: Zeichenfolgen über Alphabet X = { x1, x2, …, xn } * werden akzeptiert, wenn Automat im Endzustand ist * Ausgaben: Zeichenfolgen über Alphabet Y = { y1, y2, …, yn } * Zustände (states): unterscheidbare Stadien der Verarbeitung von Eingaben * Zustandsmenge S = { s1, s2, …, sn } * Partizipien weisen auf Zustände hin: "Taste gedrückt" etc.
    ===== Deterministische endliche Automaten (DEA) ===== * deterministisch = "sind determiniert", Folgezustand ist durch aktuellen Zustand und Eingabesymbol eindeutig bestimmt * Definition: A = (X, S, s0, δ, F) * X: Eingabealphabet (endlich) * S: Zustandsmenge (endlich) * s0: Anfangszustand s0 ∈ S * δ: Zustandsübergangsfunktion * S x X → S * δ(si, xj) → sk (Folgezustand zu si) * F: Menge der Endezustände F ⊆ S * δ</sup>: Fortsetzung der Zustandsübergangsfunktion auf Wörter ∈ X</sup> * δ</sup>(s0, w) ∈ S | w = x1, x2, …, xn, xi ∈ X * δ</sup>(s, ε) = s | s ∈ S, ε leeres Wort * δ</sup>(s, xi) = δ(s, xi) | xi ∈ X, ein Zeichen * δ</sup>(s, x) = δ</sup>(s, x1x2…xn) = δ</sup>(δ(s, x1), x2x3…xn) * Konfiguration: (aktueller Zustand, restliche Eingabe) * Arbeitsweise (Beispiel Lesekopf) - Eingabeband enthält endlich viele Eingabesymbole des Eingabealphabets, Lesekopf in s0 über erstem Zeichen - Lesekopf in Zustand s liest aktuelles Zeichen x und geht in Zustand δ(s, x), bewegt sich eine Position nach rechts - Ist das Eingabeband leer und der Automat ist in einem Endzustand, hat der Automat die Eingabe akzeptiert - Der Automat springt nicht zurück an den Anfang. Neues Wort heißt neuer Automat. ==== Sprache eines DEA ==== * Sei A = (X, S, s0, δ, F) ein DEA. L(A) := { w ∈ X</sup> | δ</sup>(s0, w) ∈ F} heißt die durch A akzeptierte Sprache (Menge aller Wörter, die vom Anfangszustand in einen mehrerer möglicher Endzustände führen) * Eine Sprache L ist durch einen endlichen Automaten definierbar (oder regulär), falls es einen DEA A gibt mit L = L(A) (Automat akzeptiert die Sprache) ==== Unterschied DEA / NEA ==== * Zustandsübergangsfunktion des NEA hat P(S) als Wertebereich * Im DEA gibt es für jeden Zustand für jedes Eingabezeichen eine Transition in seinen Folgezustand! * DEA: nur eindeutige Transitionen, NEA: mehrdeutige (oder keine) Transitionen möglich * NEA hat evtl. mehrere Anfangszustände * im NEA können alle Transitionen in Fehlerzustände im Gegensatz zum DEA weggelassen werden ===== Nicht-deterministische endliche Automaten (NEA) ===== * Eigenschaften * kann mehrere Startzustände enthalten * Folgezustand zu aktuellem Zustand und Eingabesymbol wird durch nicht näher bestimmtes Verfahren aus evtl. mehreren möglichen gewählt * es muss keinen Folgezustand geben * es kann mehrere Folgezustände zum gleichen Eingabesymbol geben
    * Definition: A = (X, S, S0, δ, F) * X: Eingabealphabet (endlich) * S: Zustandsmenge (endlich) * S0: Menge der Anfangszustände, S0 ⊆ S * δ: Zustandsübergangsfunktion * S x X → P(S), zu einem Eingabesymbol ist in einem definierten Zustand eine Menge von Folgezuständen möglich * δ(si, xj) → Sk (Folgezustände zu si, leere Menge, ein oder mehrere Zustände)
    * F: Menge der Endezustände F ⊆ S * werden zwei NEA zusammengefasst, bilden sie ein logisches Oder bzw. die Vereinigungsmenge ==== Sprache eines NEA ==== * Sei A = (X, S, S0, δ, F) ein NEA. L(A) := { w ∈ X</sup> | ∃ s0 ∈ S0 : δ</sup>(s0, w) ∩ F ≠ ∅ } heißt die durch A akzeptierte Sprache (Menge aller Wörter, die von einem Anfangszustand in eine Zustandsmenge führen, die wenigstens einen Endezustand enthält) * Eine Sprache L ist durch einen endlichen Automaten definierbar (oder regulär), falls es einen DEA A gibt mit L = L(A) (Automat akzeptiert die Sprache) ==== Überprüfung, ob NEA und DEA äquivalent ==== - Konstruiere zu gegebenem DEA einen äquivalenten NEA (direkt erfüllt, da jeder DEA schon ein NEA ist) - Konstruiere zu gegebenem NEA einen äquivalenten DEA (akzeptiert die selbe Sprache) * A = (X, S, S0, δ, F) → Ad = (X, Sd, s0d, δd, Fd) * Sd := P(S) (alle möglichen Teilmengen von S) * s0d := S0 (Menge der Anfangszustände des NEA ist ein Element von P(S)) * δ(Q, x) := Uq ∈ Qδ(q, x) (alle Mengen der Folgezustände zu qi, die vereinigt werden müssen) * Fd := { Q ∈ Sd | Q ∩ F ≠ ∅} ===== Pumping-Lemma ===== * ab einer gewissen Länge von Wörtern (> Anzahl der Zustände) sind in diesen Zyklen enthalten, die beliebig häufig durchlaufen werden können * Sei L regulär über X: ∃ n ∈ N, sodass ∀ x ∈ L mit |x| ≥ n: x = uvw (uvw = Teilwörter, u = Weg in den Zyklus, v = Zyklus, w = Weg aus dem Zyklus) * Bedingung: |uv| ≤ n, |v| ≥ 1, n muss mindestens die Anzahl der Zustände sein * ⇒ uviw ∈ L ∀ i ∈ N (vi: v wird i-mal vervielfältigt) ==== Beispiel ==== Nachweis, dass folgende Sprache nicht regulär ist, durch Umkehrung des Pumping-Lemma: L = { x ∈ {a, b} | x = anbn für n ∈ N} - wähle n entsprechend des Pumping-Lemmas - wähle Exemplar/Wort x ∈ L: anbn - betrachte Zerlegungen in Teilwörter x = uvw mit |uv| ≤ n, |v| ≥ 1 - für alle Zerlegungen von x in Teilwörter mit x = uvw und v in an werden nur a's vervielfältigt ⇒ |uviw|a ≠ |uviw|b ===== Automaten mit Ausgabe ===== * Mealy-Automaten: Ausgabe bei Transition * δ: S x X → Y, δ(si, x) = Y * Moore-Automaten: Ausgabe im Zielzustand * δ: S → Y * Eselsbrücke: Moore → Zustand, Mealy → Transition
    ===== Formale Sprachen und Grammatiken ===== * formale Sprache: Menge von Wörtern bestehend aus Symbolen eines endlichen Alphabets * Ableitung: fortgesetzte Ersetzungsschritte, die mit dem Startsymbol beginnen (Kennzeichnung ⇒</sup>) * Grammatiken erzeugen/generieren formale Sprachen: G = (N, T, S, P) * N: Menge der nicht-terminalen Symbole (Großbuchstaben)
    * T: Menge der terminalen Symbole (Kleinbuchstaben) * S: Startsymbol * P: Menge der Produktionen (Ersetzungsregeln) * eine durch G erzeugte Sprache: L(G) = { x ∈ T</sup> | S ⇒</sup> x} (alle Wörter, die aus dem Startsymbol abgeleitet werden können) * Chomsky-Hierarchie (Typ(i + 1) ist gleichzeitig vom Typ(i)) definiert 4 Typen von Grammatiken * Typ 0 (allgemeine Grammatiken): keine Einschränkung der Produktionen * Beispiele: aBc → B, B → c, bA → B, B → aaa * alle Normalformen
    * Typ 1 (nicht verkürzende Grammatiken): für Produktionen a → b gilt b ∈ (N ∪ T)+ (leeres Wort ausgeschlossen) und |a| ≤ |b| * aB → abA, B → ab, AB → CaB * Termination, Expansion 2, doppelte Substitution
    * Typ 2 (kontextfreie Grammatiken): für Produktionen a → b gilt a ∈ N, b ∈ (N ∪ T)+ * Beispiele: A → a, A → AB, AB → AC, A → abC * Termination, Expansion 2
    * Typ 3 ((rechts-)lineare Grammatiken, reguläre Sprachen): für Produktionen a → b gilt a ∈ N, b hat die Form tB oder t mit t ∈ T</sup>, B ∈ N, b ≠ ε * Beispiele: A → a, A → aA, A → B, A → aaaB * Termination, Expansion 1
    * Normalformen sind einfache Repräsentanten einer Klasse äquivalenter Grammatiken * A → ε (Reduktion) * A → t (Termination) * A → tB (Expansion 1) * A → BC (Expansion 2) * AB → CD (doppelte Substitution) * Sei L eine formale Sprache. L ist regulär, wenn es eine lineare Grammatik G gibt mit L = L(G) (Grammatiken vom Typ 3 erzeugen reguläre Sprachen) * Um eine Grammatik vom Typ 3 durch einen Automaten abzubilden, müssen Regeln der Form A → t ersetzt werden durch A → tNε und Nε → ε
    * Für jede Transition in einen Endzustand müssen zwei Produktionen vorhanden sein, wenn im Endzustand weitere Eingaben erlaubt (aber nicht verpflichtend) sind: (Beispielautomat "otto" erkennen, Endzustand W) V → o | oW, W → o | t | oW | tW * Typische Fragen zu Grammatiken * Typ nach Chomsky? → Produktionen untersuchen * Ist G in Normalform? → Produktionen untersuchen, Verstöße gegen Normalform suchen * Ist die Ableitung des Wortes xyz möglich? → mit den Produktionen ausgehend von S versuchen, das Wort nachzubauen
    ==== Überführung einer Grammatik in Normalform ==== * Typ 3
    * A → aaB ersetzen durch A → aC, C → aB * A → B ersetzen durch A → w | B ⇒* w * alle Regeln sind nun von der Form A → a oder A → aB
    * Typ 2 * für jedes terminale Symbol t wird ein nicht-terminales Symbol T erstellt und die Produktionen um T → t erweitert * A → bi ersetzen durch A → Bi für jedes i * A → BCD ersetzen durch A → BE, E → CD * alle Regeln sind nun von der Form A → a oder A → BC
    ===== ToDo ===== * BNF * Übung: NEA in DEA überführen * Skript Herold lesen * Definition reguläre Sprache * Normalformen * Kann man Automaten mit LaTeX setzen? * Beispiele aus Vorlesung nochmal machen * Aufgaben 3.5.2 machen
se/automatentheorie.1228148824.txt.gz · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)