Datenstrukturen und Algorithmen

Werbung
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
Herunterladen