• Keine Ergebnisse gefunden

Effiziente Algorithmen und Datenstrukturen

N/A
N/A
Protected

Academic year: 2021

Aktie "Effiziente Algorithmen und Datenstrukturen"

Copied!
15
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

WS 2006/07

Effiziente Algorithmen und Datenstrukturen

Ernst W. Mayr

Fakult¨at f¨ur Informatik TU M¨unchen

http://www14.in.tum.de/lehre/2006WS/ea/

Wintersemester 2006/07

(2)

Kapitel 0 Organisatorisches

Vorlesungen:

4SWS Di 8:30–10:00 (MW1801), Fr 8:30–10:00 (MI HS1) Wahlpflichtvorlesung im Gebiet Algorithmen (Theoretische Informatik, Informatik III), Bioinformatik

Ubung: ¨

2SWS Zentral¨ ubung: Mi 9:30–11:00 (Multimedia-H¨ orsaal 00.13.009A)

Ubungsleitung: Matthias Baumgart ¨ Umfang:

4V+2Z ¨ U, 8 ECTS-Punkte Sprechstunde:

Fr 12:00–13:00 oder nach Vereinbarung

EADS 2/47

ľErnst W. Mayr

(3)

Vorkenntnisse:

Einf¨ uhrung in die Informatik I/II/III/IV Diskrete Strukturen I/II (DS, DWT) Weiterf¨ uhrende Vorlesungen:

Effiziente Algorithmen und Datenstrukturen II Randomisierte Algorithmen

Komplexit¨ atstheorie Internetalgorithmik . . .

Webseite:

http://wwwmayr.in.tum.de/lehre/2006WS/ea/

(4)

Ubungsleitung: ¨

Matthias Baumgart, MI 03.09.060 (baumgart@in.tum.de) Sprechstunde: Dienstag, 10:30Uhr und nach Vereinbarung Sekretariat:

Frau Schmidt, MI 03.09.052 (schmiann@in.tum.de)

EADS 4/47

ľErnst W. Mayr

(5)

Ubungsaufgaben und Klausur: ¨

Ausgabe jeweils am Freitag in der Vorlesung bzw. auf der Webseite der Vorlesung

Abgabe eine Woche sp¨ ater vor der Vorlesung Besprechung in der Zentral¨ ubung

Klausur:

Zwischenklausur (50% Gewicht), Termin: 15.12.2006, 13–15Uhr, MW 0001

Endklausur (50% Gewicht), Termin: 13.02.2007, 10–12Uhr, MW 0001

Wiederholungsklausur, Termin TBA

bei den Klausuren sind keine Hilfsmittel außer einem handbeschriebenen DIN-A4-Blatt zugelassen

Zulassungsvoraussetzung (außer f¨ ur Studierende im Diplomstudiengang Informatik) sind 40% der erreichbaren Hausaufgabenpunkte

vorauss. 12 ¨ Ubungsbl¨ atter, das letzte am 26. Januar 2007,

jedes 40 Punkte

(6)

1. Vorlesungsinhalt Grundlagen

Maschinenmodelle Komplexit¨ atsmaße H¨ ohere Datenstrukturen

Suchb¨ aume Hashing Priority Queues

selbstorganisierende Datenstrukturen Union/Find-Datenstrukturen

Sortieren und Selektieren Minimale Spannb¨ aume K¨ urzeste Wege

Matchings in Graphen Netzwerkfluss

EADS 1 Vorlesungsinhalt 6/47

ľErnst W. Mayr

(7)

2. Literatur

Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman:

The design and analysis of computer algorithms,

Addison-Wesley Publishing Company: Reading (MA), 1974 Thomas H. Cormen, Charles E. Leiserson, Ron L. Rivest, Clifford Stein:

Introduction to algorithms, McGraw-Hill, 1990

Donald E. Knuth:

The art of computer programming. Vol. 1: Fundamental algorithms,

3. Auflage, Addison-Wesley Publishing Company: Reading

(MA), 1997

(8)

Donald E. Knuth:

The art of computer programming. Vol. 3: Sorting and searching,

3. Auflage, Addison-Wesley Publishing Company: Reading (MA), 1997

Volker Heun:

Grundlegende Algorithmen: Einf¨ uhrung in den Entwurf und die Analyse effizienter Algorithmen,

2. Auflage, Vieweg, 2003 Uwe Sch¨ oning:

Algorithmik,

Spektrum Akademischer Verlag, 2001

EADS 8/47

ľErnst W. Mayr

(9)

Michael T. Goodrich, Roberto Tamassia:

Algorithm design: Foundations, analysis, and internet examples,

John Wiley & Sons, 2002

(10)

Kapitel I Grundlagen

1. Ein einleitendes Beispiel

Berechnung von F

n

, der n-ten Fibonacci-Zahl:

F

0

= 0 , F

1

= 1 ,

F

n

= F

n−1

+ F

n−2

f¨ ur alle n ≥ 2 .

Also:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, . . .

EADS 1 Ein einleitendes Beispiel 10/47

ľErnst W. Mayr

(11)

1. Methode: Funktionales Programmieren f (n) := if n = 0 then 0

elif n = 1 then 1

else f (n − 1) + f (n − 2) fi

Sei T (n) der Zeitbedarf f¨ ur die Berechnung von f (n). Dann gilt:

T(0) = T (1) = 1 ;

T (n) = T (n − 1) + T (n − 2) f¨ ur n ≥ 2 .

(12)

Damit gilt:

T (n) = c

1

1 + √ 5 2

!

n

+ c

2

1 − √ 5 2

!

n

f¨ ur geeignete Konstanten c

1

und c

2

.

Einsetzen der Werte f¨ ur n = 0 und n = 1 ergibt

c

1

= 1 2 +

√ 5 10 c

2

= 1

2 −

√ 5

10 und damit

T (n) = 1 2 +

√ 5 10

! 1 + √

5 2

!

n

+ 1

2 −

√ 5 10

! 1 − √

5 2

!

n

.

EADS 1 Ein einleitendes Beispiel 12/47

ľErnst W. Mayr

(13)

2. Methode: Dynamische Programmierung array F [0 : n]; F [0] := 0; F[1] := 1;

for i := 2 to n do

F [i] := F [i − 1] + F [i − 2]

Der Zeitbedarf dieses Algorithmus ist offensichtlich

O(n) .

(14)

3. Methode: Direkt (mit etwas mathematischer Arbeit)

F (n) := round 1

√ 5

1 + √ 5 2

!

n

!

=

$ 1

√ 5

1 + √ 5 2

!

n

+ 1 2

% .

Der Zeitbedarf hier ist

O(log n) .

EADS 1 Ein einleitendes Beispiel 14/47

ľErnst W. Mayr

(15)

2. Versuch einer Definition

Was sind

” kombinatorische“ Algorithmen?

Eine m¨ ogliche Antwort:

Probleme, die, k¨ onnten wir alle F¨ alle aufz¨ ahlen, trivial w¨ aren, aber eine sehr große Anzahl von F¨ allen haben.

Beispiele: Hamiltonscher Kreis (NP-vollst¨ andig),

Eulerscher Kreis (P)

Referenzen

ÄHNLICHE DOKUMENTE

I Es m¨ ussen alle 3 Pr¨ aferenzen angegeben werden..M. R¨ oger (Universit¨ at Basel) Algorithmen und

Ein (bin¨ arer) min-Heap ist ein vollst¨ andiger bin¨ arer Baum, bei dem gilt, dass der Wert in jedem Knoten kleiner gleich dem Wert seiner beiden Kindern (sofern vorhanden)

I oder besteht aus einem Knoten (genannt Wurzel) sowie maximal 2 Bin¨ arb¨ aumen (den Unterb¨ aumen von T ).. I Bin¨ arb¨ aume haben jede Menge Anwendungen I Unser

Die Operationen Suchen und Einf¨ ugen in einen 2-3 Baum mit N Schl¨ usseln besuchen im schlechtesten Fall log 2 (N) Knoten. R¨ oger (Universit¨ at Basel) Algorithmen und

C2.1 Erreichbarkeit C2.2 K¨ urzeste Pfade C2.3 Azyklische Graphen C2.4 Zusammenhang C2.5 Zusammenfassung.. R¨ oger (Universit¨ at Basel) Algorithmen und Datenstrukturen 2

I Entscheidungsprobleme: Ja/Nein-Antwort gesucht Gegeben gewichteter Graph, Knoten s, t und Zahl K.. Gibt es einen Pfad von s nach t mit Kosten h¨

I In der Praxis ist Union-Find meist schneller, da der Graph f¨ ur viele Zwecke nicht vollst¨ andig aufgebaut werden muss. I Ist der Graph schon aufgebaut, kann

• wer mittels Bibliotheksfunktion sortiert, macht es sehr wahrscheinlich auch falsch — denn er benutzt eine Liste, meint aber eine Menge, f¨ur die gibt es deutlich