Automatentheorie und Formale Sprachen - Mitschrift - Katoen/17.04.2007

Aus Infostudium Wiki

Wechseln zu: Navigation, Suche
Back.png Zurück zu 10.04.2007 Book.png Hoch zu Inhaltsverzeichnis Forward.png Vor zu 19.04.2007


Handschriftliche Version

Inhaltsverzeichnis

Endliche Automaten

Der Automat

Es gibt 3 Typen endlicher Automaten

* deterministische endliche Automaten (DEA)
* nichtdet. endl. Automaten (NEA)
* nichtdet. endl. Automaten mit spontanen Übergängen (ε-NEA)

Beispiel eines Automaten (hier ein NEA):

Erläuterung:

Ist der Startzustand, gekennzeichnet durch einen losen Pfeil

Ist der Endzustand, gekennzeichnet durch den doppelten Kreis

Ist eine Transition, ein Übergang von einem in den anderen Zustand. a \in \Sigma

Funktionsweise

Sei


ein Eingabeband.

  • Initial steht der Eingabewert auf dem Eingabeband
  • Schritt:
   * 1. lese nächstes Eingabesymbol (am Lesekopf)
   * 2. wechsle Zustand entspr. der endl. Kontrolle
   * 3. verschiebe den Lesekopf eine Position weiter
  • halte die Berechnung an, sobald das letzte Zeichen der Eingabe gelesen ist. Akzeptiere das Eingabewort, falls der letzte Zustand ein Endzustand ist.

Definition: Deterministischer Endlicher Automat (DEA)

Ein DEA ist ein Quintupel M=(\mathbb Q,\Sigma, \delta, q_{0}, \mathbb F), wobei

  • \mathbb Q eine endliche Menge von Zuständen ist
  • Σ ein endliches Alphabet ist
  • \delta:\mathbb Q\times\Sigma\rightarrow\mathbb Q eine partielle Funktion (Übergangsfunktion) ist
  • q_{0}\in\mathbb Q ein Startzustand ist
  • \mathbb F\subseteq\mathbb Q Endzustände

In der englischen Fachliteratur werden diese auch als deterministic finite automaton (DFA) bezeichnet.


Beispiel

M = (\mathbb Q, \Sigma, \delta, q_{0}, \mathbb F)
\mathbb Q = \{q_{0}, q_{1}\}
Σ = {a,b}
\mathbb F = \{q_{1}\}

  • δ(q0,a) = q0
  • δ(q0,b) = q1
  • δ(q1,a) = q1
  • δ(q1,b) = q0

Übergangsfunktion


  • \delta(q_{0}, b) = \perp (\perp=nicht definiert)
  • \delta(q_{1}, a) = \perp

Transformation des Automaten um die undefinierten Übergänge zu eliminieren: füge einen neuen Fangzustand qF hinzu und ersetze alle Transitionen \delta(q_i, a) = \perp durch Transitionen in den Zustand qF. Dann entsteht eine totale Übergangsfunktion.

Hierunter folgt als Beispiel die Transformation des obigen Automaten. p ist der Fangzustand.


Für gewisse Operationen (z. B. Komplement) ist es Voraussetzung, dass δ eine totale Funktion ist.

Definition: Erweiterte Übergangsfunktion

Sei M=(\mathbb Q,\Sigma,\delta,q_{0},\mathbb F) ein DEA. Die erweiterte Übergangsfunktion \delta :\mathbb Q\times\Sigma^{*}\rightarrow\mathbb Q, \forall a\in\Sigma, x\in\Sigma^{*} und q\in\mathbb Q:

  • δ(q,ε) = q
  • \delta(q,ax) = \begin{cases} \delta(\delta(q,a),x) \mbox{ falls } \delta(q,a)\neq\perp\\ \perp\mbox{ sonst} \end{cases}

Definition: Akzeptierte Sprache

Die von M akzeptierte Sprache ist wie folgt definiert:

   L(M)=\{w\in\Sigma^{*}|\delta(q_{0},w)\in\mathbb F\}

Beispiel

   w = baabbabb
w\in L(M)?

Nun überprüfen wir ob dieses Wort in der Sprache des oben genannten Automaten liegt:

   δ(q0,baabbabb) = δ(δ(q0,b),aabbabb)
δ(δ(q0,a),abbaabb) = δ(δ(q0,a),bbabb)
δ(δ(q0,b),baabb) = δ(δ(q0,b),abb) = δ(δ(q0,a),bb)
\delta(\delta(q_{0}, b),b)=\delta(q_{0},b)=q_{1}\in\mathbb F\Rightarrow baabbaabb\in L(M)

Die Sprache ist wie folgt definiert:

   L(M)=\{w\in\{a,b\}^{*}|\left|w\right|_{b}\mbox{ ist ungerade}\}

Für DEA gilt

Zu jedem Eingabewort gehört genau ein Lauf

Satz

Zu jedem DEA M gibt es eine reguläre Grammatik G, sodass L(M)=L(G)

Beweisvorbereitung

Sei M=(\mathbb Q, \Sigma, \delta, q_{0},\mathbb F) ein DEA, wobei δ total ist.
Idee: Zustände werden aufgefasst als Nichtterminalsymbole und die Übergangsfunktion definiert Produktionsregel.

   Sei G = (V,Σ,P,S) wobei V = Q  S = q0

P ist wie folgt definiert:

  • Ist q_{0}\in\mathbb F dann q_{0}\rightarrow\epsilon
  • Ist δ(q,a) = p dann q\rightarrow ap
  • Ist \delta(q,a)=p\in\mathbb F dann q\rightarrow a

Beweis

Klar: G ist regulär

Jetzt bleibt zu beweisen dass L(G) = L(M)

"\supseteq"

Sei x=a_{1}\cdots a_{n}\in\Sigma^{*} und q_{0}q_{1}\cdots q_{n} der zu x gehörende Lauf in M.
Sei x\in L(M). Somit ist q_{0}q_{1}\cdots q_{n} ein akzeptierender Lauf, d.h. q_{n}\in\mathbb F.

Aber dann

   q_{0}\Rightarrow a_{1}q_{1}\Rightarrow a_{1}a_{2}q_{2}\Rightarrow\cdots\Rightarrow a_{1}a_{2}a_{3}\cdots a_{n-1}q_{n-1}\Rightarrow a_{1}\cdots a_{n}

damit

   q_{0}\Rightarrow^{*} a_{1}\cdots a_{n}\rightarrow x\in L(G)

"\subseteq" Analog

G = ({q0q1},{a,b},P,q0) wobei P

  • q_{0}\rightarrow aq_{0}|bq_{1}|b
* \delta(q_{1},a)=q_{1}\in\mathbb F  q_{1}\rightarrow a
  • q_{1}\rightarrow aq_{1}|bq_{0}|a
* \delta(q_{0},b)=q_{1}\in\mathbb F  q_{0}\rightarrow a