Klausur zur Vorlesung Formale Sprachen und Automaten TIT03G2 mit Lösungsvorschlägen Name: Matr.-Nr.: Vorname: Aufgabe 1 2 3 4 5 6 7 max. Punkte 6 7 10 6 8 7 9 err. Punkte Gesamtpunktzahl: Note:
Aufgabe 1 (1+1+1+3 = 6 Punkte) Es seien L 1 und L 2 zwei formale Sprachen. Welche der folgenden Aussagen sind richtig und welche sind falsch: 1. Wenn L 1 und L 2 regulär sind, dann ist auch L 1 L 2 regulär. Ja 2. Wenn L 1 und L 2 regulär sind, dann ist auch L 1 L 2 regulär. Ja 3. Wenn L 1 und L 2 regulär sind, dann ist auch L 1 L 2 regulär. Ja 4. Suchen Sie sich nun eine Ihrer Antworten von eben aus. Auswahl (1, 2 oder 3): z.b. 1 Falls Ihre Einschätzung der ausgewählten Behauptung Richtig war, dann begründen Sie bitte, warum die Behauptung stimmt. Falls Ihre Einschätzung der ausgewählten Behauptung Falsch war, dann geben Sie bitte ein Gegenbeispiel an. Man simuliert die DEAs für L 1 und L 2 gleichzeitig mit einem DEA, indem man als Zustände die Paare (s 1, s 2 ) von je einem Zustand der DEAs wählt. Neue Endzustände sind die, die aus zwei alten Endzuständen bestehen. Zustandsübergang f((s 1, s 2 ), x) = (t 1, t 2 ), falls f i (s i, x) = t i für i = 1, 2 gilt. 2
Matrikelnummer: Aufgabe 2 (1+4+2 = 7 Punkte) Gegeben sei der nichtdeterministische endliche Akzeptor N mit Eingabealphabet X = {a, b}, Zustandsmenge Z = {1, 2, 3}, Anfangszustand 1 und akzeptierenden Zuständen F = {1}, dessen Arbeitsweise durch die folgende Tabelle festgelegt sei: 1 2 3 a {2, 3} {1, 2} { } b { } { } {2} Konstruieren Sie nach dem in der Vorlesung vorgestellten Verfahren einen deterministischen endlichen Akzeptor D, der die gleiche formale Sprache akzeptiert. Tun Sie dazu folgendes: 1. Beschreiben Sie, was man als Zustände von D wählt. 2. Zeichnen Sie den relevanten Teil des Zustandsdiagrammes von D. Achten Sie bitte darauf, dass aus dem Bild alle Bestandteile von D hervorgehen. 3. Beschreiben Sie, wie man im allgemeinen zu einem gegebenen Zustand von D und einem Eingabesymbol den Nachfolgezustand berechnet. 1. Teilmengen von Zuständen von N, also Z D = 2 Z N. 2. ist klar 3. Für jedes z z Z D bestimmt man die Menge g(z, x) der in N möglichen Nachfolgezustände und vereinigt alle diese Mengen: f(z, x) = z z g(z, x). 3
Weiterer Platz für Antworten zu Aufgabe 2: 4
Matrikelnummer: Aufgabe 3 (3+1+2+2+2 = 10 Punkte) In dieser Aufgabe geht es um die formale Sprache L aller Wörter w {a,b,c} + erzeugt, für die gilt: Das erste und das letzte Symbol von w sind verschieden. 1. Geben Sie eine kontextfreie Grammatik G = (N, T, S, P) an, die die L erzeugt. 2. Ist die Grammatik, die Sie in Teilaufgabe 1 angegeben haben, eindeutig oder mehrdeutig? 3. Begründen Sie Ihre Antwort aus Teilaufgabe 2. 4. Geben Sie eine Typ-3-Grammatik an, die L erzeugt. 5. Geben Sie einen regulären Ausdruck an, der L beschreibt. 1. G = ({S, X}, {a,b,c}, S, P) mit der Produktionenmenge P = {S axb axc bxa bxc cxa cxb, X XX a b c ε} 2. mehrdeutig 3. Durch die Produktion X XX bekommt man z.b. die Möglichkeit zu den verschiedenen Linksableitungen X l XX l ax l axx l abx l abc und X l XX l XXX l axx l abx l abc. 4. G = ({S, X a, X b, X c }, {a,b,c}, S, P) mit der Produktionenmenge P = {S ax a bx b cx c, X a ax a bx a cx a b c, X b ax b bx b cx b a c, X c ax c bx c cx c a b} 5. a(a b c) * b a(a b c) * c b(a b c) * a b(a b c) * c c(a b c) * a c(a b c) * b 5
Weiterer Platz für Antworten zu Aufgabe 3: 6
Matrikelnummer: Aufgabe 4 (3+3 = 6 Punkte) In dieser Aufgabe geht es um reguläre Ausdrücke und um Regexes. 1. Es sei das Alphabet A = {a,b} gegeben. Geben Sie die Definition normaler regulärer Ausdrücke (ohne die Zusätze und Verallgmeinerungen für Regexes) über dem Alphabet A an. 2. Es sei nun das Wort aaababb zu Grunde gelegt. Geben Sie für jeden der folgenden Regexes an, welches Teilwort gematcht wird. (i) a.* (ii).a* (iii).*a (iv) b.* (v).b* (vi).*b 1. (i) Ø ist regulärer Ausdruck. (ii) a und b sind reguläre Ausdrücke. (iii) Sind R 1 und R 2 reguläre Ausdrücke, dann auch (R 1 R 2 ) und (R 1 R 2 ). (iv) Ist R regulärer Ausdruck, dann auch (R) *. (v) Nichts sonst ist regulärer Ausdruck. 2. (i) aaababb (ii) aaa (iii) aaaba (iv) babb (v) a (vi) aaababb 7
Weiterer Platz für Antworten zu Aufgabe 4: 8
Matrikelnummer: Aufgabe 5 (4+2+2 = 8 Punkte) In dieser Aufgabe geht es um Bottom-Up-Syntaxanalyse. 1. Gegeben sei die kontextfreie Grammatik G = ({S, Y }, {a, +}, S, P) mit Produktionenmenge P = {S S+Y, S a+s, S a, Y a}. Geben Sie für die Eingabe a+a+a in Tabellenform eine akzeptierende Berechnung des nichtdeterministischen Kellerautomaten an, der die Bottom- Up-Syntaxanalyse durchführt. 2. Welche nichtdeterministischen Wahlmöglichkeiten hat ein Kellerautomat im allgemeinen in einem Schritt? 3. Was tut man, damit man bei der Bottom-Up-Syntaxanalyse (z.b. für gängige Programmiersprachen) mit deterministischen Kellerautomaten auskommt? 1. Ist im Prinzip klar. Hatten auch alle richtig. 2. Shift oder Reduce. Im Falle von Reduce: welche Produktion? Im allgemeinen können unterschiedlich lange Handles reduziert werden, und bei gleichem Handle sind unter Umständen verschiedenen Produktionen anwendbar. 3. Grammatik geeignet umbauen bzw. gleich wählen; dem Kellerautomaten Vorausschau im Eingabestrom erlauben. 9
Weiterer Platz für Antworten zu Aufgabe 5: 10
Matrikelnummer: Aufgabe 6 (2+2+1+2 = 7 Punkte) In dieser Aufgabe geht es um deterministisches LR-Parsing. Z.B. mit Parser- Generatoren erzeugte LALR(1)-Parser arbeiten mit Hilfe zweier Tabellen act(z, ω) und goto(z, X). 1. Geben Sie an (wenige Wörter genügen jeweils), was dabei z, ω und X sind. 2. Beschreiben Sie, wie bei einem Reduktionsschritt Symbol- und Zustandskeller aktualisiert werden. 3. Beschreiben Sie allgemein, wie ein Zustand repräsentiert wird. 4. Beschreiben Sie allgemein, wie man zu gegebenen z und X den Nachfolgezustand goto(z, X) berechnet. 1. z: aktueller Zustand oben auf dem Zustandskeller; ω: in der Vorausschau im Eingabestrom sichtbare Zeichenkette; X: neues Symbol obne auf dem Symbolkeller; 2. Vom Symbolkeller wird die rechte Seite der Produktion entfernt. Vom Zustandskeller werden ebenso viele Elemente entfernt; obenauf werde Zustand z sichtbar. Auf denb Symbolkeller kommt linke Seite X der Produktion. Auf den Zustandskeller kommt goto(z, X). 3. Durch eine Menge markierter Produktionen. 4. Suche in z die Produktionen mit der Markierung vor dem X. Schiebe bei diesen die Markierung am X vorbei. Vervollständige diese Menge: Falls Markierung vor einem Nichtterminalsymbol Y steht, dann nimm alle markierten Produktionen Y w hinzu. Man iteriere dies, bis sich nichts mehr ändert. 11
Weiterer Platz für Antworten zu Aufgabe 6: 12
Matrikelnummer: Aufgabe 7 (1+1+4+1+2 = 9 Punkte) In dieser Aufgabe geht es um den Algorithmus von Cocke, Younger und Kasami (CYK). Auf der nächsten Seite finden Sie die Schablone für ein zugehöriges Diagramm. 1. Für welche Grammatiken funktioniert CYK? 2. Wie sind diese Grammatiken definiert? 3. Zeichnen Sie das Diagramm für das Eingabewort abcde und die Beispielgrammatik G = (N, T, F, P) mit N = {A, B, C, D, E, F, H, R, X, Y } T = {a,b,c,d,e} und P = {A a, B b, C c, D d, E e} {F AR, R HE, R BY, H XD, X BC, Y CD} 4. Was ist im allgemeinen die Bedeutung eines Eintrags D[i, j] (mit 0 i < j n für eine Eingabe der Länge n) in dem Dreiecksdiagramm. 5. Erklären Sie, wie man im allgemeinen einen Eintrag D[i, j] (mit 0 i < j n für eine Eingabe der Länge n) in dem Dreiecksdiagramm von CYK berechnet. 1. Für Typ-2-Grammatiken in Chomsky-Normalform. 2. Jede Produktion ist von einer der Formen X Y Z oder X a mit X, Y, Z N und a T. Außerdem ist noch die Produktion S ε erlaubt; falls vorhanden, kommt aber S bei keiner Produktion auf der rechten Seite vor. 3. siehe nächste Seite. 4. Die Menge der Nichtterminalsymbole, aus denen das Teilwort zwischen den Trennstellen i und j in der Eingabe ableitbar ist. 5. Ein D[i, i + 1] wird initialisiert, indem man die Menge aller Nichtterminalsymbole X zuweist, aus denen das (i + 1)-te Eingabesymbol ableitbar ist. Auf höheren Schichten des Dreiecksdiagramms (also wenn j i 2 ist) prüft man jeweils für alle m mit i < m und m < j, ob es Nichtterminalsymbole Y D[i, m] und Z D[m, j] gibt, so dass eine Produktion X Y Z existiert. Falls ja, nimmt man X zu D[i, j] hinzu. 13
Weiterer Platz für Antworten zu Aufgabe 7: D[0, 1] D[0, 4] F D[0, 5] F D[1, 5] R, H D[0, 3] D[1, 4] D[0, 2] D[1, 3] A D[1, 2] B X D[2, 3] C D[2, 4] R Y D[2, 5] D[3, 4] D D[3, 5] D[4, 5] a b c d e E 14