Effizienz von Algorithmen
|
|
|
- Andreas Siegel
- vor 9 Jahren
- Abrufe
Transkript
1 Effizienz von Algorithmen Eine Einführung Michael Klauser LMU 30. Oktober 2012 Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
2 Ein einführendes Beispiel Wie würdet ihr einen Stapel Karten Sortieren? Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
3 Ein einführendes Beispiel Wie würdet ihr einen Stapel Karten Sortieren? Sortieren-durch-Einfügen Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
4 Die Idee Eingabe: Eine Folge von n Zahlen a 1, a 2,, a n. Ausgabe: Eine Permutation a 1, a 2,, a n der Eingabefolge, sodass a 1 a 2 a n Prinzip 1 Finde den minimalen Wert in der Liste. 2 Vertausche ihn mit dem Wert an der ersten Position. 3 Wiederhole schritt zwei für den rest der Liste. ( Beginnend mit der Letzten Startposition +1) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
5 Ein paar Code Beispiele Haskell ssort :: (Ord a) => [a] -> [a] ssort [ = [ ssort xs = m : ssort (delete m xs) where m = minimum xs]] -- delete löscht das erste Auftreten -- eines Elements in einer Liste Python def selectionsort(seq): for i in range(len(seq) - 1): k = i for j in range(i, len(seq)): if seq[j] < seq[k]: k = j seq[i], seq[k] = seq[k], seq[i] C void selectionsort( int anzahl, int daten[]) { int i, k, t, min; for( i = 0; i < anzahl-1; i++) { min = i; for( k = i+1; k < anzahl; k++) { if( daten[k] < daten[min]) min = k; } t = daten[min]; // Tauschen daten[min] = daten[i]; daten[i] = t; } } Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
6 Pseudocode Data: Feld A[] for j=2 to len(a) do key = A[j]; i = j + 1; while i > 0 && A[i]>key do A[i+1] = A[i]; i = i -1 end end Algorithm 1: Sortieren durch Einfügen als Pseudocode. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
7 Definition des Systems Für eine präzise mathematische Effizienzanalyse benötigen wir ein Rechenmodell, das definiert: Welche Datentypen existieren. Wie Daten abgelegt werden. Welche Operationen zulässig sind. Welche Zeit eine bestimmte Operation für einen definierten Datentyp benötigt. Random Access Maschine Formal ist ein Rechenmodell gegeben durch die Random Access Maschine, kurz RAM. Ein RAM ist ein idealer 1-Prozessrechner mit einfachem aber unbegrenzt großem Speicher. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
8 Basisoperationen und ihre Kosten Definition Als Basisoperationen bezeichnen wir: Kontrolloperationen: Wertübergaben, Verzweigungen, Programmaufrufe Datenverwaltungsoperationen: Laden, Ablegen, Kopieren Arithmetische Operationen: Multiplikation, Addition, Division, +1, -1, Modulo Bitweise Operationen: shift, or, and,not Vereinfachung Wir nehmen an, dass jede Operation bei allen Operanden gleich viel Zeit benötigt bzw. Kostet. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
9 Effizienz Ein wichtiges Merkmal eines Algorithmus ist seine Effizienz, insbesondere wenn man für ein geg. Problem mehrere Algorithmen zur Auswahl hat. Effizienz ist kein einfaches Kriterium, sonder besteht aus: Speicher-Effizienz: Wie viel Speicher braucht der Algorithmus. Subjective-Effizienz: Wie einfach ist Algorithmus zu erfassen. Laufzeit-Effizienz: Wie schnell ist der Algorithmus. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
10 Speicher-Effizienz Beschreibt den Speicherbedarf eines Algorithmus. Kann analog zur Laufzeit-Effizienz behandelt werden Speicher bedarf pro Variable wird erhobenen. (Abhängig von der Implementierung) Garbage Collection spielt eine entscheidende Rolle. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
11 Subjective-Effizienz Wie einfach ist der Algorithmus geistig zu erfassen. Wie natürlich löst er das Problem. Die fehlerfreie Implementierung hängt vom Verständnis des Algorithmus abhängt, ebenso wie der Zeitaufwand für die Implementierung. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
12 Naiver Grundansatz Implementierung des Algorithmus auf dem System von Interesse. Nicht Objective: Da sowohl die Codierung des Algorithmus als auch das zugrunde liegende System (Compiler, Sprache, Hardware) die Laufzeit enorm beeinflussen können. Hoher Arbeitsaufwand: Mehrfach Implementation notwendig. Wir suchen Eine Möglichkeit, eine Aussage über das Laufzeitverhalten von Algorithmen, ohne deren Implementierung zu machen. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
13 Ein neuer Ansatz Wir zählen für einen gegebenen Satz von Eingaben alle Anweisungen j mit einer Zeit t j, wobei t j von der Art von j abhängt. Für das Ausführen einer Zeile Pseudocode ist ein konstanter Zeitaufwand notwendig. Verschieden Zeilen können einen unterschiedlichen Zeitaufwand aufweisen. Jede Zeile i benötigt einen konstanten Zeitaufwand den wir Kosten c j nennen. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
14 Laufzeit von Sortieren durch Einfügen Data: Feld A[] 1 for j=2 to len(a) do /*c 1 n */ 2 key = A[j]; /* c 2 n 1 */ 3 i = j + 1; /* c 3 n 1 */ 4 while i > 0 && A[i]>key do /*c n 4 i=2 t j */ 5 A[i+1] = A[i]; /* c n 5 i=2 (t j 1) */ 6 i = i -1; /* c n 6 i=2 (t j 1) */ 7 end 8 A[i+1] =key ; /* c 7 n 1 */ 9 end Algorithm 2: Effizienz von Sortieren-durch-Einfügen. t j ist die Anzahl der Schleifendurchläufe für ein gegebenes j. Die Laufzeit eines Algorithmus ist die Summe aller Laufzeiten. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
15 Laufzeit von Sortieren durch Einfügen Laufzeit T (n) T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 4 n i=2 n n + c 5 (t j 1) + c 6 (t j 1) + c 7 (n 1) (1) i=2 i=2 t j Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
16 Der best mögliche Fall Im best möglichen Fall ist A[] sortiert. Für jedes j = 2, 3, 4,, n gilt in Zeile vier immer A[i] < key t j = 1 für alle j. T (n) = c 1 n + c 2 (n 1) + c 3 (n 1) + c 4 (n 1) + c 7 (n 1) = (c 1 + c 2 + c 3 + c 4 + c 7 )n (c 2 + c 3 + c 4 + c 7 ) (2) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
17 Der schlechtest mögliche Fall Im schlechtest möglichen Fall ist A[] absteigend sortiert. Jedes Element von A[] muss mit jedem bereits sortierten Element verglichen werden. t j = j j n Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
18 Laufzeit im schlechtest möglichen Fall Mit und n j = j=2 n(n + 1) 2 n (j 1) = j=2 n(n 1) 2 1 (3) schreiben wir ( ) n(n + 1) T (n) = c 1 n + c 2 (n 1) + c 3 (n + 1) + c 4 1 (5) 2 ( ) ( ) n(n 1) n(n 1) +c 5 + c 6 + c 7 (n 1) 2 2 ( ) ( c4 + c 5 + c 7 = n 2 + c 1 + c 2 + c 3 + c ) 4 c 5 c 6 + c 7 ) n (6) 2 2 (c 2 + c 3 + c 4 + c 7 ) (4) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
19 Der schlechteste Fall als Regelfall Laufzeit im schlechtest Fall Warum der schlechteste Fall? Dieser Fall definiert eine obere Schranke. T (n) an 2 + bn + c (7) Der schlechteste Fall ist der Regelfall. Der mittlere Fall ist genauso schlecht wie der schlechtest. Im mittleren Fall sind alle Elemente gleichverteilt in A. d.h. die Hälfte der Elemente A[1... j 1] < A[j] T (n) an 2 + bn + c Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
20 Wachstumsgrad Eine weitere Abstraktion der Laufzeit führt zur sogenannten Wachstumsrate beziehungsweise zum Wachstumsgrad. Wir betrachten nur den führenden Term. an 2 Wir verwerfen a, da diese Größe nur von Konstanten abhängt. n 2 Zur allgemeinen und formalen Darstellung der Wachstumsrate führen wir die Θ-Notation ein. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
21 Die Θ Notation Sie beschreibt das asymptotische Laufzeitverhalten eines Algorithmus im schlechtesten Fall. Für eine gegeben Funktion g bezeichne wir mit Θ(g) die Menge der Funktionen Θ(g) = {f : c i > 0 n 0 0 < c 1 g(n) f (n) c 2 g(n) n > n 0 } (8) Anmerkung Im Allgemeinen wird mit der Θ Notation sehr schlampig umgegangen d.h. Sie wird z.b. auf R oder nur auf Teilmengen von N angewendet. Des Weiteren verwendet man g = Θ(g) anstelle von g Θ(g) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
22 Die O-Notation Definiert nur eine obere asymptotische Schranke. O(g) = {f : c i > 0 n 0 0 f (n) c 2 g(n) n > n 0 } (9) Anmerkung Aus f (n) = Θ(g(n)) folgt f (n) = O(g(n)). Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
23 Abbildung: Vergleich der Θ- und O-Notation. [Stasys Jukna, Uni-Frankfurt] Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
24 Beispiel: Für n > n 0 gilt 1 2 n2 3n = Θ(n 2 ) (10) c 1 n n2 3n c 2 n 2 (11) Für n 1 c Für n 7c n2 3n = Θ(n 2 ) c n c 2 (12) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
25 Θ für Sortieren-durch-Einfügen Sortieren-durch-Einfügen T (n) an 2 + bn + c Θ(n 2 ) (13) ( c 1 = a 4 ; c 2 = 7a ) 4 ; n b c 0 = 2 max a, a (14) Im Allgemeinen gilt für ein Polynom d p(n) = a i n i (15) i=0 wenn a i = konstant und a i > 0. p(n) = Θ(n d ) (16) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
26 Sortieren-durch-Mischen Das Sortierverfahren Sortieren durch Mischen erzeugt eine sortierte Folge durch Verschmelzen sortierter Teilstücke. Das Verfahren beruht auf dem Divide-and-Conquer-Prinzip und ruft sich rekursiv selbst auf. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
27 Teilen-und-Beherrsche Ein Teile-und-Beherrsche Algorithmus zerlegt das eigentliche Problem so lange in kleinere und einfachere Teilprobleme, bis diese lösbar sind. Anschließend wird aus diesen Teillösungen eine Lösung für das Gesamtproblem konstruiert. Das Paradigma von Teile-und-Beherrsche umfasst drei grundlegende Schritte auf jeder Rekursionsebene. 1 Teile das Problem in mehrere Teilprobleme auf, die kleinere Instanzen des typgleichen Problems sind. 2 Beherrsche die Teilprobleme rekursiv. (Wenn die Teilprobleme klein genug sind werden Sie direkt gelöst.) 3 Vereinige die Lösung der Teilprobleme zur Lösung des Gesamtproblems. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
28 Sortieren-durch-Mischen Prinzip 1 Die zu sortierende Folge werden zunächst in zwei Teilfolgen zu je n 2 Elemente aufgeteilt. 2 Die zwei Teilfolgen werden rekursive durch Sortieren-durch-Mischen sortiert. 3 Die sortierten Hälften zu einer insgesamt sortierten Folge verschmolzen (Merge). Die Rekursion bricht ab, wenn die zu sortierende Teilfolge die Länge 1 hat. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
29 Sortieren-durch-Mischen Abbildung: Sortieren durch Mischen Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
30 Die Merge-Funktion Die zentrale Operation des Sortieren-durch-Mischen Algorithmus ist das Mischen der sortierten Folgen. Wir Mischen mithilfe der MERGE(A,p,q,r) Funktion. A[] ist ein sortiertes Feld. p, q und r sind Indizes des Feldes A, wobei p q < r gilt. Die Teilfelder A[p... q] und A[q r] sind bereits Sortiert. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
31 Pseudocode der Merge Funktion MERGE(A,p,q,r); n 1 = q -p +1; n 2 = r -q; L = Feld[1... n 1 + 1]; R = Feld[1... n 2 + 1] ; for i=1 to n 1 do L[i] = A[p+i-1]; end for j = 1 to n 2 do R[j] = A[q+j] end L[n 1 + 1] = ; L[n 2 + 1] = ; i =1; j =1; for k = p to r do if L[i] R[j] then A[k] = L[i]; i = i+1; else A[k] = R[j]; j=j+1; end end Algorithm 3: Sortieren durch Einfügen als Pseudocode. Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
32 Funktionsweise der Merge Funktion am Beispiel eines Kartenspiels Wir starten mit zwei Kastenstapeln, die verdeckt auf dem Tisch liegen. Die kleinste Karte liegt obenauf. 1 Wir decken die obersten Karten auf. 2 Wir vergleichen die aufgedeckten Karten. 3 Die kleiner (größere) Karte wird separate abgelegt. 4 Wir decken wider eine neue Karte. 5 Wir wiederholen dies schritte bis es nur noch einen Stapel gibt. Da wir nur immer die obersten Karten vergleichen und somit nur n Grundschritte ausfuhren gilt T MERGE = Θ(n) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
33 Die MERGE-SORT Funktion Die MERGE-SORT(Sortieren durch Mischen) Funktion benutzt die MERGE Funktion als Unterroutine. MERGE-SORT(A,p,r); if p < r then q = p+r 2 ; MERGE-SORT(A,p,q) ; MERGE-SORT(A,q+1,r) ; MERGE(A,p,q,r) ; end Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
34 Analyse von Sortieren-durch-Mischen Bei Algorithmen, die sich selbst aufrufen können wir die Laufzeit als Rekursionsgleichung. Wenn die Größe des Teilproblems hinreichend klein ist, dann benötigt die direkte Lösung eine konstante Zeit. Θ(1) Die Aufteilung des Gesamtproblems führt zu a Teilproblemen der Größe 1 b. Im Fall von Sortieren-durch-Mischen gilt a = b = 2. Das lösen eines Teilproblems der Größe n b dauert T ( n b ). Das lösen von a Teilproblemen benötigt somit at ( n b ). Wir nehmen an das die Aufteilung die Zeit D(n) benötigt und die Zusammenführung die Zeit C(n). Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
35 Analyse von Sortieren-durch-Mischen T (n) = { Θ(1) fallsn = 1 2T (n/2) + Θ(n) fallsn > 1 (17) Die Rekursionsgleichung ergibt T (n) = Θ(n lg(n) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
36 Rekursionsbaum für Sortieren-durch-Mischen Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
37 Vergleich von verschieden Ordnungen Θ(1): Θ(n): Θ(n ln n) : Θ(n 2 ): Θ(n k ): Θ(k n ): Θ(n!): konstanter Aufwand, unabhängig von n linearer Aufwand (z.b. Einlesen von n Zahlen) Aufwand von Sortieren-durch-Mischen quadratischer Aufwand polynominaler Aufwand( k= konstant) exponentieler Aufwand( k= konstant) Fakultativer Aufwand (z.b. Bestimmung aller Permutationen von n Elementen) Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
38 Konkreter Vergleich von Laufzeiten verschiedener Ordnungen Annahme: Ein Schritt dauert 1µs. n= n 10µs 20µs 30µs 40µs 50µs 60µs n 2 100µs 400µs 900µs 1,6ms 2.5ms 3.6ms n 3 1ms 8ms 27 ms 64ms 125ms 216ms 2 n 1ms 1s 18min 13d 36a 36,6ka 3 n 59ms 58min 6,5a 385ka 100Ma 10 6 Ma n! 3.62s 77ka 10Ea Ea Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
39 Quellen Algorithms Robert Sedgewick Algorithms in a Nutshell George T. Heineman Algorithmen Eine Einfuerung H.Cormen Entwurf und Abalyse von Algorithmen M. Nebel Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober / 39
2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.
2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum
Übung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise
6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.
Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort
2. Effizienz von Algorithmen
Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
Übung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci
Prof. Dr. Margarita Esponda
Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.
Programmieren und Problemlösen
Dennis Komm Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 27. Februar 2019 Komplexität von Algorithmen Aufgabe Primzahltest Schreibe ein Programm, das eine ganze Zahl x als Eingabe
Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!
Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 [email protected] 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen
3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge
Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen
Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus
Kapitel 6 Elementare Sortieralgorithmen
Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine
Algorithmen und Datenstrukturen Effizienz und Funktionenklassen
Algorithmen und Datenstrukturen Effizienz und Funktionenklassen Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren,
3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
Algorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
Prof. Dr. Margarita Esponda
Analyse von Algorithmen Die O-Notation WS 2012/2013 Prof. Dr. Margarita Esponda Freie Universität Berlin 1 Korrekte und effiziente Lösung von Problemen Problem Wesentlicher Teil der Lösung eines Problems.
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung
Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte
2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :
2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine
Übung Algorithmen I
Übung Algorithmen I 20.5.15 Christoph Striecks [email protected] (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Organisation Mergesort, Quicksort Dual Pivot Quicksort
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.
Rekursionsbäume Aufstellen eines Baumes dessen Knoten die Laufzeit auf jeder Rekursionsstufe darstellen und Aufsummieren
Algorithmen und Datenstrukturen 74 3 Rekursionen Vor allem bei rekursiven Algorithmen besitzt die Laufzeitfunktion eine naheliegende rekursive Formulierung, d.h. die Laufzeitfunktion ist konstant für den
Algorithmen und Datenstrukturen 1. 1 Einleitung
Algorithmen und Datenstrukturen 1 1 Einleitung Im ersten Kapitel soll auf informeller Ebene anhand eines einfachen Beispiels der Begriff des Algorithmus sowie verschiedene Aspekte der Algorithmenanalyse
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften
Komplexität von Algorithmen:
Komplexität von Algorithmen: Ansatz: Beschreiben/erfassen der Komplexität über eine Funktion, zur Abschätzung des Rechenaufwandes abhängig von der Größe der Eingabe n Uns interessiert: (1) Wie sieht eine
Algorithmen und Datenstrukturen I Grundlagen
Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift
Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.
Informatik I 1. Kapitel Rainer Schrader Einführung in Algorithmen und Datenstrukturen Zentrum für Angewandte Informatik Köln 16. Juli 008 1 / 1 / 1 Einführung in Algorithmen Einführung in Algorithmen Gliederung
Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Algorithmen und Datenstrukturen I Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Algorithmus..................................... 2 Problem
Suchen und Sortieren
Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Mathematische Grundlagen
Übungsblatt 4. Aufgabe 1. IN8009 Algorithmen und Datenstrukturen Thomas Stibor
Aufgabe 1 Zeigen Sie 2n 2 = O(n 3 ), n = Ω(lgn), n 2 /2 2n = Θ(n 2 ). Übungsblatt 4 Zu zeigen: 2n 2 = O(n 3 ). O(g(n)) = {f(n) : es existieren positive Konstanten c und n 0, sodass 0 f(n) cg(n) für alle
f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen
Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III
Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Text: Hinnerk van Bruinehsen - Grafiken: Jens Fischer powered by SDS.mint SoSe 2011 1 Teil
Mergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie
Mergesort aus Wikipedia, der freien Enzyklopädie Mergesort ist ein rekursiver, stabiler Sortieralgorithmus, der ähnlich wie Quicksort nach dem Prinzip Teile und herrsche (engl. Divide and conquer) arbeitet.
Komplexität von Algorithmen
Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen
Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die
Interne Sortierverfahren
Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm
Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die
Informatik I Komplexität von Algorithmen
Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany [email protected] Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz
Elementare Sortierverfahren
Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................
WS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf
Kapitel 3: Sortierverfahren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
Datenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group
Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2
Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach
14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
Algorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind
Präsenzübung Datenstrukturen und Algorithmen SS 2014
Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik
2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
Algorithmen und Datenstrukturen
Technische Universität München SoSe 2017 Fakultät für Informatik, I-16 Lösungsblatt 4 Dr. Stefanie Demirci 31. Mai 2017 Rüdiger Göbl, Mai Bui Algorithmen und Datenstrukturen Aufgabe 1 Komplexität Berechnung
8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
Heapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung
Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs
Abschnitt 19: Sortierverfahren
Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758
9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion
Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen
Asymptotik und Laufzeitanalyse
und Vorkurs Informatik SoSe13 08. April 2013 und Algorithmen = Rechenvorschriften Wir fragen uns: Ist der Algorithmus effizient? welcher Algorithmus löst das Problem schneller? wie lange braucht der Algorithmus
Übersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4)
Datenstrukturen und Algorithmen Vorlesung 3: (K4) 1 e für rekursive Algorithmen Prof. Dr. Erika Ábrahám 2 Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/
Abschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
Abschnitt 7: Komplexität von imperativen Programmen
Abschnitt 7: Komplexität von imperativen Programmen 7. Komplexität von imperativen Programmen 7 Komplexität von imperativen Programmen Einf. Progr. (WS 08/09) 399 Ressourcenbedarf von Algorithmen Algorithmen
Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität
Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Klausur Wichtige Hinweise: 2.7.07, Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin [email protected] Raum NA 1/70 Sprechzeiten:
Datenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Untere Schranken für Sortieren Sortieren mit linearem Aufwand Mediane und Ranggrössen 2 Wie schnell können wir sortieren?
Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen
lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany [email protected] Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)
Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Die Landau-Notation (Wiederholung und Vertiefung) 2. Vorbereitung Aufgabenblatt 1, Aufgabe 1
JAVA - Suchen - Sortieren
Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik
Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.
Übersicht 6 Sortieren Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren H. Täubig (TUM) GAD SS 14 221 Statisches Wörterbuch Sortieren Lösungsmöglichkeiten:
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
Suchen und Sortieren Sortieren. Mergesort
Suchen und Mergesort (Folie 142, Seite 55 im Skript) Algorithmus procedure mergesort(l, r) : if l r then return fi; m := (r + l)/2 ; mergesort(l, m 1); mergesort(m, r); i := l; j := m; k := l; while k
