Kapitel 7 KOMPLEXITÄT. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

Größe: px
Ab Seite anzeigen:

Download "Kapitel 7 KOMPLEXITÄT. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm"

Transkript

1 Kapitel 7 KOMPLEXITÄT Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

2 Übersicht 1 1. Einführung 2. Algorithmen 3. EigenschaCen von Programmiersprachen 4. Algorithmenparadigmen 5. Suchen & SorKeren 6. Hashing 7. Komplexität von Algorithmen 8. Abstrakte Datentypen (ADT) 9. Listen 10. Bäume 11. Graphen

3 Lernziele des Kapitels 2 2 EigenschaCen von Algorithmen kennenlernen. Wie misst man Komplexität? Verstehen, warum man nur näherungsweise rechnet. Kennenlernen der O- NotaKon. Kennenlernen der Größenklassen. Abschätzen von Basiselementen kennenlernen. Komplexitätsklassen kennenlernen und Einordnen von Problemen.

4 Inhalt 3 Einführung, MoKvaKon AsymptoKsche Näherung O- NotaKon Berechnen von Schranken für Basiselemente Rechnen mit Schranken Bewertung der Abschätzungen Komplexitätsklassen

5 4 Worum geht s? EigenschaCen von Algorithmen Berechenbarkeit Gibt es für jedes Problem auch einen Lösungsalgorithmus? n z.b. Entscheidbarkeit Gibt es Fragestellungen, die sich der algorithmischen Lösbarkeit prinzipiell entziehen? Korrektheit von Algorithmen Kann man EigenschaCen garankeren? abzählbar aufzählbar entscheidbar Wie kann man nachweisen, dass ein Programm tatsächlich das tut, was es soll? Effizienz / Komplexität von Algorithmen Wie schnell ist ein Algorithmus? Wovon hängt die Geschwindigkeit ab?

6 Berechenbarkeit und Entscheidbarkeit 5 Es gibt berechenbare und nicht berechenbare FunkKonen. Berechenbare FunkKonen sind eher seltene Ausnahmen das muss man wissen, auch wenn wir uns hier ausschließlich mit diesen Ausnahmen befassen. Für berechenbare FunkKonen lässt sich immer ein Algorithmus angeben. Lassen sich nicht berechenbare FunkKonen konkret angeben? Probleme deren EntscheidungsfunkKon nicht berechenbar ist, nennt man nicht entscheidbar. Beispiel: Hält Algorithmus x bei der Eingabe von y? Korrektheit von Programmen im Allgemeinen ist nicht entscheidbar. Allgemeines Halteproblem

7 Korrektheit von Algorithmen 6 SpezifikaDon: eindeukge Festlegung der berechneten FunkKon bzw. des Terminierungsverhaltens einer SoCwarekomponente. VerifikaDon: formaler Beweis der Korrektheit bezüglich einer formalen SpezifikaKon. Arbeitet der Algorithmus korrekt? Are we doing the things right? relative Korrektheit ValidaDon: nichnormaler Nachweis der Korrektheit bezüglich einer informellen oder formalen SpezifikaKon. Macht der Algorithmus das was er tun sollte? Are we doing the right things?

8 Komplexität / Aufwand 7 Es ist wünschenswert, dass ein Algorithmus das gestellte Problem mit möglichst geringem Aufwand löst. Flugzeugkollision, Abschalten eines KernkraCwerks, computergestützte Chirurgie. Bei mehreren Algorithmen für dasselbe Problem ist dies oc das entscheidende Kriterium für die Auswahl des Algorithmus. Theorie der Komplexität der Algorithmen: à à Abschätzen gegebener Algorithmen hinsichtlich ihres Aufwands. Für gegebene Problemklassen beskmmen, mit welchem Mindestaufwand Probleme dieser Klasse gelöst werden können.

9 Komplexität 8 Komplexitätstheorie hier nur Laufzeitverhalten Fragen Wie aufwendig ist es, eine gegebene Aufgabe zu erfüllen? Beispiel: umgangssprachlich: Suchen ist einfacher, schneller als SorKeren. Formalere Formulierung? Welcher Algorithmus ist der schnellste für eine gegebene Aufgabe? Beispiel: offensichtlich: Binäre Suche ist schneller als lineare Suche. Formalere Formulierung?

10 Laufzeit beskmmen 1. Ansatz 9 Benchmark: Algorithmus programmieren und ausführen. Dauer mit Stoppuhr stoppen. l Nachteile ð Ungenau. ð Laufzeit abhängig vom Rechner und vom Zeitpunkt der Programmausführung. ð Parameter nicht berücksichtigt. Suchen in kleinem Array ist schneller als in großem.

11 Laufzeit beskmmen 2. Ansatz 10 l Algorithmus programmieren in Pseudocode. l Operationen zählen. l Geeignete Annahmen für Unbekannte treffen. Länge des Arrays; Art der Verteilung. l Vorteile ð Unabhängig von der konkreten Technik (Computer, Programmiersprache, Compiler). ð Durch geschickte Annahmen Laufzeit nur von einer Größe abhängig à Länge des Arrays. l Nachteil ð Sehr komplex.

12 Laufzeit beskmmen 3. Ansatz 11 l Wie zweiter Ansatz, l jedoch nur obere Grenze für Anzahl Operationen festlegen. l Vorteile ð Unabhängig von der konkreten Technik (Computer, Programmiersprache, Compiler). ð Durch geschickte Annahmen Laufzeit nur von einer Größe abhängig à Länge des Arrays. ð Einfach(er als 2. Ansatz).

13 12 Lineare Suche in einer Folge Gegeben: n Zahl n 0, n n Zahlen a 1,..., a n, die alle verschieden sind n eine Zahl b. Gesucht: Beispiel 1/5 n Index i, mit i {1,..., n}, so dass b = a i, sofern ein solcher Index exiskert. n Sonst soll i = n + 1 ausgegeben werden. Einfache Lösung: i = 1; while i < n and b a i do i := i + 1; od; // i enthält den gesuchten Index

14 Beispiel 2/5 13 Aufwand der Suche = Anzahl der teuren Schrixe. Anzahl n hängt ab von der Eingabe = n, a 1,..., a n, b n Es gilt: teuer n Bei erfolgreicher Suche, d.h. wenn b = a i ist, werden S = i Schrixe benökgt. n Bei erfolgloser Suche werden S = n Schrixe benökgt. n Vergleich mit Schlüssel n Verschiebung (Vertauschung)

15 Beispiel 3/5 14 Vereinfachung der erfolgreichen Suche n Keine Betrachtung einzelner Fälle, sondern n Aufwand im besten Fall (1 Vergleich) n Hier nicht weiter verfolgt n Aufwand im Mixel n Annahmen à StaKsKk n Aufwand im schlechtesten Fall (n Vergleiche) n konstruiert

16 Beispiel 4/5 15 Aufwand im schlechtesten Fall n Das Element wird am Ende der Folge gefunden. Anzahl der Schrixe: S = n Aufwand im mixleren Fall n Abhängig davon, wann das Element gefunden wird. n Annahme: gleichmäßige Verteilung Anzahl der Schrixe: S = n +1 2 Vereinfachung n Nicht genauen Wert, sondern obere Grenze angeben.

17 Beispiel 5/5 16 Weglassen von addikven und mulkplikakven Konstanten n Idee: Aufwand Binäre Suche << Aufwand Lineare Suche n Faktor 2, 3, 4, vernachlässigbar für große N n Summand ebenso Aufwand im schlechtesten Fall n Anzahl der Schrixe: S = n à Abschätzung: S = O(n) Aufwand im mixleren Fall n Anzahl der Schrixe: S = n +1 2 à Abschätzung: S = O(n)

18 17 Wie kommen wir zu einer Abschätzung?

19 AsymptoKsche Analyse 18 Näherungsweise AufwandsbesKmmung Ziel: Als Maß für den Aufwand Angabe einer FunkKon F : Ν Ν, (Ν sind die natürlichen Zahlen) Wobei f(n) = a bedeutet: Bei einem Problem der Größe n ist der Aufwand a. Maß für den Umfang einer Eingabe. Grobes Maß für die Rechenzeit oder auch Speicherplatz. Abschätzung der Rechenzeit = Zählen wie häufig eine bestimmte Art von Operationen ausgeführt wird: Speicherzugriffe, Multiplikationen, Additionen, Vergleiche etc. Sprachunabhängiges Maß für die Rechenzeit.

20 AsymptoKsche Analyse: Beispiel for- Schleife 19 Wie oc wird die Wertzuweisung x : = x + 1 in den folgenden Anweisungen ausgeführt? 1. x := x + 1; 2. for i := 1 to n do x := x + 1 od 3. for i := 1 to n do od for j := 1 to n do x := x + 1 od 1 mal n-mal n * n bzw. n 2 -mal

21 AufwandsfunkKon 20 (Immer noch) Gesucht: AufwandsfunkKon F : Ν Ν Kann man sehr selten exakt beskmmen 2 Methoden zur Aufwandsanalyse : Abschätzen des Aufwands im schlechtesten Fall. Abschätzen des Aufwands im Mixel. Abschätzen bedeutet ungefähres Rechnen in Größenordnungen.

22 AufwandsfunkKon: Beispiel 1/3 21 Gegeben: n 0, Folge von n Zahlen a 1,..., a n ( Ζ), die alle verschieden sind. Gesucht: Index i, mit i {1,..., n}, so dass a i das größte Element unter den a 1,..., a n ist. Lösung: max := 1; for i = 2 to n do if a max < a i then max := i fi; od; Am Ende enthält max den gesuchten Index bzw. die Zahl 1, falls n = 0 ist.

23 AufwandsfunkKon: Beispiel 2/3 22 Analyse: Wie oc wird die Anweisung max := i im Mixel ausgeführt - abhängig von n? Mixlere Anzahl von Zuweisungen: T n es gilt 1 T n n. Beobachtung: Wann wird max := i ausgeführt a i ist das größte Element von a 1,.., a i Annahme (Gleichverteilung): Für jedes i = 1,..., n hat jedes der Elemente a 1,..., a n die gleiche Chance, das größte zu sein. Daraus folgt für die gesamte Anzahl von N Durchläufen durch den Algorithmus, N >> 1, dass insgesamt N/i mal die Anweisung max : = i ausgeführt wird, für i = 1,..., n. Genauer betrachtet heißt das: max := 1 wird N- mal, d.h. immer, ausgeführt max := 2 wird N/2 mal ausgeführt max := 3 wird N/3 mal ausgeführt etc.

24 AufwandsfunkKon: Beispiel 3/3 23 Daraus folgt, für die gesamte Anzahl N * T n von Ausführungen von max := i (für ein beliebiges i eigentlich für i = 1, 2,..., n) bei N Durchläufen, also N mal die mixlere Anzahl von Zuweisungen: N * T n = N + N/2 + N/ N/n T n = N (1 + 1/2 + 1/3 + 1/ /n) = 1 + 1/2 + 1/3 + 1/ /n, = H n, die n- te harmonische Zahl und die kann nur abgeschätzt werden. T n = H n ln n + γ, mit γ = 0, (Euler sche Konstante) Sind wir jetzt so schlau als wie zuvor, weil wir T n nicht genau ausrechnen können?

25 O- NotaKon 1/3 24 Ziel Abschätzen der AufwandsfunkKon f(n) durch Angabe einer einfachen VergleichsfunkKon g(n), die abgesehen von Konstanten ab irgendwann größer als f(n) ist Typische FunkKonen für g(n) g(n) = n, g(n) = ld n, g(n) = n 2 DefiniKon g(n) ist ein asymptoksche obere Schranke für eine FunkKon f(n) - geschrieben f(n) = O(g(n)) - gelesen f(n) ist von der Ordnung g(n) wenn gilt: c, n 0 : n n 0 : f(n) c g(n) f, g: N N

26 AsymptoKsche obere Schranke 25 f(n o ) = g(n o ) Ab n o wächst f nicht stärker als g. Das Wachstum von f ist durch g beschränkt

27 O- NotaKon 2/3 26 Ziel bei der Analyse von Algorithmen: Abschätzen der Aufwands- funkkon f durch Angabe einer einfachen VergleichsoperaKon g mit f(n) = O(g(n)). O(n) nennt man auch die asymptoksche obere Schranke für f. Die Beschreibung der Komplexität durch Angabe der Wachstums- geschwindigkeit bzw. der Größenordnung mit Hilfe der O- NotaKon als asymptoksche Analyse. Was ist eine Asymptote? Eine Gerade, der sich eine Kurve bei deren immer größer werdender Ennernung vom Koordinatenursprung unbegrenzt nähert, d.h. immer näher kommt aber nie erreicht. Für uns heißt das, dass f asymptoksch nicht schneller wächst als g.

28 O- NotaKon 3/3 27 Die O(g)- NotaKon ist eine obere Grenze für eine Klasse von FunkKonen, man kann deshalb die FunkKon g vereinfachen, indem konstante Faktoren weggelassen werden, nur der größte Exponent berücksichkgt wird. Ziel ist eine möglichst einfache FunkKon für die Aufwandsabschätzung anzugeben, da man nur an den Größenordnungen interessiert ist. Dazu die folgenden Beispiele.

29 O- NotaKon: Beispiele 28 g ist obere Schranke à folgende Vereinfachungen sind möglich g = n 3 + n 2 g = n 3 nur größten Exponent berücksichtigen g = ld n g = log n nur Logarithmus zur Basis 10 betrachten g = an g = n konstante Faktoren weglassen g = n + b g = n konstante Summanden weglassen

30 Abschätzungen in Größenordnungen 1/2 30 Im Beispiel oben gilt: T n = H n = ln n + γ, T n = O(log n). Für eine Abschätzung ist die Basis des Logarithmus unerheblich, da gilt: log b n = log a n log b a. (log b a ist eine Konstante).

31 Abschätzungen in Größenordnungen 2/2 31 Beispiel: Beschränkung auf den höchsten Exponenten. n 2 + 3n 3 = O(n 2 ) ó n 2 + 3n 3 c n 2 ó 1+ 3/n 3/n 2 c Diese Ungleichung wird erfüllt für n n o, wenn c = 2 und n o = 1. n 2 + 3n 3 2 n 2 n 2

32 Analyse von Algorithmen: Regeln 32 Regeln für die BesKmmung von Größenordnungen anhand der Basiskonstrukte: Sequenz Bedingung IteraKon (Schleifen) n Einfache Schleifen n Geschachtelte Schleifen Unterprogramme Die folgenden Regeln sind als Aufwandsschätzung konkreter Algorithmen (Programme) gedacht. Die Abschätzung des Aufwands für Problemklassen erfordert mathemaksche Beweise.

33 Sequenz - Laufzeitaufwand 33 Laufzeit := Σ Laufzeit der einzelnen Anweisungen Handelt es sich um einfache Anweisungen, dann ist der Aufwand konstant: O(1). Wenn der maximale Aufwand zur Durchführung einer Anweisung m ist und in der Sequenz k (k 1) Anweisungen stehen, dann ist der Gesamtaufwand k * m bzw. c, wenn c = k*m. Beispiel: max := j; F [i] := j; Die Sequenz besteht aus 2 Anweisungen, die nacheinander durch- laufen werden. Wenn man für die 2. (= komplexere) Anweisung m Einheiten benökgt, dann ist die Gesamtlaufzeit c = 2 m, also O(1).

34 Bedingung - Laufzeitaufwand 34 Laufzeit := Aufwand für Test + max (Aufwand für A 1, Aufwand für A 2 ) A 1 und A 2 sind die beiden AlternaKven (sofern 2 AlternaKven angegeben sind). Der Aufwand dafür ist konstant: O(1). Wenn der maximale Aufwand zur Durchführung einer der beiden Alter- nakven m ist (Voraussetzung: die AlternaKven enthalten nur einfache Anweisungen) und der Aufwand für den Test k, dann ist der Gesamtaufwand k + m bzw. c, wenn c = k+m. Beispiel: if i > j then max : = i; else max := j; fi Die Testanweisung hat einen Aufwand von O(1) ebenso jede der beiden AlternaKven. Dann ist die Gesamtlaufaufwand O(1) + O(1) = O(1).

35 Schleifen - Laufzeitaufwand 35 Laufzeit := Aufwand für die innere Anweisung * Anzahl der IteraDonen Eine einfache innere Anweisung hat einen Aufwand von: O(1). Bei n IteraKonen ergibt sich ein Gesamtaufwand von: n * O(1) = O(n). Beispiel: for i := 1 to n do F[ i] := 0; od Der Aufwand für while bzw. do- while- Schleifen ist äquivalent zu dem der for- Schleife (s. GDI).

36 Geschachtelte Schleifen - Laufzeitaufwand 36 Laufzeit := Aufwand für die innere Anweisung * Produkt der Größen aller Schleifen Eine einfache innere Anweisung hat einen Aufwand von: O(1). Bei n * n IteraKonen ergibt sich ein Gesamtaufwand von: n * n * O(1) = O(n 2 ). Beispiel: for i := 1 to n do for j := 1 to n do k : = k + 1; od od

37 37 Beispiel: Nacheinanderausführung von Schleifen - Laufzeitaufwand Laufzeit := Σ Laufzeit der einzelnen Schleifen for i := 1 to n do od for j := 1 to n do od F[i] : = F[i] + F[j] + i + j; O(n 2 ) for j := 1 to n do od F[i] : = F[i] + F[j] + i + j; O(n) Die maximale Komponente des Ausdrucks von n 2 + n bestimmt den Gesamtaufwand: O(n 2 ).

38 38 KombinaKon von Konstrukten - Laufzeitaufwand Bei einer addikven KombinaKon von Konstrukten beskmmt immer die maximale Komponente (das ist die mit dem höchsten Exponenten) den Gesamtaufwand. Auch Unterprogrammaufrufe sind als AddiKon bezüglich des Aufwands zu sehen. Sie gehen dann mit ihrem Aufwandswert in die weiteren Berechnungen ein. Rekursive Unterprogrammaufrufe, d.h. die Rekursion gehen als Produkt in die Aufwandsberechnung ein (eine Rekursion lässt immer in eine IteraKon überführen). Geschachtelte Rekursionen sind nicht ganz einfach zu analysieren.

39 Bewertung 39 Wie sind die gewonnen Erkenntnisse bei der asymptokschen Abschätzung von Aufwänden einzuordnen?

40 40 WichKge Komplexitätsklassen bei der Analyse von Algorithmen O(1) konstanter Aufwand O(log n) logarithmischer Aufwand O(n) linearer Aufwand O(n log n) O(n 2 ) quadrakscher Aufwand O(n k ), für ein k 0 polynominaler Aufwand O(2 n ) exponenkeller Aufwand

41 41 Wachstum für ausgewählte Komplexitätsklassen n ld n n f(n) n ld n n n n

42 Zeitaufwand für einige Komplexitätsklassen 1/2 42 Annahme: Ein Schrix des Aufwands dauert genau eine Mirkosekunde ( 1µs oder 10-6 s). Frage: Wie lange dauert die Ausführung von n = (10 5 ) Schrixen? Funktion Laufzeit ld n n n ld n n 2 n s 0.1 s 1.2 s 2.8 h 31.7 Jahre 2 n > 1 Jahrhundert

43 Zeitaufwand für einige Komplexitätsklassen 2/2 43 Annahme: Ein Schrix des Aufwands dauert genau eine Mirkosekunde ( 1µs oder 10-6 s). Frage: Wie groß kann ein Problem (n) sein, wenn man die zur Verfügung stehende Zeit T begrenzt? 1 Minute 1 Stunde 1 Tag 1 Woche 1 Jahr n n n n

44 Typische Problemklassen 44 Aufwand Problemklasse O(1) O(log n) O(n) O(n log n) O(n 2 ) O(n 3 ) O(2 n ) Einige Suchverfahren für Tabellen (Hashing) Allgemeine Suchverfahren für Tabellen (Baum- Suchverfahren) Sequentielle Suche, Suche in Texten, syntaktische Analyse von Programmen (bei guter Grammatik) Sortieren Einige dynamische Optimierungsverfahren (z.b. optimale Suchbäume), Multiplikation Matrix Vektor (einfach) Matrizenmultiplikation Viele Optimierungsprobleme (z.b. optimale Schaltwerke)

45 45 Übersicht über SorKerverfahren 1/3 Verfahren Stabilität Aufwand (im Mittel) SelectionSort (In)stabil n 2 InsertionSort Stabil n 2 BubbleSort Stabil n 2 MergeSort Stabil n log n QuickSort Instabil n log n

46 Übersicht über SorKerverfahren 2/3 46 Bisher: Eingabedaten unsorkert Bei VorsorKerung? Verfahren Aufwand (bei Vorsortierung) SelectionSort n 2 InsertionSort BubbleSort MergeSort n n n log n QuickSort n 2

47 Übersicht über SorKerverfahren 3/3 47 Bisher: Aufwand gleich für Vergleichen/Vertauschen Falls Vertauschen sehr viel aufwändiger? Verfahren SelectionSort Aufwand (nur Vertauschung) n InsertionSort n 2 BubbleSort n 2 MergeSort QuickSort n log n n log n

48 Folgerungen aus den Tabellen 48 Die Steigerung der Rechengeschwindigkeit wirkt sich am deutlichsten bei schnellen Algorithmen aus. Der Übergang zu einem schnelleren Algorithmus ist oc wirksamer als der zu einer schnelleren Maschine. Für die Lösung von Problemen, die häufig aucreten, etwa als Teilprobleme anderer Probleme, lohnt sich der Aufwand, nach einem opkmalen Algorithmus zu suchen.

Komplexität von Algorithmen:

Komplexität von Algorithmen: Komplexität von Algorithmen: Ansatz: Beschreiben/erfassen der Komplexität über eine Funktion, zur Abschätzung des Rechenaufwandes abhängig von der Größe der Eingabe n Uns interessiert: (1) Wie sieht eine

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 10 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

Ü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

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Text: Hinnerk van Bruinehsen - Grafiken: Jens Fischer powered by SDS.mint SoSe 2011 1 Teil

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

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 1 Kapitel 5

Algorithmen und Datenstrukturen 1 Kapitel 5 Algorithmen und Datenstrukturen 1 Kapitel 5 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 5: Effizienz von Algorithmen 5.1 Vorüberlegungen Nicht

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

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

Teil II. Eigenschaften von Algorithmen

Teil II. Eigenschaften von Algorithmen Teil II Eigenschaften von Algorithmen Überblick 1 Berechenbarkeit und Entscheidbarkeit 2 Korrektheit von Algorithmen 3 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 2 1 Berechenbarkeit

Mehr

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. 2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Analyse von Algorithmen Die O-Notation WS 2012/2013 Prof. Dr. Margarita Esponda Freie Universität Berlin 1 Korrekte und effiziente Lösung von Problemen Problem Wesentlicher Teil der Lösung eines Problems.

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 Effizienz und Funktionenklassen

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

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

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

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als

Mehr

2. Hausübung Algorithmen und Datenstrukturen

2. Hausübung Algorithmen und Datenstrukturen Prof. Dr. Gerd Stumme, Folke Eisterlehner, Dominik Benz Fachgebiet Wissensverarbeitung 7.4.009. Hausübung Algorithmen und Datenstrukturen Sommersemester 009 Abgabetermin: Montag, 04.05.009, 10:00 Uhr 1

Mehr

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft

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

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen

Mehr

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften

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

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

2. Effizienz von Algorithmen

2. Effizienz von Algorithmen Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]

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 Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus

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

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

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

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen und Datenstrukturen I Grundlagen Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift

Mehr

Klausur Algorithmentheorie

Klausur Algorithmentheorie Prof. Dr. G. Schnitger Frankfurt, den 13.02.2009 Klausur Algorithmentheorie WS 2008/2009 Name: Vorname: Studiengang: BITTE GENAU LESEN Die Klausur besteht aus 4 Aufgaben, in denen maximal 100 Punkte erreicht

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

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

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

8 Komplexitätstheorie

8 Komplexitätstheorie 8 Komplexitätstheorie Formale Grundlagen der Informatik I Herbstsemester 2012 Robert Marti Vorlesung teilweise basierend auf Unterlagen von Prof. emer. Helmut Schauer Grundidee der Komplexitätstheorie

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

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme Theoretische Informatik Exkurs Rainer Schrader Exkurs: Komplexität von n Institut für Informatik 13. Mai 2009 1 / 34 2 / 34 Gliederung Entscheidungs- und Approximationen und Gütegarantien zwei Greedy-Strategien

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Wintersemester 2013/2014 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin Maike.Buchin@rub.de Raum NA 1/70 Sprechzeiten:

Mehr

Exponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element

Exponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element Problemstellung Banale smethode : das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element a n = } a a a {{ a } H n (schreiben ab jetzt a n statt a n ) Hinweis:

Mehr

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1 Zeitkomplexität (1) Proseminar Theoretische Informatik Proseminar Theoretische Informatik: Lisa Dohrmann 1 Warum Komplexitätsbetrachtung? Ein im Prinzip entscheidbares und berechenbares Problem kann in

Mehr

3.3 Laufzeit von Programmen

3.3 Laufzeit von Programmen 3.3 Laufzeit von Programmen Die Laufzeit eines Programmes T(n) messen wir als die Zahl der Befehle, die für die Eingabe n abgearbeitet werden Betrachten wir unser Programm zur Berechnung von Zweierpotenzen,

Mehr

Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/

Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/ Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/12 23.10.2011 Themen: Asymptotische Laufzeit von Algorithmen Experimentelle Analyse von Algorithmen Aufgabe 1 ( Asymptotische Laufzeit ) Erklären Sie,

Mehr

Asymptotik und Laufzeitanalyse

Asymptotik und Laufzeitanalyse und Vorkurs Informatik SoSe13 08. April 2013 und Algorithmen = Rechenvorschriften Wir fragen uns: Ist der Algorithmus effizient? welcher Algorithmus löst das Problem schneller? wie lange braucht der Algorithmus

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

Der Lese-Schreib-Kopf kann auch angehalten werden (H). Die Verarbeitung ist dann beendet.

Der Lese-Schreib-Kopf kann auch angehalten werden (H). Die Verarbeitung ist dann beendet. Die Turingmaschine besteht aus der Steuereinheit, die verschiedene Zustände annimmt dem Band, welches unendlich ausgedehnt ist, aber nur auf einem endlichem Bereich mit Zeichen aus einem Alphabet beschrieben

Mehr

Hier ist ein einfaches Turingprogramm. Außer dem Leerzeichen ist das Band nur mit. 1 belegt.

Hier ist ein einfaches Turingprogramm. Außer dem Leerzeichen ist das Band nur mit. 1 belegt. Die Turingmaschine besteht aus der Steuereinheit, die verschiedene Zustände annimmt dem Band, welches unendlich ausgedehnt ist, aber nur auf einem endlichem Bereich mit Zeichen aus einem Alphabet beschrieben

Mehr

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Aufgabe 1 (O-Notation): Beweisen oder widerlegen Sie die folgenden Aussagen: (3 + 3 + 4 = 10 Punkte)

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

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik Was ist ein Algorithmus? Ein Algorithmus ist eine eindeutige Handlungsvorschrift, [bestehend] aus endlich vielen, wohldefinierten

Mehr

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Algorithmen und ihre formalen Eigenschaften, Datenstrukturen

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Algorithmen und ihre formalen Eigenschaften, Datenstrukturen 1 Grundlagen 1.1 Algorithmen und ihre formalen Eigenschaften, Datenstrukturen Ein Algorithmus ist ein mit formalen Mitteln beschreibbares, mechanisch nachvollziehbares Verfahren zur Lösung einer Klasse

Mehr

Informatik I Komplexität von Algorithmen

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

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

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr

Schleifeninvarianten. Dezimal zu Binär

Schleifeninvarianten. Dezimal zu Binär Schleifeninvarianten Mit vollstandiger Induktion lasst sich auch die Korrektheit von Algorithmen nachweisen. Will man die Werte verfolgen, die die Variablen beim Ablauf eines Algorithmus annehmen, dann

Mehr

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr. Übersicht Datenstrukturen und Vorlesung 1: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet

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

Stichpunktezettel fürs Tutorium

Stichpunktezettel fürs Tutorium Stichpunktezettel fürs Tutorium Moritz und Dorian 13. Januar 2010 1 Komplexitätsanalyse 1.1 Einführendes Beispiel Gegeben ist der folgende Algorithmus, der eine Liste mit Zahlen sortiert: 1 void sort(list_t*

Mehr

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018 1 Informatik II Vorlesung am D-BAUG der ETH Zürich Felix Friedrich & Hermann Lehner FS 2018 23 1. Einführung Algorithmen und Datenstrukturen, erstes Beispiel 24 Ziele der Vorlesung Verständnis des Entwurfs

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. Sortieren 4.1 Vorbemerkungen . Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

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

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie 1 Einführung 2 Typ-0- und Typ-1-Sprachen 3 Berechnungsmodelle 4 Unentscheidbarkeit 5 Unentscheidbare Probleme 6 Komplexitätstheorie WS 11/12 155 Überblick Zunächst einmal definieren wir formal den Begriff

Mehr

LOOP-Programme: Syntaktische Komponenten

LOOP-Programme: Syntaktische Komponenten LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=

Mehr

Algorithms & Data Structures 2

Algorithms & Data Structures 2 Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 20. November 2014 INSTITUT FÜR THEORETISCHE 0 KIT 20.11.2014 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der

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

P, NP und NP -Vollständigkeit

P, NP und NP -Vollständigkeit P, NP und NP -Vollständigkeit Mit der Turing-Maschine haben wir einen Formalismus kennengelernt, um über das Berechenbare nachdenken und argumentieren zu können. Wie unsere bisherigen Automatenmodelle

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen 23

Inhaltsverzeichnis. Teil 1 Grundlagen 23 Inhaltsverzeichnis Vorwort 11 Umfang 12 Einsatz als Unterrichtsmittel 12 Algorithmen mit Praxisbezug 13 Programmiersprache 14 Danksagung 15 Vorwort des C++-Beraters 16 Hinweise zu den Übungen 21 Teil 1

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

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Aufgabe (Schreibtischtest, Algorithmenanalyse) Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85 Inhaltsverzeichnis Vorwort 13 Umfang 14 Einsatz als Unterrichtsmittel 14 Algorithmen mit Praxisbezug 15 Programmiersprache 16 Danksagung 17 Vorwort des Java-Beraters 18 Hinweise zu den Übungen 19 Teil

Mehr

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 18 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 09.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

Mehr

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11) Hinweis: Dieses Übungsblatt enthält

Mehr

Algorithmik Kap. 2: Laufzeit von Algorithmen

Algorithmik Kap. 2: Laufzeit von Algorithmen 1. Motivation 1.1 Fallstudie: Sortieralgorithmen 1.2 Fallstudie: Selektionsalgorithmen 2. Laufzeit von Algorithmen 2.1 Grundlagen 2.2 3. Paradigmen des Algorithmenentwurfs 3.1 Dynamisches Programmieren

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung GdP12 Slide 1 Grundlagen der Programmierung Vorlesung 12 Sebastian Iwanowski FH Wedel GdP12 Slide 2 Entwurf von Algorithmen Wie klassifiziert man Algorithmen? offensichtlich nicht durch die Unterscheidung

Mehr

2.5 Halteproblem und Unentscheidbarkeit

2.5 Halteproblem und Unentscheidbarkeit 38 25 Halteproblem und Unentscheidbarkeit Der Berechenbarkeitsbegriff ist auf Funktionen zugeschnitten Wir wollen nun einen entsprechenden Begriff für Mengen einführen Definition 255 Eine Menge A Σ heißt

Mehr

3 Numerisches Rechnen

3 Numerisches Rechnen E Luik: Numerisches Rechnen 65 3 Numerisches Rechnen 31 Zahlen und ihre Darstellung Grundlage der Analysis bilden die reellen Zahlen Wir sind heute daran gewöhnt, eine reelle Zahl im Dezimalsystem als

Mehr

Isomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt

Isomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt Isomorphismus Definition Gruppen-Isomorphismus Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt 1 f ist bijektiv f (u + v) = f (u) f (v) für alle u, v G, die

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

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

NAME, VORNAME: Studiennummer: Matrikel:

NAME, VORNAME: Studiennummer: Matrikel: TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.

Mehr

Grundlagen der Informatik Algorithmen und Komplexität

Grundlagen der Informatik Algorithmen und Komplexität Grundlagen der Informatik Algorithmen und Komplexität Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Einleitung

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

Registermaschine (RAM), Church-Turing-These. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Registermaschine (RAM), Church-Turing-These. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen Registermaschine (RAM), Church-Turing-These Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 22 Registermaschinen (RAM) Programm b c(0) c(1) c(2) c(3) c(4)...

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

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 31 Einstieg in die Informatik mit Java Effizienz Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 31 1 Überlegungen zur Effizienz 2 Landau-Symbole 3 Eier im Korb 4 Zyklische

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

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr