• Keine Ergebnisse gefunden

Algorithmen & Komplexität

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen & Komplexität"

Copied!
18
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen & Komplexität

Johannes Lengler

Institut für Theoretische Informatik

(2)

Datenstrukturen

Kapitel 4:

(3)

Datenstrukturen

Suchbäume:

– Operationen: Find, Insert, Delete

Mengen:

– Operationen: Find, Insert, Union

Wörterbücher:

– Operationen: Find, Insert, Delete Vorrangwarteschlangen:

– Operationen: Insert, ExtractMin, DecreaseKey

(4)

Datenstrukturen Kapitel 4:

Kapitel 4.2:

Mengen

(5)

Anwendungsbeispiel: Algorithmus von Kruskal

" v  V:

MakeNewSet(v)

Let ei = {x,y}:

Union(x, y)

Let ei = {x,y}:

if Find(x)  Find(y) then …

(6)

Union-Find-Strukturen

Gegeben:

Datensätze partitioniert in (paarweise disjunkte) Mengen, wobei jede Menge durch einen in ihr enthaltenen Datensatz repräsentiert werde.

Gesucht:

Datenstruktur, die folgende Operationen unterstützt.

MakeNewSet(x) → Füge neuen Datensatz x ein;

dieser bildet eine neue (einelementige) Menge.

Find(x) → Gebe Repräsentanten derjenigen Menge aus, die x enthält.

Union(x,y) → Vereinige die beiden Mengen, zu denen x und y

gehören.

(7)

Grundversion

Gegeben:

Datensätze partitioniert in (paarweise disjunkte) Mengen, wobei jede Menge durch einen in ihr enthaltenen Datensatz repräsentiert werde.

Idee:

Jede Menge wird durch einen zur Wurzel hin gerichteten Baum dargestellt (engl. intree). An jeder Wurzel ist gespeichert:

• Repräsentant der Menge

• Höhe des Baumes

MakeNewSet(x) → x bildet einen Baum, der nur aus der Wurzel besteht;

Höhe := 0, Repräsentant := x

Find(x) → Laufe von x zur Wurzel; gebe den an der Wurzel gespeicherten Repräsentanten aus,

Union(x,y) → Vereinige die Bäume …

(8)

Union(x,y)

x y

(h

x

, r

x

) (h

y

, r

y

)

h

y

≤ h

x

: Hänge Wurzel von y an die Wurzel von x an … (max{h

x

,h

y

+1},r

x

)

Informationen an der Wurzel müssen angepasst werden.

(9)

Eigenschaften

Korollar:

Für eine Union-Find Struktur mit n Elementen

haben Find(x) und Union(x,y) Laufzeit O(log(n)).

(10)

Datenstrukturen

Suchbäume:

– Operationen: Find, Insert, Delete

Mengen:

– Operationen: Find, Insert, Union

Wörterbücher:

– Operationen: Find, Insert, Delete Vorrangwarteschlangen:

– Operationen: Insert, ExtractMin, DecreaseKey

(11)

Operationen: Find, Insert, Delete Ziel: alles in Zeit O(1) !!

Beispiel: ISBN-Nummern (13-stellige Nummern)

Lösung: Erzeuge Array der Länge 10

13

. Speichere jedes Buch in der Zelle mit entsprechender Nummer.

Problem: zu viel Speicher

Ziel: Speicher nicht viel grösser als die Zahl der Einträge.

Kapitel 4.3:

Wörterbücher (dictionaries)

(12)

Hashing

Idee: Wir benutzen eine Funktion .

Wir wollen die Zahl der Kollisionen minimieren, d.h. für alle soll klein sein.

Idee: Wähle h zufällig!

(13)

Universelles Hashing

Für jede universelle Menge von Hashfunktionen, jeden Datensatz mit , und jedes gilt:

Die erwartete Zahl von Kollisionen mit x ist höchstens 1.

(14)

Datenstrukturen Kapitel 4:

Kapitel 4.4:

Vorrangwarteschlangen

(15)

Algorithmus von Dijkstra

Insert(v,∞)

x0 = ExtractMin

DecreaseKey(v, ρ[xx0] + l(x0,v) )

Laufzeit:

O( n ∙ Laufzeit von Insert + n ∙ Laufzeit von ExtractMin +

m ∙ Laufzeit von DecreaseKey)

(16)

Vorrangwarteschlangen - Realisierungen

Fibonacci-Heaps:

Insert: O(1) *

DecreaseKey: O(1) * ExtractMin: O(log n) *

*amortisierte Kosten

(17)

Fibonacci-Heaps: Eigenschaften

Für Algorithmus von Dijkstra/Prim heisst das:

n Insert,

n Extract-Min und m Decrease-Key

können in Zeit O(m+ n log n) ausgeführt werden

(18)

Amortisierte Analyse - Beispiel

Zwei Arten von Operationen:

Rauf: Steige eine Stufe hinauf, falls noch nicht ganz oben.

Runter: Gehe ganz nach unten Frage:

Wie lange dauert eine Operation höchstens?

Wie lange dauert eine Folge von k Operationen höchstens?

Annahmen:

- pro Stufe eine Sekunde, unabh.

von Richtung

- wir beginnen unten

Referenzen

ÄHNLICHE DOKUMENTE

I Ubung: Finden Sie die zu den 5 Namen in Spalte 1 geh ¨orende ¨ Ziffernfolge in Liste 1. Stoppen Sie

Ein (bin¨arer) Heap ist ein (fast) vollst¨andiger bin¨arer Baum, in dem f¨ur jeden Knoten gilt, dass er in einer definierten Ordnungsrelation zu seinen Nachfolger steht. I

I Wie viele elementare Schritte braucht ein Algorithmus f¨ur Eingaben einer bestimmten

Chr: Der persische Mathematiker alChoresmi veröffentlicht eine Aufgabensammlung für Kaufleute, die später als Liber Algorithmi erscheint Algorithmus: Kunstwort aus alChoresmi

Satz: Ist T=(V,E) ein Baum mit |V| so ist der Graph, der durch Entfernen eines Blattes entsteht, ebenso ein Baum... Eigenschaften

Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu durchlaufen.. Breitensuche („breadth first

Datensätze partitioniert in (paarweise disjunkte) Mengen, wobei jede Menge durch einen in ihr enthaltenen Datensatz repräsentiert

- Falls marked=true ist, hänge auch diesen Knoten von seinem Elternknoten ab und füge ihn in die Wurzelliste ein (und setze marked = false), usw.