• Keine Ergebnisse gefunden

Regul¨areSprachen:Formalismen FormaleSprachenundKomplexit¨at Regul¨areSprachen Inhalts¨ubersicht DeterministischeendlicheAutomaten

N/A
N/A
Protected

Academic year: 2021

Aktie "Regul¨areSprachen:Formalismen FormaleSprachenundKomplexit¨at Regul¨areSprachen Inhalts¨ubersicht DeterministischeendlicheAutomaten"

Copied!
15
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Formale Sprachen und Komplexit¨ at

Sommersemester 2019

Regul¨ are Sprachen: Formalismen

Prof. Dr. David Sabel

LFE Theoretische Informatik

Letzte ¨Anderung der Folien: 4. Juni 2019

Regul¨ are Sprachen

Wiederholung:

Eine Sprache heißt regul¨ ar (bzw. vom Typ 3), wenn sie von einer Typ 3-Grammatik erzeugt wird.

Eine Grammatik G = (V, Σ, P, S) ist vom Typ 3 (bzw. regul¨ ar), wenn alle Produktionen von der Form

A → a oder A → aB mit A, B ∈ V und a ∈ Σ sind.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 2/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Inhalts¨ ubersicht

Deterministische endliche Automaten Nichtdeterministische endliche Automaten Regul¨ are Ausdr¨ ucke

Aquivalenz der Formalismen ¨

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 3/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Deterministische endliche Automaten

Die informelle Kurzfassung:

Endliche Automaten lesen Zeichenweise ein Eingabewort Wechseln dabei den Zustand (eindeutig)

Nur endlich viele Zust¨ ande Starten im Startzustand

Nach Lesen der Eingabe: Akzeptieren oder Verwerfen Akzeptieren = in einem Endzustand

Verwerfen = in keinem Endzustand

Akzeptierte Sprache = alle Worte, f¨ ur die der Automat akzeptiert

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 4/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(2)

DFA: Definition

Definition (Deterministischer Endlicher Automat, DFA) Ein deterministischer endlicher Automat (determinististic finite automaton, DFA) ist ein 5-Tupel M = (Z, Σ, δ, z

0

, E) wobei

Z ist eine endliche Menge von Zust¨ anden,

Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅, z

0

∈ Z ist der Startzustand,

E ⊆ Z ist die Menge der Endzust¨ ande (oder auch akzeptierende Zust¨ ande) und

δ : Z × Σ → Z ist die Zustands¨ uberf¨ uhrungsfunktion (oder nur Uberf¨ ¨ uhrungsfunktion).

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 5/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Zustandsgraph eines DFA

F¨ ur DFA M = (Z, Σ, δ, z

0

, E) F¨ ur z ∈ Z gibt es Knoten z

Startzustand z

0

∈ Z: eingehender Pfeil z

0

, Endzust¨ ande z ∈ E: doppelte Kreise z , Uberg¨ ¨ ange δ(z

i

, a) = z

j

als Kante z

i

a z

j

und statt z

i

z

j

a

b

zeichnen wir z

i

a, b z

j

.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 6/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel

DFA M = ({z

0

, z

1

, z

2

}, {a, b}, δ, z

0

, {z

2

}) mit δ(z

0

, a) = z

1

δ(z

1

, b) = z

0

δ(z

0

, b) = z

0

δ(z

2

, a) = z

2

δ(z

1

, a) = z

2

δ(z

2

, b) = z

2

z z z

000

z z

11

z z z

222

b

b a a

a a b

b

a, b a, b

Abarbeitung von abbaaa:

Starte in z

0

Lese a und wechsle in z

1

Lese b und wechsle in z

0

Lese b und wechsle in z

0

Lese a und wechsle in z

1

Lese a und wechsle in z

2

Lese a und wechsle in z

2

Akzeptiere

Abarbeitung von bbab:

Starte in z

0

Lese b und wechsle in z

0

Lese b und wechsle in z

0

Lese a und wechsle in z

1

Lese b und wechsle in z

0

Verwerfe

Akzeptierte Spraches eines DFA

Definition (Akzeptierte Sprache eines DFA) Sei M = (Z, Σ, δ, z

0

, E) ein DFA.

Wir definieren die Funktion b δ : Z × Σ

→ Z durch b δ(z, ε) := z und b δ(z, aw) := δ(δ(z, a), w) b Die von M akzeptierte Sprache ist

L(M) := {w ∈ Σ

| b δ(z

0

, w) ∈ E}.

δ b wendet δ solange an, bis das Eingabewort abgearbeitet ist

(3)

Beispiel

DFA M = ({z

0

, z

1

, z

2

}, {a, b}, δ, z

0

, {z

2

}) mit δ(z

0

, a) = z

1

δ(z

1

, b) = z

0

δ(z

0

, b) = z

0

δ(z

2

, a) = z

2

δ(z

1

, a) = z

2

δ(z

2

, b) = z

2

z

0

z

1

z

2

b

a

a b

a, b

L(M) = {uaav | uv ∈ {a, b}

}

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 9/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: DFA konstruieren

Konstruiere DFA ¨ uber Σ = {a, b} der alle Worte akzeptiert, die mit abaa beginnen und mit bab enden:

z

0

z

1

z

2

z

3

z

4

z

5

z

6

z

7

z

8

a, b

a b a a

b a b b

b a b

a a

a b b

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 10/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: DFA konstruieren (2)

Zus¨ atzlich die W¨ orter a und ab akzeptieren

z

0

z

1

z

2

z

3

z

4

z

5

z

6

z

7

z

8

a, b

a b a a

b a b b

b a b

a a

a b b

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 11/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Lauf

Definition

Sei M = (Z, Σ, δ, z

0

, E) ein DFA und w ∈ Σ

mit |w| = n.

Die Folge von Zust¨ anden q

0

, . . . , q

n

mit q

0

= z

0

und

q

i

= δ(q

i−1

, w[i]) bezeichnet man als Lauf von M f¨ ur Wort w.

F¨ ur eine solchen Lauf schreiben wir auch:

q

0

−−→

w[1]

q

1

−−→ · · ·

w[2]

−−−−→

w[n−1]

q

n−1

−−→

w[n]

q

n

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 12/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(4)

DFAs akzeptieren regul¨ are Sprachen

Theorem 4.2.1

Sei M = (Z, Σ, δ, z

0

, E) ein DFA. Dann ist L(M) regul¨ ar.

Beweis: Sei G = (V, Σ, P, S) die regul¨ are Grammatik mit V = Z, S = z

0

, P = {z

i

→ az

j

| δ(z

i

, a) = z

j

}

∪ {z

i

→ a | δ(z

i

, a) = z

j

∧ z

j

∈ E}

∪ {z

0

→ ε | falls z

0

∈ E}

Offensichtlich ε ∈ L(M ) ⇐⇒ ε ∈ L(G). Ansonsten:

w = a

1

· · · a

m

∈ L(M )

g.d.w. es gibt z

1

, . . . , z

m

∈ Z mit δ(z

i−1

, a

i

) = z

i

und z

m

∈ E.

g.d.w. z

0

G

a

1

z

1

, f¨ ur 1 ≤ i < m: a

1

· · · a

i−1

z

i−1

G

a

1

· · · a

i

z

i

und a

1

· · · a

m−1

z

m−1

G

a

1

· · · a

m

, d.h. z

0

G

a

1

· · · a

m

g.d.w. w = a

1

· · · a

m

∈ L(G)

Daher gilt L(M ) = L(G) und somit ist L(M) regul¨ ar.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 13/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: Konstruktion Typ 3-Grammatik aus DFA

DFA M = ({z

0

, z

1

, z

2

}, {a, b}, δ, z

0

, {z

2

}) mit δ(z

0

, a) = z

1

δ(z

1

, b) = z

0

δ(z

0

, b) = z

0

δ(z

2

, a) = z

2

δ(z

1

, a) = z

2

δ(z

2

, b) = z

2

z

0

z

1

z

2

b

a

a b

a, b

Die erzeugte regul¨ are Grammatik dazu ist:

G = ( {z

0

, z

1

, z

2

}, {a, b}, P, z

0

) mit P = {z

0

→ az

1

| bz

0

,

z

1

→ az

2

| a | bz

0

, z

2

→ az

2

| a | bz

2

| b}

.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 14/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Wird jede regul¨ are Sprache durch einen DFA akzeptiert?

Der vorherige Beweis konstruiert:

” f¨ ur jeden DFA gibt es eine ¨ aquivalente regul¨ are Grammatik“

F¨ ur die andere Richtung w¨ are notwendig

” f¨ ur jede regul¨ are Grammatik gibt es einen ¨ aquivalenten DFA“

Problem:

Produktionen: A → aA

1

und A → aA

2

k¨ onnen in Grammatiken vorkommen

Konstruktion des determinstischen Automaten unklar.

Daher: Beweis, dass DFAs alle regul¨ aren Sprachen akzeptieren, erfolgt auf Umwegen

Nichtdeterministische Endliche Automaten

Ideen

Zustandswechsel nicht eindeutig, sondern nichtdeterministisch in einen von mehreren m¨ oglichen

D.h. der Automat darf sozusagen

” raten“ welchen Nachfolgezustand er w¨ ahlt

Im Zustandsgraph erlaubt:

z

z

1

z

2

a a

Technisch:

DFA δ : Z × Σ → Z und ein Startzustand

NFA δ : Z × Σ → P(Z) und Menge von Startzust¨ anden

(5)

Definition NFA

Definition

Ein nichtdeterministischer endlicher Automat (nondeterministic finite automaton, NFA) ist ein 5-Tupel (Z, Σ, δ, S, E ) wobei

Z ist eine endliche Menge von Zust¨ anden,

Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅, S ⊆ Z ist die Menge der Startzust¨ ande,

E ⊆ Z ist die Menge der Endzust¨ ande und

δ : Z × Σ → P (Z) ist die Zustands¨ uberf¨ uhrungsfunktion

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 17/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Akzeptanz beim NFA

” Ein Wort w wird vom NFA akzeptiert, wenn es einen Pfad von einem Startzustand zum Endzustand entlang w gibt“

Definition (Akzeptierte Sprache eines NFA) Sei M = (Z, Σ, δ, S, E) ein NFA.

Wir definieren b δ : (P(Z) × Σ

) → P (Z) induktiv durch:

δ(X, ε) b := X f¨ ur alle X ⊆ Z δ(X, aw) b := S

z∈X

b δ(δ(z, a), w) f¨ ur alle X ⊆ Z Die von M akzeptierte Sprache ist

L(M) = {w ∈ Σ

| δ(S, w) b ∩ E 6= ∅}

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 18/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: Leere Menge von Startzust¨ anden

Sei M = (Z, Σ, δ, ∅, E) ein NFA.

Dann ist L(M) = ∅.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 19/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Lauf beim NFA

Definition

Sei M = (Z, Σ, δ, S, E) ein NFA und w ∈ Σ

mit |w| = n.

Eine Folge von Zust¨ anden q

0

, . . . , q

n

mit q

0

∈ S und

q

i

∈ δ(q

i−1

, w[i]) bezeichnet man als Lauf von M f¨ ur Wort w.

Beachte: W¨ ahrend es bei DFAs genau einen Lauf pro Wort gibt, kann es bei NFAs mehrere geben.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 20/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(6)

Beispiel

Sei M = ({z

0

, z

1

, z

2

, z

3

}, {a, b, c}, δ, {z

0

, z

3

}, {z

3

}) ein NFA mit δ(z

0

, a) = {z

0

, z

1

}

δ(z

0

, b) = {z

0

} δ(z

0

, c) = {z

0

}

δ(z

1

, a) = {z

2

} δ(z

1

, b) = {z

2

} δ(z

1

, c) = {z

2

}

δ(z

2

, a) = {z

3

} δ(z

2

, b) = {z

3

} δ(z

2

, c) = {z

3

}

δ(z

3

, a) = ∅ δ(z

3

, b) = ∅ δ(z

3

, c) = ∅

Der Zustandsgraph zu M ist z

0

a z

1

a, b, c z

2

a, b, c z

3

a, b, c

.

L(M) = {ε} ∪ {uaw | u ∈ {a, b, c}

, w ∈ {a, b, c}

2

}

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 21/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Jede regul¨ are Sprache wird durch NFA erkannt

Theorem 4.4.1

F¨ ur jede regul¨ are Sprache L gibt es einen NFA M mit L(M) = L.

Beweis:

Sei G = (V, Σ, P, S) eine regul¨ are Grammatik mit L(G) = L.

Sei M = (Z, Σ, δ, S

0

, E) ein NFA mit Z = V ∪{z ·

E

} (z

E

neu), S

0

= {S}

und E = {z

E

, S } falls S → ε ∈ P , sonst E = {z

E

}, und δ(A, a) := {B | A → aB ∈ P } ∪ {z

E

| falls A → a ∈ P } δ(z

E

, a) := ∅ f¨ ur alle a ∈ Σ.

Es gilt: ε ∈ L(M ) ⇐⇒ ε ∈ L(G).

F¨ ur w = a

1

· · · a

n

gilt:

w ∈ L(G) g.d.w. S ⇒

G

a

1

A

1

G

. . . ⇒

G

a

1

· · · a

n−1

A

n−1

G

a

1

· · · a

n

g.d.w. Es gibt Zust¨ ande A

1

, . . . , A

n−1

mit

A

1

∈ δ (S, a

1

), A

i+1

∈ δ(A

i

, a

i+1

) f¨ ur 1 ≤ i ≤ n − 2 und z

E

∈ δ(A

n−1

, a

n

)

g.d.w. w ∈ L(M)

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 22/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: Konstruktion NFA aus Typ 3-Grammatik

Betrachte die regul¨ are Grammatik G = (V, Σ, P, A) mit V = {A, B, C, D}, Σ = {a, b, c} und

P = { A → ε | aB | bB | cB | aC, B → aB | bB | cB | aC, C → aD | bD | cD, D → a | b | c}

.

Konstruktion des dazu passenden NFA: M = (Z, Σ, δ, S, E ) mit Z = V ∪ {z

E

} = {A, B, C, D, z

E

},

E = {A, z

E

}, S = {A} und δ(A, a)={B, C}

δ(A, b) ={B}

δ(A, c) ={B}

δ(B, a)={B, C}

δ(B, b) ={B}

δ(B, c) ={B}

δ(C, a)={D}

δ(C, b) ={D}

δ(C, c) ={D}

δ(D, a)={z

E

} δ(D, b) ={z

E

} δ(D, c) ={z

E

}

δ(z

E

, a)=∅

δ(z

E

, b) =∅

δ(z

E

, c) =∅

Beispiel: Konstruktion NFA aus Typ 3-Grammatik (2)

Der Zustandsgraph zu M ist

A

B a C a, b, c D a, b, c z

E

a, b, c

a, b, c

a

(7)

NFAs in DFAs transformieren

Theorem 4.5.1 (Rabin & Scott 1959)

Jede von einem NFA akzeptierte Sprache ist auch durch einen DFA akzeptierbar.

Beweisidee:

Konstruiere f¨ ur einen gegebenen NFA einen DFA, sodass sich

” der DFA alle Zust¨ ande merkt, in denen der NFA sein k¨ onnte“

Z.B. babbabb z

0

z

0

z

0

z

0

z

0

z

0

z

0

z

0

z

0

z

1

z

1

z

1

z

2

z

2

z

2

z

3

z

3

z

3

z

3

a a, b, c a, b, c a, b, c

Konstruktion: Jede Teilmenge von Zust¨ anden des NFA wird zu einem Zustand des DFA (daher: Potenzmengenkonstruktion)

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 25/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Potenzmengenkonstruktion

F¨ ur NFA M = (Z, Σ, δ, S, E ) konstruieren wir den DFA M

0

= (Z

0

, Σ, δ

0

, S

0

, E

0

) mit

Z

0

= P (Z)

” Zustandsmenge ist Potenzmenge von Z“

S

0

= S

” Startzustand ist Menge S aller Startzust¨ ande von M“

E

0

= {X ∈ Z

0

| (E ∩ X) 6= ∅}

” Jede Menge, die mind. einen Endzustand von E enth¨ alt, ist Endzustand in M

0

δ

0

(X, a) = S

z∈X

δ(z, a) = b δ(X, a)

” δ

0

(X, a) berechnet alle von einem Zustand in X aus ¨ uber a erreichbaren Zust¨ ande.“

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 26/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Korrektheit der Potenzmengenkonstruktion

Wir beweisen, dass L(M ) = L(M

0

) gilt, indem wir zeigen:

w ∈ L(M) g.d.w. w ∈ L(M

0

)

Fall w = ε:

ε ∈ L(M) g.d.w. S ∩ E 6= ∅ g.d.w S ∈ E

0

g.d.w. ε ∈ L(M

0

) Fall w = a

1

· · · a

n

∈ Σ

:

w ∈ L(M) g.d.w. δ(S, w) b ∩ E 6= ∅

g.d.w. Es gibt Teilmengen Z

1

, . . . , Z

n

von Z mit

δ(S, a

1

) = Z

1

, δ(Z

i

, a

i+1

) = Z

i+1

f¨ ur i = 1, . . . , n − 1 und Z

n

∩ E 6= ∅

g.d.w. δ b

0

(S

0

, w) ∈ E

0

g.d.w w ∈ L(M

0

)

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 27/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: Potenzmengenkonstruktion

F¨ur NFA

z

0

a z

1

a, b, c z

2

a, b, c z

3

a, b, c

wird der DFA konstruiert:

M

0= (P({z0

, z

1

, z

2

, z

3}),{a, b, c}, δ0

, S

0

, E

0)mit

S

0={z0

, z

3}

E

0={{z3},{z0

, z

3},{z1

, z

3},{z2

, z

3},{z0

, z

1

, z

3},{z0

, z

2

, z

3},{z1

, z

2

, z

3},{z0

, z

1

, z

2

, z

3}}

δ0(∅, d) =∅f¨urd∈ {a, b, c}

δ0({z0}, a) ={z0, z1}

δ0({z0}, d) ={z0}f¨urd∈ {b, c}

δ0({z1}, d) ={z2}f¨urd∈ {a, b, c}

δ0({z2}, d) ={z3}f¨urd∈ {a, b, c}

δ0({z3}, d) =∅f¨urd∈ {a, b, c}

δ0({z0, z1}, a) ={z0, z1, z2}

δ0({z0, z1}, d) ={z0, z2}f¨urd∈ {b, c}

δ0({z0, z2}, a) ={z0, z1, z3}

δ0({z0, z2}, d) ={z0, z3}f¨urd∈ {b, c}

δ0({z0, z3}, a) ={z0, z1}

δ0({z0, z3}, d) ={z0}f¨urd∈ {b, c}

δ0({z1, z2}, d) ={z2, z3}f¨urd∈ {a, b, c}

δ0({z1, z3}, d) ={z2}f¨urd∈ {a, b, c}

δ0({z2, z3}, d) ={z3}f¨urd∈ {a, b, c}

δ0({z0, z1, z2}, a) ={z0, z1, z2, z3}

δ0({z0, z1, z2}, d) ={z0, z2, z3}f¨urd∈ {b, c}

δ0({z0, z1, z3}, a) ={z0, z1, z2}

δ0({z0, z1, z3}, d) ={z0, z2}f¨urd∈ {b, c}

δ0({z0, z2, z3}, a) ={z0, z1, z3}

δ0({z0, z2, z3}, d) ={z0, z3}f¨urd∈ {b, c}

δ0({z1, z2, z3}, d) ={z2, z3}f¨urd∈ {a, b, c}

δ0({z0, z1, z2, z3}, a) ={z0, z1, z2, z3} δ0({z0, z1, z2, z3}, b) ={z0, z2, z3} δ0({z0, z1, z2, z3}, c) ={z0, z2, z3}

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 28/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(8)

Beispiel: Potenzmengenkonstruktion (2)

z

0

z

0

z

0

z

0

z

0

z

0

z

0

z

0

z

0

z

1

z

1

z

1

z

2

z

2

z

2

z

3

z

3

z

3

z

3

a a, b, c a, b, c

a, b, c

Ablauf bei Eingabe babbabb

DFA als Zustandsgraph (nur erreichbare Zust¨ ande):

{z0,z3}

{z0,z3} {z0,z3} {z0,z3}

{z0,z1}

{z0,z1} {z0,z1}

{z0,z1,z2} {z0,z1,z2,z3}

{z0,z2,z3} {z0,z2}

{z0,z2} {z0,z2}

{z0,z1,z3} {z0}

{z0}

b, c a b, c

a

b, c a

a b, c

a

a b, c

b, c

a

b, c

b, c a

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 29/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

DFAs & NFAs sind Formalismen f¨ ur Typ 3-Sprachen

Theorem 4.5.4

DFAs und NFAs erkennen genau die regul¨ aren Sprachen.

Das folgt aus:

Theorem 4.2.1: Sei M ein DFA. Dann ist L(M ) regul¨ ar.

Theorem 4.4.1: F¨ ur jede regul¨ are Sprache L gibt es einen NFA M mit L(M ) = L.

Theorem 4.5.1: Jede von einem NFA akzeptierte Sprache ist auch durch einen DFA akzeptierbar.

Jeder DFA kann leicht auch als NFA interpretiert werden

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 30/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Gr¨ oße des DFAs vs NFAs (1)

Sei M ein NFA mit n Zust¨ anden.

Der durch die Potenzmengenkonstruktion erstellte DFA hat 2

n

Zust¨ ande!

D.h. der Platz explodiert uns!

Frage: Geht es besser (unsere Kodierung ist zu einfach) oder nicht?

Das folgende Lemma zeigt, dass es nicht wirklich besser geht

Gr¨ oße des DFAs vs NFAs (2)

Lemma

Sei L

n

= {uav | u ∈ {a, b}

, v ∈ {a, b}

n−1

} f¨ ur n ∈ N

>0

.

(Sprache aller W¨ orter aus {a, b}

, die an n-letzter Stelle ein a haben).

Es gibt NFA M

n

mit L(M

n

) = L

n

und M

n

hat n + 1 Zust¨ ande.

Jeder DFA M

n0

mit L(M

n0

) = L

n

, hat mindestens 2

n

Zust¨ ande.

Beweis (Teil 1): Sei M

n

der folgende NFA:

z

0

a z

1

a, b z

2

a, b a, b z

n−1

a, b z

n

a, b

L(M

n

) = L

n

, denn:

zum Akzeptieren m¨ ussen z

0

, z

1

, . . . z

n

nacheinander durchlaufen

werden, was genau mit W¨ ortern av mit v ∈ {a, b}

n−1

m¨ oglich ist

In z

0

kann zuvor jedes u ∈ {a, b}

gelesen werden (Verbleib in z

0

).

(9)

Gr¨ oße des DFAs vs NFAs (3)

Beweis (Teil 2): Beweis durch Widerspruch.

Annahme: Es gibt n ∈ N

>0

und DFA M

0

= (Z, {a, b}, δ, z

0

, E) mit L(M

0

) = L

n

= {uav | u ∈ {a, b}

, v ∈ {a, b}

n−1

} und |Z| < 2

n

Menge W = {a, b}

n

enth¨ alt 2

n

Worte der L¨ ange n und da |Z| < 2

n

, muss es w 6= w

0

∈ W geben mit b δ(z

0

, w) = δ(z b

0

, w

0

) = z

i

Sei j die erste Position, an der sich w und w

0

unterscheiden.

Falls j = 1, dann ist o.B.d.A. w = au ∈ L

n

aber w

0

= bu

0

6∈ L

n

und z

i

∈ E und z

i

6∈ E m¨ usste gleichzeitig gelten. Widerspruch!

Falls j > 1: O.B.d.A. w = uav und w

0

= ubv

0

mit |v| = |v

0

| = n − j Sei w

0

= wb

j−1

= uavb

j−1

w

00

= w

0

b

j−1

= ubv

0

b

j−1

Dann muss gelten b δ(w

0

) = δ(w b

00

), da b δ(uav) = z

i

= δ(ubv b

0

).

Aber w

0

∈ L

n

und w

00

6∈ L

n

, Widerspruch!

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 33/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

NFAs mit ε-¨ Uberg¨ angen

ε- ¨ Uberg¨ ange erlauben Zustandswechsel ohne Lesen eines Zeichens (es wird sozusagen das leere Wort ε gelesen)

Ausdruckskraft ¨ andert sich mit ε- ¨ Uberg¨ angen nicht ε- ¨ Uberg¨ ange machen manche Konstruktionen einfacher.

Definition (NFA mit ε- ¨ Uberg¨ angen)

Ein nichtdeterministischer endlicher Automat mit ε- ¨ Uberg¨ angen (NFA mit ε- ¨ Uberg¨ angen) ist ein Tupel M = (Z, Σ, δ, S, E ) wobei

Z ist eine endliche Menge von Zust¨ anden,

Σ ist das (endliche) Eingabealphabet mit (Z ∩ Σ) = ∅, S ⊆ Z ist die Menge der Startzust¨ ande,

E ⊆ Z ist die Menge der Endzust¨ ande und

δ : Z × (Σ ∪ {ε}) → P(Z) ist die Zustands¨ uberf¨ uhrungsfunktion

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 34/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: NFA mit ε-¨ Uberg¨ angen

z

1

z

0

a z

2

a, b, c z

3

a, b, c z

4

a, b, c

ε ε

ε Akzeptierte Sprache:

alle Worte aus {a, b, c}

, die an letzter, vorletzter, oder drittletzter Postion ein a haben, und das leere Wort

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 35/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

ε-H¨ ulle

Definition (ε-H¨ ulle)

Sei M = (Z, Σ, δ, S, E) ein NFA mit ε- ¨ Uberg¨ angen. Die ε-H¨ ulle clos

ε

(z) eines Zustands z ∈ Z ist induktiv definiert als die kleinste Menge von Zust¨ anden, welche die folgenden Eigenschaften erf¨ ullt:

1

z ∈ clos

ε

(z).

2

Wenn z

0

∈ clos

ε

(z) und z

00

∈ δ(z

0

, ε), dann ist auch z

00

∈ clos

ε

(z).

F¨ ur eine Zustandsmenge X ⊆ Z definieren wir clos

ε

(X ) := S

z∈X

clos

ε

(z).

Die ε-H¨ ulle f¨ ugt f¨ ur eine Zustandsmenge alle durch ε- ¨ Uberg¨ ange erreichbaren Zust¨ ande hinzu.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 36/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(10)

ε-H¨ ulle (2)

Die ε-H¨ ulle f¨ ur eine Zustandsmenge X ⊆ Z kann auch berechnet werden durch:

clos

ε

(X ) :=

X, wenn S

z∈X

δ(z, ε) ⊆ X clos

ε

(X ∪ S

z∈X

δ(z, ε)), sonst

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 37/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel

z

1

z

0

a z

2

a, b, c z

3

a, b, c z

4

a, b, c

ε ε

ε

clos

ε

(z

0

) = {z

0

} clos

ε

(z

1

) = {z

1

} clos

ε

(z

4

) = {z

4

} clos

ε

(z

3

) = {z

1

, z

3

, z

4

} clos

ε

(z

2

) = {z

1

, z

2

, z

3

, z

4

}

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 38/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

NFA mit ε-¨ Uberg¨ angen: Akzeptierte Sprache

Akzeptierte Sprache eines NFA mit ε- ¨ Uberg¨ angen Sei M = (Z, Σ, δ, S, E ) ein NFA mit ε- ¨ Uberg¨ angen.

Wir definieren e δ : (P (Z) × Σ

) → P(Z) induktiv durch:

δ(X, ε) e := X δ(X, aw) := e S

z∈X

e δ(clos

ε

(δ(z, a)), w) f¨ ur alle X ⊆ Z Die von M akzeptierte Sprache ist

L(M ) := {w ∈ Σ

| δ(clos e

ε

(S), w) ∩ E 6= ∅}

ε-¨ Uberg¨ ange ¨ andern die Ausdruckskraft nicht (1)

Satz 4.6.7

NFAs mit ε- ¨ Uberg¨ angen akzeptieren genau die regul¨ aren Sprachen.

Beweis

” ⇐“:

Jede regul¨ are Sprache wird von einem

” normalen“ NFA akzeptiert.

Transformiere diesen NFA in einen NFA mit ε- ¨ Uberg¨ angen:

Setze δ(z, ε) = ∅ f¨ ur alle Zust¨ ande z

Offensichtlich ist die akzeptierte Sprache diesselbe.

Daher wird jede regul¨ are Sprache von einem NFA mit

ε- ¨ Uberg¨ angen akzeptiert.

(11)

ε-¨ Uberg¨ ange ¨ andern die Ausdruckskraft nicht (2)

Beweis

” ⇒“: Sei M = (Z, Σ, δ, S, E) ein NFA mit ε- ¨ Uberg¨ angen.

Konstruiere NFA M

0

mit L(M) = L(M

0

). Dann ist L(M) regul¨ ar.

M

0

= (Z, Σ, δ

0

, S

0

, E) mit S

0

= clos

ε

(S), δ

0

(z, a) = clos

ε

(δ(z, a)).

L(M) = L(M

0

):

Wir zeigen δ(clos e

ε

(X ), w) = δ b

0

(clos

ε

(X ), w) f¨ ur alle X ⊆ Z und w ∈ Σ

. Wir verwenden Induktion ¨ uber die Wortl¨ ange |w|.

Basis: w = ε. Dann gilt e δ(clos

ε

(X ), ε) = clos

ε

(X) = δ b

0

(clos

ε

(X ), ε) Schritt: Sei w = au mit a ∈ Σ. Wir formen um:

e δ(clos

ε

(X ), au)

Def.

=

eδ

S

z∈closε(X)

e δ(clos

ε

(δ(z, a)), u)

I.H.

= S

z∈closε(X)

δ b

0

(clos

ε

(δ(z, a)), u)

Def.δ0

= S

z∈closε(X)

δ b

0

0

(z, a), u)

Def.

=

bδ

δ b

0

(clos

ε

(X ), au)

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 41/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Eindeutige Start- und Endzust¨ ande

Satz 4.6.8

F¨ ur jeden NFA M mit ε- ¨ Uberg¨ angen gibt es einen NFA M

0

mit ε- ¨ Uberg¨ angen, sodass L(M ) = L(M

0

) und M

0

genau einen Startzustand und genau einen Endzustand hat, wobei diese beiden Zust¨ ande verschieden sind.

Beweis: Konstruiere M

0

aus M , durch Hinzuf¨ ugen eines neuen Start- und eines neuen Endzustand mit ε- ¨ Uberg¨ angen:

M

wird zu

ε ε ε

ε ε ε

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 42/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel

z

1

z

0

a z

2

a, b, c z

3

a, b, c z

4

a, b, c

ε ε

ε wird zu

z

S

z

E

z

1

z

0

ε

ε a z

2

a, b, c z

3

a, b, c z

4

a, b, c

ε ε

ε

ε

ε

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 43/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Regul¨ are Ausdr¨ ucke

Regul¨ are Ausdr¨ ucke sind (wie Automaten und Grammatiken) ein Formalismus zur Repr¨ asentation von Sprachen.

Praktische Verwendung: Regex-Bibliotheken in Programmiersprachen zum Suchen und Ersetzen von Zeichenketten

(verwenden meist erweiterte regul¨ are Ausdr¨ ucke) Aufbau regul¨ arer Ausdr¨ ucke:

Basisausdr¨ ucke und Operatoren zum Zusammensetzen.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 44/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(12)

Regul¨ are Ausdr¨ ucke (2)

Definition (Regul¨ arer Ausdruck)

Sei Σ ein Alphabet. Ein regul¨ arer Ausdruck ¨ uber Σ ist induktiv definiert:

∅ ist ein regul¨ arer Ausdruck ε ist ein regul¨ arer Ausdruck

a mit a ∈ Σ ist ein regul¨ arer Ausdruck

Wenn α

1

und α

2

regul¨ are Ausdr¨ ucke sind, dann auch α

1

α

2

Wenn α

1

und α

2

regul¨ are Ausdr¨ ucke sind, dann auch (α

1

2

) Wenn α regul¨ arer Ausdruck ist, dann auch (α)

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 45/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Regul¨ are Ausdr¨ ucke (3)

Erzeugte Sprache

Die von einem regul¨ aren Ausdruck α erzeugte Sprache L(α) ist induktiv ¨ uber dessen Struktur definiert:

L(∅) := ∅ L(ε) := {ε}

L(a) := {a} f¨ ur a ∈ Σ

L(α

1

α

2

) := L(α

1

)L(α

2

) = {uv | u ∈ L(α

1

), v ∈ L(α

2

)}

L(α

1

2

) := L(α

1

) ∪ L(α

2

) L((α)

) := L(α)

F¨ ur alle regul¨ aren Ausdr¨ ucke α

1

, α

2

, α

3

gilt:

L((α

1

2

)|α

3

) = L(α

1

|(α

2

3

))

Daher lassen wir Klammern weg und schreiben (α

1

2

| . . . |α

n

).

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 46/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiele

(a|b)

aa(a|b)

erzeugt alle Worte ¨ uber {a, b} die zwei aufeinanderfolgende a’s enthalten

(ε|((a|b|c)

a(a|b|c)(a|b|c)(a|b|c))) erzeugt alle Worte ¨ uber {a, b, c}, die an viertletzter Stelle ein a haben und das leere Wort

((0|1|2|3|4|5|6|7|8|9)|1(0|1|2|3|4|5|6|7|8|9)|(2(0|1|2|3))) : ((0|1|2|3|4|5)(0|1|2|3|4|5|6|7|8|9)) erzeugt alle Uhrzeiten im 24-Stunden-Format

Eine endliche Sprache S = {w

1

, . . . , w

n

} wird durch (w

1

| . . . |w

n

) erzeugt.

Satz von Kleene

Theorem 4.7.4 (Satz von Kleene)

Regul¨ are Ausdr¨ ucke erzeugen genau die regul¨ aren Sprachen.

Beweis in zwei Teilen:

1

Jede von einem regul¨ aren Ausdruck erzeugte Sprache ist regul¨ ar.

2

F¨ ur jede regul¨ are Sprache gibt es einen regul¨ aren Ausdruck,

der sie erzeugt.

(13)

Beweis: Satz von Kleene (1)

1. Jede von einem regul¨ aren Ausdruck erzeugte Sprache ist regul¨ ar.

Beweis:

Wir konstruieren f¨ ur regul¨ aren Ausdruck α einen NFA M

α

mit ε- ¨ Uberg¨ angen und eindeutigen Start- und Endzust¨ anden, sodass L(M

α

) = L(α).

Induktion ¨ uber die Struktur von α Basisf¨ alle:

F¨ ur α = a ∈ Σ konstruiere

a

F¨ ur α = ε konstruiere

ε

F¨ ur α = ∅ konstruiere

In allen F¨ allen ist L(α) = L(M

α

) offensichtlich

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 49/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beweis: Satz von Kleene (2)

Induktionsschritt: Betrachte den Aufbau von α (3 F¨ alle) F¨ ur α = α

1

α

2

, liefert die I.H. M

α1

, M

α2

.

M

α1

M

α2

Konstruiere daraus M

α

:

ε

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 50/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beweis: Satz von Kleene (3)

F¨ ur α = (α

1

2

) liefert die I.H. M

α1

, M

α2

: M

α1

M

α2

Konstruiere daraus M

α

:

ε

ε

ε

ε

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 51/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beweis: Satz von Kleene (4)

F¨ ur α = (α

1

)

liefert die I.H. M

α1

M

α1

Konstruiere daraus M

α

:

ε

ε ε

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 52/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(14)

Beweis: Satz von Kleene (5)

2. F¨ ur jede reg. Sprache L gibt es einen regul¨ aren Ausdruck α mit L(α) = L Beweis:

Sei DFA M = ({z

1

, . . . , z

n

}, Σ, δ, z

1

, E) mit L(M ) = L gegeben.

F¨ ur w ∈ Σ

und z

i

∈ z mit b δ(z

i

, w) = z

j

sei visit

i

(w) = q

1

, . . . , q

m

die Folge der besuchten Zust¨ ande (wobei q

1

= z

i

und q

m

= z

j

).

Wir definieren:

L

ki,j

=

w ∈ Σ

b δ(z

i

, w) = z

j

und visit

i

(w) = q

1

, . . . , q

m

, sodass f¨ ur 1 < l < m: wenn q

l

= z

p

dann p ≤ k

L

ki,j

enth¨ alt die Worte, die M von Zustand z

i

zu Zustand z

j

f¨ uhren ohne dabei Zwischenzust¨ ande mit Index gr¨ oßer als k zu benutzen.

Mit Induktion ¨ uber k zeigen wir, dass es regul¨ are Ausdr¨ ucke α

ki,j

mit L(α

ki,j

) = L

ki,j

gibt.

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 53/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beweis: Satz von Kleene (6)

Zur Erinnerung:Lki,j enth¨alt die Worte, dieM von Zustandzizu Zustandzjf¨uhren ohne dabei Zwischenzust¨ande mit Index gr¨oßer alskzu benutzen.

Basis: k = 0

Wenn i 6= j, dann ist L

0i,j

= {a ∈ Σ | δ(z

i

, a) = z

j

}.

Falls L

0i,j

= {a

1

, . . . , a

q

}, dann gilt L(α

0i,j

) = L

0i,j

f¨ ur α

0i,j

= (a

1

| . . . |a

q

).

Falls L

0i,j

= ∅, dann gilt L(α

0i,j

) = L

0i,j

mit α

0i,j

= ∅.

Wenn i = j, dann ist L

0i,i

= {ε} ∪ {a ∈ Σ | δ(z

i

, a) = z

i

}.

Sei L

0i,i

= {ε, a

1

, . . . , a

q

}.

Dann gilt L(α

0i,i

) = L

0i,i

f¨ ur α

0i,i

= (ε|a

1

| . . . |a

q

).

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 54/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beweis: Satz von Kleene (7)

Zur Erinnerung:Lki,jenth¨alt die Worte, dieMvon Zustandzizu Zustandzjf¨uhren ohne dabei Zwischenzust¨ande mit Index gr¨oßer alskzu benutzen.

Induktionsschritt: k → k + 1

L

k+1i,j

= L

ki,j

∪ L

ki,k+1

(L

kk+1,k+1

)

L

kk+1,j

,

denn entweder l¨ auft M ohne Zustand z

k+1

zu besuchen, oder der Lauf kann in 3 Teile gespalten werden:

1

Lauf von z

i

bis zum ersten Besuch des Zustands z

k+1

(abgedeckt durch L

ki,k+1

)

2

Mehrmaliges, zyklisches Besuchen von k + 1 (beliebig oft) (abgedeckt durch L

kk+1,k+1

)

3

Letztmaliges Verlassen von z

k+1

und Lauf bis zu z

j

(abgedeckt durch L

kk+1,j

)

Daher gilt α

k+1i,j

= (α

ki,j

ki,k+1

kk+1,k+1

)

α

kk+1,j

) und L(α

k+1i,j

) = L

k+1i,j

. F¨ ur E = {z

i1

, . . . , z

ir

} gilt L(α

n1,i

1

n1,i

2

| . . . |α

n1,i

r

) = S

z∈E

L

n1,i

= L(M )

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 55/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Beispiel: Regul¨ arer Ausdruck → NFA mit ε-¨ Uberg¨ angen

NFA zum regul¨ aren Ausdruck

(ε|(a|b)

b(a|b))

konstruieren:

ε

a

ε b

ε ε

ε ε

ε

ε ε b

a

b ε

ε

ε

ε ε ε

ε

ε ε

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 56/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

(15)

Beispiel: DFA → regul¨ arer Ausdruck

z

1

z

2

a

a Regul¨ arer Ausdruck dazu:

α

21,2

= (α

11,2

11,2

12,2

)

α

12,2

)

= ((a|ε(ε)

a) | (a|ε(ε)

a) (ε|a(ε)

a)

(ε|a(ε)

a))

= (a|a(aa)

) (durch Vereinfachung) denn

α

01,1

= ε α

02,2

= ε α

01,2

= a α

02,1

= a α

11,2

= (α

01,2

01,1

01,1

)

α

01,2

) = (a|ε(ε)

a) α

12,2

= (α

02,2

02,1

01,1

)

α

01,2

) = (ε|a(ε)

a)

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 57/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Zusammenfassung: Formalismen f¨ ur regul¨ are Sprachen

Regul¨ are Grammatiken (=Regul¨ are Sprachen)

NFAs

NFAs mit ε- ¨ Uberg¨ angen

NFAs mit ε- ¨ Uberg¨ angen und eindeutigem Start- und

Endzustand

DFAs

Regul¨ are Ausdr¨ ucke Theorem 4.2.1

offensichtlich

Theorem 4.5.1 Theorem 4.4.1

Satz 4.6.7

Satz 4.6.8

Theorem 4.7.4

Theorem 4.7.4

Kanten → zeigen Kodierungen

TCS | 02 Regul¨are Sprachen (I) | SoSe 2019 58/58 DFAs NFAs NFAs+ε Regul¨are Ausdr¨ucke Zusammenf.

Referenzen

ÄHNLICHE DOKUMENTE

Chomsky-Grammatiken und die Chomsky-Hierarchie Regul¨ are Sprachen: DFAs, NFAs, regul¨ are Ausdr¨ ucke, Aquivalenz der Formalismen, Pumping-Lemma, Satz von ¨ Myhill-Nerode,

Folgerungen aus dem Satz von Kleene Korollar 2.3.2 die Klasse der regul¨ aren Sprachen ist abgeschlossen unter allen Booleschen Operationen sowie Konkatenation und Stern

regul¨ are Grammatiken – endliche Automaten Satz 3.2.7 regul¨ are Grammatiken charakterisieren regul¨ are Sprachen L ⊆ Σ ∗ regul¨

Platonische K¨ orper (regul¨ are Polyeder). Name Punkt-

– Two regular expressions may be concatenated; the resulting regular expression matches any string concatenating two substrings that match the subexpressions. – Two regular

– Auch f¨ur komplexere Strukturen als regul¨are Sprachen – G¨angig f¨ur die Beschreibung von Programmiersprachen.. Beispiel: Auszug der Grammatik

In vielen F¨ allen m¨ ochte man, dass ein regul¨ arer Ausdruck an einer Stelle nicht auf ein besonderes Zeichen sondern auf eine ganze Menge von Zeichen passt.. Dies kann durch

Du kannst nach literalen Zeichenketten suchen und weisst, dass bei regul¨ aren Aus- dr¨ ucke standardm¨ assig Gross- und Kleinschreibung unterschieden werden.. Du kannst regul¨