Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 2 für die Übung am Mittwoch den 06. bzw. Donnerstag den 07. April 2011. Kreuzen Sie bis spätestens Dienstag, 05.04.2011, 15:00 Uhr – also vor dem Besuch Ihrer Übungsgruppe – über TUWEL an, welche Beispiele Sie bearbeitet und gelöst haben. Gehen Sie dabei folgendermaßen vor: • TUWEL (https://tuwel.tuwien.ac.at) Kurs 186.172 Algorithmen und Datenstrukturen 1 (VL 4.0) • Thema 2. Übungsblatt Link 2. UE - Details & Bewertung • Button Meine Lösung bearbeiten Bearbeitete Beispiele anhaken und Änderungen speichern. Beachten Sie: Sie können vor der Deadline beliebig oft ihre Auswahl an Beispielen verändern, aber • Es gibt keine nachträgliche Veränderung ihrer angekreuzten Beispiele! • Wenn Sie zur Präsentation Ihrer Lösung eines von Ihnen angekreuzten Beispiels ausgewählt werden und dieses aber nicht bearbeitet haben, verlieren Sie alle Punkte dieser Übungseinheit! Aufgabe 11 Sortieren Sie die nachfolgenden Zahlen aufsteigend mittels Fachverteilung: h111, 11, 1, 1, 110, 111, 1i. Wie viele Fächer benötigen Sie? Geben Sie jeweils die Inhalte der einzelnen Fächer nach jeder Verteilungsphase, sowie das Feld nach Ende jeder Sammelphase an. Ist es beim Sortieren durch Fachverteilung möglich, dass die Reihenfolge der Elemente mit gleichem Schlüssel vor und nach dem Sortiervorgang nicht erhalten bleibt? Begründen Sie ihre Antwort. Aufgabe 12 (a) Sie haben eine nicht sortierte, einfach verkettete lineare Liste. Welches Sortierverfahren verwenden Sie, um die Liste zu sortieren? Begründen Sie Ihre Antwort. (b) Sie haben eine sortierte, einfach verkettete lineare Liste. An diese Liste wird hinten ein beliebig großes Element angehängt. Welches Sortierverfahren verwenden Sie in diesem Fall, um die Liste zu sortieren? Begründen Sie Ihre Antwort. (c) Sie haben eine nicht sortierte, doppelt verkettete lineare Liste. Welches Sortierverfahren verwenden Sie in diesem Fall, um die Liste zu sortieren? Begründen Sie Ihre Antwort. (d) Sie haben eine absteigend sortierte, doppelt verkettete lineare Liste. Welches Sortierverfahren verwenden Sie in diesem Fall, um die Liste aufsteigend zu sortieren? Begründen Sie Ihre Antwort. Aufgabe 13 Schreiben Sie in detailliertem Pseudocode eine Funktion L2 = sort(L1 ), die die Elemente einer einfach verketteten azyklischen Liste L1 aufsteigend sortiert und die sortierten Elemente in einer Liste L2 zurück gibt. Folgende Punkte sind dabei zu beachten: • Die Laufzeit muss in Abhängigkeit der Anzahl der Listenelemente n durch O(n2 ) beschränkt sein. • Sollte die Liste L1 bereits auf- oder absteigend sortiert sein, dann soll die Laufzeit in Abhängigkeit der Anzahl der Listenelemente n im Worst-Case Θ(n) betragen. • Beim Aufruf des Algorithmus gilt: L1 6= N U LL. • Es darf nur konstant viel zusätzlicher Speicherplatz verwendet werden. 2 Geben Sie für Ihren Algorithmus den Aufwand für den Worst-Case und Best-Case in Θ-Notation in Abhängigkeit der Anzahl der Schlüssel n, die in der Liste gespeichert sind, an. Aufgabe 14 Gegeben ist ein Feld, das die folgenden Elemente in der angegebenen Reihenfolge enthält: h1, 6, 14, 21, 26, 31, 46, 76, 81, 86, 91, 96, 98i. Führen Sie in dem angegebenen Feld eine Binärsuche nach dem Schlüssel 81 durch. Geben Sie dabei in jedem Schritt die jeweiligen Bereichsgrenzen an. • Wie hoch ist im Worst- und im Best-Case der Suchaufwand der Binärsuche in Abhängigkeit der Anzahl n der Elemente in einer Folge in Θ-Notation? • Nach welchem(n) Schlüssel(n) müsste man in der oben angeführten Folge suchen, um den höchsten Suchaufwand in Abhängigkeit der Anzahl n der Elemente zu erhalten? Aufgabe 15 In der Vorlesung (im Skriptum) haben Sie die nicht-rekursive Variante der Binären Suche kennengelernt. Entwickeln Sie nun den Pseudocode für eine rekursive Variante. Aufgabe 16 Gegeben sei folgender binärer Baum T1 : 30 10 12 40 20 60 80 • Geben Sie die Knotenreihenfolge der Postorder Travesierung des binären Baumes T1 an. • Zeichnen Sie einen binären Suchbaum T2 , der die gleichen Knoten und die gleiche Reihenfolge dieser in der Postorder Traversierung wie der binäre Baum T1 hat. • Handelt es sich bei ihrem binären Suchbaum T2 um einen gültigen AVL-Baum? Begründen Sie ihre Antwort. 3 Aufgabe 17 Bei einer In-Order-Traversierung eines gegebenen binären Baumes ergibt sich folgende Knotenliste: 1, 2, 4, 6, 8, 7, 9, 11, 12, 14, 18, 19. Bei einer Pre-Order-Traversierung des gleichen Baumes ergibt sich: 9, 6, 2, 1, 4, 8, 7, 12, 11, 18, 14, 19. Zeichnen Sie den zugrundeliegenden Baum und tragen Sie die entsprechenden Knotenwerte ein. Aufgabe 18 (a) Geben Sie den AVL-Baum an, der durch Einfügen der Schlüssel h40, 50, 60, 32, 45, 42, 55i (in gegebener Reihenfolge) in einen anfangs leeren AVL-Baum entsteht. Zeichnen Sie auch die Zwischenergebnisse nach jeder Rotation. (b) Geben Sie den AVL-Baum an, der durch das Löschen der Schlüssel 50, 60 und 55 im Baum aus Punkt (a) ensteht. Aufgabe 19 Gegeben sei ein AVL-Baum T mit n Knoten, in denen die Schlüssel S = {s1 , s2 , . . . , sn } gespeichert sind. Der AVL-Baum sei entstanden, indem die Schlüsselmenge S in einer bestimmten Reihenfolge in einen anfänglich leeren Baum eingefügt wurde. In der Regel müssen hierbei einige Rotationsoperationen durchgeführt werden. Gibt es zu jedem solchen Baum T eine Einfügereihenfolge der Schlüsselmenge S, die zum gleichen AVL-Baum T führt, jedoch keine einzige Rotation notwendig macht? Begründen Sie ihre Antwort. Aufgabe 20 Vergleichen Sie die Datenstrukturen doppelt verkettete zyklische Liste (aufsteigend sortiert), doppelt verkettete zyklische Liste (nicht sortiert), natürlicher binärer Suchbaum und AVL-Baum bezüglich ihres Zeitaufwandes für die Suche nach einem Schlüssel k und die Bestimmung des größten Elementes im Best- und Worst-Case in Θ-Notation in Abhängigkeit der Anzahl n der gespeicherten Elemente. 4