Datenstrukturen und
Algorithmen
VO 708.031
Amortisierte Kosten
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
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
robert.legenstein@igi.tugraz.at
โก
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
robert.legenstein@igi.tugraz.at
โก
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
robert.legenstein@igi.tugraz.at
โก
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
robert.legenstein@igi.tugraz.at
โก
15