A ∪ (B ∪ C) = (A · B) · C
= (A ∪ B) ∪ C
= B∪A
(A∗ )∗
(A ∪ {ε})∗ = A+
= A∗
= A∗
A · {ε} = A
{ε} · A = A
Rechenregeln
A · (B · C) = A·B∪A·C A · A∗
A∪B
A · (B ∪ C) = B·A∪C ·A
Regul¨ are Sprachen
Alle Sprachen, die aus einem Alphabet Σ durch Vereinigung, Verkettung und Kleene-Stern gebildet werden k¨onnen.
¨ Aquivalente Definitionen: endliche Automaten, regul¨are Grammatiken
(B ∪ C) · A
Anwendungen in der Informatik:
= {0, . . . , 9}
15
Grundmenge A0 ⊆ B,
Induktive Definition Gegeben:
ur i nach unendlich: Limes von Ai f¨
=
17
x1 , . . . , x n ∈ A ⇒
i≥0
Ai
f (x1 , . . . , xn ) ∈ A
Definition. A heißt abgeschlossen unter f , wenn gilt:
A
[
Ai+1 = Ai ∪ {f (e1 , . . . , em ) | e1 , . . . , em ∈ Ai }
Stufenweise Konstruktion von Mengen:
Bildungsregel f : B n → B
• DOS, Unix-Shells, grep, awk, Perl, Xml, . . .
• Texteditoren: erweiterte Suche
• Compilerbau: Tokens bilden regul¨are Sprache, verarbeitet durch Scanner (Lexer). Regul¨are Ausdr¨ ucke dienen als Eingabe f¨ ur Scannergeneratoren (lex, flex).
A∗ · A = A +
digit = {E, E+, E-} · digit +
A+ ∪ {ε} = A∗
scale = digit + · {.} · digit ∗ · ({ε} ∪ scale)
Beispiel. Real-Zahlen
real
14
Definition. Die Menge der regul¨aren Sprachen u ¨ber Σ, Lreg (Σ), ist die kleinste Menge, sodass ur alle s ∈ Σ (a) {}, {ε}, {s} ∈ Lreg (Σ) f¨ (b) A, B ∈ Lreg (Σ) ⇒ A ∪ B, A · B, A∗ ∈ Lreg (Σ) uber Vereinigung, Satz. Lreg (Σ) ist abgeschlossen gegen¨ Durchschnitt, Verkettung, Komplement, Differenz, Stern- und Plus-Operator, Homomorphismen und Quotientenbildung. Satz. Seien L1 und L2 regul¨are Sprachen spezifiziert durch Verkettung, Vereinigung und Stern-Operator. Die Probleme
leer, endlich, unendlich?
(a) Geh¨ort ein Wort w der Sprache L1 an? (b) Ist
L1
(c) Gilt L1 = L2 ? sind entscheidbar. 16
Satz. (a) A ist abgegeschlossen unter f . (b) Ist A0 abgeschlossen unter f und gilt A0 ⊆ A0 ⊆ B, dann gilt A ⊆ A0 .
s
statt
statt
{}
{ε}
{s} f¨ ur s ∈ Σ
L∗
L1 L2
L1 + L 2
bleibt
statt
statt
L∗
L 1 · L2
L 1 ∪ L2
Algebraische Notation
ε
statt
hat die h¨ochste Priorit¨at, + die niedrigste.
∅ ∗
digit
= E (ε + + + -) digit digit ∗
= 0 + ···+ 9
D.h.: A ist die kleinste Menge, die A0 enth¨alt und abgeschlossen ist unter f . Schema der induktiven Definition A ist die kleinste Menge, f¨ ur die gilt:
scale
Beispiel. Real-Zahlen (algebraisch)
(a) A0 ⊆ A
= digit digit ∗ . digit ∗ (ε + scale)
A| B
AB
EBNF
{ε} ∪ A
A∪B
A·B
reg. Menge
Wiederholung
Option
Alternativen
Aufeinanderfolge
A s
Syntaxdiagramm
-A
A
-A -B
A∪B
A·B
A∗
A+
{s}
A
reg. Menge
[ A]
A| B
AB
{ A}
A{ A}
" s"
A
EBNF
19
real
[ A] A∗
Gruppierung
-A -B
-A
21
A ∪ {ε}
Syntaxdiagramme
(b) x1 , . . . , xn ∈ A ⇒ f (x1 , . . . , xn ) ∈ A (A ist abgeschlossen unter f )
18
{ A} (A)
s∈Σ
EBNF-Notation
( A) {s}
Kommentar
"s"
Beispiel. Real-Zahlen (EBNF) real = digit {digit} "." {digit} [scale] scale = "E" ["+"|"-"] digit {digit} digit = "0"|"1"|"2"| · · · |"9" 20
digit - .
Beispiel. Real-Zahlen (Syntaxdiagramm) real
- digit
s Zeichen s
Zeichen s (kein Spezialsymbol)
\s
alle Zeichen außer Zeilenende
22
scale - + - E - digit
-
egrep unter Unix
. Zeilenanfang
selektiert
^
Zeilenende
Ausdruck
$
alle Zeichen in {s1 , . . ., sn } null Mal oder ¨ofter r
[s1 · · · sn ] r*
ein Mal oder ¨ofter r
alle Zeichen außer {s1 , . . ., sn }
r+
null oder ein Mal r
[^s1 · · · sn ]
r?
24
scale
digit - 0 - 1
. . . .. .. .. - 9
Regul¨ are Definitionen
Verwendung von Abk¨ urzungen f¨ ur regul¨are Teilausdr¨ ucke.
Erh¨oht nicht die Ausdruckskraft.
Bessere Strukturierung, bessere Lesbarkeit.
Keine direkte oder indirekte Rekursivit¨at:
23
= digit · digits ∪ {ε}
selektiert
digits
Ausdruck
i Mal r
ist nicht zul¨assig.
r{i}
i Mal oder ¨ofter r
r1 gefolgt von r2
r{i,} r1 r2
r1 oder r2
i bis j Mal r r1 |r2
r
r{i,j}
(r)
Beispiel. Real-Zahlen (egrep)
^[0-9]+\.[0-9]*(E[+-]?[0-9]+)?$
25
Endliche Automaten
%
NEA
Modell f¨ ur Systeme mit Ein/Ausgaben aus endlichem Wertebereich und mit endlichem Speicher. Regul¨are '$ Menge ? 6 minimaler
DEA
6
& DEA
DEA . . . deterministischer endlicher Automat NEA . . . nichtdeterministischer endlicher Automat 26
Deterministischer endlicher Automat A = hQ, Σ, δ, q0 , F i, wobei Q . . . endliche Menge von Zust¨anden
∈ Q . . . Anfangszustand
Σ . . . Eingabealphabet ¨ δ: Q × Σ → Q . . . Ubergangsfunktion (total) q0
F ⊆ Q . . . Menge von Endzust¨anden
δ ∗ (q, wa) = δ(δ ∗ (q, w), a)
¨ Erweiterte Ubergangsfunktion: δ ∗ : Q × Σ∗ → Q δ ∗ (q, ε) = q, f¨ ur alle q ∈ Q, w ∈ Σ∗ , a ∈ Σ. Akzeptierte Sprache: L(A) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∈ F } 28
Beispiel.
.
h j - q? 2
E
- q3j
Deterministischer endlicher Automat (DEA) +,digit digit
? q0j digit- q1j
.
- q? h j 2
E
ε -
digit
@ R @q? h j 5
digit
5
digit- q? h j
digit@
q4j @
digit
? - q4j 6
Nichtdeterministischer endlicher Automat (NEA) digit digit +
? q0j digit- q1j
- q3j
27
Nichtdeterministischer endlicher Automat
¨ Ubergangsfunktion: δ: Q × (Σ ∪ {ε}) → P(Q)
δ ∗ (q, w) = {q 0 ∈ Q | q ; q 0 }
w
¨ Erweiterte Ubergangsfunktion: δ ∗ : Q × Σ∗ → P(Q)
w
q ; q 0 . . . es gibt einen mit w beschrifteten Pfad von q nach q 0 Akzeptierte Sprache:
L(A) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∩ F 6= ∅}
Definition. Automaten A und A0 sind ¨aquivalent, falls L(A) = L(A0 ).
29
s ∈ (Σ ∪ {ε})
Regul¨ are Menge → NEA
j s - h j
Satz. Zu jeder regul¨aren Sprache L gibt es einen endlichen Automaten A, sodass L = L(A). j h j L = {}:
L = {s}:
L = L1 ∪ L2 : j j q0,1A1qf,1 H * H ε ε H j H h j j * HH ε ε H j H j j A 2 q q 0,2 f,2 30
Determinisierung (NEA → DEA)
ˆ | qˆ ∩ F 6= ∅} ∪ {ˆ {ˆ q∈Q q } falls ε ∈ L(A) 0 ˆ | qˆ ∩ F 6= ∅} {ˆ q∈Q sonst
ˆ a∈Σ f¨ ur alle qˆ ∈ Q,
Satz. Zu jedem NEA gibt es einen ¨aquivalenten DEA. NEA: A = hQ, Σ, δ, q0 , F i ˆ qˆ0 , Fˆ i, wobei ˆ Σ, δ, DEA: Aˆ = hQ,
=
= {q0 }
q∈ˆ q
ˆ = P(Q) Q [ ˆ q , a) = δ ∗ (q, a) δ(ˆ qˆ0 Fˆ
¨ ur Tipp: Berechne die Ubergangsfunktion ausgehend von qˆ0 nur f¨ tats¨achlich erreichbare Zust¨ande. 32
L = L1 · L2 :
L = (L1 )∗ :
j ε - j A2 h j j A1 q q q q 0,1 f,1 0,2 f,2
ε ? j ε - h j ε - j A1 j q q 0,1 f,1 6 ε
31