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

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6: Klassifizierung von Sortiertechniken
Organisatorisches Übungsblatt wöchentlich (ab ), von Mitte November an nur im Netz Abgabe der Lösungen jeweils 1 Woche später, 5 Minuten vor der.
Suche in Texten (Stringsuche )
Institut für Informatik Abt. Intelligente Systeme
Kapitel 7. Sortier-Algorithmen
Kapitel 6. Suchverfahren
Algorithmen und Datenstrukturen 1 Sommersemester 2000
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
5. Sortier-Algorithmen Vorbemerkungen:
2. Kapitel: Komplexität und Komplexitätsklassen
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Algorithmen und Datenstrukturen
Halbzeit: Kurze Wiederholung
Sortieren vorsortierter Daten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-3 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 13 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Geometrisches Divide and Conquer
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Mergesort Divide and Conquer
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Organisatorisches Vorlesungstermine: –dienstags, 14:00h, A125 –freitags,
Rekursion mit Listen: Quicksort
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Sortieralgorithmen Sortieren von Arrays.
Einführung in die Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Christian Mansky Design - Fallstudien Christian Mansky
Das Traveling Salesman Problem (TSP)
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
R. Der Algorithmen und Datenstrukturen (Magister) 1 Vorlesung Algorithmen und Datenstrukturen (Magister) Sommersemester 2001 Prof. Dr. Ralf Der Institut.
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
Mergesort.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Tanya Braun (Übungen) sowie viele Tutoren.
 Präsentation transkript:

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

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

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)

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!

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

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 ).

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.

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

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)

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.

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.

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<r; j++) b[r+m-j]= a[j+1]; for (k=l;k<=r;k++) /*Zweiweg-Mischen*/ a[k]=(b[i]<b[j]) ? b[i++]: b[j--]; }}

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.

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)

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

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.

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

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.

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