4.8 KiB
Grundlagen endlicher Automaten
Definition
Deterministischer endlicher Automat (DEA)
- 5-Tupel
A=(Σ,Q,q_s,Q_a, δ)
Σ
: endliches EingabealphabetQ
: endliche Menge von Zuständenq_s ∈ Q
: StartzustandQ_a ⊆ Q
: akzeptierte Zuständeδ: Q x Σ → Q
: Übergangsfunktion
Graphdarstellung G_A
- Graphknoten:
Q
- Startzustand: Knoten mit eingehender Kante ohne Quelle
- akzeptierter Zustand: Knoten mit Doppelkreis
- gelabelte Kanten: Zustandsübergänge
- Kante von
q
nachq'
mit Labela ↔ δ(q,a) = q'
- Kante von
Beispiel einfacher endlicher Automat
A=(Σ,Q,q_s,Q_a, δ)
Σ=\{0,1\}
Q=\{q_1,q_2,q_3\}
q_s=q_1
Q_a=\{q_3\}
δ:
-
Zustand δ(.,0)
δ(.,1)
q_1
q_1
q_2
q_2
q_1
q_3
q_3
q_3
q_3
-
- Graphdarstellung
Sprache eines Automaten
Sei
A=( Σ,Q,q_s,Q_a, δ)
ein DEA. Die fortgesetzte Übergangsfunktionδ^*: Q x Σ^* →Q
ist definiert durch
δ^*(q, ε):=q
und
δ^*(q,wx):= δ( δ^*(q,w),x)
fürw ∈ Σ^* und x ∈ Σ
↑ ~induktive Definition
Sei $A= ( Σ,Q, q_s, Q_a, δ) ein DEA.
(a) Wir sagen
A
akzeptiertw ∈ Σ^*
, wennδ^*(q_s,w) ∈ Q_a
(b) Die von
A
akzeptierte Sprache istL(A) := \{w ∈ Σ^* \space| \space A\space akzeptiert \space w\}
Übung:
(a) L_1 = \{a^nb^mc^k \space | \space n,m,k ≥ 1\}
Unvollständige Automaten
Ein unvollständiger deterministischer Automat
A=( Σ, Q,Q_s, Q_a, δ)
ist wie ein normaler DEA
mit folgenden Änderungen:(a) Die Übergangsfunktion
δ
darf partiell sein(b) Ist während einer Berechnung der nächste Zustand nicht definiert → Eingabe verwerfen
Beispiel unvollständiger Automat:
Nichtdeterministischer endlicher Automat (NEA)
Nichtdeterminismus
- Erlauben pro Zustand/Zeichen-Paar mehrere Folgezustände
- die wiederum selbst wieder mehrere Folgezustände haben können
- Eine Eingabe, mehrere Berechnungspfade
- Eingabe wird akzeptiert, wenn
- Berechnungspfad existiert, der in akzeptierendem Zustand endet
Definition NEA
- 5-Tupel
A=(Σ,Q,q_s,Q_a, δ)
Σ
: endliches EingabealphabetQ
: endliche Menge von Zuständenq_s ∈ Q
: StartzustandQ_a ⊆ Q
: akzeptierte Zuständeδ: Q x Σ → P(Q)
: Übergangsfunktion
- jede einzelne Berechnung wie beim DEA
- starte in
q_s
- lies nächstes Zeichen
- berechne Folgezustand mit
δ
- wechsle in Folgezustand
- ist akzeptierend? →
:)
- sonst → verwerfe
-
Goldene Regel: Akzeptiere Eingabe, wenn akzeptierende Berechnung existiert
- ist akzeptierend? →
- starte in
Sprache eines NEA
Sei
N=( Σ,Q,q_s,Q_a, δ)
ein NEA. Die fortgesetzte Übergangsfunktionδ^*: Qx Σ^*→P(Q)
ist definiert durch:
δ^*(q, ε) := \{q\}
und
δ^*(q,wx) := ∪ δ(q', x)
fürw ∈ Σ^*
undx ∈ Σ
$q' ∈ δ^*(q,w)$
Beispiel NEA
NEA vs DEA
- NEA scheinbar viel mächtiger als DEAs
- sehr viele Berechnungspfade (statt nur einem pro Wort)
- Alternativer Blick auf das Parsen eines NEAs
Potenzautomaten
Konstruktion und Sprache eines Potenzautomaten
Konstruktion: Funktionstabelle für δ
-
- Spalte: bisher entdeckte Metazustände
- restliche Spalten: Folge-Metazustand für jedes Zeichen
x ∈ Σ
- solange unvollständige Zeile existiert: ausfüllen
- initial: nur
\{s\}
sicher erreichbar → eine unvollständige Zeile - je neu entdecktem Metazustand: lege neue Zeile an
- initial: nur
Der Potenzautomat
A_N
eines NEAN
ist ein deterministischer endlicher Automat mitL(A_N) = L(N)
Mächtigkeit & Grenzen endlicher Automaten
-
parsen einfacher Strukturen
- XML-Tags
- Datumsformate
- ...
-
können sich Dinge merken
-
NEAs betrachten viele Berechnungswege "gleichzeitig"
- sind aber letztlich nur Syntactic Sugar
- nur dafür da, dass es besser lesbar ist
- sind aber letztlich nur Syntactic Sugar
-
können sich nur so viel merken, wie sie Zustände haben
- geht: das 17. Zeichen von w ist 0
- geht nicht: das |w|/2. Zeichen von w ist 0
-
können keine komplexen Strukturen erkennen
- Palindrome
- LAGERREGAL
- arithmetische Ausdrücke
42*(x+y)-z
- Hierarchien
- Verschachtelungen
- ...
- Palindrome