diff --git a/Writerside/images/image_740.png b/Writerside/images/image_740.png new file mode 100644 index 0000000..bb8c2aa Binary files /dev/null and b/Writerside/images/image_740.png differ diff --git a/Writerside/images/image_741.png b/Writerside/images/image_741.png new file mode 100644 index 0000000..1a07e95 Binary files /dev/null and b/Writerside/images/image_741.png differ diff --git a/Writerside/images/image_742.png b/Writerside/images/image_742.png new file mode 100644 index 0000000..f5263d0 Binary files /dev/null and b/Writerside/images/image_742.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index 6b81592..d44d3f8 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -111,6 +111,7 @@ + diff --git a/Writerside/topics/04/Theoretische Informatik/03_GrundlagenEndlicherAutomaten.md b/Writerside/topics/04/Theoretische Informatik/03_GrundlagenEndlicherAutomaten.md new file mode 100644 index 0000000..5b9f140 --- /dev/null +++ b/Writerside/topics/04/Theoretische Informatik/03_GrundlagenEndlicherAutomaten.md @@ -0,0 +1,88 @@ +# Grundlagen endlicher Automaten +## Definition +### Deterministischer endlicher Automat (DEA) +- 5-Tupel + - $A=(Σ,Q,q_s,Q_a, δ)$ + - $Σ$: endliches Eingabealphabet + - $Q$: endliche Menge von Zuständen + - $q_s ∈ Q$: Startzustand + - $Q_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$ nach $q'$ mit Label $a ↔ δ(q,a) = q'$ + +### 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 + - ![image_740.png](image_740.png) + +### 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ür $w ∈ Σ^* und x ∈ Σ$ + +↑ ~_induktive Definition_ + +> Sei $A= ( Σ,Q, q_s, Q_A, δ) ein DEA. +> +> (a) Wir sagen $A$ akzeptiert $w ∈ Σ^*$, wenn $ δ^*(q_s,w) ∈ Q_A$ +> +> (b) Die von $A$ akzeptierte Sprache ist $L(A) := \{w ∈ Σ^* \space| \space A\space akzeptiert \space w\}$ + +### 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: +![image_741.png](image_741.png) + + + + +## 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 Eingabealphabet + - $Q$: endliche Menge von Zuständen + - $q_s ∈ Q$: Startzustand + - $Q_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 +- +#### Beispiel NEA +![image_742.png](image_742.png)