Robert Legenstein Helmut Hauser 12.12.2006 Prüfung zu Lehrveranstaltung 708.031/032 Datenstrukturen und Algorithmen Wann haben Sie die Übungen absolviert? Es sind keinerlei Unterlagen oder Hilfsmittel erlaubt. Es dürfen nur einzelne, lose Blätter verwendet werden! Auf jedem Blatt muss der Name und die Matrikelnummer angegeben werden! Reine Arbeitszeit beträgt 90 Minuten. 1. Hashtabellen (10 Punkte) • Erläutern Sie die Eigenschaften einer idealen Hashfunktion. Nennen Sie zwei typische Methoden zur Implementierung einer Hashfunktion (Vor- und Nachteile) • Erklären Sie die Kollisionsbehandlung mit Überläuferlisten. Leiten Sie Laufzeit T (n) im schlimm- sten Fall und die zu erwartende Laufzeit ab (Sie können annehmen, dass eine ideale Hashfunktion verwendet wird) 2. Pseudocode (10 Punkte) Folgender Pseudocode ist gegeben. Der Aufruf erfolgt mit der Wurzel w eines binären Baums ALGO (w): ALGO (k) 1: S = 0 2: IF (LINKS(k)6=nil) AND (RECHTS(k)=nil) THEN 3: S = 1 + ALGO(LINKS(k)) 4: ELSEIF (LINKS(k)=nil) AND (RECHTS(k)6=nil) THEN 5: S = 1 + ALGO(RECHTS(k)) 6: ELSEIF (LINKS(k)6=nil) AND (RECHTS(k)6=nil) THEN 7: S = ALGO(LINKS(k)) + ALGO (RECHTS(k)) 8: RETURN S • Erklären Sie ausführlich Schritt für Schritt den Pseudocode und analysieren Sie die Laufzeit in Abhängigkeit der Knotenanzahl • T (n) n. Welche Bedeutung hat der Rückgabewert S von ALGO(w), wenn w die Wurzel eines nicht leeren Baums ist? • Zeichnen Sie einen Baum mit 15 Knoten, welcher für diesen Algorithmus einen Rückgabewert von S=0 • liefert. Zeichnen Sie einen Baum mit 15 Knoten, für den der Algorithmus als Rückgabewert die gröÿtmögliche Zahl liefert. ACHTUNG: Weitere Aufgaben auf der Rückseite ! 3. Notation (10 Punkte) Achtung: Antworten ohne Begründung werden NICHT berücksichtigt. Beweisen oder widerlegen Sie folgende Aussagen: • Es existiert kein Suchalgorithmus welcher eine Laufzeit von • Jeder Algorithmus, welcher einen Speicher von welcher einen Speicher von Ω(n3 ) Θ(n) O(n2 log n) besitzt. benötigt, ist schneller als ein Algorithmus, benötigt. O(n·log n) und einen Speicher von Ω(n2 )benötigt. p • Es existiert ein Algorithmus mit einen Speicherbedarf von Θ(n2 ) und eine Laufzeit von Ω(n· n/2). • Es existiert ein Algorithmus welcher eine Laufzeit von • Jeder Algorithmus mit einer Laufzeit T (n) = Θ(nc ) mit c>2 ist auch T (n) = Ω(logc n). 4. Algorithmusentwurf (10 Punkte) Gegeben sei ein zweidimensionales Feld A[1..n, 1..n]. Entwerfen Sie einen Algorithmus, welcher möglichst schnell entscheidet ob eine Zahl existiert, welche in jeder Zeile von A mindestens einmal auftritt. Zeigen Sie die Lösung in Form eines Pseudocodes und beweisen Sie die Richtigkeit Ihres Algorithmus. Die volle Punkteanzahl gibt es nur für O(n2 log n) oder besser. Viel Erfolg!