Informatik 3/Gedächtnisprotokoll Klausur SS07: Unterschied zwischen den Versionen
(→Aufgabe 3: Suchbäume) |
Bmay (Diskussion | Beiträge) K (Formatierung korrigiert, Kategorisiert) |
||
(25 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | == Aufgabe 1: Multiple Choice == | + | == Aufgabe 1: Multiple Choice (7 Punkte) == |
Kreuzen Sie jeweils wahr bzw. falsch an: | Kreuzen Sie jeweils wahr bzw. falsch an: | ||
− | * | + | * Ein zusammenhängender, ungerichteter Graph mit |V| Knoten hat immer |V| * (|V| - 1) / 2 Kanten. |
* Traversierung mit Breitensuche erzeugt einen aufspannenden Baum. | * Traversierung mit Breitensuche erzeugt einen aufspannenden Baum. | ||
* Die Höhe eines binären Suchbaumes ist immer um 1 größer, als das Maximum der Höhen seiner Teilbäume. | * Die Höhe eines binären Suchbaumes ist immer um 1 größer, als das Maximum der Höhen seiner Teilbäume. | ||
* Für jedes endliche Optimierungsproblem kann man einen Backtrackingalgorithmus finden der dieses löst. | * Für jedes endliche Optimierungsproblem kann man einen Backtrackingalgorithmus finden der dieses löst. | ||
* Für jedes endliche Optimierungsproblem kann man einen Greedy-algorithmus finden der dieses löst. | * Für jedes endliche Optimierungsproblem kann man einen Greedy-algorithmus finden der dieses löst. | ||
− | |||
− | == Aufgabe 2: HashTables == | + | Worst Case Aufwand von: |
+ | * Wert in eine Hashliste mit Separate Chaining einfuegen | ||
+ | * Einen Wert in einer Skipliste finden | ||
+ | * Rotieren in einem AVL-Baum | ||
+ | * Tiefensuch | ||
+ | * Kruskal | ||
+ | * Edmonds Karp Alg | ||
+ | |||
+ | == Aufgabe 2: HashTables (7 Punkte) == | ||
Hashtabelle der Größe 4. | Hashtabelle der Größe 4. | ||
− | *Hashfunktion: h(k) = k mod 4 | + | * Hashfunktion: h(k) = k mod 4 |
− | *Kollisonsauflösung"double hashing" a(k) = k+2 | + | * Kollisonsauflösung: z.B. "double hashing" a(k) = k+2 |
− | + | * Vier Werte mit Schlüsseln einfügen und Kollisionen zählen. | |
− | Vier Werte mit Schlüsseln einfügen und Kollisionen zählen. | + | |
(A,5) (B,11) (C,9) (D,14) | (A,5) (B,11) (C,9) (D,14) | ||
+ | |||
+ | Lösung: | ||
A -> 1 | A -> 1 | ||
B -> 3 | B -> 3 | ||
− | C -> 1, | + | C -> 1,0 |
D -> 2 | D -> 2 | ||
− | + | ||
− | |||
Ist die Anzahl der Kollisionen bei double hashing abhängig von der Reihenfolge in der die Elemente eingefügt werden? Begründung, ggf. Beispiel. | Ist die Anzahl der Kollisionen bei double hashing abhängig von der Reihenfolge in der die Elemente eingefügt werden? Begründung, ggf. Beispiel. | ||
− | |||
+ | == Aufgabe 3: Suchbäume (11 Punkte) == | ||
− | |||
'''AVL-Bäume''' | '''AVL-Bäume''' | ||
− | *Einfügen in AVL-Baum | + | *Einfügen von 3 in den folgenden AVL-Baum: |
− | + | [[Bild:Info3-ss2007-3-avltree.png]] | |
− | *Löschen aus AVL-Baum | + | |
− | + | *Löschen von 10 aus dem folgenden AVL-Baum: | |
+ | [[Bild:Info3-ss2007-3-avltree.png]] | ||
'''Rot/Schwarz-Bäume''' | '''Rot/Schwarz-Bäume''' | ||
− | *Einfügen in | + | *Einfügen von '9' in den folgenden Rot/Schwarz-Baum: |
+ | [[Bild:Info3-ss2007-3-rbtree.png]] | ||
+ | |||
*Java-Programm schreiben für Höhenberechnung eines Rot-Schwarz-Baumes: int getBlackHeight(Node root) | *Java-Programm schreiben für Höhenberechnung eines Rot-Schwarz-Baumes: int getBlackHeight(Node root) | ||
** Rot-Schwarz-Baum als gültig vorausgesetzt. | ** Rot-Schwarz-Baum als gültig vorausgesetzt. | ||
Zeile 42: | Zeile 52: | ||
*** boolean isBlack(Node node); | *** boolean isBlack(Node node); | ||
*** class Node{ int color; Node left; Node right; } | *** class Node{ int color; Node left; Node right; } | ||
− | |||
'''B-Baum''' | '''B-Baum''' | ||
* Element in B-Baum einfügen. | * Element in B-Baum einfügen. | ||
[[Bild:Info3-ss2007-3-btree.png]] | [[Bild:Info3-ss2007-3-btree.png]] | ||
− | |||
− | == Aufgabe 4: Graphen == | + | == Aufgabe 4: Graphen (10 Punkte) == |
+ | |||
a) Baue eine Adjazenzmatrix zu folgendem Graphen: | a) Baue eine Adjazenzmatrix zu folgendem Graphen: | ||
Zeile 68: | Zeile 77: | ||
[[Bild:Info3-ss2007-4e.png]] | [[Bild:Info3-ss2007-4e.png]] | ||
− | == Aufgabe 5: Übungsorganisation == | + | == Aufgabe 5: Übungsorganisation (4 Punkte) == |
+ | |||
Es herrscht grosser Andrang bei der Sprechstunde. Keiner der wartenden Studierenden erinnert sich an die genaue Ankunftsreihenfolge. Einige erinnern sich jedoch noch an die Leute die bereits warteten. Es soll eine ungefähre Ankunftsreihenfolge bestimmt werden. | Es herrscht grosser Andrang bei der Sprechstunde. Keiner der wartenden Studierenden erinnert sich an die genaue Ankunftsreihenfolge. Einige erinnern sich jedoch noch an die Leute die bereits warteten. Es soll eine ungefähre Ankunftsreihenfolge bestimmt werden. | ||
Zeile 90: | Zeile 100: | ||
Algorithmus: | Algorithmus: | ||
− | |||
− | |||
Ablauf: | Ablauf: | ||
− | == Aufgabe 6: Dynamisches Programmieren == | + | == Aufgabe 6: Dynamisches Programmieren (5 Punkte) == |
[[Bild:Info3-ss2007-6.png]] | [[Bild:Info3-ss2007-6.png]] | ||
Zeile 103: | Zeile 111: | ||
--> | --> | ||
− | a) Geben Sie eine nicht-rekursive Java-Methode an, die g(m,n) für m, n e N | + | a) Geben Sie eine nicht-rekursive Java-Methode an, die g(m,n) für m, n e N berechnet. Die Methode soll dafür polynomielle Laufzeit benötigen |
b) Kleinste worst-case-Laufzeitklasse angeben: | b) Kleinste worst-case-Laufzeitklasse angeben: | ||
Zeile 109: | Zeile 117: | ||
O( .... ) | O( .... ) | ||
− | == Aufgabe 7: Geld wechseln == | + | == Aufgabe 7: Geld wechseln (6 Punkte) == |
+ | |||
Gegeben ist ein Betrag, welcher durch möglichst wenige Geldstücke der Grössen { 200, 100, 50, 20, 10, 5, 2, 1 } dargestellt werden werden soll. | Gegeben ist ein Betrag, welcher durch möglichst wenige Geldstücke der Grössen { 200, 100, 50, 20, 10, 5, 2, 1 } dargestellt werden werden soll. | ||
Zeile 117: | Zeile 126: | ||
c) Geben Sie ein Greedy-Verfahren zur Lösung des Optimierungsproblems an (als Pseudocode oder verbal). | c) Geben Sie ein Greedy-Verfahren zur Lösung des Optimierungsproblems an (als Pseudocode oder verbal). | ||
+ | |||
+ | Diese Aufgabe war auch als Hausaufgabe im WS 06/07 im 7. Übungsblatt Aufgabe 7.6 als 'Theorie' zu lösen | ||
+ | |||
+ | == Siehe auch == | ||
+ | |||
+ | [[Informatik 4 (StuPO90)/Gedächtnisprotokoll Klausur SoSe 2007]] | ||
+ | |||
+ | [[Kategorie: Prüfungsprotokolle]] | ||
+ | [[Kategorie: Informatik]] | ||
+ | [[Kategorie: StuPO90]] |
Aktuelle Version vom 24. Februar 2013, 13:07 Uhr
Inhaltsverzeichnis
Aufgabe 1: Multiple Choice (7 Punkte)
Kreuzen Sie jeweils wahr bzw. falsch an:
- Ein zusammenhängender, ungerichteter Graph mit |V| Knoten hat immer |V| * (|V| - 1) / 2 Kanten.
- Traversierung mit Breitensuche erzeugt einen aufspannenden Baum.
- Die Höhe eines binären Suchbaumes ist immer um 1 größer, als das Maximum der Höhen seiner Teilbäume.
- Für jedes endliche Optimierungsproblem kann man einen Backtrackingalgorithmus finden der dieses löst.
- Für jedes endliche Optimierungsproblem kann man einen Greedy-algorithmus finden der dieses löst.
Worst Case Aufwand von:
- Wert in eine Hashliste mit Separate Chaining einfuegen
- Einen Wert in einer Skipliste finden
- Rotieren in einem AVL-Baum
- Tiefensuch
- Kruskal
- Edmonds Karp Alg
Aufgabe 2: HashTables (7 Punkte)
Hashtabelle der Größe 4.
- Hashfunktion: h(k) = k mod 4
- Kollisonsauflösung: z.B. "double hashing" a(k) = k+2
- Vier Werte mit Schlüsseln einfügen und Kollisionen zählen.
(A,5) (B,11) (C,9) (D,14)
Lösung: A -> 1 B -> 3 C -> 1,0 D -> 2
Ist die Anzahl der Kollisionen bei double hashing abhängig von der Reihenfolge in der die Elemente eingefügt werden? Begründung, ggf. Beispiel.
Aufgabe 3: Suchbäume (11 Punkte)
AVL-Bäume
- Einfügen von 3 in den folgenden AVL-Baum:
- Löschen von 10 aus dem folgenden AVL-Baum:
Rot/Schwarz-Bäume
- Einfügen von '9' in den folgenden Rot/Schwarz-Baum:
- Java-Programm schreiben für Höhenberechnung eines Rot-Schwarz-Baumes: int getBlackHeight(Node root)
- Rot-Schwarz-Baum als gültig vorausgesetzt.
- Vorgegebene Implementation:
- boolean isRed(Node node);
- boolean isBlack(Node node);
- class Node{ int color; Node left; Node right; }
B-Baum
- Element in B-Baum einfügen.
Aufgabe 4: Graphen (10 Punkte)
a) Baue eine Adjazenzmatrix zu folgendem Graphen:
b) Dijkstra auf folgendem Graph ausführen:
c) Definiere (formal oder als Text) den Begriff "aufspannender Baum".
d) Führe union(D,F) auf folgender, als Wald realisierter disjunkter Menge aus:
e) Erstelle den Restflussgraphen zu folgendem Flussgraphen:
Aufgabe 5: Übungsorganisation (4 Punkte)
Es herrscht grosser Andrang bei der Sprechstunde. Keiner der wartenden Studierenden erinnert sich an die genaue Ankunftsreihenfolge. Einige erinnern sich jedoch noch an die Leute die bereits warteten. Es soll eine ungefähre Ankunftsreihenfolge bestimmt werden.
Name | wartete bereits |
---|---|
Annett | Daniel, Edeltraut |
Bert | Anett, Daniel, Claudia |
Claudia | - |
Daniel | Claudia |
Edeltraut | Claudia |
a) Erstelle einen Graph aus den Erinnerungen der wartenden Studierenden.
b) Nun soll die ungefähre Reihenfolge der Studierenden berechnet werden.
Algorithmus:
Ablauf:
Aufgabe 6: Dynamisches Programmieren (5 Punkte)
a) Geben Sie eine nicht-rekursive Java-Methode an, die g(m,n) für m, n e N berechnet. Die Methode soll dafür polynomielle Laufzeit benötigen
b) Kleinste worst-case-Laufzeitklasse angeben:
O( .... )
Aufgabe 7: Geld wechseln (6 Punkte)
Gegeben ist ein Betrag, welcher durch möglichst wenige Geldstücke der Grössen { 200, 100, 50, 20, 10, 5, 2, 1 } dargestellt werden werden soll.
a) Geben Sie eine günstige Kodierung für die Geldstücke an
b) Geben Sie eine Zielfunktion und eine Optimierungsrichtung (max/min) an.
c) Geben Sie ein Greedy-Verfahren zur Lösung des Optimierungsproblems an (als Pseudocode oder verbal).
Diese Aufgabe war auch als Hausaufgabe im WS 06/07 im 7. Übungsblatt Aufgabe 7.6 als 'Theorie' zu lösen
Siehe auch
Informatik 4 (StuPO90)/Gedächtnisprotokoll Klausur SoSe 2007