30
WS03/04 1 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

Embed Size (px)

Citation preview

Page 1: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

WS03/04 1

Amortisierte Analyse

Prof. Dr. S. Albers

Prof. Dr. Th. Ottmann

Page 2: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

2WS03/04

Amortisierung

• Betrachte eine Folge a1, a2, ... , an von

n Operation auf Datenstruktur D

• Ti = Ausführungszeit von ai

• T = T1 + T2 + ... + Tn, Gesamtlaufzeit

• Oft kann die Laufzeit einer einzelnen Operation in einem großen Bereich schwanken, z. B. in

1,...,n,

aber nicht bei allen Operationen der Folge kann der schlechteste Fall auftreten

Page 3: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

3WS03/04

Analyse von Algorithmen

• Best Case

• Worst Case

• Average Case

• Amortisierte Worst Case

Was sind die durchschnittlichen Kosten

einer schlechtest möglichen Folge

von Operationen?

Page 4: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

4WS03/04

Amortisierung

Idee:

• Zahle für billige Operation etwas mehr• Verwende Erspartes um für teure Operationen zu zahlen

Drei Methoden:

1. Aggregatmethode 2. Bankkonto – Methode 3. Potentialfunktion – Methode

Page 5: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

5WS03/04

1.Aggregat – Methode: Dualzähler

Bestimmung der Bitwechselkosten eines Dualzählers

Operation Zählerstand Kosten

0 00000 1

1 00001 2

2 00010 1

3 00011 3

4 00100 1

5 00101 2

6 00110

7 00111

8 01000

9 01001

10 01010

11 01011

12 01100

13 01101

Page 6: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

6WS03/04

2. Bankkonto – Methode

Idee:

Bezahle zwei KE für das Verwandeln einer 0 in eine 1

jede 1 hat eine KE auf dem Konto

Beobachtung:

In jedem Schritt wird genau eine 0 in eine 1 verwandelt

Page 7: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

7WS03/04

Bankkonto – Methode

Operation Zählerstand

0 0 0 0 0 0

1 0 0 0 0 1

2 0 0 0 1 0

3 0 0 0 1 1

4 0 0 1 0 0

5 0 0 1 0 1

6 0 0 1 1 0

7 0 0 1 1 1

8 0 1 0 0 0

9 0 1 0 0 1

10 0 1 0 1 0

Page 8: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

8WS03/04

3. Potentialfunktion

Potentialfunktion

Datenstruktur D (D)

tl = wirkliche Kosten der l-ten Operation

l = Potential nach Ausführung der l-ten Operation (= (Dl) )

al = amortisierte Kosten der l-ten Operation

Definition:

al = tl + l - l-1

Page 9: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

9WS03/04

Beispiel: Dualzähler

Di = Stand der i-ten Operation i = (Di) = # von Einsen in Di

i–te Operation # von Einsen

Di-1: .....0/1.....01.....1 Bi-1

Di : .....0/1.....10.....0 Bi = Bi-1 – bi + 1

ti = wirkliche Bitwechselkosten von Operation i = bi+1

Page 10: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

10WS03/04

Dualzähler

ti = wirkliche Bitwechselkosten von Operation iai = amortisierte Bitwechselkosten von Operation i

nt

BbBba

i

iiiii

2

2

11 11

Page 11: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

11WS03/04

Dynamische Tabellen

Problem:Verwaltung einer Tabelle unter den Operationen Einfügen undEntfernen, so dass

• die Tabellengröße der Anzahl der Elemente angepasst werden kann

• immer ein konstanter Anteil der Tabelle mit Elementen belegt ist

• die Kosten für n Einfüge- oder Entferne–Operationen O(n) sind.

Organisation der Tabelle: Hashtabelle, Heap, Stack, etc.

Belegungsfaktor T: Anteil der Tabellenplätze von T, die belegt sind.

Page 12: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

12WS03/04

Implementation Einfügen

class dynamic table {

int [] table;

int size; // Größe der Tabelle

int num; // Anz. der Elemente

dynamicTable() { // Initialisierung der leeren Tabelle

table = new int [1];

size = 1;

num = 0;

}

Page 13: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

13WS03/04

Implemenation Einfügen

insert ( int x) {

if (num == size ) {

new Table = new int [2*size];

for (i = 0; i < size; i++)

füge table[i] in newTable ein;

table = newTable;

size = 2*size;

}

füge x in table ein;

num = num + 1;

}

Page 14: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

14WS03/04

Kosten von n Einfüge-Operationen in eine anfangs leere Tabelle

ti = Kosten der i-ten Einfüge-Operation

Worst case:

ti = 1, falls die Tabelle vor der Operation i nicht voll ist

ti = (i – 1) + 1, falls die Tabelle vor der Operation i voll ist.

Also verursachen n Einfüge-Operationen höchstens Gesamtkosten von

Amortisierter Worst-Case:Aggregat -, Bankkonto -, Potential-Methode

2

1nOi

n

i

Page 15: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

15WS03/04

Potential-Methode

T Tabelle mit

• k = T.num Elemente und • s = T.size Größe

Potentialfunktion

(T) = 2 k – s

Page 16: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

16WS03/04

Potential-Methode

Eigenschaften 0 = (T0) = ( leere Tabelle ) = -1

• Für alle i 1 : i = (Ti) 0

Weil n - 0 0 gilt, ist

• Unmittelbar vor einer Tabellenexpansion ist k = s, also (T) = k = s.

• Unmittelbar nach einer Tabellenexpansion ist k = s/2,also (T) = 2k – s = 0.

ii ta für Schranke obere

Page 17: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

17WS03/04

Berechnung der amortisierten Kosten ai der i-ten Einfüge-Operation

ki = # Elemente in T nach der i-ten Operation

si = Tabellengröße von T nach der i-ten Operation

Fall 1: i-te Operation löst keine Expansion aus

ki = ki-1 + 1, si = si-1

ai = 1 + (2ki - si) - (2ki-1 – si-1)

= 1 + 2(ki - ki-1)

= 3

Page 18: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

18WS03/04

Fall 2: i-te Operation löst Expansion aus

ki = ki-1 + 1, si = 2si-1

ai = ki-1 + 1 + (2ki - si) - (2ki-1 – si-1)

= 3

Page 19: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

19WS03/04

Einfügen und Entfernen von Elementen

Jetzt: Kontrahiere Tabelle, wenn Belegung zu gering!

Zíele:

(1) Belegungsfaktor bleibt durch eine Konstante

nach unten beschränkt

(2) amortisierte Kosten einer einzelnen Einfüge- oder Entferne- Operation sind konstant.

1. Versuch • Expansion: wie vorher• Kontraktion: Halbiere Tabellengröße, sobald Tabelle

weniger als ½ voll ist!

Page 20: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

20WS03/04

„Schlechte“ Folge von Einfüge- und Entfernenoperationen

Kosten

n/2 mal Einfügen

(Tabelle voll)3 n/2

I: Expansion n/2 + 1

D, D: Kontraktion n/2 + 1

I, I : Expansion n/2 + 1

D, D: Kontraktion

Gesamtkosten der Operationsfolge: In/2, I,D,D,I,I,D,D,... der Länge n sind

Page 21: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

21WS03/04

2. Versuch

Expansion: Verdoppele die Tabellengröße, wenn in die volle Tabelle eingefügt wird.

Kontraktion: Sobald der Belegungsfaktor unter ¼ sinkt ,

halbiere die Tabellengröße.

Folgerung:

Die Tabelle ist stets wenigstens zu ¼ voll, d.h.

¼ (T) 1

Kosten einer Folge von Einfüge- und

Entferne-Operationen?

Page 22: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

22WS03/04

Analyse Einfügen und Enfernen

k = T.num, s = T.size, = k/s

Potentialfunktion

2/1 falls ,2/

2/1 falls ,2

ks

skT

Page 23: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

23WS03/04

Analyse Einfügen und Entfernen

Unmittelbar nach einer Expansion oder Kontraktion der Tabelle:

s = 2k, also (T) = 0

2/1 falls ,2/

2/1 falls ,2

ks

skT

Page 24: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

24WS03/04

Einfügen

i-te Operation: ki = ki-1 + 1

Fall 1: i-1 ½

Fall 2: i-1 < ½

Fall 2.1: i < ½

Fall 2.2: i ½

Page 25: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

25WS03/04

Einfügen

Fall 2.1: i-1 < ½, i < ½ (keine Expansion)

2/1 falls ,2/

2/1 falls ,2

ks

skT

Potentialfunktion

Page 26: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

26WS03/04

Einfügen

Fall 2.2: i-1 < ½, i ½ (keine Expansion)

2/1 falls ,2/

2/1 falls ,2

ks

skT

Potentialfunktion

Page 27: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

27WS03/04

Entfernen

ki = ki-1 - 1

Fall 1: i-1 < ½

Fall1.1: Entfernen verursacht keine Kontraktionsi = si-1

2/1 falls ,2/

2/1 falls ,2

ks

skT

Potentialfunktion

Page 28: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

28WS03/04

Entfernen

Fall 1.2: i-1 < ½ Entfernen verursacht Kontraktion

2si = si –1 ki-1 = si-1/4

ki = ki-1 - 1

Fall 1: i-1 < ½

2/1 falls ,2/

2/1 falls ,2

ks

skT

Potentialfunktion

Page 29: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

29WS03/04

Entfernen

Fall 2: i-1 ½ keine Kontraktion

si = si –1 ki = ki-1 - 1

Fall2.1: i-1 ½

2/1 falls ,2/

2/1 falls ,2

ks

skT

Potentialfunktion

Page 30: WS03/041 Amortisierte Analyse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

30WS03/04

Entfernen

Fall 2: i-1 ½ keine Kontraktion

si = si –1 ki = ki-1 - 1

Fall2.2: i < ½

2/1 falls ,2/

2/1 falls ,2

ks

skT

Potentialfunktion