Rechenregeln A B = B A A (B C) = (A B) C A (B C) = (A B) C A (B C) = A B A C (B C) A = B A C A {ε} A = A A {ε} = A (A {ε}) = A (A ) = A A A = A + A A = A + A + {ε} = A Beispiel. Real-Zahlen = {0,..., 9} scale = {E, E+, E-} + real = + {.} ({ε} scale) 14 Definition. Die Menge der regulären Sprachen über Σ, Lreg(Σ), ist die kleinste Menge, sodass (a) {}, {ε}, {s} Lreg(Σ) für alle s Σ (b) A, B Lreg(Σ) A B, A B, A Lreg(Σ) Satz. Lreg(Σ) ist abgeschlossen gegenüber Vereinigung, Durchschnitt, Verkettung, Komplement, Differenz, Stern- und Plus-Operator, Homomorphismen und Quotientenbildung. Satz. Seien L1 und L2 reguläre Sprachen spezifiziert durch Verkettung, Vereinigung und Stern-Operator. Die Probleme (a) Gehört ein Wort w der Sprache L1 an? (b) Ist L1 leer, endlich, unendlich? (c) Gilt L1 = L2? sind entscheidbar. 16 Reguläre Sprachen Alle Sprachen, die aus einem Alphabet Σ durch Vereinigung, Verkettung und Kleene-Stern gebildet werden können. Äquivalente Definitionen: endliche Automaten, reguläre Grammatiken Anwendungen in der Informatik: Compilerbau: Tokens bilden reguläre Sprache, verarbeitet durch Scanner (Lexer). Reguläre Ausdrücke dienen als Eingabe für Scannergeneratoren (lex, flex). Texteditoren: erweiterte Suche DOS, Unix-Shells, grep, awk, Perl, Xml,... 15 Induktive Definition Gegeben: Grundmenge A0 B, Bildungsregel f: B n B Stufenweise Konstruktion von Mengen: Ai+1 = Ai {f(e1,..., em) e1,..., em Ai} Limes von Ai für i nach unendlich: A = i 0 Ai Definition. A heißt abgeschlossen unter f, wenn gilt: x1,..., xn A f(x1,..., xn) A 17
Satz. (a) A ist abgegeschlossen unter f. (b) Ist A abgeschlossen unter f und gilt A0 A B, dann gilt A A. D.h.: A ist die kleinste Menge, die A0 enthält und abgeschlossen ist unter f. Schema der induktiven Definition A ist die kleinste Menge, für die gilt: (a) A0 A (b) x1,..., xn A f(x1,..., xn) A (A ist abgeschlossen unter f) 18 EBNF-Notation EBNF reg. Menge Kommentar AB A B Aufeinanderfolge A B A B Alternativen [A] {ε} A Option {A} A Wiederholung ( A) (A) Gruppierung "s" {s} s Σ Beispiel. Real-Zahlen (EBNF) real = {} "." {} [scale] scale = "E" ["+" "-"] {} = "0" "1" "2" "9" 20 Algebraische Notation s statt {s} für s Σ ε statt {ε} statt {} L1 + L2 statt L1 L2 L1L2 statt L1 L2 L bleibt L hat die höchste Priorität, + die niedrigste. Beispiel. Real-Zahlen (algebraisch) = 0 + + 9 scale = E (ε + + + -) real =. (ε + scale) 19 Syntaxdiagramme Syntaxdiagramm reg. Menge EBNF A A A s {s} "s" A A + A{A} A A B A {A} A B AB A A B A B B A A {ε} [A] 21
Beispiel. Real-Zahlen (Syntaxdiagramm) real. scale scale + E - 0 1 9 22 egrep unter Unix Ausdruck selektiert s Zeichen s (kein Spezialsymbol) \s Zeichen s. alle Zeichen außer Zeilenende ^ Zeilenanfang $ Zeilenende [s1 sn] alle Zeichen in {s1,..., sn} [^s1 sn] alle Zeichen außer {s1,..., sn} r* null Mal oder öfter r r+ ein Mal oder öfter r r? null oder ein Mal r 24 Reguläre Definitionen Verwendung von Abkürzungen für reguläre Teilausdrücke. Erhöht nicht die Ausdruckskraft. Bessere Strukturierung, bessere Lesbarkeit. Keine direkte oder indirekte Rekursivität: s = s {ε} ist nicht zulässig. 23 Ausdruck selektiert r{i} i Mal r r{i,} i Mal oder öfter r r{i,j} i bis j Mal r r1r2 r1 gefolgt von r2 r1 r2 r1 oder r2 (r) r Beispiel. Real-Zahlen (egrep) ^[0-9]+\.[0-9]*(E[+-]?[0-9]+)?$ 25
Endliche Automaten Modell für Systeme mit Ein/Ausgaben aus endlichem Wertebereich und mit endlichem Speicher. Reguläre Menge minimaler DEA DEA NEA DEA... deterministischer endlicher Automat NEA... nichtdeterministischer endlicher Automat 26 Deterministischer endlicher Automat A = Q, Σ, δ, q0, F, wobei Q... endliche Menge von Zuständen Σ... Eingabealphabet δ: Q Σ Q... Übergangsfunktion (total) q0 Q... Anfangszustand F Q... Menge von Endzuständen Erweiterte Übergangsfunktion: δ : Q Σ Q δ (q, ε) = q, δ (q, wa) = δ(δ (q, w), a) für alle q Q, w Σ, a Σ. Akzeptierte Sprache: L(A) = {w Σ δ (q0, w) F } 28 Beispiel. Deterministischer endlicher Automat (DEA) +,- q0. q4 E q1 q2 q3 q5 Nichtdeterministischer endlicher Automat (NEA) q0 +. E q2 q3 ε q1 q4 - q5 27 Nichtdeterministischer endlicher Automat Übergangsfunktion: δ: Q (Σ {ε}) P(Q) Erweiterte Übergangsfunktion: δ : Q Σ P(Q) δ (q, w) = {q Q q w q } q w q... es gibt einen mit w beschrifteten Pfad von q nach q Akzeptierte Sprache: L(A) = {w Σ δ (q0, w) F } Definition. Automaten A und A sind äquivalent, falls L(A) = L(A ). 29
Reguläre Menge NEA Satz. Zu jeder regulären Sprache L gibt es einen endlichen Automaten A, sodass L = L(A). L = {}: L = {s}: s s (Σ {ε}) L = L1 L2: A1 ε ε ε ε A2 q0,2 qf,2 30 Determinisierung (NEA DEA) Satz. Zu jedem NEA gibt es einen äquivalenten DEA. NEA: A = Q, Σ, δ, q0, F DEA: Â = ˆQ, Σ, ˆδ, ˆq0, ˆF, wobei ˆQ = P(Q) ˆδ(ˆq, a) = δ (q, a) für alle ˆq ˆQ, a Σ q ˆq ˆq0 = {q0} { {ˆq ˆQ ˆq F } {ˆq ˆF = 0} falls ε L(A) {ˆq ˆQ ˆq F } sonst Tipp: Berechne die Übergangsfunktion ausgehend von ˆq0 nur für tatsächlich erreichbare Zustände. 32 L = L1 L2: L = (L1) : A1 ε A2 q0,2 qf,2 ε ε ε A1 ε 31