Thema: Algorithmusdesignverfahren Vu Hoang Lam IMN04 HTWK-Leipzig Obersemminar Softwareentwicklung.

Slides:



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

Perceptrons and the perceptron learning rule
Berechne den optimalen (kürzesten, schnellsten) Weg
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Asymptotische Notation
Christian Schindelhauer
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.
3. Kapitel: Komplexität und Komplexitätsklassen
Kapitel 6. Suchverfahren
Algorithmen und Datenstrukturen 1 Sommersemester 2000
5. Sortier-Algorithmen Vorbemerkungen:
Synonyme: Stapel, Keller, LIFO-Liste usw.
Algorithmentheorie 6 – Greedy-Verfahren
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. 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.
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.
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.
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.
Algorithmen und Datenstrukturen
Geometrisches Divide and Conquer
Seminar parallele Programmierung SS 2003
Problemstellung Berechne die Summe der Quadrate aller natürlichen Zahlen bis zu einer vorgegebenen Zahl (bspw. 100)! Oder mathematisch: Berechne.
Gaußscher Algorithmus
Hauptseminar Automaten und Formale Sprachen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
Rekursion Richard Göbel.
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Polynome und schnelle Fourier-Transformation
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 Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Christian Mansky Design - Fallstudien Christian Mansky
2.4 Rekursion Klassifikation und Beispiele
Algorithmen und Datenstrukturen Übungsmodul 8
Das Traveling Salesman Problem (TSP)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
WS03/041 Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
 Präsentation transkript:

Thema: Algorithmusdesignverfahren Vu Hoang Lam IMN04 HTWK-Leipzig Obersemminar Softwareentwicklung

Das Problem Gegeben: ein Eingabevektor x mit n Elementen. Gesucht: die maximale Summe, die in einem zusammenhängenden Subvektor der Eingabe gefunden werden kann Beispiel Rückgabe der Summe von x[2..6], oder 187

Das Problem Wenn alle Zahlen positiv Der größtmögliche Untervektor= der ganze Eingabevektor Wenn alle Zahlen negativ Der größtmögliche Untervektor= leerer Vektor (Summe=0) Entstehung aus Flächenmustererkennung, Stellung durch Ulf Grenander an der Brown University Ursprünglich. Gegeben: ein zweidimensionales Array n×n mit n R. Gesucht: die maximale Summe, die ein rechteckiges Subarray enthält. Keine Lösung des Problems in vernünftiger Zeit Abstraktion einer Dimension Einblick in die Struktur des Problems

Lösungsversuch Einfacher Algorithmus mit kubischer Laufzeit Quadratischer Algorithmus mit quadratischer Laufzeit Teilen und Besieg Algorithmus mit n log n Laufzeit Scanning Algorithmus mit linearer Laufzeit

Simple Algorithmus Iteration über alle Integerpaare i und j, wobei 0 i j < n, n die Länge des Eingabevektors x Berechnung der Summe von x[i..j] für jedes Paar von i und j Überprüfung der errechneten und berechneten Summe

maxsofar = 0 for i= [0,n) for j= [i,n) sum = 0 for k= [i,j] sum += x[k] /* sum is sum of x[i..j] */ maxsofar = max (maxsofar, sum) Der Algorithmus hat kubische Laufzeit. O (n³) Messungen auf PC Pentium II 400Mhz, 256 Mb RAM: Bei n= beträgt die Laufzeit ca. 22 Minuten. Bei n= beträgt die Laufzeit schon ca. 15 Tage. Simple Algorithmus

maxsofar = 0 for i= [0,n) sum = 0 for j= [i,n) sum += x[j] /* sum is sum of x[i..j] */ maxsofar = max (maxsofar, sum) Der Algorithmus hat quadratische Laufzeit O(n²). Bei n = läuft der Algorithmus 797 ms. Bei n = hat der Algorithmus eine Laufzeit von ca. 1,3 Minuten. Zwei Quadratische Algorithmen

Teilen- und Besieg Algorithmus ab MaMa MbMb Rekursive Lösung zweier Teilprobleme von Größe n/2 Lösung des vollständigen Problems durch ihre Kombination McMc

Teilen und Besieg Algorithmus float maxsum3(1, u) if (1 > u) return 0 if (1 == u) return max(0, x[1]) m = (1 + u) / 2 lmax = sum = 0 for (i = m; i >= 1; i--) sum += x[i] lmax = max(lmax, sum) rmax = sum = 0 for i = (m, u] sum += x[i] rmax = max(rmax, sum) return max(lmax+rmax, maxsum3(1, m), maxsum3(m+1, u)) /* Algorithm 3 is originally invoked by the call */ answer = maxsum3(0, n-1) /* find max crossing to left */ /* one element */ /* find max crossing to right */ /* zero elements */

Teilen und Besieg Algorithmus u m l Sum rmaxlmax =187

Scanning Algorithmus MaxSoFarMaxEndingHere Angenommen das Problem ist für x[0..i-1] gelöst: Das maximale Subarray in den ersten i Elementen befindet sich entweder in den ersten i-1 Elementen (gespeichert in maxsofar), oder es endet auf Position i (gespeichert in maxendinghere)

maxsofar = 0; maxendinghere = 0; for i= [0,n) maxendinghere = max (maxendinghere+x[i], 0); maxsofar = max (maxsofar, maxendinghere); Laufzeit O(n) Die Laufzeit bei n= Elementen beträgt 5 ms! Scanning Algorithmus

Prinzipien Vermeidung der Wiederberechnung durch Abspeichern des Zustandes Vorverarbeitung der Information in Datenstrukturen Teilung und Besiege Algorithmen Scanning Algorithmen Sammeln Geringere Schranke

Laufzeit Tabelle ALGORITHMUS1234 Laufzeit in Nanosekunden1.3 n³10 n²47n log 2 n48n Zeit zu lösen ein Problem von Größe 10³ Sek 22 Min 15 Tage 41 J 41 TDJ 10 Msek 1 Sek 1,7 Min 2.8 Std 1.7 W.4 Msek 6 Msek 78 Msek.94 Msek 11 Sek.05 Msek.5 Msek 5 MSek 48 Msek.48 Msek In einem gelöstes Max-Größen- problem Sec Min Stunde Tage x x x x x x x x x x Wenn n sich um 10 vermehrt, vermehrt Zeit von Wenn Zeit sich um 10 vermehrt, vermehrt n von