nötig laufzeit

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