UA DI Harald Burgsteiner 17.5.2002 Prüfung zur Lehrveranstaltung Datenstrukturen und Algorithmen Stoffsemester WS 2001/2002 Es sind keinerlei Unterlagen oder Hilfsmittel erlaubt. Es dürfen nur einzelne, lose Blätter verwendet werden! Auf jedem Blatt muß der Name und die Matrikelnummer angegeben werden! Zeit: 90 Minuten. (1) (4 Punkte). Beweisen oder widerlegen Sie die folgenden Sätze. Verwenden Sie dabei keine Beispiele, sondern eine folgerichtige Argumentation! (a) Ein Algorithmus, der einen Input der Größe n in O(n log n) Zeit bearbeitet, benötigt O(n log n) Speicher. (b) Ein Algorithmus, der für einen Input der Größe n zur Verarbeitung Θ(n2 ) Speicher benötigt, hat eine Laufzeit von Ω(n log n). (c) Jeder Algorithmus, der für einen Input der Größe n insgesamt Θ(n) Speicher benötigt, ist schneller als ein Algorithmus, der Ω(n3 ) Speicher benötigt. (d) Es gibt einen Algorithmus, der für einen Input der Größe n eine Zeit von O(n log n) und einen Speicher von Ω(n2 ) benötigt. (2) (5 Punkte). Richtig oder falsch? Geben Sie für jede Ihrer Antworten eine kurze Begründung an! (a) Es existiert ein Sortieralgorithmus, der n beliebige Zahlen mit O(n4 ) Vergleichen sortiert. (b) INTERPOLATIONSSUCHE benötigt im besten Fall ld(ld n) Schritte, um eine Zahl in einem aufsteigend sortierten Feld der Länge n zu finden. (c) Die symmetrische Reihenfolge eines Baumes mit ungerader Knotenanzahl enthält die Wurzel genau in der Mitte. (d) Es existieren verschiedene Bäume mit gleicher symmetrischer Reihenfolge. (e) Ein Binärbaum mit n Blättern hat eine Höhe ≤ n2 . (3) (5 Punkte). Gegeben ist ein lineares Feld A[1 . . . n], welches lauter positive Zahlen enthält. Entwerfen Sie einen möglichst schnellen Algorithmus, der entscheidet ob zwei Indizes i und j existieren, sodaß gilt A[i] = A[j] ∗ A[j]. Analysieren Sie Zeitund Speicherbedarf Ihres Algorithmus und beweisen Sie seine Korrektheit. Volle Punkteanzahl nur für Algorithmen mit einer Zeit von maximal O(n log n). (4) (6 Punkte). Finden Sie eine optimale Codierung für die Wörter ’ST U DIU M V ORN AM E N ACHN AM E’ wobei Sie für die drei Variablen V ORN AM E, N ACHN AM E und ST U DIU M Ihren eigenen Namen und Ihr Studium einsetzen (jeweils ein Vor- und Nachname reicht). Verwenden Sie nur Kleinbuchstaben und vergessen Sie nicht die Leerzeichen zwischen den Worten! Zeichnen Sie einen zugehörigen Codebaum und geben Sie einen möglichen Code an! Wieviele Bits sind nötig um diesen Satz mit einem optimalen Code zu übertragen? V iel Erf olg!