3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen"

Transkript

1 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 ist nicht sortiert Ausgabe: Permutation der Eingabefolge. Sortierte Eingabewerte: a 1 a 2 a 3 a n Beispiel Eingabe: 41, 31, 26, 59, 58 Ausgabe: 26, 31, 41, 58, 59 sortierte Liste AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 6 Sortieralgorithmus: Sortieren durch Einfügen, Insertion Sort Algorithmus in Pseudo-Code Eingabe: A[1..n] Feld von n natürlichen Zahlen Bem.: key ist der Wert, der pro Schleifen-Iteration einsortiert wird Insertion_Sort (A) 1 for j = 2 to länge(a) do 2 key = A[ j ] 3 // Füge A[ j ] in die 4 // sortierte Liste A[1.. j - 1] ein. 5 i = j 1 6 while (i > 0 und A[ i ] > key) do 7 A[i + 1] = A[ i ] 8 i = i 1 9 A[i + 1] = key // Ende der For-Schleife j key A[1.. j-1] i A Beispiel: Beispielablauf im Detail Eingabe 5, 2, 4, 6, 1, 3 AuD, Kapitel 3 Effizienz, WS011/12, WS09/10, C. C. Eckert 7 Visualisierung der Effekte von Insertion Sort for j = 2 to länge(a) do key = A[ j ] // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. i = j 1 while i > 0 und A[ i ] > key do A[i + 1] = A[ i ] i = i 1 A[i + 1] = key Korrektheit von Insertion Sort Anhand des Beispiels wird exemplarisch gezeigt, wie man prinzipiell vorgehen kann, um die Korrektheit zu beweisen Beobachtung: Insertion Sort berechnet das Ergebnis, indem die For-Schleife n-1 mal durchlaufen wird (n-1 Iterationen der Schleife) In jeder Iteration gilt: A[j] bezeichnet den einzusortierenden Wert alle Werte A[1.. j-1] liegen bereits sortiert vor und sind eine Permutation der ursprünglichen Werte von A[1.. j-1] Die Eigenschaft des Teilfeldes A[1.. j-1] ist eine so genannte Schleifeninvariante. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 8 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 9

2 Eine Schleifeninvariante muss 3 Eigenschaften erfüllen: 1 Die Bedingung gilt vor dem Schleifen-Durchlauf 2 Wenn sie vor dem Durchlauf gilt, dann gilt sie auch bis zum nächsten Durchlauf, also auch nach dem Durchlauf 3 Beim Abbruch der Schleife liefert die Schleifeninvariante nützliche Informationen im Hinblick auf Korrektheit. Bem: Idee ist ähnlich einem Induktionsbeweis Schleifeninvariante für Insertion Sort Zu Beginn jeder Iteration der For-Schleife besteht das Teilfeld A[1.. j - 1] aus den ursprünglich in A[1.. j - 1] enthaltenen Werten und A[1.. j - 1] ist geordnet. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 10 Nutzung der Schleifeninvariante für Korrektheitsnachweis: Vor dem erstem Schleifen-Durchlauf gilt: j = 2, und das Feld A[1.. j - 1] enthält nur ein Element: A[1], d.h. Das Feld ist sortiert, die Invariante ist erfüllt. Zeilen 6 8: Werte A[ j - 1], A[ j - 2] werden jeweils eine Position nach rechts verschoben, bis die korrekte Position A[ j ] für das einzusortierende Element mit dem Wert key gefunden ist. An dieser Position wird der Wert eingefügt. D.h. die Invariante ist erfüllt. Der Algorithmus terminiert, wenn j = n + 1 gilt, d.h. da die Invariante gilt für A[1.. j - 1], also ist A[1.. n] geordnet. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert Komplexität von Insertion Sort? Zu klären ist, wie man anhand des Pseudocodes abschätzen kann, wie viel Rechenzeit (oder Speicherplatz) ein Algorithmus A bei einer Eingabegröße n benötigt. Anders formuliert: kann man eine Funktion definieren, die in Abhängigkeit von der Eingabegröße n beschreibt, in welcher Weise der Aufwand, der zur Ausführung des Algorithmus A notwendig ist, wächst? D.h. man ist daran interessiert, eine Funktion f zu finden, die das Wachstumsverhalten von A insbesondere bei sehr großen Werten der Eingabegröße n charakterisiert: d.h. f beschreibt, ob A z.b. linear, quadratisch oder ggf nur logarithmisch etc. wächst AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 12 Wachstums- Verhalten von Funktionen f(x) z.b. Linear: f(x) = x Logarithmisch: f(x)= log 2 x Quadratisch: f(x) = x 2 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 13

3 Bem.: Bevor wir eine allgemeine, systematische Vorgehensweise vorstellen, soll das Vorgehen am Beispiel Insertion Sort motiviert werden. Berechnung der Laufzeit von Insertion Sort Wir treffen folgende vereinfachende Annahme: Jede Grundoperation i (dies entspricht einer Zeile im Pseudo- Code) benötigt eine konstante Zeit c i Sei n die Größe des zu sortierenden Feldes von Insertion Sort, dann ist n die Problemgröße und wir berechnen die Laufzeit von Insertion Sort als Laufzeitfunktion T(n). D.h. mit T(n) beschreiben wir das Wachstumsverhalten von Insertion Sort abhängig von der Eingabegröße n. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 14 Vorüberlegungen für Insertion-Sort: Zeile Kosten Kosten pro Zeile 1 c 1 2 c c 4 5 c 5 6 c 6 7 c 7 8 c 8 insgesamt 1 for j = 2 to länge(a) do // n sei die Anzahl der Werte, also länge(a) 2 key = A[ j ] 3 // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. 4 i = j 1 5 while i > 0 und A[ i ] > key do 6 A[i + 1] = A[ i ] 7 i = i 1 8 A[i + 1] = key AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 15 Berechnung der Laufzeit T(n) von Insertion Sort: T(n): Summe aller Laufzeiten der ausgeführten Grundoperationen Beispiel: Anweisung, die c i Schritte benötigt und n-mal ausgeführt wird, erfordert eine Laufzeit von c. i n Laufzeit T(n) = c 1 n + c 2 (n 1) + c 4 (n 1) T(n) im Besten Fall (Best-Case)? Bester Fall: Liste ist bereits korrekt sortiert bei der Eingabe D.h.: While-Schleife terminiert immer sofort Es gilt: T(n) = n Σ + c 5 t j + c 6 (t j 1) j=2 n Σ j=2 + c 7 (t j 1) + c 8 (n 1) n Σ j=2 Beobachtung? AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 16 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 17

4 T(n) im Schlechtesten Fall (Worst-Case)? Worst-Case: Eingabe-Liste ist absteigend sortiert, d.h. A[j] muss mit allen Elementen A[1] A[j-1] verglichen werden Es gilt: T(n) = AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 18 Das Beispiel lehrt: (1) Wir haben von den tatsächlichen Kosten (Zeitdauer, Speicherplatz) einer auszuführenden Anweisung abstrahiert und eine Konstante c i verwendet. Dieses Vorgehen wendet man bei Laufzeituntersuchungen häufig an. Man abstrahiert von der realen Maschine, auf der ein Algorithmus ausgeführt wird, und geht von einem einfachen Maschinenmodell, der RAM-Maschine aus (siehe 3.3). (2) Eine detaillierte Analyse der Laufzeitfunktion ist bereits für ein sehr einfaches Beispiel sehr aufwändig. Was uns eigentlich interessiert ist der Grad des Wachstums einer Funktion, insbesondere der Laufzeitfunktion. Von besonderem Interesse ist die Frage des asymptotischen Verhaltens der Komplexität für n (siehe 3.4). AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert RAM-Modell Um die Laufzeit von Algorithmen zu analysieren, benutzen wir ein einfaches Modell der zugrundeliegenden Rechner. Ziel ist es, die erforderlichen Ressourcen zur Ausführung eines Algorithmus abschätzen zu können. Die exakte Zeit, die verschiedene Maschinenbefehle auf unterschiedlichen Rechnern erfordern, sind hier nicht relevant. Als Modell wird die Random-Access Machine (RAM) verwendet. Festlegungen des RAM-Modells: Wir betrachten nur sequentielle Ausführungen, also eine 1- Prozessor-Architektur, keine Parallelität. Alle Daten liegen im direkt zugreifbaren Speicher. Was bedeutet das? Alle Speicherzugriffe dauern gleich lang. Wieso ist das eine Abstraktion, Vereinfachung? Alle Elementaren Operationen erfordern eine Zeiteinheit. Wertzuweisung: = Arithmetische Operationen, wie Addition, Subtraktion, Multiplikation: *, /, +, - Logische Operationen, wie und und oder Vergleichsoperationen, wie < und > Befehle zur Steuerung des Kontrollflusses, wie if then else AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 20 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 21

5 Zur Bestimmung der Laufzeit eines Algorithmus wird die Anzahl der bei seiner Ausführung durchgeführten elementaren Operationen ermittelt. Beispiel: Anweisung (Alg.) Anzahl der Schritte X=X+1 for i=1 to n do X=X+1 for i=1 to n do for j=1 to n do X=X+1 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 22 Etwas komplexeres Beispiel: Gegeben sei der fiktive Algorithmus A, der aus drei Teilen besteht, die sequentiell bearbeitet werden, also: P= Teil1; Teil2; Teil3 Der Pseudocode von P sei wie folgt gegeben: Teil1: X=X+1 Y=Y+1 Z=Z+1 Teil2: for i=1 to n do X=X+Y Y=Y*Z Teil3: for i=1 to n do for j=1 to n do X=X+1, X=Y+2, Z=Z+3 T(n) = AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 23 Frage: Wie ist der Grad des Wachstums der Funktion T(n) aus dem vorherigen Beispiel? T(n) = 3 + 2n + 3n 2 Dazu betrachten wir unterschiedliche Eingabewerte n: n=2 T(2)= n=10 T(10)= n=100 T(100)= N= 1000 T(1000)= Erkenntnis? 3.4. Die Landau-Notation Die Landau-Notation ermöglicht die Bestimmung des Zusammenhangs zwischen der Länge der Eingabe und der Laufzeit bzw. dem Speicherplatzaufwand. Die Landau-Symbole erlauben Aussagen der Form: Die Funktion f wächst nicht schneller als die Funktion g. Mit der Landau-Notation beschreibt man das asymptotische Wachstumsverhalten, also den Grad des Wachstums (die Wachstumsrate) bei großen Eingabewerten. Wachstumsrate ist ein Kriterium, um die Effizienz eines Algorithmus zu bestimmen und um Algorithmen zu vergleichen. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 24 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 25

6 3.4.1 Die Landau-Symbole Für eine gegebene Funktion g bezeichnen wir mit Ө(g) die Menge der Funktionen, für die gilt: Ө(g) = {f: es existieren positive Konstanten c 1, c 2 und n 0, so dass 0 c 1 g(n) f(n) c 2 g(n) für alle n n 0 } Notation: wir schreiben f(n) = Ө(g) Die Funktion f(n) ist bis auf einen konstanten Faktor für alle n n 0 gleich g(n). Wir sagen, dass g(n) eine asymptotisch scharfe Schranke von f(n) ist. Intuitiv besagt die Landau-Notation, dass Terme niedriger Ordnung für große Eingabewerte n nicht signifikant sind, konstante Anteile können ignoriert werden. Die Ө-Funktion beschränkt eine Funktion f(n) asymptotisch von oben und von unten. Beispiel: Insertion Sort, Laufzeit T(n) = 1/2n 2 3n Behauptung: T(n) = Ө(n 2 ) D.h. zu bestimmen sind Werte c 1, c 2, c 3 so dass: AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 26 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 27 Beispiel: Gegeben quadratische Funktion f(n) = an 2 + bn + c Behauptung: f(n) = Ө(n 2 ) Wenn wir nur über eine asymptotisch obere Schranke verfügen, benutzen wir die O-Notation. Gegeben sei die Funktion g(n). Mit O(g(n)) (gesprochen O von g von n) ist die Menge definiert: O(g) = {f: es existieren positive Konstanten c >0 und n 0, so dass 0 f(n) c g(n) für alle n n 0 } Bem.: Notation: f(n) = O(n). Allgemein gilt für jedes Polynom p(n) = ain i a i sind Konstanten, a d > 0: p(n) = Ө(n d ) d i= 0 Falls f(n) = Ө(g(n)), dann gilt auch f(n) = O(g(n)) AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 28 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 29

7 Beispiel 1: Sei T(n) = 60n + 12 Beh.: T(n) 0 O(n) d.h. suche c, n 0 T(n) c g(n) T(n) g(n) n Beispiel 2 T(n) = 31n + 12n 2 T(n) = O(n 2 ) Beispiel 3: Lineare Suche in einem sortierten Feld mit n Elementen i=0; while (i < n) und A[i] x )do i= i+1 ; n 0 Laufzeit T(n)= O(n) Best Case: 1 Schritt Average Case: n / 2 Schritte Worst Case: n Schritte AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 30 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 31 Bemerkungen: Mit der O-Notation wird eine obere Schranke für die Laufzeit angegeben. Das heißt, die O-Funktion beschreibt die Laufzeit im schlechtesten Fall. Mit Hilfe der O-Notation können wir nun eine Aussage treffen, wie effizient ein Algorithmus ist. O(1): Solche Algorithmen liefern unabhängig von der Problemgröße in konstanter Zeit ein Ergebnis. Das ist z.b. der Fall, wenn die Anweisungen des Algorithmus höchstens 1 mal ausgeführt werden. Beispiel: Entfernen des ersten Elementes einer Liste. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 32 O(log n): Die benötigte Zeit ist proportional zum Logarithmus der Problemgröße, d.h. der Algorithmus wird mit wachsendem n langsamer. Bei jeder Verdopplung von n wächst log n um einen gewissen konstanten Wert. Dies tritt z.b. bei Algorithmen auf, die ein komplexes Problem in ein kleineres Problem umwandeln und den Aufwand auf einen konstanten Anteil verringern. Beispiel: Suche in einer sortierten Liste. O(n): Der Aufwand für einen Algorithmus ist linear in n, i.a. entfällt ein kleiner Anteil der Verarbeitung auf jedes Element der Eingabe. Beispiel: Suche in einer unsortierten Liste. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 33

8 O(nlog n): z.b. Algorithmen, die das zu lösende Problem in Teilprobleme aufteilen, diese unabhängig lösen und die Teillösungen kombinieren. Beispiel: vergleichsbasiertes Sortieren einer Liste. O(n 2 ): Quadratische Laufzeit: typisch für Algorithmen, die alle paarweisen Kombinationen von Datenelementen verarbeiten. Beispiel: Multiplikation einer Matrix mit einem Vektor O(n 3 ): Beispiel: Multiplikation von Matrizen O(2 n ): Beispiel: Bestimmung aller möglichen Teilmengen Bem. zur log-funktion: Die Basis bewirkt nur eine Änderung um einen konstanten Faktor, d.h. die Basis ist nicht von Bedeutung. AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 34 Das Wachstumsverhalten von Funktionen lg N lg 2 N N N N lg N N lg 2 N N 3/2 N Milliarden Milliarde 1 Billion Quelle R. Sedgewick, Algorithmen, Pearson Studium, 2002, S. 97 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 35 O-Notation: Konstante c Bisher haben wir nur die Komplexitätsklassen (O(1), O(log n), O(n), ) betrachtet und eine Größe ignoriert: die Konstante c. Die Konstante c erlaubt uns den Vergleich von verschiedenen Funktionen und ist im asymptotischen Verhalten für n vernachlässigbar. Bemerkung: Dies gilt jedoch nicht für kleine Problemgrößen! Unter Umständen kann es deshalb sinnvoll sein, z.b. wenn die Eingabegröße n sehr klein ist, einen Algorithmus zu verwenden, der eigentlich einer höheren Komplexitätsklasse angehört, aber ein kleine Konstante c besitzt Rechenregeln für die O-Notation Nach dem Prinzip: teile und herrsche kann man auch die Analyse des Laufzeitverhaltens aufteilen und jeweils einzelne Teile analysieren. Die Frage bleibt: wie berechnet sich aus Teilergebnissen das Gesamtlaufzeitverhalten? Addition in der O-Notation Annahme: Laufzeiten für die Programme P 1 und P 2 seien: T 1 (n) = O( f (n)), T 2 (n) = O( g (n)) Im Algorithmus werde erst P 1 und dann P 2 ausgeführt Die Gesamtlaufzeit ergibt sich dann durch: T 1 (n) + T 2 (n) = O(max (f (n), g (n))) AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 36 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 37

9 Wieso ist das so? Behauptung: Gegeben sei Eingabegröße n T 1 (n) + T 2 (n) = O(max(f (n), g (n))) Beweis: Gegeben seien die Konstanten c 1, c 2, n 1, n 2 mit folgender Eigenschaft wenn n n 1, dann T 1 (n) c 1 f (n); wenn n n 2, dann T 2 (n) c 2 g(n). Sei n 0 = max(n 1, n 2 ). Wenn n n 0, dann ist T 1 (n) + T 2 (n) c 1 f (n) + c 2 g (n). D.h. Wenn n n 0, dann ist T 1 (n) + T 2 (n) (c 1 + c 2 ) max(f (n), g (n)). d.h. T 1 (n) + T 2 (n) = O(max(f (n), g (n))) Beispiel 3 sequentiell ausgeführte Programmteile mit Laufzeiten P1: O(n 2 ) P2: O(n 3 ) P3: O(nlog n) Laufzeit der ersten beiden Programme: P1, P2: O(max (n 2, n 3 )) = O(n 3 ) Gesamtlaufzeit: (P1, P2), P3: O(max (n 3, nlog n)) = O(n 3 ) AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 38 AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 39 Wichtigste Rechenregeln der O-Notation 1. f (n) = O( f (n)) 2. c O( f (n)) = O( f (n)), c ist eine Konstante 3. O( f (n)) + O( f (n)) = O( f (n)) 4. O( f (n)) + O( g (n)) = O( max( f (n), g (n))) 5. O( O( f (n))) = O( f (n)) 6. O( f (n)) O( g(n)) = O( f (n) g(n)) 7. O( f (n) g(n)) = O(f (n)) O( g(n)) AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 40 Allgemeine Regeln für die Analyse von Algorithmen Laufzeit für jede einzelne Grundoperation/Anweisung: O(1) uniforme Kostenfunktion Laufzeit für eine Folge sequentiell ausgeführter Anweisungen: - Summenformel Laufzeit für eine if Abfrage: Zeit für den if-block + Zeit O(1) für Bedingungsauswertung Laufzeit für einen if then else Block der größere Zeitbedarf des then- oder des else-blockes Laufzeit von Schleifen (for, while, ) Summe aller Zeiten innerhalb des Schleifenkörpers + Überprüfen der Schleifenbedingung O(1) multipliziert mit der Anzahl der Schleifendurchläufe AuD, Kapitel 3 Effizienz, WS011/12, C. Eckert 41

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Kapitel 6 Komplexität von Algorithmen 1 6.1 Beurteilung von Algorithmen I.d.R. existieren viele Algorithmen, um dieselbe Funktion zu realisieren. Welche Algorithmen sind die besseren? Betrachtung nicht-funktionaler

Mehr

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)

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

Mehr

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

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

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Kapitel 6 Elementare Sortieralgorithmen

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Komplexität von Algorithmen

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

Mehr

Übung zur Vorlesung Berechenbarkeit und Komplexität

Übung zur Vorlesung Berechenbarkeit und Komplexität RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

WS 2009/10. Diskrete Strukturen

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

Mehr

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

Mehr

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Mehr

Laufzeit und Komplexität

Laufzeit und Komplexität Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen

Mehr

Suchen und Sortieren

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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

4 Effizienz und Komplexität 3.1 1

4 Effizienz und Komplexität 3.1 1 4 Effizienz und Komplexität 3.1 1 Effizienz (efficiency): auf den Ressourcen-Verbrauch bezogene Programmeigenschaft: hohe Effizienz bedeutet geringen Aufwand an Ressourcen. Typische Beispiele: Speichereffizienz

Mehr

Effizienz von Algorithmen

Effizienz von Algorithmen Effizienz von Algorithmen Eine Einführung Michael Klauser LMU 30. Oktober 2012 Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober 2012 1 / 39 Ein einführendes Beispiel Wie würdet ihr einen Stapel

Mehr

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

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

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

Mehr

Informatik I Komplexität von Algorithmen

Informatik I Komplexität von Algorithmen Leistungsverhalten von Algorithmen Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz

Mehr

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Uebersicht Administratives Einleitung Ein einführendes Beispiel Matthias Zwicker Universität Bern Frühling 2010 2 Administratives Dozent Prof. Zwicker, zwicker@iam.unibe.ch

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Algorithmen und Datenstrukturen Laufzeitabschätzung

Algorithmen und Datenstrukturen Laufzeitabschätzung Algorithmen und Datenstrukturen Laufzeitabschätzung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen,

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Frank Heitmann heitmann@informatik.uni-hamburg.de 14. Oktober 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/48 Der Sprung ins Wasser...

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung

Mehr

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass f O g und auch g O f. Wähle zum Beispiel und G. Zachmann Informatik

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 32 Einstieg in die Informatik mit Java Effizienz Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 32 1 Überblick: was ist Effizienz? 2 Landau-Symbole 3 Eier im Korb 4

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 5 Asymptotische Laufzeitkomplexität Definition Regeln Beispiele Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger

Mehr

Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.

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

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Berechenbarkeit und Komplexität Prof. Dr. Nikolaus Wulff Berechenbarkeit Im Rahmen der Turingmaschine fiel zum ersten Mal der Begriff Berechenbarkeit. Ein Funktion f heißt

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6. November 2014 (O-Notation, Theta, Omega) Junior-Prof. Dr. Olaf Ronneberger

Mehr

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, Algorithmen und Programmierung 2 Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2009 14. April 2009 Petra Mutzel Kurzvorstellung

Mehr

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

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

Mehr

Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Summenregel. Allgemeiner

Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Summenregel. Allgemeiner Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Fragestellung: Wie viele verschiedene Möglichkeiten gibt es, Elemente auszuwählen, z. B. Anzahl verschiedener möglicher Passwörter, IPAdressen, Zahlenkombinationen

Mehr

Datenstrukturen und 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

Mehr

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - 2) Algorithmenanalyse Prof. Dr. Anja Schanzenberger FH Augsburg, Fakultät für Informatik Kontakt: anja.schanzenberger@hs-augsburg.de

Mehr

SOI 2013. Die Schweizer Informatikolympiade

SOI 2013. Die Schweizer Informatikolympiade SOI Die Schweizer Informatikolympiade Lösung SOI Wie schreibe ich eine gute Lösung? Bevor wir die Aufgaben präsentieren, möchten wir dir einige Tipps geben, wie eine gute Lösung für die theoretischen

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Ziel Angabe der Effizienz eines Algorithmus unabhängig von Rechner, Programmiersprache, Compiler. Page 1 Eingabegröße n n Integer, charakterisiert die Größe einer Eingabe, die

Mehr

Algorithmen und Datenstrukturen 1-1. Seminar -

Algorithmen und Datenstrukturen 1-1. Seminar - Algorithmen und Datenstrukturen 1-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Inhalt der ersten beiden Vorlesungen Algorithmenbegriff Komplexität, Asymptotik

Mehr

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben Algorithmen und Algorithmisierung von Aufgaben 2-1 Algorithmisierung: Formulierung (Entwicklung, Wahl) der Algorithmen + symbolische Darstellung von Algorithmen Formalismen für die symbolische Darstellung

Mehr

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Ausgewählte Algorithmen: Sortieren von Listen

Ausgewählte Algorithmen: Sortieren von Listen Kapitel 11: Ausgewählte Algorithmen: Sortieren von Listen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Analyse von Algorithmen: Zeitkomplexität Elementare Sortierverfahren

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 18.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Sortieren Kleine Wiederholung Visualisierungen Adaptives

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren 2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1 Selection-Sort Idee: Suche kleinstes

Mehr

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? 1. Einführung Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? Wie beschreiben wir Algorithmen? Nach welchen Kriterien

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Die O-Notation Analyse von Algorithmen Die O-Notation Prof. Dr. Margarita Esponda Freie Universität Berlin ALP II: Margarita Esponda, 5. Vorlesung, 26.4.2012 1 Die O-Notation Analyse von Algorithmen Korrektheit

Mehr

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung: 2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare

Mehr

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Kapitel 3: Untere Schranken für algorithmische Probleme 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

Mehr

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n) Beim Logarithmischen Kostenmaß wird, im Gegensatz zum EKM, die Stelligkeit der Werte berücksichtigt und mit in die Laufzeit eingerechnet. Beispiel: R1 := R2 (R3), wobei R2 den Wert 5, R3 den Wert 10 und

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch

Mehr

Informatik Vorkurs. Algorithmik

Informatik Vorkurs. Algorithmik Informatik Vorkurs Algorithmik Was ist Informatik? Computer science is no more about computers than astronomy is about telescopes Edsgin Dijkstra (zugeschrieben) it's not about computers in the same sense

Mehr

Übung: Algorithmen und Datenstrukturen SS 2007

Übung: Algorithmen und Datenstrukturen SS 2007 Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung

Mehr

Algorithmen und Datenstrukturen 1-3. Seminar -

Algorithmen und Datenstrukturen 1-3. Seminar - Algorithmen und Datenstrukturen 1-3. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Outline Spezielle Listen: Stacks, Queues Sortierverfahren 3. Übungsserie Wiederholung:

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)

Mehr

Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.

Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990. Ein polynomieller Algorithmus für das N-Damen Problem 1 Einführung Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre

Mehr

Informatik II, SS 2014

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

Mehr

12. September 2012 Kompexität. Analyse von Algorithmen (Ziele) Empirische Analyse Beispiel Schlussfolgerungen

12. September 2012 Kompexität. Analyse von Algorithmen (Ziele) Empirische Analyse Beispiel Schlussfolgerungen Komplexität von Algorithmen Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 12. September 2012 ODE/FHTBM Komplexität von Algorithmen 12. September 2012 1/41 (Ziele)

Mehr

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007 Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 1 186.089 VO 3.0 Vorlesungsprüfung 19. Oktober

Mehr

Einführung in die Informatik I Kapitel II.3: Sortieren

Einführung in die Informatik I Kapitel II.3: Sortieren 1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung

Mehr

Amortisierte Analysen

Amortisierte Analysen Amortisierte Analysen 26. Mai 2016 1 Einleitung Es gibt viele Datenstrukturen, bei deren Komplexitätsanalyse das Problem auftaucht, dass die Ausführung mancher Operationen Einfluss auf die Komplexität

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung

Mehr

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

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

Mehr

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen... Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.

Mehr

Algorithm Engineering was hat das mit der Praxis zu tun?

Algorithm Engineering was hat das mit der Praxis zu tun? Algorithm Engineering was hat das mit der Praxis zu tun? design analyze Algorithmics implement experiment 33 Algorithmentheorie (Karikatur) models design Theory Practice analysis perf. guarantees deduction

Mehr

Numerische Verfahren und Grundlagen der Analysis

Numerische Verfahren und Grundlagen der Analysis Numerische Verfahren und Grundlagen der Analysis Rasa Steuding Hochschule RheinMain Wiesbaden Wintersemester 2011/12 R. Steuding (HS-RM) NumAna Wintersemester 2011/12 1 / 16 4. Groß-O R. Steuding (HS-RM)

Mehr

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck Lemma 15 KLP 1 ist genau dann lösbar, wenn das dazugehörige LP KLP 2 eine Lösung mit dem Wert Z = 0 besitzt. Ist Z = 0 für x 0, x 0, dann ist x eine zulässige Lösung von KLP 1. Beweis von Lemma 15: Nach

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 4 (7.5.2014) Asymptotische Analyse, Sortieren IV Algorithmen und Komplexität Erfahrungen 1. Übung C++ / Java sind komplett ungewohnt Struktur

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung Teil I Einführung Überblick 1 Vorbemerkungen 2 Algorithmen 3 4 Historischer Überblick Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 1 1 Vorbemerkungen Was ist Informatik? Informatik

Mehr

Effizienz von Algorithmen

Effizienz von Algorithmen Effizienz von Algorithmen Letzte Bearbeitung: Jan 211 Ein wichtiger Aspekt bei Algorithmen sind seine "Kosten". Wir wollen uns hier ausschließlich mit der Laufzeit des gewählten Algorithmus beschäftigen.

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Suchen in Datenmengen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 1 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 Einiges Vorweg Organisatorisches Hörer: Vorlesung: Übungen: Homepage: Prüfungsstoff:

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen 11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

1. Übungsblatt zu Algorithmen II im WS 2011/2012

1. Übungsblatt zu Algorithmen II im WS 2011/2012 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Moritz Kobitzsch, Dennis Schieferdecker. Übungsblatt zu Algorithmen II im WS 0/0 http://algo.iti.kit.edu/algorithmenii.php

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 D&A: 1. Einführung robert.legenstein@igi.tugraz.at 1 Organisatorisches VO (708.031) & UE (708.032) bei beiden extra anmelden, zwei Zeugnisse Vortragende: VO:

Mehr

Übungsklausur Algorithmen I

Übungsklausur Algorithmen I Universität Karlsruhe, Institut für Theoretische Informatik Prof. Dr. P. Sanders 26.5.2010 svorschlag Übungsklausur Algorithmen I Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe:

Mehr

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1 Algorithmen und Datenstrukturen 1. EINLEITUNG Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Allgemeines Einleitung Zu den Begriffen: Algorithmen und Datenstrukturen systematische

Mehr

Randomisierte Algorithmen 2. Erste Beispiele

Randomisierte Algorithmen 2. Erste Beispiele Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest

Mehr

3. Ziel der Vorlesung

3. Ziel der Vorlesung 3. Ziel der Vorlesung Der Zweck der Vorlesung ist das Studium fundamentaler Konzepte in der Algorithmentheorie. Es werden relevante Maschinenmodelle, grundlegende und höhere Datenstrukturen sowie der Entwurf

Mehr

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005 Fibonacci-Suche Informatik I Einführung Rainer Schrader Zentrum für Angewandte Informatik Köln 4. Mai 005 Grundidee wie bei der Binärsuche, aber andere Aufteilung Fibonacci-Zahlen: F 0 = 0 F 1 = 1 F m

Mehr