7 Sortierte Listen

Werbung
Sanders / van Stee: Algorithmentechnik November 20, 2007
7 Sortierte Listen
1
Sanders / van Stee: Algorithmentechnik November 20, 2007
2
Operationen
Ausgabegröße L, ∆ = Abstand zu Finger
O(log ∆)
insert, remove, update, locate
(M.locate(k):=
min {e ∈ M : e ≥ k})
O(log ∆) + L
O(log n)
rangeSearch
split, concat
Teilbaumgrößen-Augmentierung:
O(log n)
rank, select, rangeSize
Navigations−Datenstruktur
2
3
5
7
11
13
17
19
∞
Sanders / van Stee: Algorithmentechnik November 20, 2007
Abgrenzung
Hash-Tabelle: nur insert, remove, find. Kein locate, rangeQuery
Sortiertes Feld: nur bulk-Updates. Aber:
n
geometrisch wachsende
Hybrid-Datenstruktur oder log M
statische Datenstrukturen
Prioritätsliste: nur insert, deleteMin, (decreaseKey, remove). Dafür:
schnelles merge
3
Sanders / van Stee: Algorithmentechnik November 20, 2007
4
Anwendungsbeispiel: Scheduling
unabhängiger, gewichteter Jobs, parallele Machinen
x( j): Maschine auf der
Job j ausgeführt wird
1
2
3
4
5
n
...
Li : ∑x( j)=i t j , Last
ti
...
von Maschine i
? ...
?
?
Zielfunktion: Minimiere Makespan
Lmax = maxi Li
...
1
2
m
Sanders / van Stee: Algorithmentechnik November 20, 2007
Anwendungsbeispiel: Scheduling
NP-hart
Wir geben eine 7/6-Approximation,
die in Zeit O(n log m log opt) läuft
5
Sanders / van Stee: Algorithmentechnik November 20, 2007
6
Best-Fit-Decreasing Algorithmus
assert t1 ≥ · · · ≥ tn
SortedSequence: gap = h(B, 1), . . . , (B, m)i//
for j := 1 to n do
h:= gap.locate(t j )
if nothing found then return fail
(g, i):= ∗ h
x( j):= i
gap.update(h, (i, g − t j ))
return x
Qualitäts-Analyse: nicht hier
free time per machine
// best fitting machine
Sanders / van Stee: Algorithmentechnik November 20, 2007
Mehr Sortierte Listen
Binäre Suchbäume
– AVL-Bäume [Adelson, Velskii, Landis 1962]
– Rot-Schwarzbäume (gern verwendet)
– Randomisierte Suchbäume (Zeiger-Hashing benutzen!)
[Aragon Seidel 1996]
– Splay Trees (selbstanpassend),. . .
(a, b)-Bäume: feste Tiefe, O(loga n)-I/Os
skip-Listen
Sparse Table
vEB-Trees (ganzz. Schlüssel) Zeit O(log log |U|) (M ⊆ 0..U − 1)
[van Emde Boas 1977..Dementiev Kettner Mehlhorn Sanders 2004]
7
Sanders / van Stee: Algorithmentechnik November 20, 2007
8
Time for locate [ns]
vEB-Trees (mehr in Algorithm Engineering)
1000
orig vEB-t.
LEDA vEB-t.
STL map
(2,16)-tree
100
vEB-t.
256
1024 4096 16384 65536
n
218
220
222 223
Sanders / van Stee: Algorithmentechnik November 20, 2007
Noch mehr
Verallgemeinerungen, weitere Augmentierungen
Geometrische Suchbäume (Quad-Tree, KD-Tree,. . . )
Suche in höheren Dimensionen
Segment-Bäume: Intervallaufspiessanfragen
Zeichenketten
Persistente Datenstrukturen: Man behält beliebige Versionen
9
Herunterladen