Vorlesung Informatik 2 Algorithmen und Datenstrukturen (24 – Relaxiertes Balancieren) Prof. Dr. Susanne Albers Balancierte (Blatt-)suchbäume 10 15 6 2 11 9 2 7 5 5 6 7 10 9 11 23 15 20 20 30 23 Dictionary: Menge von Schlüsseln, Operations: Suchen, Einfügen, Entfernen Balancierte (Blatt-)suchbäume sind eine mögliche Implementation von dictionaries. AVL-trees, symmetric Binary B-Trees, Red-Black-trees, Half-balanced Trees, Weightbalanced Trees, B-Bäume, Bruder-Bäume, … 2 Rotation 10 6 15 2 11 9 2 7 5 5 6 Rotation 7 x q 10 15 20 20 9 30 23 q x p y y 3 1 11 23 2 p 1 2 3 3 Striktes und relaxiertes Balancieren Striktes Rebalancieren: Auf jedes Update folgt unmittelbar eine Folge von Rebalancierungs-Operationen. Relaxiertes Balancieren: Entkopplung der Rebalancierungs- von den Update-Operationen, sodass beide nebenläufig ausführbar werden. Ziel 1: Konstante Umstrukturierungskosten Ziel 2: Erhöhen der Parallelität von Such- und Update-Operationen Kessels 1983 Larsen 1994, 1997, … Larsen, Fagerberg 1995 Ot/Soisalon-Soininen/Larsen: Acta Informatica 2001 4 Stratifizierte Suchbäume ….. … … .. .. … … Die Höhe eines Z-stratifizierten Baumes mit N Blättern ist O(log N) 5 Beispiel 6 Beispiel 7 Einfügen ….. … … … ….. .. .. x p … Füge neuen Schlüssel ganz unten ein und deponiere einen „push-up-request“ 8 Iterierte Folge von Einfügungen 9 Beseitigung eines Push-up-requests (1) • Push-up-request führt entweder zu einer lokalen strukturellen Änderung mit konstantem Aufwand (Fall 1) • oder zu einer Verschiebung des Push-up-requests auf das nächst höhere Niveau ohne Strukturänderung (Fall 2) Fall1 [Genug Platz auf nächsthöherer Schicht] 3 1 1 2 1 3 4 1 23 4 2 3 2 3 1 2 4 1 23 4 10 Beseitigung eines Push-up-requests (2) • Fall 2 [Nächste Schicht voll] 1 4 2 5 3 1 4 2 5 3 Schaffe ggfs. neue Schicht an der Spitze 11 Beseitigung mehrerer Push-up-Requests Unterhalb unterster Straßengrenze: Von oben nach unten! Sonst beliebig nebenläufig! 12 Entfernen ….. … … … … .. .. … … Deponiere für jede Entfernung einen Löschvermerk. Beseitige Löschvermerke. 13 Beseitigung eines Löschvermerks Fall 1 [genügend Knoten auf unterster Schicht] Fall 2 [unterste Schicht zu dünn] Deponiere „pull-down-request“ p q q 14 Beseitigung eines Pull-down-requests Behandlung eines Pull-down Requests führt • entweder zu einer Strukturänderung (mit konstanten Kosten) und Halt, • oder (ausschließlich) zu einer rekursiven Verschiebung auf nächste Schicht ohne Strukturänderung Fall 1 [es gibt “genügend” Knoten auf nächsthöherer Schicht] Umstrukturieren und Halt! p Wenigstens 3 Links … 15 Beseitigung von Pull-down-requests (1) Fall1 [genügend Knoten auf nächster Schicht] Strukturänderung konstanten Aufwands und Halt! p 1 2 3 p1 23 4 p 1 23 4 p12 3 1 2 1 2 p3 4 p 3 4 16 Beseitigung von Pull-down-requests (2) Fall2 [nicht genügend Knoten auf nächster Schicht] q q p p Verschiebe Pull-down-request auf nächst höhere Schicht, ohne strukturelle Änderungen (Beseitige und oberste Schicht, wenn q Wurzel ist.) 17 Folgen von Entferne-Operationen • Deponiere eine Entferne-Marke für jede Delete-Operation • Beseitige die Entferne-Marken in beliebiger Reihenfolge, aber so, dass sie sich nicht gegenseitig stören. 18 Nebenläufige Updates und Rebalancierungen Updates betreffen verschiedene Blätter … X Einfügen eines Schlüssels x In einem Blatt mit Löschmarke 19 Nebenläufige Updates und Rebalancierungen Zu entfernendes Blatt Behandle Einfügungen, Entfernungen, , nebenläufig in beliebiger Reihenfolge Nach dem Prinzip „Topmost first“ und vermeide Überlappungen von Transformationen! 20 Schlussbemerkung (1) • Viele mögliche Strategien für die nebenläufige Behandlung von • Reduktion und Zusammenfassung von verschiedenen Fällen bei der Beseitigung von • Erhöhung der Effizienz durch Zusammenfassung verschiedenen Umstrukturierungen möglich. 21 Schlussbemerkung (2) q r r p q Rotation p >=4 >=4 halt! p 3 12 p 1 2 3 22