Datenstrukturen & Algorithmen VO 708.031 13. Vorlesung, am 22.Jan. 2009 22.01.2009 helmut.hauser@IGI Hinweise: • Es gibt weitere Prüfungstermine im Laufe des Semesters • Nutzen Sie die Wartelisten • Wenn Sie die Prüfung nicht machen wollen, bitte abmelden!! • Schauen Sie sich die alten Prüfungsbeispiele an • Nützen Sie auch weiterhin die Newsgroup bis zur Prüfung •ACHTUNG: Prüfung nach ALT Æ NICHT für Sie !! Bitte evaluieren Sie die Vorlesung. 22.01.2009 helmut.hauser@IGI (2,4)-Bäume - Wiederholung • Spezielle Struktur um logarithmische Höhe zu garantieren (siehe Definition) • Implementation von Suchen, Einfügen und Löschen • Zusätzliche Operationen nötig, um die Eigenschaften eines (2,4)-Baumes aufrecht zu erhalten. • Einfügen mit ev. SPALTEN • Löschen mit ev. STEHLEN oder VERSCHMELZEN 22.01.2009 helmut.hauser@IGI (2,4)-Bäume - Wiederholung • Alle zusätzlichen Operation aber auch in O(log n) durchführbar • Weiter Anwendung: Mischbare Warteschlange • Warteschlange mit MISCH-Funktion • spezielle Struktur (Maximum, Pointer,..) • alle Funktionen in O(log n) 22.01.2009 helmut.hauser@IGI Amortisierte Kosten 2-4-Bäume benötigen zusätzliche Operation, damit sie 2-4-Bäume bleiben und damit garantiert h=O(log n) besitzen. Potentielle Laufzeit: O(m*log(n)) Laufzeit: O(m) Beobachtung: z.B. nach Spalt-Operation ist der Baum „ausgeglichener“. Æ investierte Zeit rentiert sich später Æ Amortisierungsanalyse. Durchschnittliche Zeit über alle Operation (Einfügen, Löschen) im schlimmsten Fall. 22.01.2009 helmut.hauser@IGI Sortieren mit (2-4)-Bäumen Wie macht man Sortieren durch Einfügen effizient ? Insertion Sort: Vorteil: adaptiv, gut wenn Folge schon sortiert ist Nachteil: Θ(n2) im worst case Merge-Sort : Etwa für jeden Input O(n log n) (auch im worst case) (2,4)-Sort : Adaptiv und Θ(n log n) 22.01.2009 helmut.hauser@IGI Sortieren mit (2-4)-Bäumen Struktur: • innere Knoten haben nur Maximum aller Teilbäume • Achtung: (2,4)-Bäume sind v.l.n.r aufsteigend sortiert 15 10 3 1 2 22.01.2009 8 3 4 6 10 7 8 helmut.hauser@IGI 9 10 Sortieren mit (2-4)-Bäumen Idee: Elemente in einen (2,4)-Baum einfügen. Am Ende liegen die Werte v.l.n.r. in aufsteigender Form vor. 15 10 Laufzeit: O(n*log(n)) worst case optimal 3 1 2 8 3 4 6 x 5 ai 22.01.2009 v 10 7 9 8 10 Aber noch nicht adaptiv! helmut.hauser@IGI Sortieren mit (2-4)-Bäumen Adaptiv Idee: bottom-up statt top-down - Starte mit Blatt ganz links - Laufe bis Wurzel w‘ von T‘ (w‘ erster Knoten > ai) - Laufe von w‘ zu Blatt x und mache ai zum linken Bruder (wähle immer ersten Teilbaum v.l. mit w(TB)>ai) Achtung: event. SPALTEN-Operation nötig, potentiell logarithmisch Æ aber amortisieren sich (siehe Amortisationsanalyse) 22.01.2009 helmut.hauser@IGI Sortieren mit (2-4)-Bäumen 15 ai = 5 eingefügt w’ 10 3 1 2 8 3 4 6 x v 10 7 8 9 10 5 ai Anhängen von ai in Abhängigkeit von den Elementen die kleiner sind und vorher eingefügt worden sind. 22.01.2009 helmut.hauser@IGI Sortieren mit (2-4)-Bäumen Maß für die Sortierheit: Anzahl der Fehlstände (Inversionen) von ai bis an n fi = |{ai | j>i, aj <ai }| F= ∑ i=1 fi ⎛ n⎞ 0≤ F ≤⎜ ⎟ ⎝ 2⎠ Sortieren durch Einfügen mit (2-4)-Bäumen: Daten (ai) werden in den Blättern gespeichert (in innere Knoten werden nur Maximas gespeichert) Einfügen von an , an-1 …. a1 (verkehrte Reihenfolge) 22.01.2009 helmut.hauser@IGI Ein Sortierverfahren ist … worst-case optimal: Jede Eingabefolge wird in O(n log n) Zeit (der unteren Schranke für das worst-case Verhalten von Sortierverfahren auf Vergleichsbasis) sortiert. adaptive: (teilweise) vorsortierte Folgen werden effizienter sortiert. (besseres Laufzeitverhalten für ‘fast’ sortierte Folgen) 22.01.2009 helmut.hauser@IGI Ein Sortierverfahren ist … stabil: Elemente mit identischen Sortierschlüsseln erscheinen in sortierter und unsortierter Folge in der gleichen Reihenfolge. in place: außer für einzelne Variablen (i, j, ...) wird kein Zusatzspeicher (Hilfsfelder, Pointer, ...) benötigt. 22.01.2009 helmut.hauser@IGI Sortierverfahren best case even case worst case für externen Speicher? Bemerkung Insertion-Sort (Sortieren durch Einfügen) n n2 n2 nein einfach, stabil, adaptiv, in-place Merge-Sort (Sortieren durch Verschmelzen) n log n n log n n log n ja Heap-Sort (Sortieren mittels Halde) n log n n log n n log n nein 22.01.2009 helmut.hauser@IGI stabil (für ≤ beim Verschmelzen) in-place Sortierverfahren best case even case worst case für externen Speicher? Quicksort (Sortierung durch Partitionierung) n log n n log n n2 nein Radix-Sort (Sortieren durch Fachverteilung) d·n d·n d·n bedingt (d klein) stabil, d … Länge des Schlüssels B-Sort (Sortieren mittels (2-4)-Bäumen) n n log n n log n nein stabil, adaptiv 22.01.2009 helmut.hauser@IGI Bemerkung einfach Danke für Ihre Aufmerksamkeit! Viel Erfolg bei der Prüfung! 22.01.2009 helmut.hauser@IGI