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