Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.

Ähnliche Präsentationen


Präsentation zum Thema: "G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik."—  Präsentation transkript:

1 G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik Abt. Automatische Sprachverarbeitung Hauptgebäude, 1. Stock, Zi Vorlesung basierend u.a. auf: U.Schöning, Algorithmen - kurz gefasst, Spektrum Akademischer Verlag, Heidelberg: 1997 Ottmann/Wiedmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, Heidelberg: Foliensammlung Prof. Brewka

2 G.Heyer Algorithmen und Datenstrukturen II 2 Organisatorisches: Übungen ab: Übungsblatt ab im Netz (Lernserver) Abgabe der Lösungen jeweils 2 Wochen später, 5 Minuten vor der Vorlesung (erste Abgabe: ) Prüfungsklausur im Februar 2001 Zulassungsbedingungen: (1) Regelmäßige Abgabe der Lösungen und wenigstens 50 % der insgesamt möglichen Punkte (2) Bestandene Übungsklausur aus dem Sommersemester 2000

3 G.Heyer Algorithmen und Datenstrukturen II 3 Organisatorisches (2) Übungsleiter: Wiss. Mitarbeiter Thomas Wittig Termine der Übungsgruppen: Mittwoch (A/B) Donnerstag (A/B) Donnerstag (A/B) Freitag (A/B)

4 G.Heyer Algorithmen und Datenstrukturen II 4 Inhalt der Vorlesung Arten von Algorithmen Dynamisches Programmieren Greedy Algorithmen Genetische Algorithmen Graphenalgorithmen String- und Textalgorithmen (Suchen in Zeichenfolgen, Pattern Matching, Parsing, Datenkomprimierung) Geometrische Algorithmen Heuristische Verfahren Aktueller Vorlesungs- und Übungsplan auf dem LERNSERVER!

5 G.Heyer Algorithmen und Datenstrukturen II 5 Empfohlene Lehrbücher U.Schöning, Algorithmen - kurz gefasst, Spektrum 1997 R. Sedgwick, Algorithmen in C, Addison Wesley 1993 T. Ottman, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Denenberg, Data Structures and their Algorithms, Harper/Collins 1991 Gonnet, Baeza-Yates, Handbook of Algorithms and Data Structures in Pascal and C, Addison-Wesley, Louden, Mastering Algorithms with C, OReilly 1999

6 G.Heyer Algorithmen und Datenstrukturen II 6 Zeitkomplexitätsklassen Drei zentrale Zeitkomplexitätsklassen werden unterschieden: Algorithmus A heißt: linear-zeitbeschränktf A O ( n ) polynomial-zeitbeschränkt k N, so daß f A O ( n k ). exponentiell-zeitbeschränkt k N, so daß f A O ( k n ).

7 G.Heyer Algorithmen und Datenstrukturen II 7 Üblicherweise verwendete Komplexitätsfunktionen 1) logarithmisch: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.

8 G.Heyer Algorithmen und Datenstrukturen II 8 Algorithmische Operationen und ihre Komplexität:

9 G.Heyer Algorithmen und Datenstrukturen II 9 Lösungsstrategien/Arten von Algorithmen Kleine N: Beschränkte Eingabegrößen Teile-und-Herrsche: Aufteilung eines Problems in Teilprobleme (die rekursiv gelöst werden können) Probabilistische A.: Optimierung der durchschnittlichen Kosten durch Annahmen über statistische Eigenschaften der Eingabe- größen (z.B. Randomisierung, Wahrscheinlichkeitshäufung) Dynamische Programmierung: Aufteilung eines Problems in Teilprobleme und Wiederverwendung von Lösungen für Teilprobleme Greedy Algorithms: Errechnung lokaler Optima Approximierung: Errechnung einer hinreichend guten Lösung in einem beschränkten Suchraum (z.B. durch Heuristiken oder genetische Algorithmen)

10 G.Heyer Algorithmen und Datenstrukturen II 10 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.

11 G.Heyer Algorithmen und Datenstrukturen II 11 Mergesort Falls F leer oder einelementig -> Fertig. Sonst: Divide: Teile F in 2 möglichst gleichgroße Hälften F1, F2. Conquer: Sortiere L1 und L2 mittels Mergesort. Merge: Verschmelze die sortierten Teillisten zu sortierter Liste. Verschmelzen kann durch 2 Zeiger erfolgen, die die sortierten Teillisten durchwandern: Zeigen zunächst auf erstes Element, vergleichen Schlüssel, tragen kleineres item in konstruierte Liste ein und bewegen den Zeiger auf dieses Element um eine Position weiter.

12 G.Heyer Algorithmen und Datenstrukturen II 12 mergesort mergesort (int a[], int l, int r) /*sortiert a[l] bis a[r] nach aufsteigenden Schlüsseln*/ { int i, j, k, m; if (r>1) /*Folge hat mindestens 2 Elemente*/ { m= (r+l)/2; /*Mitte der Folge bestimmen*/ mergesort(a, l, m); mergesort(a, m+1, r); for (i=m+1; i>1; i--) b[i-1]= a[i-1]; for (j=m; j

13 G.Heyer Algorithmen und Datenstrukturen II 13 Dynamisches Programmieren Im Gegensatz zu Divide and Conquer bottom up Verfahren: Für die Lösung eines Problems der Größe n werden alle Teilprobleme der Größe 1, 2,..., n-1 gelöst, Lösungen werden in eine Tabelle gespeichert, daraus die Lösung für n abgeleitet. Dieses Verfahren wird oft für Optimierungsprobleme verwendet. Es ist effizient, wenn die Lösung von Teilproblemen immer wieder verwendet werden kann.

14 G.Heyer Algorithmen und Datenstrukturen II 14 Greedy Algorithmus Lösen von Optimierungsproblemen gegeben: Gütefunktion w für Lösungen und Teillösungen, optimale Lösung wird konstruiert durch schrittweises Erweitern einer unvollständigen Teillösung. Ausgangspunkt ist leere Lösung. Von allen Erweiterungsmöglichkeiten wird jeweils diejenige gewählt, die zu größtem (bzw. kleinstem) w-Wert führt. (greedy = gefräßig, der größte Bissen wird jeweils geschluckt)

15 G.Heyer Algorithmen und Datenstrukturen II 15 Beispiel: Huffmann-Codierung (A SIMPLE STRING TO BE ENCODEC USING A MINIMAL NUMBER OF BITS)

16 G.Heyer Algorithmen und Datenstrukturen II 16 Heuristische Verfahren versuchen, optimale oder wenigstens annähernd optimale Lösung in exponentiell großem Lösungsraum durch problemspezifische Information zu finden. Typ I: Heuristische Konstruktionsverfahren: konstruieren Lösung (z.B. greedy Heuristik) Typ II: Verbesserungsverfahren: starten mit zufällig gewählter vollständiger Lösung und versuchen diese zu verbessern.

17 G.Heyer Algorithmen und Datenstrukturen II 17 Genetische Algorithmen Versuchen, natürliche Evolutionsprozesse nachzubilden. Nicht einzelne Lösung wird verbessert, sondern Population vom Lösungen. Dies sind sowohl zufällige Änderungen (Mutationen) als auch Kreuzungen (Cross-over) von Lösungen. Lösungen mit besten Bewertungen (Fitness) überleben jeweils. Algorithmus: erzeuge zufällig Anfangspopulation von Lösungen P = {a1,...,am}; do { erzeuge bestimmte Anzahl zufälliger Mutationen der Lösungen in P; erzeuge bestimmte Anzahl zufälliger Kreuzungen von Lösungspaaren aus P; bewerte Fitness aller erhaltenen Lösungen; wähle die m fittesten Lösungen aus und weise diese P zu } while ( keine weitere Verbesserung der Fitness); gib die in der erhaltenen Population fitteste Lösung aus

18 G.Heyer Algorithmen und Datenstrukturen II 18 Hill Climbing Starte mit beliebiger vollständiger Lösung, modifiziere sie nach bestimmten Regeln und/oder zufällig. Wenn die neu erzeugte Lösung besser ist als die alte, übernimm sie und mache so weiter. Erzeuge Anfangslösung l ; do { modifiziere l zu l'; if (l' besser als l ) l = l } while ( längere Zeit keine Verbesserung ) ; Gib l als akzeptable Lösung aus Problem: lokale Optima, möglicherweise keine benachbarte (= durch Modifikation herstellbare) Lösung besser als aktuelle Lösung. Kann dadurch vermindert werden, daß man Verfahren wiederholt mit neuer Zufallslösung startet, bisher beste alte Lösung wird vermerkt.

19 G.Heyer Algorithmen und Datenstrukturen II 19 Beispiel-Problem: Traveling Salesman Problem (TSP) Gegeben: n Städte, Entfernungsmatrix M = (m ij ), mit m ij Entfernung von Stadt i nach Stadt j. Gesucht: Rundreise über alle Städte mit minimaler Länge, also Permutation : {1,...,n} -> {1,...,n} so daß NP-vollständig (Rechenzeit mit großer Sicherheit exponentiell) Naiver Algorithmus: alle (n-1)! viele Reihenfolgen betrachten, wenigstens exponentielles Wachstum. c(p) = m (i), (i+1) + m (n), (1) minimal. n-1 i=1


Herunterladen ppt "G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik."

Ähnliche Präsentationen


Google-Anzeigen