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.
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