diff --git a/Writerside/images/image_838.png b/Writerside/images/image_838.png new file mode 100644 index 0000000..042cea8 Binary files /dev/null and b/Writerside/images/image_838.png differ diff --git a/Writerside/images/image_839.png b/Writerside/images/image_839.png new file mode 100644 index 0000000..6ba28ce Binary files /dev/null and b/Writerside/images/image_839.png differ diff --git a/Writerside/images/image_840.png b/Writerside/images/image_840.png new file mode 100644 index 0000000..2ba78d5 Binary files /dev/null and b/Writerside/images/image_840.png differ diff --git a/Writerside/images/image_841.png b/Writerside/images/image_841.png new file mode 100644 index 0000000..31995db Binary files /dev/null and b/Writerside/images/image_841.png differ diff --git a/Writerside/topics/04/Theoretische Informatik/04_GrenzenGroesseEA.md b/Writerside/topics/04/Theoretische Informatik/04_GrenzenGroesseEA.md index 5d36502..9c9466b 100644 --- a/Writerside/topics/04/Theoretische Informatik/04_GrenzenGroesseEA.md +++ b/Writerside/topics/04/Theoretische Informatik/04_GrenzenGroesseEA.md @@ -126,3 +126,61 @@ Dann definieren wir den DEA $A_L =(Σ, Q, q_s, Q_a, δ)$: ## Minimierungsalgorithmus +> Grundprinzip: Äquivalente Zustände finden und zusammenführen + +### Sprache eines Zustandes +- Sei $q ∈ Q$ der Zustand eines DEA $A = (Σ, Q, q_s, Q_a, δ)$ +- Sprache des Zustands $q$ + - $L_A(q) := \{w ∈ Σ^*\space|\space δ^*(q,w) ∈ Q_a\}$ + + +### Äquivalente Zustände +- DEA $A = (Σ, Q, q_s, Q_a, δ)$ +- $q_1, q_2 in Q$ sind **äquivalent ($q_q ≡_A q_2$)** + - wenn $L_A(q_q) = L_A(q_2)$ +- **Äquivalenzklasse** von $q ∈ Q$ + - Menge der zu $q$ äquivalenten Zustände + - $[q]_{≡_A} := \{q' ∈ Q\space|\space q' ≡_A q'\}$ + +#### Unterschied ähnliche Zustände vs. ähnliche Wörter +> [Nerode Klasse $N(w)$](#nerode-klassen-als-zust-nde) sammelt Wörter (_ähnlich zu w_) +> +> [Äquivalenzklasse $[q]_{≡_A}$](#quivalente-zust-nde) sammelt Zustände (_ähnlich zu q_) + +- in beiden Fällen: "ähnlich" ≈ "gleiches Verhalten für Folgewort" + + +### Minimierungsstrategie +1. Bestimme Äquivalenzklassen bzgl. $≡_A$ + - starte mit initialer Aufteilung und verfeinere Schritt für Schritt + - Zu jeder Aufteilung: + - Zeuge $z ∈ Σ^*$ für Notwendigkeit der Aufteilung +2. Baue Quotientenautomaten zu den Äquivalenzklassen + +### Quotientenautomat +![image_838.png](image_838.png) + +### Beispiel Minimierung +![image_839.png](image_839.png) +#### Bestimmung der Äquivalenzklassen +- initiale Aufteilung + - $P_0 = \{\{a,b,c,d,e,f\},\{c\}\}$ + - Zeuge: `ε` + - akzeptierende / nicht akzeptierende Zustände +- 1. Verfeinerung + - $P_1 = \{\{a,d,e,f\},\{b\},\{c\}\}$ + - Zeuge: `x` + - _kommt mit Eingabe von `x` in einen akzeptierenden Zustand_ +- 2. Verfeinerung + - $P_2 = \{\{d,e,f\},\{a\},\{b\},\{c\}\}$ + - Zeuge: `yx` + - _kommt mit Eingabe von `yx` in einen akzeptierenden Zustand_ +- Ende + - für jede Klasse gilt: + - Zustände der Klasse verhalten sich für jedes weitere Zeichen gleich + - → können nicht weiter verfeinern + +![image_840.png](image_840.png) + +#### Quotientenautomat am Beispiel +![image_841.png](image_841.png)