PDF_4

Werbung
Wiederholung
• (2-4)-Bäume: spezielle Struktur um logarithmische Höhe zu
garantieren (2 ≤ α(k) ≤ 4, ∀k)
• Implementation des Wörterbuchproblems (Suchen,
Entfernen, Einfügen) in O(log n) Zeit pro Operation
• Nötige Umstrukturierungen, um Eigenschaften eines (2-4)Baums aufrechtzuerhalten:
Datenstrukturen und
Algorithmen
VO 708.031
– Einfügen: SPALTEN
– Entfernen: STEHLEN, VERSCHMELZEN
• Bereits vorgenommene Umstrukturierungen amortisieren
sich jedoch später:
– m mal Einfügen/Entfernen: O(m) Umstrukt., statt O(m*log n)
14.01.2010
[email protected]
1
14.01.2010
Anwendung
EINFÜGEN(S,x)
MAXIMUM(S)
ENTFERNE_MAX(S)
MISCHE(S,S ')
2
Mischbare Warteschlangen
• Mischbare Warteschlangen:
–
–
–
–
[email protected]
• Unsortierte (2-4)-Bäume:
– Die Blätter speichern S in beliebiger Reihenfolge
– Jeder innere Knoten speichert das Maximum in seinem
Teilbaum und einen Zeiger auf das entsprechende Blatt
Die Datenstruktur „Halde“ unterstützt
diese Operationen in O(log n) Zeit, n=|S|
• Mischen von Halden ist teuer: O(n) Zeit
• Mit einem (2-4)-Baum sind alle Operationen in
O(log n) Zeit möglich
14.01.2010
[email protected]
3
14.01.2010
[email protected]
4
Mischbare Warteschlangen
Mischbare Warteschlangen
• MAXIMUM(S):
• EINFÜGEN(S,x): Spezialfall von MISCHE(S,S') mit S' = {x}
• MISCHE(S,S'): S und S' sind (2-4)-Bäume mit Höhe h und h'
– in Wurzel gespeichert, O(1) Zeit
•
Fall h=h':
• ENTFERNE_MAX(S):
Neue Wurzel mit entsprechender
Hilfsinformation ⇒ O(1) Zeit
– Wurzel speichert Zeiger auf Blatt k mit dem größten Wert
– Entferne k wie in (2-4)-Bäumen üblich (evtl. Stehlen, Verschmelzen)
– Berechne für die inneren Knoten auf dem Ast von k bis zur Wurzel die
Hilfsinformation neu
– Pro Knoten wird das Maximum aus ≤ 4 Söhnen berechnet ⇒ O(1) Zeit
pro Knoten
– Die Höhe des Baumes ist O(log n) ⇒ O(log n) Zeit
14.01.2010
[email protected]
• Fall h>h':
(h<h' symm.)
Anhängen von w' an Vater v von k
Weiter wie beim Einfügen in (2-4)Bäumen (evtl. Spalten) +
Hilfsinformation updaten
⇒ O(log n) Zeit
5
14.01.2010
Sortieren mit (2-4)-Bäumen
[email protected]
6
Sortieren mit (2-4)-Bäumen
• Erste Idee: Füge die Zahlen a1,...,an nacheinander in einen
sortierten (2-4)-Baum ein. Am Ende liegen die Werte v.l.n.r. in
aufsteigender Reihenfolge vor ⇒ Laufzeit O(n*log n)
• Wie macht man Sortieren durch Einfügen effizient?
• InsertionSort:
– Vorteil: adaptiv; gut, wenn Folge schon (fast) sortiert ist
– Nachteil: Θ(n2) im worst case
– Worst-case optimal, aber nicht adaptiv!
• Vgl. z.B. MergeSort:
• Adaptives Sortieren mit (2-4)-Bäumen:
– Hat für jeden Input Θ(n*log n) Laufzeit (auch für den best
case)
– Sortierter (2-4)-Baum, innere Knoten speichern nur das Maximum im
jeweiligen Teilbaum
– Einfügen von an,...,a1 (verkehrte Reihenfolge)
– Einfügen von ai bottom-up statt top-down
• Sortieren mit (2-4)-Bäumen („B-Sort“):
– Adaptiv und hat O(n*log n) Laufzeit
14.01.2010
Sei k der rechteste Knoten von T
mit Höhe h'
[email protected]
7
14.01.2010
[email protected]
8
Sortieren mit (2-4)-Bäumen
Sortieren mit (2-4)-Bäumen
• an,...,ai+1 bereits eingefügt (verkehrte Reihenfolge)
• Einfügen von ai bottom-up in bestehenden (2-4)-Baum T:
• Maß für die Sortiertheit einer Zahlenfolge: Anzahl der
Fehlstände (Inversionen) von a1,...,an
– Starte mit Blatt ganz links (das aktuelle Minimum)
– Laufe bis zur Wurzel w' von T' (w' ist der erste Knoten > ai)
– Laufe von w' zum Blatt x und mache ai zum linken Bruder von x
(wähle immer den ersten Teilbaum von links mit w(TB) > ai)
n
f i = {a j | j > i, a j < ai }
F = ∑ fi
i =1
• Laufzeit von B-Sort: T (n) = O n log F + n 
evtl. SPALT-Operationen nötig, diese amortisieren
sich jedoch später

n

– Bsp.: (Fast-)Sortierung: F = O(n) ⇒ T(n) = O(n)
– Bsp.: Verkehrte Sortierung: F = Θ(n2) ⇒ T(n) = O(n*log n)
(= worst-case optimal)
Abhängigkeit von Vorsortierung:
f i = {a j | j > i, a j < ai } ... # Fehlstände für ai
ai wird an der Stelle fi+1 eingefügt
Laufzeit: Θ(log fi), statt Θ(log n)
14.01.2010
[email protected]
9
Danke für Ihre Aufmerksamkeit!
Bis zum nächsten Mal.
(Donnerstag, 21. Jan. 2010, 11:15, i13)
14.01.2010
[email protected]
11
14.01.2010
[email protected]
10
Herunterladen