Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

G.Heyer Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 Sommersemester 2000 Prof. Dr. Gerhard Heyer Institut für Informatik Abt. Automatische.

Ähnliche Präsentationen


Präsentation zum Thema: "G.Heyer Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 Sommersemester 2000 Prof. Dr. Gerhard Heyer Institut für Informatik Abt. Automatische."—  Präsentation transkript:

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

2 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 3 Organisatorisches Übungsleiter: Dr. Gräbe (Zi 2-51), Dr. Lange (Zi 1-08) Termine für Übungsgruppen: Dr. GräbeFr. A UhrSR 3-11 Fr. B UhrSR 3-11 Mi. A UhrSR 2-71 Mi. B UhrSR 2-71 Dr. LangeDi. A UhrSR 3-03 Di. B UhrSR 3-03 Do. A UhrSR 3-11 Do. B UhrSR 3-11 Programmiersprache: C

4 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 5 Empfohlene Lehrbücher T. Ottman, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum 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, OReilly 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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 7 Dieser Algorithmus benötigt (N 3 ) Schritte (Zuweisungen) Anzahl der Additionen in innerster for-Schleife: N N N N + (N-1)2 + (N-2) N

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

9 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 10 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 Damit erhält man folgenden D&C-Algorithmus :

11 G.Heyer Algorithmen und Datenstrukturen 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) = (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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 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 G.Heyer Algorithmen und Datenstrukturen 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,...n 2, n 3,... 5) exponentiell:2 n, 3 n,... Unterschied handhabbar (tractable) - nicht handhabbar wird zwischen (4) und (5) gemacht.

16 G.Heyer Algorithmen und Datenstrukturen 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.0004 s.0009 s.0016 s.0025 s.0036 s n s.008 s.027 s.064 s.125 s.216 s n 5.1 s 3.2 s 24.3 s 1.7 m 5.2 m 13.0 m 2 n.001 s 1.0 s 17.9 m 12.7 d 35.7 y 366c 3 n.059 s 58 m 6.5 y 3855 c 2 á 10 8 c 1.3 á c

17 G.Heyer Algorithmen und Datenstrukturen 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ärtigeRechnerRechner WachstumRechner100 mal schneller1000 mal schneller n N N N 1 n 2 N 2 10 N N 2 n 3 N N 3 10 N 3 n 5 N N N 4 2 n N 5 N N n N 6 N N


Herunterladen ppt "G.Heyer Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 Sommersemester 2000 Prof. Dr. Gerhard Heyer Institut für Informatik Abt. Automatische."

Ähnliche Präsentationen


Google-Anzeigen