Nachklausur zur Vorlesung Informatik 3 mit einigen Anmerkungen zu Lösungen Aufgabe 1 2 3 4 5 6 7 max. Punkte 6 6 7 7 8 8 12 err. Punkte Gesamtpunktzahl: Note: 1
Aufgabe 1 (3+1+1+1 = 6 Punkte) Es seien die formalen Sprachen L 1 = {a k b l k, l N 0 } und L 2 = {b k a l k, l N 0 } gegeben. 1. Geben Sie präzise an, welche Wörter im Produkt L = L 1 L 2 enthalten sind. 2. (a) Ist L 1 L 2 regulär? (b) Ist L 1 L 2 kontextfrei? (c) Ist L 1 L 2 rekursiv? 1. L 1 L 2 = {a p b q a r p, q, r N 0 } 2. (a) ja (b) ja (c) ja 2
Aufgabe 2 (4+2 = 6 Punkte) Gegeben sei der deterministische endliche Akzeptor mit Eingabealphabet X = {a, b}, Zustandsmenge Z = {A, B, C, D, E, F, G}, Anfangszustand A und der Menge akzeptierender Zustände {A, C}, dessen Überführungsfunktion durch die folgende Tabelle festgelegt sei: A B C D E F G a B C G A F D A b E C G A F D A 1. Konstruieren Sie nach dem in der Vorlesung vorgestellten Verfahren so viele Äquivalenzrelationen i wie nötig, um einen äquivalenten Akzeptor mit minimaler Zustandszahl zu konstruieren. 2. Zeichnen Sie das Zustandsdiagramm Ihres in Punkt 1 konstruierten Akzeptors. Bitte achten Sie darauf, dass aus dem Bild hervorgeht, welcher Knoten des Graphen welchem Zustand des in Punkt 1 konstruierten Akzeptors entspricht und dass Anfangszustand usw. des konstruierten Akzeptors klar ersichtlich sind. keine Musterlösung; (es ist Sonntag) 3
Aufgabe 3 (1+1+1+1+2+1 = 7 Punkte) 1. Geben Sie eine Grammatik G mit Terminalzeichenalphabet T = {a, b, c} und ein Wort w T + an, das in G mehrere Linksableitungen hat. 2. Wieviele Linksableitungen gibt es für w in Ihrer Grammatik? 3. Wieviele Rechtsableitungen gibt es für w in Ihrer Grammatik? 4. Wie ist allgemein der Zusammenhang zwischen der Anzahl der Links- und der Anzahl der Rechtsableitungen eines Wortes in einer Grammatik? 5. Begründen Sie Ihre Aussage aus Punkt 4. 6. Wann ist eine Linksableitung gleichzeitig auch eine Rechtsableitung? 1. G = ({X, Y }, {a, b, c}, X, {X a, X Y, Y a}) und w = a. 2. zwei 3. zwei 4. Es sind immer gleich viele. 5. Zu jeder Linksableitung gibt es genau einen Ableitungsbaum und umgekehrt und zu jeder Rechtsableitung gibt es genau einen Ableitungsbaum und umgekehrt. 6. Wenn in jedem im Laufe der Ableitung auftretenden Wort genau ein Nichtterminalsymbol vorkommt (das dann eben gleichzeitig am weitesten links und am weitesten rechts steht). 4
Aufgabe 4 (2+2+3 = 7 Punkte) Es sei A = {a, b, c} und L A die formale Sprache aller Wörter w, für die gilt: w fängt mit einem a an und w hört mit einem c auf und w enthält nirgends ab direkt hintereinander. 1. Geben Sie die drei kürzesten Wörter aus L an. 2. Geben Sie die vier kürzesten Wörter an, die nicht zu L gehören. 3. Geben Sie einen regulären Ausdruck an, der L beschreibt. Sie dürfen (müssen aber nicht) auch die verallgemeinerten Notationsmöglichkeiten für reguläre Ausdrücke verwenden. erst mal keine Musterlösung; (es ist Sonntag) 5
Aufgabe 5 (2+2+2+2 = 8 Punkte) Im folgenden sei das Terminalzeichenalphabet T = {(, ), [, ]} mit zwei Sorten Klammern zugrunde gelegt. 1. Geben Sie eine präzise Definition für Gebilde an, die wohlgeformte Klammerausdrücke vom Typ A heißen sollen. Dabei sollen sowohl runde Klammern innerhalb von eckigen auftreten dürfen, als auch eckige innerhalb von runden (sowie runde innerhalb von runden und eckige innerhalb von eckigen). Es sollen also zum Beispiel [(())[]] und ([]) als korrekt gelten, aber (] und ))[)(nicht. 2. Geben Sie eine Grammatik an, die alle wohlgeformten Klammerausdrücke vom Typ A wie in Punkt 1 definiert erzeugt. 3. Geben Sie eine präzise Definition für Gebilde an, die wohlgeformte Klammerausdrücke vom Typ B heißen sollen. Dabei sollen runde Klammern innerhalb von eckigen auftreten dürfen, aber nicht mehr auch eckige innerhalb von runden. Es soll also zum Beispiel [(())[]] als korrekt gelten, aber ([]) nicht. (Und was bei Typ A schon verboten war, bleibt natürlich verboten.) 4. Geben Sie eine Grammatik an, die alle wohlgeformten Klammerausdrücke vom Typ B wie in Punkt 3 definiert erzeugt. Statt wohlgeformter Klammerausdruck vom Typ A bzw. B schreibe ich kurz WGA- A bzw. WKA-B. 1. zum Beispiel so: (a) ε ist WGA-A (b) Wenn W WGA-A ist, dann auch (W ) (c) Wenn W WGA-A ist, dann auch [W ] (d) Wenn W 1 und W 2 WGA-A sind, dann auch W 1 W 2 2. (jetzt nicht) 3. zum Beispiel so; definiere erst noch wohlgeformter Klammerausdruck vom Typ R für Ausdrücke, in denen nur runde Klammern vorkommen: (a) ε ist WGA-R (b) Wenn W WGA-R ist, dann auch (W ) (c) Wenn W 1 und W 2 WGA-R sind, dann auch W 1 W 2 Nun 6
(a) wenn W WGA-R ist, dann ist W auch WKA-B (b) Wenn W WGA-B ist, dann auch [W ] (c) Wenn W 1 und W 2 WGA-B sind, dann auch W 1 W 2 7
Aufgabe 6 (2+4+2 = 8 Punkte) Es sei die Grammatik G = ({E, T, F }, {2, 3, 4, (, ), +, *}, E, P ) gegeben mit den Produktionen P = {E T +E T, T F *T F, F (E) 2 3 4}. 1. Geben Sie den Ableitungsbaum für das Wort 2+3*4 an. 2. Beschreiben Sie, wie man aus einem Ableitungsbaum für ein Wort w die entsprechende Linksableitung für w konstruieren kann. 3. Wie kann man an einem Ableitungsbaum ablesen, wie viele Ableitungsschritte bei der zugehörigen Linksableitung nötig sind? erst mal keine Musterlösung; (es ist Sonntag) 8
Aufgabe 7 (6+4+2 = 12 Punkte) Gegeben sei die Grammatik G = ({E}, {a, (, ), +, *}, E, P ) mit den Produktionen P = {E a, E (E+E), E (E*E)}. 1. Erläutern Sie, welche Schritte ein nichtdeterministischer Kellerautomat bei der Top-Down-Syntaxanalyse für die Beispieleingabe ((a+a)*a) durchführen würde. 2. Erklären Sie anhand geeigneter Beispieleingaben, dasss ein Kellerautomat für die obige Grammatik in der noch nicht verarbeiteten Eingabe in ganz ungünstigen Fällen beliebig weit vorausschauen müsste, um seine Entscheidungen deterministisch fällen zu können. 3. Machen Sie einen Vorschlag, was man an der Grammatik ändern könnte, so dass Vorausschau von nur noch einem Zeichen genügt, und die von Ihrer neuen Grammatik erzeugte Sprache zwar nicht mehr genau die gleiche ist, aber im Prinzip immer noch geklammerte Summen und Produkte erzeugt werden. Hinweis: Sie dürfen auch das Terminalzeichenalphabet ändern... 1. wie immer 2. Bei Top-Down-Analyse muss im ersten Schritt das Startsymbol im Keller durch (E+E) oder (E*E) ersetzt werden. Welche man nehmen muss hängt an dem Operator, der bei Eingaben der Form ((((a+a)+a)+a)*a) und länger gaaanz weit hinten stehen kann. Der Kellerautomat müsste also beliebig weit vorausschauen können. 3. jetzt nicht (Sonntag) 9