Lösungen 6. Ãbung Theoretische Informatik - Fachbereich Informatik
Lösungen 6. Ãbung Theoretische Informatik - Fachbereich Informatik
Lösungen 6. Ãbung Theoretische Informatik - Fachbereich Informatik
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Hochschule<br />
Bonn-Rhein-Sieg<br />
University<br />
of Applied Sciences<br />
Grantham-Allee 20<br />
53757 Sankt Augustin<br />
Director<br />
b-it Applied Science Institute<br />
<strong>Fachbereich</strong> <strong>Informatik</strong><br />
Prof. Dr. Kurt-Ulrich Witt<br />
Mathematische und<br />
theoretische Grundlagen der <strong>Informatik</strong><br />
kurt-ulrich.witt@h-brs.de<br />
Aufgabe 1<br />
<strong>Theoretische</strong> <strong>Informatik</strong> – Übung 6 – WS 13/14<br />
– Musterlösungen –<br />
Gegeben sei die Grammatik G = ({a, b}, {S, A, B, C, D, E}, P, S) mit P = { S → ε, S → aA,<br />
S → bB, A → aS, A → bC, B → aC, B → bD, C → aB, C → bE, D → aE, D → bS, E → aD,<br />
E → bA}<br />
a) Leiten Sie drei Wörter mit jeweils mindestens fünf Buchstaben ab.<br />
b) Beschreiben Sie L(G) informal.<br />
c) Geben Sie eine formale Beschreibung von L(G) an.<br />
d) Geben Sie mithilfe des in der Vorlesung vorgestellten Verfahrens einen zu G äquivalenten endlichen<br />
Automaten A G an.<br />
Musterlösung:<br />
a) S ⇒ aA ⇒ abC ⇒ abbE ⇒ abbaD ⇒ abbabS ⇒ abbab<br />
S ⇒ aA ⇒ aaS ⇒ aaaA ⇒ aaabC ⇒ aaabbE ⇒ aaabbbA ⇒ aaabbbaS ⇒ aaabbba<br />
S ⇒ bB ⇒ baC ⇒ babE ⇒ babaD ⇒ bababS ⇒ bababaA ⇒ bababaaS ⇒ bababaa<br />
b) L(G) enthält alle Wörter über {a, b}, die eine gerade Anzahl a’s enthält und deren Anzahl b’s ein<br />
Vielfaches von 3 ist.<br />
c) L(G) = { w ∈ {a, b} | |w| a = 2k, |w| b = 3l, k, l ∈ N 0 }<br />
d) A = ({ a, b }, { S, A, B, C, D, E }, δ, S, {S}) mit<br />
δ S A B C D E<br />
a A S C B E D<br />
b B C B E S A<br />
Aufgabe 2<br />
Es sei α = ((a | b) ◦ (c ◦ (a | b)) ∗ ) ∈ REXP {a,b,c} . Geben Sie eine rechtslineare Grammatik G an mit<br />
L(G) = L(α).<br />
Musterlösung:<br />
Für G = ({ a, b, c }, { S, A, B }, P, S) mit P = { S → aA | bB, A → cS | ε, B → cS | ε} gilt<br />
L(G) = L(α).<br />
1
Aufgabe 3<br />
Es sei G = ({1, 2, 3} , {D, E, Z} , P, E) mit P = { E → 1Z | 2D, Z → 3E | ε, D → 3E | ε}.<br />
Transformieren Sie mit dem in der Vorlesung vorgestellten Verfahren G in eine äquivalente Grammatik<br />
G ′ mit nur einer ε-Regel!<br />
Musterlösung:<br />
Wir führen zunächst ein neues Nichtterminal T und die neue, einzige Terminierungsregel T → ε ein.<br />
Für die Regeln E → 1Z und Z → ε führen wir die Regel E → 1T ein und eliminieren die Regel<br />
Z → ε. Analog führen wir für die Regeln E → 2D und D → ε die Regel E → 2T ein<br />
und eliminieren die Regel D → ε. Wir erhalten G ′ = ( {1, 2, 3} , {D, E, T, Z} , P, E ) mit P =<br />
{E → 1Z | 2D | 1T | 2T, Z → 3E, D → 3E, T → ε}.<br />
Aufgabe 4<br />
Transformieren Sie die rechtslineare Grammatik G = ({a, b} , {A, B, C, D} , P, A) mit<br />
P = {A → aB | bC | aD | bD | ε, B → cA, C → cA, D → ε}<br />
mit dem in der Vorlesung vorgestellten Verfahren in eine äquivalente linkslineare Grammatik G ′ !<br />
Musterlösung:<br />
Wir erhalten die Grammatik G ′ = ({a, b} , {A, B, C, D} , P ′ , D) mit<br />
P ′ {D → Aa | Ab | ε, A → Bc | Cc | ε, B → Aa, C → Ab}<br />
Aufgabe 5<br />
Sei Σ = { 0, 1 }. Für die Sprache L ⊆ Σ ∗ sei L ′ = { xy | x1y ∈ L }. L ′ entsteht also aus L, indem in<br />
jedem Wort in L genau eine 1 weggelassen wird. Wörter aus L, die nur aus Nullen bestehen, gehören<br />
nicht zu L ′ . Für Wörter aus L, die Einsen enthalten, wird immer genau nur eine Eins weggelassen, der<br />
Rest des Wortes bleibt erhalten, allerdings muss dieses für jede Eins durchgeführt werden. Ist also z.B.<br />
101 ∈ L, dann ist 01, 10 ∈ L ′ ; ist 1101 ∈ L, dann ist 101, 110 ∈ L ′ ; ist x = 1 n für ein n ∈ N, dann ist<br />
x ′ = 1 n−1 ∈ L ′ .<br />
Beweisen Sie: Für jede reguläre Sprache L ⊆ Σ ∗ ist auch die Sprache L ′ regulär.<br />
Musterlösung:<br />
Es sei A = ({0, 1}, S, δ, s 0 , F ) ein endlicher Automat, der L akzeptiert: L = L(A). Wir konstruieren<br />
aus A einen endlichen ε-Automaten A ′ mit L ′ = L(A ′ ). Die Zustände von A werden mit einer Markierung<br />
versehen: 0 steht dafür, dass noch keine 1 – durch einen ε-Übergang – überlesen wurde, und 1 steht<br />
dafür, dass bereits eine 1 überlesen wurde. Vor dem Überlesen und nach dem Überlesen der 1 verhält A ′<br />
sich genau wie A. Die Auswahl der zu überlesenden 1 geschieht nicht deterministisch.<br />
A ′ = ({0, 1}, S × {0, 1}, δ ′ , (s 0 , 0), {(s, 1) | s ∈ F })<br />
δ ′ = {((s, 0), 0, (s ′ , 0)) | (s, 0, s ′ ) ∈ δ} 0 verarbeiten wie A<br />
∪ {((s, 0), 1, (s ′ , 0)) | (s, 1, s ′ ) ∈ δ} 1 verarbeiten wie A<br />
∪ {((s, 0), ε, (s ′ , 1)) | (s, 1, s ′ ) ∈ δ} oder 1 überlesen<br />
∪ {((s, 1), 0, (s ′ , 1)) | (s, 0, s ′ ) ∈ δ} 0 verarbeiten nach überlesener 1<br />
∪ {((s, 1), 1, (s ′ , 1)) | (s, 1, s ′ ) ∈ δ} 1 verarbeiten nach überlesener 1<br />
2