09.09.2013 Aufrufe

Automaten und Formale Sprachen Tutorium - Teil IV.

Automaten und Formale Sprachen Tutorium - Teil IV.

Automaten und Formale Sprachen Tutorium - Teil IV.

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Automaten</strong> <strong>und</strong> <strong>Formale</strong> <strong>Sprachen</strong><br />

<strong>Tutorium</strong><br />

<strong>Teil</strong> <strong>IV</strong>.<br />

Christopher Blöcker (inf8871)<br />

FH Wedel, SS 2010<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Wiederholung<br />

Definition : Mehrdeutigkeit<br />

Eine Grammatik ist mehrdeutig, wenn es ein Wort gibt, für das<br />

unterschiedliche Ableitungsbäume existieren.<br />

Ob eine Grammatik mehrdeutig ist, ist im Allgemeinen nicht<br />

entscheidbar. (D.h. es kann für eine konkrete Grammatik<br />

entscheidbar sein, ob sie mehrdeutig ist, es existiert aber kein<br />

Algorithmus, der diese Frage für jede Grammatik entscheidet.)<br />

Nicht-Determinismus in Grammatiken<br />

Grammatiken sind nicht-deterministisch, da die angewendeten<br />

Produktionsregeln zufällig ausgewählt werden.<br />

Soll eine Grammatik deterministisch sein, so darf es immer nur<br />

eine Produktionsregel zur Auswahl geben.<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Wiederholung<br />

Chomsky Hierarchie<br />

Sprachklassen<br />

Die Menge aller <strong>Sprachen</strong> wurde durch Chomsky eingeteilt in<br />

die Chomsky-Hierarchie mit den 4 Sprachklassen<br />

Typ-3 : Reguläre <strong>Sprachen</strong> L3<br />

Typ-2 : Kontext-Freie <strong>Sprachen</strong> L2<br />

Typ-1 : Kontext-Sensitive <strong>Sprachen</strong> L1<br />

Typ-0 : Rekursiv Aufzählbare <strong>Sprachen</strong> L0<br />

Chomsky Hierarchie<br />

L3 L2 L1 L0<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Frage<br />

Wie lässt sich feststellen, ob<br />

L ∈ L2?<br />

Antwort<br />

Eine Sprache ist vom Typ-2, wenn sie von einem<br />

Kellerautomaten akzeptiert oder von einer kontext-freien<br />

Grammatik erzeugt wird.<br />

Für den Nachweis L ∈ L2 ist also ein Kellerautomat A oder<br />

eine Typ-2-Grammatik G mit<br />

LA = L bzw. LG = L<br />

anzugeben.<br />

Außerdem lassen sich kontext-freie Grammatiken in<br />

nichtdeterministische(!) Kellerautomaten (NKA) überführen.<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Deterministischer Kellerautomat<br />

Definition<br />

Ein deterministischer Kellerautomat ist ein 6-Tupel.<br />

mit<br />

A = (Q, Σ, Γ, δ, q0, F)<br />

Q endliche, nichtleere Menge von Zuständen<br />

Σ endliche, nichtleere Menge, das Eingabealphabet mit<br />

Σ ∩ Q = ∅ <strong>und</strong> Σɛ = Σ ∪ {ɛ}<br />

Γ endliche, nichtleere Menge, das Kelleralphabet mit<br />

⊥∈ Γ <strong>und</strong> Γɛ = Γ ∪ {ɛ}<br />

δ Überführungsfunktion mit<br />

δ : Q × Σɛ × Γɛ → Q × Γ ∗ ɛ<br />

q0 Startzustand<br />

F Menge von Endzuständen mit F ⊆ Q<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Nichtdeterministischer Kellerautomat<br />

Definition<br />

Ein nichtdeterministischer Kellerautomat ist ein 6-Tupel.<br />

mit<br />

A = (Q, Σ, Γ, δ, q0, F)<br />

Q endliche, nichtleere Menge von Zuständen<br />

Σ endliche, nichtleere Menge, das Eingabealphabet mit<br />

Σ ∩ Q = ∅ <strong>und</strong> Σɛ = Σ ∪ {ɛ}<br />

Γ endliche, nichtleere Menge, das Kelleralphabet mit<br />

⊥∈ Γ <strong>und</strong> Γɛ = Γ ∪ {ɛ}<br />

δ Überführungsrelation mit<br />

δ ⊆ Q × Σɛ × Γɛ × Q × Γ ∗ ɛ<br />

q0 Startzustand<br />

F Menge von Endzuständen mit F ⊆ Q<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Typ-2-Grammatik<br />

Typ-2 Grammatik (Kontext-freie <strong>Sprachen</strong>)<br />

Sei<br />

G = (N , T , R, S).<br />

G ist vom Typ-2, wenn die Produktionen folgende Form haben:<br />

mit<br />

A ∈ N<br />

w ∈ (N ∪ T ) ∗<br />

A → w<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Frage<br />

Wie lässt sich feststellen, ob<br />

L /∈ L2?<br />

Antwort<br />

Mit Hilfe des Pumping-Lemmas für kontext-freie <strong>Sprachen</strong>.<br />

Wenn die Bedingungen des Pumping-Lemmas nicht erfüllt<br />

sind, so kann die betroffene Sprache nicht kontext-frei sein.<br />

PLkfS(L) → L /∈ L2.<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Das Pumping-Lemma für kontext-freie <strong>Sprachen</strong><br />

Sei L ⊆ Σ ∗ eine kontext-freie Sprache.<br />

Dann gibt es eine natürliche Zahl p ∈ N derart, dass sich jedes<br />

Wort w ∈ L mit |w| ≥ p zerlegen lässt in fünf <strong>Teil</strong>worte<br />

mit<br />

1 |vy| > 0<br />

2 |vxy|<br />

<br />

≤ p<br />

3<br />

uv<br />

i∈N<br />

ixy iz ∈ L<br />

w = uvxyz<br />

Vorsicht!<br />

Es gilt L ∈ L2 → PLkfS(L)<br />

Es gilt nicht PLkfS(L) → L ∈ L2<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Aufgaben<br />

Prüfen Sie auf Kontext-freiheit:<br />

1 L = {a i b j | i, j ∈ N ∧ i = j}<br />

2 L = {a i b j | i, j ∈ N ∧ i = j 2 }<br />

Herangehensweise<br />

Angeben eines Kellerautomaten oder einer kontext-freien<br />

Grammatik für den Nachweis L ∈ L2<br />

Benutzung des Pumping-Lemma für kontext-freie<br />

<strong>Sprachen</strong> für den Nachweis L /∈ L2<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


L = {a i b j | i, j ∈ N ∧ i = j}<br />

Wir müssen eine Grammatik finden, bei der stets entweder<br />

mehr a’s ober mehr b’s in den erzeugten Wörtern auftreten.<br />

Außerdem darf kein b vor einem a stehen.<br />

Sei G = (N , T , R, S) mit<br />

G erzeugt L.<br />

N = {S, A, B, C}<br />

T = {a, b}<br />

R : S → A | B<br />

A → aA | aC<br />

B → Bb | Cb<br />

C → aCb | ɛ<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Transformation GkfS → NKA<br />

Sei G = (N , T , R, S), dann lässt sich daraus ein NKA A mit<br />

LA = LG bestimmen mit<br />

wobei<br />

A = (Q, Σ, Γ, δ, q0, F)<br />

Q ← {q0, q1, q2}<br />

Σ ← T<br />

Γ ← T ∪ {⊥}<br />

δ ← {(q0, ɛ, ɛ, q1, S ⊥), (q1, ɛ, ⊥, q2, ɛ)}<br />

∪ <br />

(q1, ɛ, A, q1, w)<br />

A→w∈R<br />

∪ <br />

(q1, a, a, q1, ɛ)<br />

a∈T<br />

F ← {q2}<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


Aufgaben<br />

Prüfen Sie auf Kontext-freiheit:<br />

1 L = {a i b j | i, j ∈ N ∧ i = j}<br />

2 L = {a i b j | i, j ∈ N ∧ i = j 2 }<br />

Herangehensweise<br />

Angeben eines Kellerautomaten oder einer kontext-freien<br />

Grammatik für den Nachweis L ∈ L2<br />

Benutzung des Pumping-Lemma für kontext-freie<br />

<strong>Sprachen</strong> für den Nachweis L /∈ L2<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


L = {a i b j | i, j ∈ N ∧ i = j 2 }<br />

Die Wörter von L haben alle die Form w = aj2b j .<br />

Wenn L ∈ L2, dann muss das PLkfS gelten.<br />

Sei<br />

w = a p2<br />

b p .<br />

Wir müssen nun das Wort zerteilen in w = uvxyz, wobei<br />

beachtet werden muss, dass nur Wörter zu L gehören, bei<br />

denen kein a vor einem b steht. Außerdem muss bei<br />

zunehmender Anzahl von a’s auch die Anzahl der b’s<br />

zunehmen <strong>und</strong> umgekehrt.<br />

Folglich kann v nur aus a’s <strong>und</strong> y nur aus b’s bestehen.<br />

Sei die Zerteilung<br />

w = a p2<br />

b p = a m a p2−m−n n r p−r−s s<br />

a b b b .<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


L = {a i b j | i, j ∈ N ∧ i = j 2 }<br />

w = a p2<br />

b p = a m a p2−m−n n r p−r−s s<br />

a b b b .<br />

Wegen |vxy| ≤ p ergibt sich<br />

p 2 − m − n + n + r + p − r − s ≤ p<br />

⇒ p 2 + p − m − s ≤ p<br />

⇒ p 2 ≤ m + s<br />

Wir beobachten, dass das Verhältnis von a’s zu b’s genau<br />

ist.<br />

|a|<br />

|b|<br />

= p2<br />

p<br />

= p<br />

Christopher Blöcker AFS <strong>Tutorium</strong>


L = {a i b j | i, j ∈ N ∧ i = j 2 }<br />

Pumpen wir nun w ganz allgemein mit i, so entsteht das Wort<br />

w ′ mit<br />

w ′ = a m a i(p2 −m−n) a n b r b i(p−r−s) b s .<br />

Das Verhältnis von a’s zu b’s ist<br />

|a|<br />

|b| = m + i(p2 − m − n) + n<br />

r + i(p − r − s) + s = i(p2 − m − n) + m + n<br />

i(p − r − s) + r + s<br />

Für i → ∞ gilt<br />

Also<br />

|a|<br />

|b| = ∞(p2 − m − n) + m + n<br />

∞(p − r − s) + r + s<br />

|a|<br />

lim = 1<br />

i→∞|b|<br />

Christopher Blöcker AFS <strong>Tutorium</strong><br />

= ∞ + m + n<br />

∞ + r + s


L = {a i b j | i, j ∈ N ∧ i = j 2 }<br />

Oder auf Deutsch:<br />

Sowohl die Anzahl der a’s als auch die der b’s wächst linear<br />

mit der Größe von i.<br />

Damit jedoch Wörter entstehen, welche zu L gehören, muss<br />

die Anzahl der a’s quadratisch mit der Größe von i wachsen.<br />

Da dies nicht der Fall ist, muss L /∈ L2 gelten.<br />

Christopher Blöcker AFS <strong>Tutorium</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!