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