4.8 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\}^*
-
Beobachtung:
- zwei Worte
u ∈ L
undv \not\in L
sind sicherlich nicht sehr ähnlich - zwei Worte
u,v ∈ L
können ähnlich sein- ähnlich:
zz
undyzxxzy
- nicht ähnlich:
zz
undzzz
- ähnlich:
- zwei Worte
u,v \not\in L
können ähnlich sein- ähnlich:
ε
undxxy
- nicht ähnlich:
ε
undyzxxxy
- ähnlich:
- zwei Worte
-
u,v ∈ Σ^*
sind ähnlich bezüglichL
, 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
- in beiden Fällen ein Wort aus
- durch anhängigen des gleichen, beliebigen Wortes
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
oderu \space R_L \space v
Nerode-Klassen und -Index
- gegebene Sprache
L
über Alphabet Σ und Wortu ∈ Σ^*
- 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 giltN(v)=N(u)
-
beliebiges
u ∈ N
heißt Repräsentant der Nerode-KlasseN
-
Wie lauten die Nerode-Klassen von der Sprache
L_1 = \{w ∈ \{x,y,z\}^* \space | \space \#_Z(w) ∈ \{2,3\}\}
? -
Wie viele Nerode-Klassen hat
L_2=\{0^n*1^n \space | \space n ∈ N_0\}
- ∞
- bspw.
N_i=N(0^i)
füri ∈ N_0
Eigenschaften von Nerode-Klassen
Nützliche Eigenschaften
Alles-oder-nichts
Sei
L
eine Sprache undN
eine Nerode Klasse vonL
.
Dann gilt entwederN ⊆ L
oderN \not ⊆ L := Σ^* \backslash L
Beweis:
- wähle beliebiges, festes
u ∈ N
- für jedes
v ∈ N
gilt:u
undv
sind rechtsäquivalent - insbesondere:
u = u * ε ∈ L ↔ v * ε = v ∈ L
- also entweder sind alle solche Wörter
v
ausL
(wennu ∈ L
) - oder es sind alle solche Wörter
v
nicht ausL
(wennu \not ∈ L
)
Mitgegangen-Mitgefangen
Sei
L
eine Sprache undu,v ∈ Σ^*
Wörter aus der gleichen Nerode-Klasse.
Dann gilt für alles ∈ Σ^*
:N(u*s)=N(v*s)
Beweis:
- zu zeigen:
(u*s, v*s) ∈ R_{L(A)}
- d.h.
u*s
undv*s
sind rechtsäquivalent
- d.h.
- sei dazu
w ∈ Σ^*
beliebig, dann gilt:
Gemeinsame Reise
Sei
A = (Σ, Q, q_s, Q_A, δ)
ein DEA.
Betrachte zwei Worteu,v ∈ Σ^*
dieA
in den gleichen Zustand überführen.
Dann sindu
undv
rechtsäquivalent bzgl.L(A)
Nerode Klassen als Zustände
Nerode Klassen eignen sich perfekt als DEA-Zustände
Konstruktionsidee Beispiel
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
- für ein beliebiges
Der Satz von Myhill-Nerode
Zu einer Sprache
L
gibt es genau dann einen DEAA = (Σ, Q, q_s, Q_A, δ)
mit
L(A) = L
, wennL
endlichen Index hat.
Beweis (Richtung →)
- Sei
A
ein DEA mitL(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 ←)
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, derL(A)
akzeptiert, mindestens so viele Zustände wieA
hat.
Anwendung 2: Nichtexistenz von DEAs
- gegebene Sprache
L
L
hat unendlich viele Nerode-Klassen
-
Sei
L
eine Sprache mit Indexi ∈ \mathbb{N}
. Jeder minimale DEA fürL
hati
Zustände.
Zu L ⊆ Σ^*
gibt es keinen DEA
- definiere unendliche Wortmenge
X ⊆ Σ^*
- zeige: keine zwei Worte sind rechtsäquivalent
- wähle
u,v ∈ X
mitu \not = v
beliebig - finde ein
w ∈ Σ^*
mitu*w ∈ L
undv * w \not ∈ L
- wähle
- dann hat
L
Indexi ≥ |X| = ∞
und hat folglich keinen DEA