Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Algorithmen und Datenstrukturen 1 Sommersemester 2000

Ähnliche Präsentationen


Präsentation zum Thema: "Algorithmen und Datenstrukturen 1 Sommersemester 2000"—  Präsentation transkript:

1 Algorithmen und Datenstrukturen 1 Sommersemester 2000
Prof. Dr. Gerhard Heyer Institut für Informatik Abt. Automatische Sprachverarbeitung Hauptgebäude, 1. Stock, Zi. 1-52 Vorlesung basierend u.a. auf: Ottmann/Wiedmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, Heidelberg: 21996 Foliensammlung Prof. Rahm und Prof. Brewka

2 Organisatorisches Übungen ab (1 SWS) Übungsblatt ab vierzehntägig nur im Netz (Lernserver) Abgabe der Lösungen jeweils 2 Wochen später, 5 Minuten vor der Vorlesung (erste Abgabe ) Regelmäßige Abgabe der Lösungen Zulassungsbedingung zur Übungsklausur! (50% der Punkte) Übungsklausur 12. Juli 2000 Bestehen der Übungsklausur Zulassungsbedingung zu Prüfungsklausur im Wintersemester! Vorlesungsfolien ... werden wöchentlich ins Netz gestellt (Lernserver)

3 Termine für Übungsgruppen: Dr. Gräbe Fr. A 9.15-10.45 Uhr SR 3-11
Organisatorisches Übungsleiter: Dr. Gräbe (Zi 2-51), Dr. Lange (Zi 1-08) Termine für Übungsgruppen: Dr. Gräbe Fr. A Uhr SR 3-11 Fr. B Uhr SR 3-11 Mi. A Uhr SR 2-71 Mi. B Uhr SR 2-71 Dr. Lange Di. A Uhr SR 3-03 Di. B Uhr SR 3-03 Do. A Uhr SR 3-11 Do. B Uhr SR 3-11 Programmiersprache: C

4 Inhalt der Vorlesung Komplexität von Algorithmen
Listen und Listenorperationen Suche in Listen Sortieren Natürliche Bäume und Binärbäume Ausgeglichene Binärbäume Blattsuchbäume (Digitalbäume) Mehrwegbäume Hashing Aktueller Vorlesungs- und Übungsplan auf dem LERNSERVER!

5 Empfohlene Lehrbücher
T. Ottman, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum 21996 R. Sedgwick, Algorithmen in C, Addison Wesley 1993 U. Schöning, Algorithmen - kurz gefasst, Spektrum 1997 Denenberg, Data Structures and their Algorithms, Harper/Collins 1991 Engesser/Claus/Schwill, Informatik Duden, BI 1993 Louden, Mastering Algorithms with C, O’Reilly 1999 Richter/Sander/Stucky, Problem-Algorithmus-Programm, Teubner 1993 Aho, Hopcroft, Ullman, Data Structures and Algorithms (1983) Knuth, The Art of Computer Programming Vol.3 (1973)

6 Aufgabe: Maximum Subarray Problem
gegeben: Folge X von ganzen Zahlen der Länge N gesucht: maximale Summe der Elemente einer zusammenhängenden Teilfolge maxtsumme := 0; for u := 1 to N do for o := u to N do begin {bestimme Summe der Elemente in Teilfolge X[u .. o]} summe := 0; for i := u to o do summe := summe + X[i]; maxtsumme := max(summe, maxtsumme) end

7 Anzahl der Additionen in innerster for-Schleife: 1 + 2 + 3 + 4 + 5 + 6
Anzahl der Additionen in innerster for-Schleife: N N N N + (N-1)2 + (N-2) N Dieser Algorithmus benötigt Q(N3) Schritte (Zuweisungen)

8 Bessere Lösung durch Divide and Conquer Methode:
Allgemein: Divide and Conquer- Verfahren zur Lösung eines Problems der Größe N . Divide: Falls N > 1 teile Problem in annähernd gleich große Teilprobleme, sonst löse Problem direkt. . Conquer: Löse (rekursiv) Teilprobleme. . Merge: Kombiniere Teillösungen zu Gesamtlösung.

9 Anwendung auf Maximum Subarray Problem:
Beobachtung: wenn man Folge in 2 Teile A und B teilt, so ist die gesuchte Teilfolge entweder in A, oder in B, oder in beiden. Im letzten Fall sind die Randelemente in der gesuchten Teilfolge, und diese besteht aus 2 maximalen Teilstücken, die beim jeweiligen Rand beginnen (rechtes Randmaximum von A + linkes Randmaximum von B) . Die Randmaxima von X[l], ..., X[r] kann man in linearer Zeit berechnen: lmax := 0; summe := 0; for i := l to r do begin summe := summe + X[i]; lmax := max(lmax, summe) end rmax analog.

10 Damit erhält man folgenden D&C-Algorithmus:
Algorithmus maxtsum(X); {liefert maximale Teilsumme der Folge X ganzer Zahlen} begin if X enthält nur ein Element a then (if a > 0 then maxtsum := a else maxtsum := 0) else begin teile X in linke und rechte Teilfolgen A und B annähernd gleicher Größe; maxtinA := maxtsum(A); maxtinB := maxtsum(B); bestimme rechtes Randmaximum von A, rmax(A); bestimme linkes Randmaximum von B, lmax(B); maxtsum := max(maxtinA, maxtinB, rmax(A) + lmax(B)) end end

11 Sei T(N) Anzahl der Schritte des Algorithmus bei Eingabe einer Folge der Länge N.
Es gilt: T(N) = 2 T(N/2) + C . N Da T(1) konstant (T(1) = C1) erhält man T(N) = Q(N log N). Beispiele: T(1) = C1 T(2) = 2C1+ 2C T(4) = 4C1 + 8C T(8) = 8C C T(16) = 16C C T(32) = 32C C Gleichungen wie die obige nennt man Rekursionsgleichungen. (Sie treten bei Komplexitätsanalysen oft auf.)

12 Noch besseres Verfahren: Scan-Line-Prinzip.
wir durchlaufen Positionen 1,...,N, merken uns jeweils die maximale Summe bismax im bisher inspizierten Anfangsstück sowie rechtes Randmaximum scanmax. Bei Vorrücken um 1 Position ist neue maximale Teilfolge entweder gleich der alten, oder sie enthält neues Randelement und ist dann das neue rechte Randmaximum. Neues rechtes Randmaximum ist scanmax + a, a Wert der nächsten Position, falls diese Summe positiv, sonst 0. scanmax := 0; bismax := 0; for i := 1 to N do begin if scanmax + X[i] > 0 then scanmax := scanmax + X[i] else scanmax := 0; bismax := max(scanmax, bismax) end

13 Algorithmus führt nur N (linear viele) Schritte aus.
Optimale Komplexität, da jede Position ja mindestens einmal überprüft werden muß. Beispiel: ___maximale Teilsequenz_____ smax bmax

14 Grundbegriffe: Komplexität einer Funktion ist untere Schranke für die Effizienz eines Algorithmus. Effizienz eines Algorithmus ist obere Schranke für die Komplexität der durch den Algorithmus realisierten Funktion. Ein A. heisst effizient, wenn er ein vorgegebenes Problem in möglichst kurzer Zeit und/oder möglichst geringem Aufwand an Betriebsmitteln (Laufzeit, Speicherplatz) löst. Unterschied zwischen Problemkomplexität und Algorithmuskomplexität.

15 Üblicherweise verwendete Funktionen zum Messen des Wachstums:
1) logarithmische: log n 2) linear: n 3) n log n: n log n 4) quadratisch, kubisch, ... n2, n3, ... 5) exponentiell: 2n, 3n, ... Unterschied handhabbar (tractable) - nicht handhabbar wird zwischen (4) und (5) gemacht.

16 Beispiel-Tabellen aus Garey/Johnson.
Annahme: 1 Operation braucht 1 Nanosekunde (Millionstel Sekunde) s: Sekunden m: Minuten d: Tage (days) y: Jahre (years) c: Jahrhunderte (centuries) Größe / Wachstum n s s s s s s n s s s s s s n s s s s s .216 s n s s s m m m 2n s s m d y 366c 3n .059 s m y c á 108 c á 1013 c

17 Wie wirken sich technologische Fortschritte (schnellere Computer) aus?
Größe des größten Problems, das in 1 Stunde gelöst werden kann: größtes Problem/ genwärtige Rechner Rechner Wachstum Rechner 100 mal schneller 1000 mal schneller n N N N1 n2 N2 10 N N2 n3 N N N3 n5 N N N4 2n N5 N N n N6 N N


Herunterladen ppt "Algorithmen und Datenstrukturen 1 Sommersemester 2000"

Ähnliche Präsentationen


Google-Anzeigen