Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Größe: px
Ab Seite anzeigen:

Download "Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen"

Transkript

1 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 nachzuweisen Komplexität/Effizienz von Algorithmen: wie misst man das, wie ist dazu das ganz allgemeine Vorgehen 3.1. Einführung in den verwendeten Pseudocode Bem.: Hier werden nur die wichtigsten Konzepte kurz vorgestellt. Eine ausführlichere Erläuterung finden Sie unter AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 1

2 Pseudocode umfasst Anweisungen/Befehle Einrücken Kennzeichnet die Blockstruktur Beispiel: // Rest der Zeile ist Kommentar. Kommentare werden nicht ausgeführt! Technische Universität München Beispiel for j = 2 to länge(a) do key = A[ j ] // Füge A[ j ] in die // sortierte Liste i = 0 A[1.. // Kommentar j - 1] ein. i = j 1 // Auch Kommentar while i > 0 und A[ i ] > key do A[i + 1] = A[ i ] i = i 1 A[i + 1] = key // Ausgabe: i = 7 print Gibt etwas aus. Zeichenketten in Anführungszeichen werden unverändert ausgegeben. Z.B. print X gibt den Wert der Variablen X aus. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 2

3 Pseudocode Fortsetzung: Zuweisung: z.b. X = 5 Weist der Variable X den Wert 5 zu 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 Feld A[Wert1.. Wert2] Ein Feld ist eine Folge von Werten. Auf den Wert an Position i des Feldes A[i], wird mit einem Indexwert i zugegriffen. A[1..j] bezeichnet die Elemente A[1], A[2],, A[j]. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 3

4 Pseudocode Fortsetzung: for i = Wert1 to Wert2 Variable i nimmt schrittweise die for j = 2 to länge(a) do Werte von Wert1 bis Wert2 an. key = A[ j ] // Füge A[ j ] in die Jedes Mal werden die Anweisung des For-Schleifenkörpers ausgeführt. i = j 1 while i > 0 und A[ i ] > key do Nach Beendigung der ganzen A[i + 1] = A[ i ] Schleife hat die Variable i den Wert i = i 1 Wert2+1 A[i + 1] = key while Bedingung do Führt einen While-Schleifenkörper aus, solange die Bedingung erfüllt ist. Problem? // sortierte Liste A[1.. j - 1] ein. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 4

5 Pseudocode Fortsetzung: if Bedingung Anweisungsblock // Bedingung erfüllt else Anweisungsblock Verzweigung im Code anhand der Bedingung. else kennzeichnet den Beispiel i = 3 if i == 0 X= 0 else X= 2 Zweig, der gewählt wird,falls die Bedingung nicht erfüllt ist. <obj>.<attr> Per. wird auf das Attribut <attr> des Objekts <obj> zugegriffen. // A: Feld, 5 Elemente i = A.länge // i hat den Wert 5 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 5

6 3.2. Einführendes 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 Sortieren der 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, WS010/11, C. Eckert 6

7 3.2.1 Konkreter Sortieralgorithmus: Sortieren durch Einfügen, Algorithmus in Pseudo-Code Insertion Sort A[1..n] ist die Eingabe, ein Feld von natürlichen Zahlen key ist der bei jeder Iteration der Schleife einzusortierende Wert Insertion_Sort (A) Beispiel Beispiel: for j = 2 to länge(a) do Eingabe A[1.. 6] = 5, 2, 4, 6, 1, 3 key = A[ j ] Prinzipieller Ablauf: // 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 // Ende der For-Schleife AuD, Kapitel 3 Effizienz, WS010/11, WS09/10, C. C. Eckert 7

8 Algorithmus in Pseudo-Code Insertion Sort A[1..n] ist die Eingabe, ein Feld von natürlichen Zahlen key ist der einzusortierende Wert Insertion_Sort (A) 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 // Ende der For-Schleife j key A[1.. j-1] i Beispielablauf im Detail Eingabe 5, 2, 4, 6, 1, 3 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 8

9 3.2.2 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: A[j] bezeichnet den einzusortierenden Wert In jeder Iteration: alle Werte A[1.. j-1] liegen bereits sortiert vor und sind eine Permutation der ursprünglichen Werte der Positionen A[1.. j-1] Die Eigenschaft des Teilfeldes A[1.. j-1] ist eine so genannte Schleifeninvariante. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 9

10 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, WS010/11, C. Eckert 10

11 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 4 7: 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: A[1.. j - 1], also A[1.. n], ist geordnet. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 11

12 3.2.3 Komplexität von Insertion Sort? Zu klären ist, wie man anhand des Pseudocodes abschätzen kann, wie viel Rechenzeit (oder Speicherplatz) ein Algorithmus bei einer Eingabe 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 notwendig ist, wächst? D.h. man ist daran interessiert, einen Algorithmus A über eine Funktion f zu charakterisieren, die das Wachstumsverhalten von A insbesondere bei sehr großen Werten der Eingabe n beschreibt. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 12

13 Wachstums- Verhalten von Funktionen f(x) z.b. Linear: f(x) = x Logarithmisch: f(x)= log x Quadratisch: f(x) = x 2 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 13

14 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, WS010/11, C. Eckert 14

15 Vorüberlegungen für Insertion-Sort: Zeile Kosten Zeit für alle pro Zeile Durchläufe Technische Universität München 1 c 1 2 c c 4 5 c 5 6 c 6 7 c 7 1 for j = 2 to länge(a) do 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 8 c 8 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 15

16 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) Beobachtung? 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 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 16

17 T(n) im Besten Fall (Best-Case)? AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 17

18 T(n) im Schlechtesten Fall (Worst-Case)? AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 18

19 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, WS010/11, C. Eckert 19

20 3.3 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. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 20

21 Alle Daten liegen im direkt zugreifbaren Speicher. Was bedeutet das? Technische Universität München Alle Speicherzugriffe dauern gleich lang. Wieso ist das eine Abstraktion, Vereinfachung? Elementare 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, WS010/11, C. Eckert 21

22 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, WS010/11, C. Eckert 22

23 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, WS010/11, C. Eckert 23

24 Frage: Wie ist der Grad des Wachstums der Funktion T(n) aus dem vorherigen Beispiel? Dazu betrachten wir unterschiedliche Eingabewerte n: n=2 T(2)= n=10 T(10)= n=100 T(100)= Erkenntnis? AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 24

25 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. Beispiel: AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 25

26 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. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 26

27 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 ) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 27

28 Beispiel: Gegeben quadratische Funktion f(n) = an 2 + bn + c Behauptung: f(n) = Ө(n 2 ) Allgemein gilt für jedes Polynom p(n) = ain i a i sind Konstanten, a d > 0: p(n) = Ө(n d ) d i 0 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 28

29 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). Falls f(n) = Ө(g(n)), dann gilt auch f(n) = O(g(n)) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 29

30 Beispiel 1: Sei T(n) = 60n + 12 T(n) c g(n) T(n) g(n) n n 0 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 30

31 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 ; Laufzeit T(n)= O(n) Best Case: 1 Schritt Average Case: n / 2 Schritte Worst Case: n Schritte AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 31

32 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, WS010/11, C. Eckert 32

33 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, WS010/11, C. Eckert 33

34 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, WS010/11, C. Eckert 34

35 Das Wachstumsverhalten von Funktionen Technische Universität München 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, WS010/11, C. Eckert 35

36 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. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 36

37 3.4.2 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, WS010/11, C. Eckert 37

38 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))) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 38

39 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, WS010/11, C. Eckert 39

40 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, WS010/11, C. Eckert 40

41 Allgemeine Regeln für die Analyse von Algorithmen Laufzeit für jede einzelne Grundoperation/Anweisung: O(1) uniforme Kostenfunktion (logarithmische 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, WS010/11, C. Eckert 41

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

Mehr

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung

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

Ü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

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

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

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

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

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man

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

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

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

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

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

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

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

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

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

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

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

Ü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

Ü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

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

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

Einführung in die Programmierung Wintersemester 2011/12

Einführung in die Programmierung Wintersemester 2011/12 Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while

Mehr

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Informatik 1 Teil 1 - Wintersemester 2012/2013 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen 0. Rechner und Programmierung

Mehr

Klausur Paralleles Rechnen (Richtwert 60 min) 10. Dez. 2015

Klausur Paralleles Rechnen (Richtwert 60 min) 10. Dez. 2015 Klausur Paralleles Rechnen (Richtwert 60 min) 10. Dez. 2015 Aufgabe 1: (30 Punkte) 1. Erläutern Sie kurz das PRAM-Modell? Was wird sehr idealistisch, was wird realistischer im Vergleich mit echten Parallelrechnern

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

Ü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

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

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

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

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11 Kapitel 1 Exakte Suche nach einem Wort R. Stiebe: Textalgorithmen, WS 2003/04 11 Überblick Aufgabenstellung Gegeben: Text T Σ, Suchwort Σ mit T = n, = m, Σ = σ Gesucht: alle Vorkommen von in T Es gibt

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

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

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

Ü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

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

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

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

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

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

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

Informatik II - Tutorium

Informatik II - Tutorium Sommersemester 2008 http://info2tut.blogspot.com 29. April 2007 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Quellennachweis & Dank an: Joachim Wilke, Susanne Dinkler, Bernhard Müller,

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

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

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

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

GTI. Hannes Diener. 18. Juni. ENC B-0123,

GTI. Hannes Diener. 18. Juni. ENC B-0123, GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.

Mehr

Theoretische Informatik SS 03 Übung 3

Theoretische Informatik SS 03 Übung 3 Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige

Mehr

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Informatik Teil 1 Wintersemester 2011/2012 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen Inhalt 1. Algorithmen -

Mehr