4.6 Muster 2 für den Algorithmenentwurf: teile-und-herrsche

Slides:



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

Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Algorithmische Anwendung
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6: Klassifizierung von Sortiertechniken
Suche in Texten (Stringsuche )
G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.
Kapitel 6. Suchverfahren
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) 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.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) 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.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
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.
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?
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Mergesort Divide and Conquer
Rekursion Richard Göbel.
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Computational Thinking Suchen und Sortieren [Ordnung muss sein…]
Algorithmen Gruppe 4.
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)
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
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
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Das Traveling Salesman Problem (TSP)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Sortiernetzwerke1 Seminar über Algorithmen SS 2005 von Arash Sarkohi und Christian Bunse.
Mergesort.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Sortieren interaktiv.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Wiederholung TexPoint fonts used in EMF.
Wiederholung TexPoint fonts used in EMF.
Sortieren interaktiv.
Wiederholung TexPoint fonts used in EMF.
Einführung in die Programmierung
Raphael Fischer Informatik II - Übung 10 Raphael Fischer
4.4 Klassen von Algorithmen
 Präsentation transkript:

4.6 Muster 2 für den Algorithmenentwurf: teile-und-herrsche Auch: „divide-and-conquer“ (divide et impera) Idee Rekursive Rückführung auf ein identisches Problem mit kleinerer Eingabemenge

Teile-und-herrsche-Algorithmen Prinzip 1. Teile das gegebene Problem in mehrere getrennte Teilprobleme auf 1.1 löse diese einzeln 1.2 und setze die Lösungen des ursprünglichen Problems aus den Teillösungen zusammen (nicht immer trivial!) 2. Wende dieselbe Technik rekursiv auf jedes der Teilprobleme an, dann auf deren Teilprobleme usw., bis die Teilprobleme so klein sind, dass man eine Lösung leicht explizit angeben kann. 3. Strebe dabei an, dass jedes Teilproblem von derselben Art ist wie das ursprüng-liche Problem, so dass es mit demselben Algorithmus gelöst werden kann.

Beispiel: Binäre Suche in einer Liste Algorithmus „binäre Suche“ Wähle den mittleren Eintrag der Liste und prüfe, ob der gesuchter Wert in der ersten oder in der zweiten Hälfte der Liste ist. Fahre rekursiv mit der Hälfte fort, in der sich der Eintrag befindet. Wenn es nur noch einen Eintrag gibt, ist dieser der Gesuchte, oder er existiert nicht.

Binäre Suche: Beispiel (1) Suche nach der 33 in der sortierten Liste: 1 4 6 9 12 15 16 21 22 29 33 36 38 40 44 u m o Die 33 ist rechts von der 21: 1 4 6 9 12 15 16 21 22 29 33 36 38 40 44 u m o Die 33 ist links von der 36: 1 4 6 9 12 15 16 21 22 29 33 36 38 40 44 u m o

Binäre Suche: Beispiel (2) Die 33 ist rechts von der 29: 1 4 6 9 12 15 16 21 22 29 33 36 38 40 44 u m o 33 gefunden. Komplexität In jedem Schritt wird die Größe des Intervalls halbiert. Das bedeutet: wir brauchen bei n Elementen log2n Schritte, bis wir den Wert gefunden haben.

Beispiel 2: MergeSort algorithm MergeSort (F) → FS Eingabe: eine zu sortierende Folge F Ausgabe: eine sortierte Folge FS if F einelementig then return F else teile F in F1 und F2; F1 := MergeSort (F1); F2 := MergeSort (F2); return Merge (F1, F2) fi

Komplexität von MergeSort Erste Phase: n -1 Teile-Operationen (1,2,4,8,…) Zweite Phase: 1. Schritt: n/2 Verschmelzungen mit jeweils 2-1 Vergleichen: n/2 2. Schritt: n/4 Verschmelzungen mit jeweils 4-1 Vergleichen: 3*n/4 3. Schritt: n/8 Verschmelzungen mit jeweils 8-1 Vergleichen: 7*n/8 … log2n Schritte werden insgesamt gebraucht. Also in der Summe für die zweite Phase log2n Schritte mit jeweils größen- ordnungsmäßig n Verschmelzungen/Vergleichen Für beide Phasen also O(n + n log n) = O (n log n) Operationen.

Beispiel 3: Spielpläne für Turniere Gegeben: n = 2k Spieler (2, 4, 8, 16 … Spieler) mindestens n - 1 Turniertage (jeder Spieler spielt an jedem Tag nur einmal). Aber es gibt genügend Plätze für alle parallelen Spiele. Jeder Spieler spielt gegen jeden anderen. Algorithmus teile-und-herrsche: Annahme: Turnierplan Tk bekannt (zum Beispiel für k=1, zwei Spieler) Aufgabe: konstruiere Tk+1 für m = 2k+1 = 2n (Rekursionsprinzip)

Beispiel 3: Spielplan T2 Tag 1 Tag 2 Tag 3 Spieler 1 Spieler 2 Spielplan als Matrix, Eintrag si ,j enthält den Spieler, der gegen Spieler i am Tag j spielt. Tag 1 Tag 2 Tag 3 Spieler 1 Spieler 2 Spieler 3 Spieler 4 2 1 4 3

Idee des Algorithmus (1) Konstruiere Tk+1 aus Tk wie folgt: 1 · · · n - 1 n · · · m - 1 1 · n = 2k Tk Sk n + 1 m = 2k+1 Zk

Idee des Algorithmus (2) Tk : Matrix Tk mit jeweils um n erhöhten Elementen Zk : (n × n)-Matrix, konstruiert durch zyklisches Verschieben der Zeile (1, 2, ..., n) für jede neue Zeile Sk : (n × n)-Matrix, konstruiert durch zyklisches Verschieben der Spalte (n + 1, ..., m) für n = 2k und m = 2k+1 für jede neue Spalte 1 2 3 4 5 8 7 6 2 3 4 1 6 5 8 7 3 4 1 2 7 6 5 8 4 1 2 3 8 7 6 5

Spielplan T1 Für eine kleine Problemgröße kann die Lösung direkt angegeben werden: Tag 1 Spieler 1 Spieler 2 2 1

Spielplan T3 Daraus werden T2 und T3 durch zweimaliges Anwenden des Algorithmus‘ errechnet. T3 Tag 1 Tag 2 Tag 3 Tag 4 Tag 5 Tag 6 Tag 7 Spieler 1 Spieler 2 Spieler 3 Spieler 4 Spieler 5 Spieler 6 Spieler 7 Spieler 8 2 1 4 3 6 5 8 7

Zusammenfassung „Teile-und-herrsche“ führt ein Problem so lange schrittweise auf ein kleineres Problem zurück, bis dieses einfach zu lösen ist. Dann fügt es die Einzel-lösungen zusammen. Das Zusammenfügen der Teillösungen ist oft der schwierigste Schritt.