Datenstrukturen und Algorithmen VO 708.031 Amortisierte Kosten [email protected] 1 Amortisierte Kosten in (2-4)-Bäumen • Einfügen/Entfernen induziert strukturelle Änderungen im (2-4)-Baum. • Wir bezeichnen ein SPALTEN, STEHLEN, oder VERSCHMELZEN als eine Umstrukturierung. • Jedes Einfügen/Entfernen kann bis zu O(log n) Umstrukturierungen hervorrufen (bei n Blättern) • Wir betrachten m Einfüge/Entferne-Operationen. • Benötigen wir dann O(m log n) Umstrukturierungen? Amortisierte Kosten [email protected] 2 Amortisierte Kosten in (2-4)-Bäumen • Eine amortisierte Analyse mittels “Abrechnungstechnik” zeigt: • die Gesamtzahl der Umstrukturierungen bei m Operationen (einf. oder entf.) ist O(m). • Plausibilität: Umstrukturierungen amortisieren sich: SPALTEN Amortisierte Kosten [email protected] 3 Amortisierte Analyse: • Einzelne Operationen auf einer Datenstruktur können aufwändig sein. • Mit einer amortisierten Analyse zeigt man dass m aufeinanderfolgende (i.A. verschiedene) Operationen (in beliebiger Reihenfolge) effizient sind. z.B. (2-4)-Baum – Einzelne Operationen (einf., entf.): O(log n) – m Operationen: O(m) statt O(m log n) Amortisierte Kosten [email protected] 4 Amortisierte Analyse, einfaches Beispiel: • Gegeben Stack mit n Elementen und Operationen – Push(x) – MultiPop(k) O(1) Zeit O(min{k,n}) Zeit • MulitPop holt min{k,n} Elemente vom Stack • Obwohl MultiPop aufwändig sein kann (O(n)), gilt dass m Operationen auf einem anfangs leeren Stack O(m) Zeit benötigen. Amortisierte Kosten [email protected] 5 Amortisierte Analyse (2-4)-Baum • Betrachte anfangs leeren (2-4)-Baum • Es werden i Einfüge- und j Entferne-Operationen in beliebiger Reihenfolge ausgeführt (i+j=m) • Dabei trete auf: – S mal SPALTEN – V mal VERSCHMELZEN – D mal STEHLEN Satz: (1) ๐ท ≤ ๐ (2) ๐ + ๐ ≤ ๐ + ๐−๐ 2 = 3๐+๐ 2 ๐+๐ 3 d.h. die Gesamtzahl ๐ + ๐ + ๐ท ≤ ๐ + ๐−๐ + ๐ = ๐ + = ๐ = ๐(๐) 2 2 2 Amortisierte Kosten [email protected] 6 Amortisierte Analyse (2-4)-Baum (1) Satz: (1) ๐ท ≤ ๐ (2) ๐ + ๐ ≤ ๐ + ๐−๐ 2 = 3๐+๐ 2 ๐+๐ 3 d.h. die Gesamtzahl ๐ + ๐ + ๐ท ≤ ๐ + ๐−๐ + ๐ = ๐ + = ๐ = ๐(๐) 2 2 2 Beweis (1): Nur beim Entfernen wird gestohlen, pro Entfernen höchstens einmal. โก Amortisierte Kosten [email protected] 7 Amortisierte Analyse (2-4)-Baum (2) Abrechnungstechnik: • Wir definieren einen “Kontostand” • Operationen/Manipulationen können entweder – auf das Konto einzahlen, oder – vom Konto abbuchen. • Wir zeigen dass der Kontostand begrenzt ist, und damit auch die Anzahl der Manipulationen. maximal möglicher Endkontostand Einzahlungen 0 Abbuchungen Amortisierte Kosten [email protected] 8 Amortisierte Analyse (2-4)-Baum (2) Abrechnungstechnik für Beweis (2): • Kontostand: Maß für „Stabilität“ des Baumes (je höher der Kontostand, desto unwahrscheinlicher sind Umstrukturierungen). • Einzahlungen: SPALTEN, VERSCHMELZEN, STEHLEN • Abbuchungen: Einfügen, Entfernen maximal möglicher Endkontostand Einzahlungen 0 Abbuchungen Amortisierte Kosten [email protected] 9 Amortisierte Analyse (2-4)-Baum (2) T k b(k) ein evt. gerade in Umstrukturierung begriffener (2-4)-Baum ein innerer Knoten von T Balance von k α(k) = 1 2 3 4 5 b(k) = -1 0 1 0 -1 Kontostand b(T): ๐ ๐ = σ ๐ ๐๐ ๐ก ๐๐๐๐๐๐๐ ๐(๐) ๐พ๐๐๐ก๐๐ ๐ฃ๐๐ ๐ Beobachtung 1a: Ein leerer (2-4)-Baum T hat b(T)=0. Beobachtung 1b: Ein (2-4)-Baum T mit n Blättern hat stets ๐ ๐−๐ 0≤๐ ๐ ≤ = 2 2 Amortisierte Kosten [email protected] 10 Amortisierte Analyse (2-4)-Baum (2) Wir werden folgendes zeigen (siehe später): Einf. Entf. SPALTEN VERSCHMELZEN STEHLEN Abbuchung max. 1 max. 1 - - - Einzahlung - - mind. 1 mind. 1 mind. 0 Wenn wir dies gezeigt haben können wir schließen: Endkontostand≤ ๐−๐ 2 Einzahlungen ≥ S+V Anfangskontostand = 0 Abbuchungen ≤ m Anfangskontostand + Einzahlungen – Abbuchungen = Endkontostand Amortisierte Kosten [email protected] 11 Amortisierte Analyse (2-4)-Baum (2) Einf. Entf. SPALTEN VERSCHMELZEN STEHLEN Abbuchung max. 1 max. 1 - - - Einzahlung - - mind. 1 mind. 1 mind. 0 Beobachtung 2: Sei T‘ aus (2-4)-Baum T durch Anhängen oder Abhängen eines Blattes entstanden. Dann gilt b(T‘) ≥ b(T)-1 (Abbuchung max. 1) Beweis: Es ändert sich nur b(v), mit v=parent des geänderten Blattes. α(v) ändert sich um max. 1. Daher auch b(v). α(k) = 1 2 3 4 5 b(k) = -1 0 1 0 -1 Amortisierte Kosten [email protected] โก 12 Amortisierte Analyse (2-4)-Baum (2) Einf. Entf. SPALTEN VERSCHMELZEN STEHLEN Abbuchung max. 1 max. 1 - - - Einzahlung - - mind. 1 mind. 1 mind. 0 Beobachtung 3: Sei α(k)=5. SPALTEN von k erzeugt aus T einen Baum T‘ mit b(T‘) ≥ b(T)+1 (Einzahlung mind. 1) Beweis: Tafel Amortisierte Kosten α(k) = 1 2 3 4 5 b(k) = -1 0 1 0 -1 [email protected] โก 13 Amortisierte Analyse (2-4)-Baum (2) Einf. Entf. SPALTEN VERSCHMELZEN STEHLEN Abbuchung max. 1 max. 1 - - - Einzahlung - - mind. 1 mind. 1 mind. 0 Beobachtung 4: Sei α(k)=1 und k‘ ein Bruder von k. (a) Wenn α(k‘)=3,4, dann erzeugt STEHLEN (eines Kindes von k‘) einen Baum T‘ mit b(T‘) ≥ b(T) (Einzahlung mind. 0) (b) Wenn α(k‘)=2, dann erzeugt VERSCHMELZEN von k und k‘ einen Baum T‘ mit b(T‘) ≥ b(T)+1 (Einzahlung mind. 1) Beweis: Tafel Amortisierte Kosten α(k) = 1 2 3 4 5 b(k) = -1 0 1 0 -1 [email protected] โก 14 Amortisierte Analyse (2-4)-Baum (2) Wir haben folgendes gezeigt: Einf. Entf. SPALTEN VERSCHMELZEN STEHLEN Abbuchung max. 1 max. 1 - - - Einzahlung - - mind. 1 mind. 1 mind. 0 Wir können schließen: Endkontostand ≤ ๐−๐ 2 Einzahlungen ≥ S+V Anfangskontostand = 0 Abbuchungen ≤ m Anfangskontostand + Einzahlungen – Abbuchungen = Endkontostand ๐+๐−๐ ≤ ๐−๐ 2 โน๐+๐≤m+ ๐−๐ 2 Das beweist (2) des Satzes. Amortisierte Kosten [email protected] โก 15