Berechnungstheorie, Teil 1

Werbung
Kapitel 4: Ausgewählte Datenstrukturen
Gliederung
1.
2.
3.
4.
5.
6.
7.
8.
9.
4/3, Folie 1
Grundlagen
Zahlentheoretische Algorithmen
Sortierverfahren
Ausgewählte Datenstrukturen
Dynamisches Programmieren
Graphalgorithmen
String-Matching
Kombinatorische Algorithmen
Lineare Programmierung
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einordnung
 Zielstellung
•
in diesem Abschnitt werden wir uns mit so genannten „randomisierten“
Datenstrukturen beschäftigen
... um die zugrunde liegenden Ideen, Ziele und Ansätze
vernünftig zu erläutern müssen wir aber ein wenig „ausholen“
4/3, Folie 2
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einführendes Beispiel
 Beispiel
zulässige Eingaben:
Binärdarstellung einer Zahl x, d.h. bin(x) = x[n]...x[1]
zulässige Ausgabe:
Binärdarstellung der Zahl x+1
•
•
Algorithmus A:
Falls bin(x) = 1...1, gib 10...0 aus.
Sonst suche das kleinste i mit x[i] = 0 und gib
x[n]...x[i+1]10...0 aus.
Elementar-Operationen sind die üblichen Bitoperationen
4/3, Folie 3
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einführendes Beispiel
 Beispiel (cont.)
•
es sei x eine Zahl mit 0 ≤ x ≤ 2n-1, für ein n  N
•
offenbar unterscheidet sich die Laufzeit des Algorithmus A für die
einzelnen Eingaben x deutlich
•
•
•
•
time(A,0) = 1
time(A,1) = 2
...
time(A, 2n-1) = n + 1
eine „besseres“ Verständnis für die Laufzeit dieses Algorithmus
bekommt man, wenn man die „durchschnittliche“ Laufzeit analysiert
4/3, Folie 4
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einführendes Beispiel
 Beispiel (cont.)
•
es sei x eine Zahl mit 0 ≤ x ≤ 2n-1, für ein n  N
•
für die durchschnittliche Laufzeit gilt:
2n-1
1/2n
n
*  time(A,x)
=
1/2n
x=0
* [  (2n-i * i) + (n + 1) ]
i=1
= 1/2n * [ (2n+1 - 1 - n - 1) + (n + 1) ] = 2 - 1/2n ≤ 2
4/3, Folie 5
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Wichtige Begriffsbildung
 Durchschnittliche Laufzeit
•
es sei A ein Algorithmus und Xn die Menge aller Eingaben der Länge n
•
dann definieren wir:
Laufzeit im „durchschnittlichen“ Fall:
av-time(A,n) = 1/|Xn| *  time(A,x)
xXn
... diese Kennzahl ist nur dann „aussagekräftig“, wenn die Eingaben
der Länge n alle gleichwahrscheinlich sind
4/3, Folie 6
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Verallgemeinerte Begriffsbildung
 Erwartete Laufzeit
•
es sei A ein Algorithmus und Xn die Menge aller Eingaben der Länge n
•
•
es sei Wahr: Xn  [0,1] eine Wahrscheinlichkeitsverteilung über Xn
es sei Zn : Xn  R+ eine Zufallsvariable, wobei Zn(x) = time(A,x) für
alle x  Xn gelte
die „erwartete“ Laufzeit:
= E[Zn] =  z * Wahr(Zn = z)
ex-time(A,n)
zR+
=  time(A,x) * Wahr(x)
xXn
4/3, Folie 7
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Diskussion
 Vorteile / Nachteile (/* Begriff „erwartete“ Laufzeit */)
•
diese Kennzahl ist im allgemeinen „aussagekräftiger“ als die bisher
betrachtete Kennzahl Laufzeit im „worst case“
•
nachteilig ist, daß man die zugrunde liegende Wahrscheinlichlichkeitsverteilung über den Eingabedaten nur selten kennt (/* es ist schon
gut, wenn man sinnvolle Annahmen über die Verteilung der Eingabedaten machen kann */)
... gut „wäre“ es, wenn man Algorithmen entwickelt, die eine
„erwartete“ Laufzeit haben, die „unabhängig“ von der zugrunde
liegenden Wahrscheinlichkeitsverteilung ist
... u.a. aus diesem Grund versucht man, „randomisierte“ Algorithmen /
Datenstrukturen zu entwickeln (/* es gibt auch andere Gründe */)
4/3, Folie 8
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Fahrplan
 ... für den Rest dieses Kapitels
•
•
wir betrachten eine „einfache“ Variante der Dictionary-Datenstruktur
wir schauen uns eine „randomisierte“ Realisierungen dieser Datenstruktur genauer an
•
Skip-Listen
... das Ziel besteht darin, die Effekte der „Randomisierung“
besser zu verstehen
4/3, Folie 9
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Interessierende Problemstellung
 eine „einfache“ Dictionary-Datenstruktur
•
es geht darum, eine Menge von verschiedenen Schlüssel so zu
speichern, daß man „schnell“ Elemente in die Menge einfügen kann
(/* Insert-Operation */) und „schnell“ überprüfen kann, ob ein Element
in der Menge enthalten ist (/* Lookup-Operation */)
... hierfür gibt es eine Vielzahl unterschiedlicher Varianten, von denen
wir einige schon kennen
... wir betrachten nur die folgende Situation (/* weil sie „einfach“ zu
analysieren ist; aber den Blick auf das „wesentliche“ erlaubt */):
•
•
4/3, Folie 10
die n Schlüssel einer gegebenen Menge werden
nacheinander „gespeichert“
anschließend wird eine Insert- bzw. eine Lookup-Operation
durchgeführt (/* deren „erwartete“ Kosten für
die Bewertung des jeweiligen Ansatzes zentral sind */)
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
 Binäre Suchbäume (/* Beispiel */)
•
es sei S = { 1,2,3,4,5,6,7 } die zu speichernde Schlüsselmenge
Einfügereihenfolge: 4,2,1,3,6,5,7
Einfügereihenfolge: 2,1,4,3,6,5,7
2
4
1
4
3
2
6
1
5
4/3, Folie 11
© 2013 Prof. Steffen Lange
-
7
HDa/FbI
-
Effiziente Algorithmen
6
3
5
7
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
 Binäre Suchbäume (/* Beispiel, Analyse */)
2
1
3
„erwartete“ Kosten ...
•
•
•
4
einer „erfolgreichen“ Lookup-Operation: 19/7 Vergleiche
einer „erfolglosen“ Lookup-Operation: 4 Vergleiche
einer Insert-Operation: 4 Vergleiche
6
5
... allgemeine O(n) viele Vergleiche, falls alle Schlüssel aus der
Menge { 1,2, ... } gleichwahrscheinlich „nachgefragt“ werden
4/3, Folie 12
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
7
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
 Binäre Suchbäume (/* Beispiel, Analyse */)
4
2
1
„erwartete“ Kosten ...
•
•
•
6
3
5
einer „erfolgreichen“ Lookup-Operation: 15/7 Vergleiche
einer „erfolglosen“ Lookup-Operation: 3 Vergleiche
einer Insert-Operation: 3 Vergleiche
... allgemeine O(log(n)) viele Vergleiche, falls alle Schlüssel aus
der Menge { 1,2, ... } gleichwahrscheinlich „nachgefragt“ werden
4/3, Folie 13
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
7
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
 Bewertung / Anmerkungen
•
•
es gibt Eingabedaten, für die „erwarteten“ Kosten der relevanten
Operationen nachweislich „schlecht“ sind, d.h. in der Größenordnung O(n)
(/* im Gegensatz zu den Kosten O(log(n)) im „worst case“ für höhenbalancierte binäre Suchbäume */)
es gibt Eingabedaten, für die „erwarteten“ Kosten der relevanten
Operationen ausreichend „gut“ sind, d.h. in der Größenordnung O(log(n))
(/* vergleichbar zu den Kosten O(log(n)) im „worst case“ für höhenbalancierte binäre Suchbäume */)
... wenn man davon ausgeht, daß alle Eingabereihenfolge der Schlüssel
der zu speichernden Menge { 1,...,n } gleichwahrscheinlich sind, kann
man zeigen, daß die „erwarteten“ Kosten der relevanten Operationen in
der Größenordnung O(log(n)) sind
4/3, Folie 14
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Ausblick
 ...
•
4/3, Folie 15
in den nächsten beiden Unterabschnitten behandeln wir „randomisierte“
Realisierung der „einfachen“ Dictionary-Datenstruktur mit folgenden
Eigenschaften :
•
es gibt mit Blick auf die „erwarteten“ Kosten der relevanten
Operationen keine „schlechten“ Eingaben
•
die „erwarteten“ Kosten der relevanten Operationen sind für SkipListen stets in der Größenordnung O(log(n)) (/* vergleichbar zu den
Kosten im „worst case“ für höhenbalancierte binäre Suchbäume */)
© 2013 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Herunterladen