Klausur

Werbung
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Klausur
Informatik 1
Wintersemester 2005/2006
Prof. Dr. Wolfgang May
4. April 2006, 11-13 Uhr
Bearbeitungszeit: 90 Minuten
Aufgabe erreichbare
Punkte
1
10
2
14
3
16
4
26(+8)*
5
12
6
12
Gesamt:
erreichte Punkte
/ 10
/ 14
/ 16
/ 26(+8)*
/ 12
/ 12
/90(+8)*
Wir wünschen viel Erfolg!
Bei der Klausur sind keine Hilfsmittel (Skripte, Taschenrechner etc.) erlaubt.
Papier wird gestellt. Benutzen Sie nur die ausgeteilten, zusammengehefteten
Blätter für Ihre Antworten. Schreiben Sie auf jedes Blatt oben Ihren Namen und
Ihre Matrikelnummer. Schreiben Sie mit blauem/schwarzem Kugelschreiber, Füller
etc.; Bleistift ist nicht erlaubt.
meine Note soll mit Matrikelnummer so bald wie möglich
auf der Vorlesungs-Webseite veröffentlicht werden.
meine Note soll nicht veröffentlicht werden; ich erfahre sie dann
aus Munopag/Wopag (bzw. beim Prüfungsamt der Informatik).
(zutreffendes bitte ankreuzen)
1 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Aufgabe 1
[Zahlendarstellung, Boolsche Audrücke]
[10 Punkte]
a) Addieren Sie die Zahlen 26 und 3 binär.
[2 Punkte]
b) Multiplizieren Sie die Zahlen 26 und 3 binär.
[2 Punkte]
c) Konvertieren Sie 136 in eine Hexadezimalzahl.
[2 Punkte]
d) Addieren Sie die beiden Hexadezimalzahlen 6B und 57 und wandeln Sie das Ergebnis
in eine Dezimahlzahl um.
[4 Punkte]
2 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
3 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Aufgabe 2
[Grammatik]
[14 Punkte]
a) Geben Sie eine Grammatik in BNF für die Menge aller Palindrome aus dem Alphabet
{a, b} an (Palindrome sind Ausdrücke, die sowohl vorwärts als auch rückwärts dasselbe
Wort ergeben, z.B. abba, bbabb).
[4 Punkte]
b) Leiten Sie mit den Produktionsregeln Ihrer Grammatik das Wort aababaa aus dem
Startsymbol ab.
[2 Punkte]
c) Geben Sie einen deterministischen endlichen Automaten an der alle Palindrome aus
dem Alphabet {a, b} mit einer Länge von mindestens 1 bis maximal 4 Zeichen erkennt.
[8 Punkte]
4 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
5 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
6 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Aufgabe 3
[Heaps]
Gegeben sei die Zahlenfolge 5, 10, 4, 7, 9, 17, 2, 6, 3, 18, 23, 16
[16 Punkte]
a) Fügen Sie die Zahlen aus der gegebenen Zahlenfolge nacheinander in einen anfangs
leeren Heap ein. Zur Erinnerung: das kleinste Element befindet sich immer an der
Wurzel.
[6 Punkte]
b) Erklären Sie kurz wie man mit Hilfe eines Heaps Zahlen sortiert (HeapSort-Algorithmus).
[5 Punkte]
c) Führen Sie den HeapSort-Algorithmus an obigem Heap durch, allerdings nicht komplett, sondern nur für die ersten 4 Zahlen. Achten Sie darauf dass Ihr Vorgehen beim
Lesen nachvollziehbar ist.
[5 Punkte]
7 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
8 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
9 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Aufgabe 4
[Java]
[26(+8*) Punkte]
Gegeben sei folgende Klasse Chars zur Verwaltung von Zeichenketten (als Arrays von chars):
public boolean contains(Chars other)
public class Chars {{}
public char[] array;
public Chars(char[] a) { array = a;
}
public Chars(String s) { array = s.toCharArray(); }
public int getLength() { return array.length; }
public int getFirstIndex(char c) {
//...
}
public boolean equals(Object other) {
//...
}
public boolean contains(Chars other) {
//...
}
public boolean containsScattered(Chars other) {
//...
}
}
Chars example = new Chars("abacab");
erzeugt zum Beispiel ein Objekt, das die Zeichenkette
[’a’, ’b’, ’a’, ’c’, ’a’, ’b’]
0
1
2
3
4
5
der Länge 6 repräsentiert. Die Array-Indizes laufen hierbei von 0 bis 5.
10 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
a) Ergänzen sie die Klasse um folgende Methoden:
• getFirstIndex(char c)
liefert den Index des ersten Vorkommens (von links angefangen) eines Zeichens in
einer Zeichenkette.
Mit obigem Beispiel:
example.getFirstIndex(’b’)
soll den Wert 1 zurück liefern
[4 Punkte]
• equals(Object other)
vergleicht zwei Zeichenketten. Zwei Zeichenketten sind gleich wenn sie (1) gleich
lang sind und (2) die Zeichen an jeder Stelle übereinstimmen.
[8 Punkte]
• contains(Chars other) überprüft ob eine Zeichenkette eine zweite Zeichenkette
other zusammenhängend enthält. [’a’, ’b’, ’a’, ’c’,’a’, ’b’] enthält zum Beispiel
– [’a’, ’b’, ’a’] und [’c’, ’a’],
– aber nicht [’a’, ’b’, ’c’].
[7 Punkte]
• containsScattered(Chars other)
überprüft ob eine Zeichenkette eine zweite Zeichenkette other auch unzusammenhängend enthält. [’a’, ’b’, ’a’,’c’, ’a’, ’b’] enthält zum Beispiel – zeichenweise
verteilt – [’a’, ’b’, ’c’].
[7 Punkte]
b) (nur Zusatzpunkte) Geben sie für die Methoden
getFirstIndex()
contains()
containsScattered()
die asymptotische Laufzeit an, abhängig von der Länge der Zeichenketten.
[8* Punkte]
11 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
12 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
13 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
14 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Aufgabe 5
[Master-Theorem]
Betrachten Sie folgenden Algorithmus:
[12 Punkte]
public static int parity(int[] array, int from, int to) {
int result;
if(from==to) result = array[from];
else {
int mid = (from+to) / 2;
int left = parity(array, from, mid);
int right = parity(array, mid+1, to);
result = left + right - 2*left*right;
}
return result;
}
a) Vollziehen Sie den Aufruf
int n = parity([1, 0, 1, 1], 0, 3)
grafisch nach und berechnen Sie das Ergebnis.
[4 Punkte]
b) Stellen Sie eine Rekurrenzgleichung für obiges Code-Fragment auf.
[4 Punkte]
c) Berechnen Sie die asymptotische Laufzeit mit Hilfe des Mastertheorems. [4 Punkte]
15 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
16 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Aufgabe 6
[Fibonacci-Funktion]
Gegeben sei die Fibonacci-Funktion mit
[12 Punkte]
• f ib(0) := f ib(1) := 1
• f ib(n + 1) := f ib(n) + f ib(n − 1) ∀n ∈ N, n > 1
a) Berechnen Sie f ib(5).
[3 Punkte]
b) Wie lautet der größte gemeinsame Teiler (ggT ) von f ib(4) und f ib(5)?
[1 Punkt]
c) Zwei natürliche Zahlen x und y sind genau dann teilerfremd, wenn der größte gemeinsame Teiler ggT (x, y) = 1 gilt. Beweisen Sie folgende Aussage mit Hilfe vollständiger
Induktion:
Zwei benachbarte Fibonacci Zahlen f ib(n) und f ib(n + 1) sind immer teilerfremd.
Hinweis: “k ist ein Teiler von x” kann man mathematisch so aufschreiben:
∃i ∈ N k · i = x (Falls k ein Teiler von x ist, dann gibt es eine natürliche Zahl i so
dass x in die Faktoren k und i zerlegt werden kann).
[8 Punkte]
17 von 18
Name,Vorname, Matrikelnummer
Bitte unbedingt leserlich ausfüllen
Klausur Informatik 1, 04.04.2006
Raum für Bearbeitung:
18 von 18
Zugehörige Unterlagen
Herunterladen