• Keine Ergebnisse gefunden

Algorithmen & Komplexität

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen & Komplexität"

Copied!
33
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen & Komplexität

Angelika Steger

Institut für Theoretische Informatik

steger@inf.ethz.ch

(2)

Kap. 3: Algorithmische Grundprinzipien

3.1 Divide & Conquer Verfahren „top-down“

MergeSort QuickSort Binäre Suche Alg. von Strassen

3.2 Dynamische Programmierung „bottom-up“

Alg. von Floyd-Warshall Knapsack Problem (heute)

(3)

Das Master-Theorem

erlaubt Gaussklammern

MergeSort: Cn = Cn/2 + Cn/2 + n-1

also α=2, β=2, f(n) = n-1 2. Zeile Strassen: Tn = 7 Tn/2 + 15 n2

also α=7, β=2, f(n) = 15n2 1. Zeile Binäre Suche: Bn = Bn/2 + 1

also α=1, β=2, f(n) = 1 2. Zeile

(4)

Algorithmus von Floyd-Warshall

Idee:

Berechne eine Folge Fk von Matrizen für k = 1, 2, …, n:

Fk[i, j] := Länge eines kürzesten Pfades zwischen i und j,

der nur innere Knoten aus der Menge {1, 2, …, k} hat.

k = 0: trivial

k-1  k:

Fk[i,j] = min { Fk-1[i, j], Fk-1[i, k] + Fk-1[k, j] }

i

Fk-1[i,j] j

Fk-1[i,k] k

Fk-1[k,j]

(5)

Rucksackproblem

Gegeben:

Eine Kapazität B  N des Rucksacks und

n Objekte mit Gewichten w1, . . ., wn  N und Profiten p1, . . . , pn  N.

Gesucht:

Eine optimale Packung des Rucksacks, d.h.

eine Teilmenge I  [n] mit ΣiεI wi ≤ B und

ΣiεI pi = max { ΣiεI’ pi : I‘  [n] mit ΣiεI’ wi ≤ B }

(6)

Rucksackproblem

Idee:

Berechne zunächst Teillösungen, wobei nur die Objekte 1, 2, …, i berücksichtigt werden:

f [i, t] :=

minimal mögliches Gewicht des Rucksacks, wenn der Profit mindestens t betragen soll und nur die ersten i Objekte zur Verfügung stehen.

i = 1: f [1, t] = w1 für t ≤ p1 und f [1, t] = ∞ sonst.

i -1  i :

f [i, t] = min { f [i-1, t], wi + f [i-1, t-pi] }

(7)

Rucksackproblem

max. möglicher Profit

max. möglicher Profit mit Gesamtgewicht ≤ B

(8)

Algorithmische Grundprinzipien Kapitel 3:

Kapitel 3.3:

Greedy-Algorithmen

(9)

Kap. 3: Algorithmische Grundprinzipien

3.1 Divide & Conquer Verfahren „top-down“

MergeSort QuickSort Binäre Suche Alg. von Strassen

3.2 Dynamische Programmierung „bottom-up“

Alg. von Floyd-Warshall Knapsack Problem

3.3 Greedy-Algorithmen

Alg. von Kruskal

(Alg. von Prim, Djikstra)

(10)

3.3. Greedy-Algorithmen

Definition: Ein Matroid M=(S,U) besteht aus einer endlichen Menge S und einer Familie von unabhängigen Mengen U  Power(S) von Teilmengen von S, so dass die folgenden drei Bedingungen erfüllt sind:

(M1) U

(M2) A U und B  A  B U

(M3) A,B  U und |B| > |A|   b  B \ A mit A{b} U

(11)

Greedy-Alg. für Matroide

(12)

Datenstrukturen

Kapitel 4:

(13)

Datenstrukturen - Motivation

Initialisierung

finde x0 mit minimalen Wert

ändere/verringere Wert

(14)

Datenstrukturen

Gegeben: Datensätze x1,…,xn, wobei jeder Datensatz x durch einen Schlüssel key[x] gekennzeichnet ist.

Gesucht: Datenstruktur S, die die folgenden Operationen (oder Teile davon) effizient realisiert:

(15)

Datenstrukturen

Suchbäume:

– Operationen: Find, Insert, Delete,

Vorrangwarteschlangen:

– Operationen: Insert, ExtractMin, DecreaseKey

Mengen:

– Operationen: Find, Insert, Union Wörterbücher:

– Operationen: Find, Insert, Delete

(16)

Datenstrukturen Kapitel 4:

Kapitel 4.1:

Suchbäume

(17)

Suchbäume

Operationen: Find, Insert, Delete

Vielleicht geschickter

anordnen??

(18)

Suchbäume

Annahmen:

• Die Schlüssel sind aus einem total geordneten Universum

Bsp.: Zahlen (natürliche, reelle, …),

Zeichenketten mit lexikographischer Ordnung

• Jeder Schlüssel kommt höchstens einmal vor.

Dies ist keine unbedingt notwendige Annahme; wir treffen sie für die Vorlesung, da sie an einigen Stellen die Darstellung vereinfacht.

(19)

Binäre Suchbäume 11

Elemente mit Schlüssel < 11

Elemente mit Schlüssel > 11

(20)

Balancierte binäre Suchbäume 11

17

21 14

41 13 16 19

7

9 4

10

2 5 8

• alle Knoten - bis auf die in den beiden untersten Ebenen - haben genau zwei Kinder

• Höhe des Baumes ist ≈ log(n)

(n = Anzahl Elemente im Baum)

• Find(x) - Laufzeit O(log(n))

• Delete(x) , Insert(x):

unklar … wie erhält man die Balanciertheit?

Zum Beispiel

- AVL-Bäume

- (a,b)-Bäume,

- Rot-Schwarz-

Bäume

(21)

(a,b)-Baum

(22)

(2,3)-Baum

Innere Knoten: Verwaltungsinformation Äussere Knoten: Schlüssel

Externer

Suchbaum

(23)

(a,b)-Baum – Eigenschaften

(24)

(2,3)-Baum – Find(x)

(25)

(a,b)-Baum – Find

Laufzeit:

O(log(n))

(26)

Insert(60) – 1.Schritt

60

(27)

Insert(60) – 2.Schritt

(28)

Insert(60) – 3.Schritt

(29)

(a,b)-Baum – Insert

Laufzeit:

O(log(n))

(30)

Delete(7)

Zwei Möglichkeiten:

• „adoptiere“ Kind von rechten Nachbarn

• verschmelze Knoten mit linkem Nachbarn

(31)

Delete(7)

(32)

(a,b)-Baum – Delete

Laufzeit:

O(log(n))

(33)

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.

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.