• Keine Ergebnisse gefunden

Ein Datenbank-Problem

N/A
N/A
Protected

Academic year: 2022

Aktie "Ein Datenbank-Problem"

Copied!
41
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Datenstrukturen und Algorithmen

Christian Sohler

FG Algorithmen & Komplexität

(2)

2

Ein Datenbank-Problem

Problem:

• Gegeben sind n Objekte O ,.., O mit zugehörigen Schlüsseln s(O )

Operationen:

• Suche(x); Ausgabe O mit Schlüssel s(O) =x;

nil, falls kein Objekt mit Schlüssel x in Datenbank

• Einfügen(O); Einfügen von Objekt O in Datenbank

• Löschen(O); Löschen von Objekt O mit aus der Datenbank

1 n

i

(3)

Ein Datenbank-Problem

AVL-Bäume:

• Ausgabe aller Elemente in O(n)

• Suche, Minimum, Maximum, Nachfolger in O(log n)

• Einfügen, Löschen in O(log n)

Frage:

• Kann man Einfügen, Löschen und Suchen in O(1) Zeit?

(4)

Hashing

Felder mit direkter Adressierung

• Dynamische Menge aus Universum U={0,…,m-1}

• Keine zwei Elemente haben denselben Schlüssel

• Feld T[0,…,m-1]

• Position in T entspricht Schlüssel aus U

Weitere Daten

4

Universum U 0

3 4

7 1

6 2 5

Genutzte Schlüsselmenge

nil nil

nil nil

nil

Schlüssel 0

1 2

7

2

5 6

(5)

Hashing

Operationen:

DirectAddressSeach(T,k) 1. return T[k]

DirectAddressInsert(T,x) 1. T[key[x]] ← x

DirektAddressDelete(T,x) 1. T[key[x]] ← nil

(6)

6

Hashing

Operationen:

DirectAddressSeach(T,k) 1. return T[k]

DirectAddressInsert(T,x) 1. T[key[x]] ← x

DirektAddressDelete(T,x) 1. T[key[x]] ← nil

Laufzeit:

O(1)

(7)

Hashing

Zusammenfassung (direkte Adressierung):

• Einfügen, Löschen, Suche in O(1) Zeit

• Speicherbedarf O(|U|)

• Schlecht, wenn Universum groß ist (normal)

Hashing

• Reduktion des Speicherbedarfs auf O(n), wobei n die aktuell gespeicherte Anzahl Schlüssel ist

• Gute durchschnittliche Laufzeit

(8)

Hashing

Hashing

• Hash Tabelle T[0,…,m-1]

• Hash Funktion h: U → {0,1,…,m-1}

• Speichere Element mit Schlüssel k in Adresse h(k)

8

Universum U

Genutzte Schlüsselmenge nil nil

nil

nil

nil 0 1 2

7

k k

k k

k

k3 1

2 6 4 5

h(k )

h(k )=h(k ) h(k )

3 6

2 4

(9)

Hashing

Hashing

• Hash Tabelle T[0,…,m-1]

• Hash Funktion h: U → {0,1,…,m-1}

• Speichere Element mit Schlüssel k in Adresse h(k)

Universum U

nil nil

nil

nil 0 1 2

k

k k

k3 1

4 5

h(k )

h(k )=h(k h(k )

3 6

2 4)

(10)

10

Hashing

Hashing mit Verkettung

• Hash Tabelle T[0,…,m-1]

• Hash Funktion h: U → {0,1,…,m-1}

• Speichere Element mit Schlüssel k in Adresse h(k)

• Löse Kollisionen mit Liste auf

Universum U

Genutzte Schlüsselmenge nil nil

nil

nil

nil 0 1

k 2

7

k k

k k

k

k3 1

2 6 4 5

3 k 6

k 4 k2

(11)

Hashing

Operationen:

ChainedHashInsert(T,x)

1. Füge x am Ende der Liste T[h(key[x])] ein ChainedHashSearch(T,k)

1. Suche nach Element mit Schlüssel k in Liste T[h(k)]

ChainedHashDelete(T,x)

1. Lösche x aus der Liste T[h(key[x])]

(12)

12

Hashing

Wie sieht eine gute Hash Funktion aus?

• Elemente sollten „gleichmäßig“ verteilt werden

• Guter Kandidat wäre z.B. eine zufällige Funktion

(die natürlich nur einmal zufällig ausgewählt wird und dann fest ist)

• Sobald h festliegt, gibt es immer schlechte Eingabe

• Worst-Case Laufzeit O(n)

Last Faktor α:

• Durchschnittliche Länge einer Kollisionsliste, d.h. α=n/m

(13)

Hashing

Idee:

• Wähle h zufällig

(14)

14

Hashing

Was bedeutet das?

Idee:

• Wähle h zufällig

(15)

Hashing

Idee:

• Wähle h zufällig

Annahme (einfaches uniformes Hashing):

• Jedes Element wird von h gleichhäufig (mit gleicher

Wahrscheinlichkeit) auf jeden Eintrag 0,…,m-1 der Hash Tabelle abgebildet. Dies geschieht unabhängig davon, wohin die anderen Elemente abgebildet werden.

Weitere Annahme:

• h(k) kann in konstanter Zeit berechnet werden

(16)

16

Hashing

Satz 24

In einer Hash Tabelle, deren Kollisionen mit Verkettung

aufgelöst werden, benötigt eine nicht erfolgreiche Suche Θ(1+α) durchschnittliche Laufzeit unter der Annahme des einfachen uniformen Hashing.

Satz 25

In einer Hash Tabelle, deren Kollisionen mit Verkettung aufgelöst werden, benötigt eine erfolgreiche Suche Θ(1+α) durchschnittliche Laufzeit unter der Annahme des einfachen uniformen Hashing.

(17)

Hashing

Interpretation:

• Ist die Größe der Hashtabelle proportional zur Anzahl gespeicherter Elemente, dann ist die durchschnittliche Laufzeit O(1).

Fragen:

• Gibt es Hash Funktionen, die die Annahme einfaches uniformes Hashing erfüllen?

(18)

18

Hashing

Interpretation:

• Ist die Größe der Hashtabelle proportional zur Anzahl gespeicherter Elemente, dann ist die durchschnittliche Laufzeit O(1).

Fragen:

• Gibt es Hash Funktionen, die die Annahme einfaches uniformes Hashing erfüllen?

Ja, z.B. eine zufällige Funktion von U nach

{0,…,m-1}

(19)

Hashing

Interpretation:

• Ist die Größe der Hashtabelle proportional zur Anzahl gespeicherter Elemente, dann ist die durchschnittliche Laufzeit O(1).

Fragen:

• Gibt es Hash Funktionen, die die Annahme einfaches uniformes Hashing erfüllen?

• Kann man diese effizient konstruieren und abspeichern?

(20)

20

Hashing

Interpretation:

• Ist die Größe der Hashtabelle proportional zur Anzahl gespeicherter Elemente, dann ist die durchschnittliche Laufzeit O(1).

Fragen:

• Gibt es Hash Funktionen, die die Annahme einfaches uniformes Hashing erfüllen?

• Kann man diese effizient konstruieren und abspeichern?

Nein. Es gibt m Funktionen und somit benötigen wir mindestens

|U|⋅log m Bits, um eine solche (zufällige) Funktion eindeutig

zu kodieren.

|U|

(21)

Hashing

Interpretation:

• Ist die Größe der Hashtabelle proportional zur Anzahl gespeicherter Elemente, dann ist die durchschnittliche Laufzeit O(1).

Fragen:

• Gibt es Hash Funktionen, die die Annahme einfaches uniformes Hashing erfüllen?

• Kann man diese effizient konstruieren und abspeichern?

• Wie konstruiert man gute Hash Funktionen?

(22)

22

Hashing

Interpretation:

• Ist die Größe der Hashtabelle proportional zur Anzahl gespeicherter Elemente, dann ist die durchschnittliche Laufzeit O(1).

Fragen:

• Gibt es Hash Funktionen, die die Annahme einfaches uniformes Hashing erfüllen?

• Kann man diese effizient konstruieren und abspeichern?

• Wie konstruiert man gute Hash Funktionen?

Man nimmt sich eine kleinere Klasse von Funktionen mit der Eigenschaft, dass eine zufällige Funktion aus dieser

Klasse sich ähnlich verhält wie eine zufällige Funktion

von U nach {0,..,m-1}.

(23)

Wahrscheinlichkeiten

Definition (Wahrscheinlichkeitsraum):

Ein Wahrscheinlichkeitsraum S ist Menge von Elementarereignissen.

Ein Elementarereignis kann als der Ausgang eines (Zufalls)experiments betrachtet werden.

Beispiel:

Münzwurf mit zwei unterscheidbaren Münzen

Ergebnis eines Münzwurfs können wir als Zeichenkette der Länge 2 über {K,Z} (Kopf, Zahl) darstellen

Wahrscheinlichkeitsraum ist S={KK,KZ,ZK,ZZ}

Elementarereignisse sind also die möglichen Ausgänge des Münzwurfs

(24)

24

Wahrscheinlichkeiten

Definition (Ereignis):

Ein Ereignis ist eine Untermenge eines Wahrscheinlichkeits- raums. (Diese Definition ist etwas vereinfacht, aber für unsere Zwecke asureichend)

Beispiel:

• {KK, KZ, ZK} ist das Ereignis, dass bei unserem Münzwurf mindestens eine Münze Kopf zeigt

(25)

Wahrscheinlichkeiten

Definition(Wahrscheinlichkeitsverteilung)

Eine Wahrscheinlichkeitsverteilung Pr{} auf einem Wahrscheinlichkeitsraum S ist eine Abbildung der

Ereignisse von S in die reellen Zahlen, die folgende Axiome erfüllt:

1. Pr{A} ≥ 0 für jedes Ereignis A 2. Pr{S}=1

3. Pr{A∪B} = Pr{A}+Pr{B} für alle Ereignisse A,B mit A∩B=∅

Pr{A} bezeichnet die Wahrscheinlichkeit von Ereignis A

(26)

26

Wahrscheinlichkeiten

Beispiel:

• Bei einem fairen Münzwurf haben wir Pr{A} = 1/4 für jedes Elementarereignis A∈{KK,KZ,ZK,ZZ}

• Die Wahrscheinlichkeit für das Ereignis {KK,KZ,ZK}

(„mindestens eine Münze zeigt Kopf“) ist

Pr{{KK,KZ,ZK}} = Pr{KK} + Pr{KZ} + Pr{ZK} = ¾

Bemerkung:

Eine Verteilung, bei der jedes Elementarereignis aus S dieselbe Wahrscheinlichkeit hat, nennen wir auch Gleichverteilung über S.

(27)

Wahrscheinlichkeiten

Das Quizmaster Problem:

• 3 Türen

• Hinter einer Tür ist Hauptgewinn

• Hinter den anderen beiden Türen sind Nieten

• Kandidat wählt eine von 3 Türen

• Der Quizmaster hilft und öffnet eine der Türen, hinter denen eine Niete ist

• Der Kandidat darf nun die Tür wechseln oder bei seiner bisherigen Auswahl bleiben

• Was soll der Kandidat tun?

(28)

28

Wahrscheinlichkeiten

Wahrscheinlichkeitsraum:

• S={HNN,NHN, NNH}

(H: Hauptgewinn, N Niete)

Wahrscheinlichkeitsverteilung:

• Pr{HNN}=Pr{NHN}= Pr{NNH} = 1/3

Kandidat wählt Tür 1:

• Gewinnwahrscheinlichkeit: Pr{HNN}=1/3

• Andere Türen identisch

(29)

Wahrscheinlichkeiten

Der Quizmaster öffnet eine Tür:

• Bei Ereignis HNN ist es schlecht zu wechseln

• Bei Ereignis NHN findet man nach dem Wechseln den

Hauptgewinn, denn dann hat der Quizmaster Tür 3 geöffnet

• Bei Ereignis NNH findet man nach dem Wechseln den

Hauptgewinn, denn dann hat der Quizmaster Tür 2 geöffnet

(30)

30

Wahrscheinlichkeiten

Der Quizmaster öffnet eine Tür:

• Bei Ereignis HNN ist es schlecht zu wechseln

• Bei Ereignis NHN findet man nach dem Wechseln den

Hauptgewinn, denn dann hat der Quizmaster Tür 3 geöffnet

• Bei Ereignis NNH findet man nach dem Wechseln den

Hauptgewinn, denn dann hat der Quizmaster Tür 2 geöffnet

Wechseln ist gute Strategie:

• Der Kandidat gewinnt mit Wahrscheinlichkeit Pr{{NHN,NNH}}=2/3, wenn er die Tür wechselt

(31)

Wahrscheinlichkeiten

Abhängigkeiten:

• Was passiert, wenn man schon etwas über den Ausgang eines Zufallsexperiments weiß?

Frage:

• Jemand hat beobachtet, dass der Ausgang des

Münzwurfs mit zwei Münzen mindestens einmal Kopf zeigt. Wie groß ist die Wahrscheinlichkeit für zweimal Kopf?

(32)

32

Wahrscheinlichkeiten

Definition (bedingte Wahrscheinlichkeit):

Die bedingte Wahrscheinlichkeit eines Ereignisses A unter der Voraussetzung, dass Ereignis B auftritt ist

Pr{A | B} = Pr{A∩B} / Pr{B}, wenn Pr{B}≠0 ist.

(33)

Wahrscheinlichkeiten

Beispiel:

• Jemand beobachtet den Ausgang unseres

Münzwurfexperiments und sagt uns, dass es mindestens einmal Zahl gibt

• Was ist die Wahrscheinlichkeit für zweimal Zahl

(Ereignis A) unter dieser Beobachtung (Ereignis B)?

• Pr{A|B} = (1/4) /(3/4) =1/3

(34)

34

Wahrscheinlichkeiten

Definition (Zufallsvariable)

Eine Zufallsvariable X ist eine Funktion von einem Wahrscheinlichkeitsraum in die reellen Zahlen.

Bemerkung:

• Eine Zufallsvariable liefert uns zu jedem Ausgang eines Zufallsexperiments einen Wert

(35)

Wahrscheinlichkeiten

Beispiel:

• Wurf zweier Münzen

• Sei X Zufallsvariable für die Anzahl Münzen, die Zahl zeigen

• X(KK)=0, X(KZ)=1, X(ZK)=1, X(ZZ)=2

(36)

36

Wahrscheinlichkeiten

Für Zufallsvariable X und reelle Zahl x können wir das Ereignis X=x definieren als {s∈S:X(s)=x}. Damit gilt:

Pr{X=x} = Σ Pr{s}

Beispiel:

• Was ist die Wahrscheinlichkeit, dass wir bei zwei Münzwürfen genau einen Kopf erhalten?

• Pr{X=1} = Pr{KZ}+Pr{ZK} = ½

(bei derselben Definition von X wie auf der letzten Folie)

{s∈S:X(s)=x}

(37)

Wahrscheinlichkeiten

Definition (Erwartungswert):

• Der Erwartungwert einer Zufallsvariable ist definiert als E[X] =

Σ

x ⋅ Pr{X=x}

Interpretation:

• Der Erwartungswert gibt den „durchschnittlichen“ Wert der Zufallsvariable an, wobei die Wahrscheinlichkeiten der Ereignisse berücksichtigt werden

x

(38)

38

Wahrscheinlichkeit

Beispiel:

• Erwartete Anzahl „Kopf“ bei 2 Münzwürfen

• E[X] = 0 ⋅ Pr{X=0} + 1 ⋅ Pr{X=1} + 2 ⋅ Pr{X=2}

= 0 + ½ + 2 ⋅ ¼

= 1

(39)

Wahrscheinlichkeiten

Linearität des Erwartungswerts:

• E[X + Y] = E[X] + E[Y]

Bemerkung:

• Eine der wichtigsten Formeln im Bereich randomisierte Algorithmen

Anwendung:

• Man kann komplizierte Zufallsvariable als Summe einfacher Zufallsvariablen schreiben und dann den Erwartungswert der einfachen Zufallsvariablen

(40)

40

Wahrscheinlichkeiten

Zusammenfassung:

• Wahrscheinlichkeitsraum S aus Elementarereignissen

• Ereignisse sind Untermengen von S

• Wahrscheinlichkeitsverteilung gibt Wahrscheinlichkeiten von Ereignissen vor

• Zufallsvariable ordnet Elementarereignissen einen Wert zu

• Erwartungswert gibt „durchschnittlichen“ Wert einer Zufallsvariable an

(41)

Hashing

Ausblick:

• Entwurf spezieller Klassen von Funktionen, so dass eine zufällige Funktion aus einer solchen Klasse im

Erwartungswert gut für beliebige Eingabe ist

Referenzen

ÄHNLICHE DOKUMENTE