¨Ubungsblatt 2

Werbung
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
Herunterladen