JavaScript promise rejection: Loading CSS chunk katex failed. (error: https://git.gaminggeneration.de/assets/css/katex.faca27c4.css). Open browser console to see more details. (125)
Files
.idea
Writerside
cfg
images
topics
02
04
Datenbanken
HCI
Informatik und Gesellschaft
Projektmanagement
Rechnernetze
Software Engineering
Theoretische Informatik
Hausaufgaben
Übungen
01Einleitung.md
02_GrundlagenFormaleSprachen.md
03_GrundlagenEndlicherAutomaten.md
04_GrenzenGroesseEA.md
05_GrundlagenGrammatiken.md
06
StartPage.md
c.list
in.tree
v.list
writerside.cfg
.gitlab-ci.yml
README.md
zusammenfassungen/Writerside/topics/04/Theoretische Informatik/04_GrenzenGroesseEA.md
David Schirrmeister ba945f6506 update
2025-05-18 10:11:11 +02:00

7.0 KiB

Grenzen & Größen endlicher Automaten

Nerode-Index einer Sprache

  • Sei L=\{w ∈ \{x,y,z\}^*\}\space | \space \#_z(w) ∈ \{2,3\}\}

  • betrachte die Wörter aus \{x, y, z\}^*

    • Gruppiere sie hinsichtlich des "Grad der Zugehörigkeit" zu L
      • image_780.png
  • Beobachtung:

    • zwei Worte u ∈ L und v \not\in L sind sicherlich nicht sehr ähnlich
    • zwei Worte u,v ∈ L können ähnlich sein
      • ähnlich: zz und yzxxzy
      • nicht ähnlich: zz und zzz
    • zwei Worte u,v \not\in L können ähnlich sein
      • ähnlich: ε und xxy
      • nicht ähnlich: ε und yzxxxy
  • u,v ∈ Σ^* sind ähnlich bezüglich L, wenn:

    • durch anhängigen des gleichen, beliebigen Wortes
      • in beiden Fällen ein Wort aus L entsteht
      • in beiden Fällen ein Wort aus Σ \backslash L entsteht

Rechtsäquivalenz

  • gegebene Sprache L über Alphabet Σ
  • u,v ∈ Σ^* heißen rechtsäquivalent bezüglich L, wenn
    • ∀s ∈ Σ^*: u*s ∈ L ↔ v*s ∈ L
  • wir schreiben auch: (u,v) ∈ R_L oder u \space R_L \space v

Nerode-Klassen und -Index

  • gegebene Sprache L über Alphabet Σ und Wort u ∈ Σ^*
  • Nerode-Klasse $N(u)$: Menge der zu u rechtsäquivalenten Wörter:
    • N(u) := \{v ∈ Σ^* \space | \space (u,v) ∈ R_L\}
  • Nerode-Index von L: Anzahl Nerode-Klassen

Beispiel

  • ist v ∈ N(u) so gilt N(v)=N(u)

  • beliebiges u ∈ N heißt Repräsentant der Nerode-Klasse N

  • Wie lauten die Nerode-Klassen von der Sprache L_1 = \{w ∈ \{x,y,z\}^* \space | \space \#_Z(w) ∈ \{2,3\}\}?

    • image_781.png
  • Wie viele Nerode-Klassen hat L_2=\{0^n*1^n \space | \space n ∈ N_0\}

    • bspw. N_i=N(0^i) für i ∈ N_0

Eigenschaften von Nerode-Klassen

Nützliche Eigenschaften

Alles-oder-nichts

Sei L eine Sprache und N eine Nerode Klasse von L. Dann gilt entweder N ⊆ L oder N \not ⊆ L := Σ^* \backslash L

Beweis:

  • wähle beliebiges, festes u ∈ N
  • für jedes v ∈ N gilt: u und v sind rechtsäquivalent
  • insbesondere: u = u * ε ∈ L ↔ v * ε = v ∈ L
  • also entweder sind alle solche Wörter v aus L (wenn u ∈ L)
  • oder es sind alle solche Wörter v nicht aus L (wenn u \not ∈ L)

Mitgegangen-Mitgefangen

Sei L eine Sprache und u,v ∈ Σ^* Wörter aus der gleichen Nerode-Klasse. Dann gilt für alle s ∈ Σ^*: N(u*s)=N(v*s)

Beweis:

  • zu zeigen: (u*s, v*s) ∈ R_{L(A)}
  • sei dazu w ∈ Σ^* beliebig, dann gilt:
    • image_782.png

Gemeinsame Reise

Sei A = (Σ, Q, q_s, Q_A, δ) ein DEA. Betrachte zwei Worte u,v ∈ Σ^* die A in den gleichen Zustand überführen. Dann sind u und v rechtsäquivalent bzgl. L(A)

image_783.png

Nerode Klassen als Zustände

Nerode Klassen eignen sich perfekt als DEA-Zustände

Konstruktionsidee Beispiel

image_819.png image_820.png

Formale Konstruktion

Sei L ⊆ Σ^* eine Sprache mit endlichem Index m ∈ \mathbb{N}. Seien N_1, N_2, ..., N_m die Nerode-Klassen von L. Dann definieren wir den DEA A_L =(Σ, Q, q_s, Q_a, δ):

  • Q :=\{N_1, N_2, ..., N_m\}
  • q_s:= N(ε)
  • Q_a :=\{N_i\space|\space N_i ⊆ L\}
  • für alle i ∈ \{1,2,...,m\} sei δ(N_i,x):=N(w*x)...
    • für ein beliebiges w ∈ N_i

Der Satz von Myhill-Nerode

Zu einer Sprache L gibt es genau dann einen DEA A = (Σ, Q, q_s, Q_A, δ) mit L(A) = L, wenn L endlichen Index hat.

Beweis (Richtung →)

  • Sei A ein DEA mit L(A)=L
  • Wörter, die den gleichen Zustand erreichen
    • gehören zur gleichen Nerode Klasse
  • Wenn man ein beliebiges Wort betrachtet endet man in einer Nerode-Klasse
  • jede Nerode-Klasse entspricht einer der endlich vielen $N_q$

Beweis (Richtung ←)

  • Seien N_1,N_2,...,N_m endlich viele Nerode-Klassen
  • image_821.png
  • A ist ein DEA der die Sprache L akzeptiert

Reaping the Fruits!

Anwendung 1: Minimale endliche Automaten

  • Weniger Zustände als Nerode-Klassen gibt es nicht
  • Ein DEA A heißt minimal, wenn jeder DEA, der L(A) akzeptiert, mindestens so viele Zustände wie A hat.

Anwendung 2: Nichtexistenz von DEAs

  • gegebene Sprache L
    • L hat unendlich viele Nerode-Klassen
  • Sei L eine Sprache mit Index i ∈ \mathbb{N}. Jeder minimale DEA für L hat i Zustände.

Zu L ⊆ Σ^* gibt es keinen DEA

  • definiere unendliche Wortmenge X ⊆ Σ^*
  • zeige: keine zwei Worte sind rechtsäquivalent
    • wähle u,v ∈ X mit u \not = v beliebig
    • finde ein w ∈ Σ^* mit u*w ∈ L und v * w \not ∈ L
  • dann hat L Index i ≥ |X| = ∞ und hat folglich keinen DEA

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)$ sammelt Wörter (ähnlich zu w)

Äquivalenzklasse $[q]_{≡_A}$ sammelt Zustände (ähnlich zu q)

  • in beiden Fällen: "ähnlich" ≈ "gleiches Verhalten für Folgewort"

k-Äquivalenz

  • q ∈ Q ist ein Zustand eines DEA
  • L^k_A(q):=L_A(q) ∩ \{w ∈ Σ^* \space | \space |w| ≤ k\}
    • Sprache von Zustand q beschränkt auf Worte der Länge ≤ k
  • k-Äquivalenz
    • q_1 ≡^k_A q_2 ↔ L^k_A(q_1) = L^k_A(q_2)

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

Beispiel Minimierung

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
    1. 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

Quotientenautomat am Beispiel

image_841.png