Kapitel 4: Ausgewählte Datenstrukturen Gliederung 1. Grundlagen 2

Werbung
Kapitel 4: Ausgewählte Datenstrukturen
Gliederung
1.  Grundlagen
2.  Zahlentheoretische Algorithmen
3.  Sortierverfahren
4.  Ausgewählte Datenstrukturen
5.  Dynamisches Programmieren
6.  Graphalgorithmen
7.  String-Matching
8.  Kombinatorische Algorithmen
9.  Lineare Programmierung
4/3, Folie 1
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einordnung
u  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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einführendes Beispiel
u  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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einführendes Beispiel
u  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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Einführendes Beispiel
u  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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Wichtige Begriffsbildung
u  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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Verallgemeinerte Begriffsbildung
u  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:
ex-time(A,n)
= E[Zn] = ∑ z * Wahr(Zn = z)
z∈R+
= ∑ time(A,x) * Wahr(x)
x∈Xn
4/3, Folie 7
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Diskussion
u  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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Fahrplan
u  ... 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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Interessierende Problemstellung
u  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 */)
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
u  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
© 2014 Prof. Steffen Lange
-
7
HDa/FbI
-
Effiziente Algorithmen
6
3
5
7
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
u  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
... allgemein O(n) viele Vergleiche, falls alle Schlüssel aus der
Menge { 1,2, ... } gleichwahrscheinlich „nachgefragt“ werden
4/3, Folie 12
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
7
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
u  Binäre Suchbäume (/* Beispiel, Analyse */)
4
2
1
„erwartete“ Kosten ...
• 
• 
• 
6
3
5
einer „erfolgreichen“ Lookup-Operation: 17/7 Vergleiche
einer „erfolglosen“ Lookup-Operation: 3 Vergleiche
einer Insert-Operation: 3 Vergleiche
... allgemein O(log(n)) viele Vergleiche, falls alle Schlüssel aus
der Menge { 1,2, ... } gleichwahrscheinlich „nachgefragt“ werden
4/3, Folie 13
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
7
Kapitel 4: Ausgewählte Datenstrukturen
Lösungsansatz 1
u  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
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Kapitel 4: Ausgewählte Datenstrukturen
Ausblick
u  ...
• 
4/3, Folie 15
in den nächsten beiden Unterabschnitten behandeln wir eine
„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 in der
Größenordnung O(log(n)) (/* vergleichbar zu den Kosten im „worst
case“ für höhenbalancierte binäre Suchbäume */)
© 2014 Prof. Steffen Lange
-
HDa/FbI
-
Effiziente Algorithmen
Herunterladen