vorlesung informatik 3 einführung in die theoretische informatik (05 – reguläre ausdrücke)

9
1 Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke) Prof. Dr. Th. Ottmann

Upload: nissim-wall

Post on 30-Dec-2015

22 views

Category:

Documents


4 download

DESCRIPTION

Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke). Prof. Dr. Th. Ottmann. Motivation für reguläre Ausdrücke. Ziel: Automatenfreie Charakterisierung der regulären Sprachen, also der von endlichen Automaten akzeptierbaren Mengen von Worten. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

1

Vorlesung Informatik 3

Einführung in die Theoretische Informatik

(05 – Reguläre Ausdrücke)

Prof. Dr. Th. Ottmann

Page 2: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

2

Motivation für reguläre Ausdrücke

Ziel: Automatenfreie Charakterisierung der regulären Sprachen, also der von

endlichen Automaten akzeptierbaren Mengen von Worten.

Kompakte Notation zur Bezeichnung von regulären Sprachen.

Unterschied: Regulärer Ausdruck α (Bezeichnung, syntaktisches Konzept)

und die von einem regulären Ausdruck α bezeichnete Menge L(α) von

Worten (semantisches Konzept).

Reguläre Sprachen besitzen Abgeschlossenheitseigenschaften gegenüber

Operationen an Mengen von Worten.

Reguläre Sprachen haben viele Anwendungen, sind aber leider sehr

beschränkt.

Page 3: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

3

Reguläre Ausdrücke

Wir definieren simultan, was unter einem regulären Ausdruck α über dem

Alphabet und der von α bezeichneten Menge L(α) * verstanden wird:

Sei ein endliches Alphabet.

1. ist ein regulärer Ausdruck über und L() = .

2. ε ist ein regulärer Ausdruck über und L(ε) = {ε}.

3. Für jedes a ist a ein regulärer Ausdruck über und L(a) = {a}.

4. Sind α und β reguläre Ausdrücke über , so auch (α β), (α β), α* und

L((α β)) = L(α) L(β)

L((α β)) = L(α) L( β)

L(α* ) = (L(α))*

Konvention: Klammern dürfen weggelassen werden, wenn keine Missverständnisse zu

befürchten sind.

Page 4: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

4

Bemerkungen und Beispiele

Page 5: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

5

Konstruktion von DFAs zu regulären Ausdrücken

Satz 1: Zu jedem regulären Ausdruck α über dem Alphabet kann man

einen DFA A = (Q, , δ, s0, F) angeben mit L(A) = L(α).

Bew.: Durch Induktion über den Aufbau von α.

(1) Sei α = . Dann ist L(α) = L(A) für den wie folgt definierten DFA A:

(2) Sei α = ε. Dann ist L(α) = L(A) für den wie folgt definierten DFA A:

Page 6: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

6

(3) Sei α = a, mit a . Dann ist L(α) = L(A) für den wie folgt definierten DFA A:

(4) Hat man bereits DFAs A und B, die die von α und β bezeichneten Mengen L(α) und L(β) akzeptieren, also L(A) = L(α) und L(B) = L(β), so kann man offensichtlich DFAs konstruieren, die

L((α β)) = L(α) L(β)

L((α β)) = L(α) L( β)

L(α* ) = (L(α))*

akzeptieren. Denn die Klasse der regulären Sprachen ist abgeschlossengegenüber Vereinigung, Verkettung und Kleene Stern!

Page 7: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

7

Beispiel

Gegeben sei der reguläre Ausdruck α = (ab a)* über dem Alphabet {a, b}.

Page 8: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

8

Konstruktion eines regulären Ausdrucks zu DFA

Satz: Zu jedem DFA A =(S, , δ, s1, F) kann man einen regulären Ausdruck α

angeben mit L(A) = L(α).

Page 9: Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke)

9

Weitere Abschlusseigenschaften

Sei für ein Wort w = a1a2 … an, n ≥ 0, w *, das Spiegelbild sp(w) definiert

durch sp(w) = anan-1 … a1.

Satz: Zu jedem regulären Ausdruck α über kann man einen regulären

Ausdruck αsp angeben, so dass L(αsp ) = {sp(w); w L(α)}