Universität Karlsruhe (TH) Lehrstuhl Informatik für Ingenieure und Naturwissenschaftler Prof. Dr.-Ing. R. Vollmar Mirko Rahn 12. September 2005 Vordiplomklausur im Fach Informatik (für Elektrotechniker) – mit Musterlösungen – Tragen Sie bitte Ihren Namen, Ihren Vornamen und Ihre Matrikelnummer sorgfältig und gut lesbar in die dafür vorgesehenen Felder ein: Name: Vorname: Matr.–Nr.: Die folgende Tabelle wird nur von den Korrektoren ausgefüllt: Aufgabe 1 2 3 4 5 Maximalpunktzahl 11 11 11 10 7 erreichte Punktzahl Punktsumme: Note: Name: Matr.–Nr.: 1 Diese Klausur besteht aus einem Deckblatt und weiteren 7 Seiten mit insgesamt 5 Aufgaben. Bitte überprüfen Sie Ihr Exemplar auf Vollständigkeit! Tragen Sie bitte Ihren Namen und Ihre Matrikelnummer in jede Kopfzeile ein! Legen Sie bitte Ihren Studentenausweis bereit und denken Sie daran, dass elektronische Hilfsmittel (insbesondere Taschenrechner) nicht erlaubt sind. Ihre Lösungen tragen Sie bitte in die vorhandenen Leerräume ein. Wenn Sie mehr Platz benötigen, können Sie die Rückseiten der Aufgabenblätter benutzen. Machen Sie in diesem Fall eindeutig klar, zu welcher Aufgabe eine Bearbeitung gehört! Zum Bestehen der Klausur benötigen Sie mindestens 25 Punkte. Zur Bearbeitung haben Sie 120 Minuten Zeit. Wir wünschen Ihnen viel Erfolg! Die Ergebnisse werden voraussichtlich in der 44. Kalenderwoche (31.10.2005 bis 4.11.2005) im WWW und per Aushang bekanntgegeben. Name: Matr.–Nr.: 2 Aufgabe 1 (11 × 1 Punkt): Kreuzen Sie an, ob die folgenden Aussagen wahr oder falsch sind! wahr falsch X Die Interpretation eines regulären Ausdrucks ist eine endliche Menge. X Ein zusammenhängender Graph mit k Knoten hat mindestens (k − 1) Kanten. X Jede Matrix aus {0, 1}n×n ist Adjazenzmatrix eines gerichteten Graphen mit n Knoten. X Jede Matrix aus {0, 1}n×n ist Wegematrix eines ungerichteten Graphen mit n Knoten. X Die Bisektionsweite eines ungerichteten Graphen ist kleiner als dessen Knotenanzahl. X P ⊆ NP. X Petri-Netz-Graphen sind bipartit. X Beschränkte Petri-Netze terminieren. Die von kontextfreien Grammatiken erzeugten Sprachen lassen sich nicht immer durch reguläre Ausdrücke beschreiben. X X Grammatiken mit mehr als einem Nichtterminal sind mehrdeutig. X Das Registermaschinenprogramm (s1 )1 (a1 s2 )1 (s2 a2 )2 hält für keine Anfangsbelegung der Register. Name: 3 Matr.–Nr.: Aufgabe 2 (2+1+3+2+3 Punkte): Für n ∈ N und k ∈ N sei der ungerichtete Graph Gkn = Vnk , Enk gegeben durch: Vnk = {0, . . . , n} × {0, . . . , k} und Enk = Vnk × Vnk ∩ {{(a, b) , (c, d)} | |a − c| + |b − d| = 1} . a) Stellen Sie den Graph G23 graphisch dar! (0, 2) (1, 2) (2, 2) (3, 2) (0, 1) (1, 1) (2, 1) (3, 1) (0, 0) (1, 0) (2, 0) (3, 0) b) Geben Sie einen geschlossenen wiederholungsfreien Weg in G23 an, der jeden Knoten genau einmal berührt! (0, 2) (1, 2) (2, 2) (3, 2) (0, 1) (1, 1) (2, 1) (3, 1) (0, 0) (1, 0) (2, 0) (3, 0) c) Wieviele Knoten hat der Graph Gkn ? Wieviele Kanten hat der Graph Gkn ? Wie groß ist der Durchmesser des Graphen Gkn ? Knoten: (n + 1)(k + 1) = kn + n + k + 1 Kanten: n(k + 1) + k(n + 1) = 2kn + n + k Durchmesser: n + k Name: 4 Matr.–Nr.: d) Ist der Graph Gkn bipartit? Begründen Sie kurz! Ja, der Graph ist bipartit: Ausgehend von einem mit A gefärbten Knoten (a, b) werden alle Knoten (c, d) mit |a − c|+|b − d| ≡ 0 mod 2 ebenfalls mit A gefärbt und alle anderen Knoten mit B. Auf diese Art ergibt sich eine konfliktfreie 2Färbung, also ist Gkn bipartit. e) Sei wnk : Enk → N die Gewichtsfunktion mit wnk ({(a, b) , (c, d)}) = ac + bd. Geben Sie einen minimalen spannenden Baum von G23 für die Gewichtsfunktion w32 an! Welches Gesamtgewicht hat dieser Baum? (Hinweis: Stellen Sie G23 nochmals dar, beschriften Sie die Kanten mit den Gewichten und heben Sie die Kanten des spannenden Baums hervor!) (0, 2) 4 2 (0, 1) 6 3 1 0 (0, 0) (1, 2) (1, 1) (1, 0) 10 6 3 1 0 (2, 2) (2, 1) 11 7 4 2 (2, 0) (3, 2) (3, 1) 9 6 (3, 0) Gesamtgewicht: 0 + 2 + 0 + 2 + 6 + 1 + 3 + 7 + 3 + 6 + 10 = 40 Name: Matr.–Nr.: 5 Aufgabe 3 (3+3+3+2 Punkte): Die formale Sprache L sei als die Menge aller Wörter über dem Alphabet {a, b} definiert, die mindestens zwei a oder das Teilwort bab enthalten. a) Geben Sie einen regulären Ausdruck an, dessen Interpretation die Menge L ist! (a ∪ b)∗ (a(a ∪ b)∗ a ∪ bab)(a ∪ b)∗ b) Geben Sie einen endlichen Automaten an, der L akzeptiert! (Hinweis: Denken Sie an nichtdeterministische Automaten!) oder auch c) Geben Sie eine kontextfreie Grammatik an, die L erzeugt! Eine direkte Umsetzung des Automaten oder z. B. G = (N, T, S, P ) mit T = {a, b}, N = {S, A} und P = {S → AaAaA | AbabA, A → aA | bA | ε} d) Geben Sie für Ihre kontextfreie Grammatik aus Teil c) Links- und Rechtsableitungen für die Wörter aaba und bbab an! (Hinweis: Also insgesamt 4 Ableitungen.) Links: S → AaAaA → aAaA → aaA → aabA → aabaA → aaba S → AbabA → bAbabA → bbabA → bbab Rechts: S → AaAaA → AaAabA → AaAabaA → AaAaba → Aaaba → aaba S → AbabA → Abab → bAbab → bbab Name: Matr.–Nr.: 6 Aufgabe 4 (3+2+2+3 Punkte): Gegeben ist das Registermaschinenprogramm P : (s1 a3 a4 )1 (s4 a1 )4 (s3 (s3 a4 )3 (s4 s4 a3 )4 a2 )3 s2 Die Eingabe erfolgt in Register 1, alle anderen Register enthalten initial den Wert 0. a) Geben Sie die Registerinhalte aller verwendeten Register nach Ablauf des Programms P bei den Eingaben n ∈ {0, 1, 2, 7, 8, 9} an! Benutzt n 0 ⇒ 1 ⇒ 2 ⇒ werden die Register (R1 , R2 , R3 , R4 ) (0, 0, 0, 0) (1, 0, 0, 0) (2, 1, 0, 0) 1, 2, 3, 4. n (R1 , R2 , R3 , R4 ) 7 ⇒ (7, 2, 0, 0) 8 ⇒ (8, 3, 0, 0) 9 ⇒ (9, 3, 0, 0) b) Welche Funktion berechnet das Programm P ? Der Eingabewert wird solange halbiert, bis 0 erreicht wird. Es wird gezählt, wie oft halbiert wird, also wird die größte Zahl x bestimmt für die 2x ≤ n ist, also blog2 nc. Doch Achtung! Diese Argumentation gilt nur für n 6= 0. Für n = 0 wird 0 6= blog2 0c berechnet. (Deshalb auch Teil d.) c) Wieviele Schritte führt das Programm P größenordnungsmäßig in Abhängigkeit von der Eingabegröße n aus? Begründen Sie! (Hinweis: O-Notation!) Die Laufzeit wird hauptsächlich von der Schleife bestimmt, in der das Register 3 als Schleifenvariable dient. Achtung! Das Register 3 wird innerhalb der Schleife verändert. Also kann nicht einfach auf Θ(n) geschlossen werden. In der Schleife werden n + n/2 + . . . + n/2log2 n = Plog2 n i i=0 n/2 = 2n− 1 (geometrische Reihe!) Operationen ausgeführt. Also ist Θ(n) doch richtig. d) Ergänzen Sie das Programm P derart, dass es bei der Eingabe 0 nicht anhält und für alle anderen Eingaben wie P funktioniert! a5 (s1 a3 a4 )1 (s4 a1 )4 ... (s3 s5 (s3 a4 )3 (s4 s4 a3 )4 ... a2 ... )3 ... s2 (a5 )5 Name: 7 Matr.–Nr.: Aufgabe 5 (7 Punkte): Chiffrieren Sie Ihre Matrikel-Nummer mit dem RSA-Verfahren! Verwenden Sie dabei die Parameter n = 95 und d = 29! Berechnen Sie dabei alle weiteren Parameter und fassen Sie Ihr Ergebnis zu einem einzigen Code-Wort zusammen! Die (hypothetische) Matrikelnummer sei 1234567890. Aus n = 95 = 5·19 ergeben sich p = 5 und q = 19. Damit gilt ϕ(n) = (p−1)·(q−1) = 4 · 18 = 72. Mittels erweitertem euklidischem Algorithmus wird nun e berechnet: q r a b s t u v 72 29 1 0 0 1 2 14 29 14 0 1 1 −2 2 1 14 1 1 −2 −2 5 14 0 1 0 −2 5 29 −72 − − Also gilt e = 5. (Hier hätte systematisches Probieren ebenfalls als Berechnung gegolten.) Da 10 ≤ n ≤ 100, wird nun die Matrikelnummer in Blöcke der Länge 1 zerlegt, also im Beispiel 1 2 3 4 5 6 7 8 9 0. Diese Blöcke werden einzeln via w 7→ w e mod n chiffriert. Es gilt: 05 15 25 35 45 ≡ ≡ ≡ ≡ ≡ 0 mod 95 1 mod 95 32 mod 95 53 mod 95 74 mod 95 55 65 75 85 95 ≡ ≡ ≡ ≡ ≡ 85 mod 95 81 mod 95 87 mod 95 88 mod 95 54 mod 95 Nun kann jeder Block durch seinen Code ersetzt werden. Dabei werden die Codes alle auf einheitliche Länge 2 (da 10 ≤ n ≤ 100) gebracht. Aus dem Resultat werden die Leerstellen entfernt, es ergibt sich das Codewort: 01325374858187885400.