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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 Komplexität von Algorithmen Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 12. September 2012 ODE/FHTBM Komplexität von Algorithmen 12. September /41 (Ziele) (Ziele) Effizienzbetrachtungen für grundlegende Algorithmen Gründe für eine (mathematische) verschiedene Algorithmen für eine Aufgabe vergleichen ihre Effizienz systemunabhängig vorhersagen die Werte von Algorithmus-Parametern setzen Es gibt mathematische Formeln, mit denen sich Maße für Algorithmen und ihre Güte bzgl. Effizienz vorhersagen lassen. Wir unterscheiden zwei Strategien für die Effizienzbetrachtung emprisiche Analyse Komplexitätsklassen ODE/FHTBM Komplexität von Algorithmen 12. September /41 (Ziele) Eigenschaften von Algorithmen - Algorithmus-Analyse Wie ermitteln Sie die Eigenschaften von Algorithmen? Prüfen Sie die Operationen auf den Daten Prüfen Sie die Eingabedaten Wie bestimmen wir die Effizienz von Algorithmen? Wir benutzen folgende Methoden für bestehende Implementierungen Implementierung und empirische Analyse Algorithmen-Analyse vor der Implementierung zur Beschreibung von Komplexitätsklassen Groß-Oh Notation und O-Notation Garantien, Vorhersagen, Grenzen ODE/FHTBM Komplexität von Algorithmen 12. September /41 1

2 (Ziele) Implementierung und empirische Analyse Algorithmen als Berechnungsverfahren werden entworfen, indem wir Operationen auf (Daten-)Strukturen betrachten oder (Daten-)Strukturen wählen, von denen wir wissen, dass gewisse Operationen schnell angewendet werden können. Um eine gute Implementierung, z.b. in Java, zu finden, müssen wir immer abwechselnd diese Ansätze betrachten und gegeneinander abwägen. Somit kann es üblich sein mit einer bestehenden Implementierung (aus der Java Programmbibliothek) zu starten. Wir können von einer konkreten Implementierung lernen. ODE/FHTBM Komplexität von Algorithmen 12. September /41 Empirische Analyse (Ziele) Wir beginnen mit einer bestehenden Implementierung. Was lässt sich durch eine empirische Analyse herausfinden? Was liefert uns eine Betrachtung der tatsächlichen Laufzeit? Nehmen Sie zwei Algorithmen an, die das selbe Problem lösen sollen. Wir starten beide, um festzustellen, welcher länger braucht! Dass ein Algorithmus zehnmal so schnell wie der andere ist, fällt wohl jeder oder jedem auf, die 3 Sekunden auf den einen und 30 Sekunden auf den anderen warten; Stimmt ein solcher Testlauf für alle möglichen Eingaben der beiden folgenden Algorithmen? Beispiel: Summation einer endlichen Zahlenfolge ODE/FHTBM Komplexität von Algorithmen 12. September /41 (Ziele) Summation einer endlichen Zahlenfolge (nicht im Buch) 1. Implementierung public int Ga ussian SumSim ple ( int n) { int sum =0; for ( int i = n; n > 0; i - -) { sum = sum + i; return sum ; Für N = 30 werden beim Schleifendurchlauf 30 Additionen ausgeführt. Für N = 300 werden beim Schleifendurchlauf 300 Additionen ausgeführt, also das 10-fache. Gleich soviel als das Wachstum von N. ODE/FHTBM Komplexität von Algorithmen 12. September /41 2

3 (2) (Ziele) Summation einer endlichen Zahlenfolge (nicht im Buch) zweite Implementierung public int GaussianSum ( int n) { int sum = 0.5* n*(n +1); return sum ; Für eine feste Anzahl z.b. N = 30: N = 30 sum = (30 + 1) = 1860 Eine Addition und zwei Multiplikationen werden gebraucht. Wenn N = 300 sum = ( ) = Eine Addition und zwei Multiplikationen werden gebraucht. Die Anzahl gebrauchte Operationen ist unabhängig vom Wert N. ODE/FHTBM Komplexität von Algorithmen 12. September /41 (Ziele) Zusammenfassung Beispiel Summation Summation einer endliche Zahlenfolge In der ersten Implementierung haben wir einen Aufwand in Relation zur Größe der Eingabe; d.h. der Aufwand wird höher umso größer N ist. Der Aufwand wächst linear. In der zweiten Implementierung ist der Berechnungsaufwand unabhängig von der Eingabegröße N. Wir sagen der Aufwand ist konstant. Offensichtlich kann die Laufzeit von der Eingabe abhängen. Nicht immer ist es möglich diese Abhängigkeit auszuschließen, aber es ist immer einen Versuch wert. Überlegen Sie, was passiert bei festen N. ODE/FHTBM Komplexität von Algorithmen 12. September /41 Empirische Analyse (Ziele) Empirische Studien nehmen viel Zeit in Anspruch. Bevor wir sie vergleichen können, müssen wir die Algorithmen implementiert haben. Es kann dann Minuten, Stunden oder Tage dauern, bis wir das gewünschte Ergebnis haben. Untersuchung der Eingabedaten Drei Auswahlmöglichkeiten reale Daten Zufallsdaten pervertierte Daten ODE/FHTBM Komplexität von Algorithmen 12. September /41 3

4 Empirische Analyse (Ziele) Reale Daten erlauben uns eine Laufzeitmessung des verwendeten Programms (in seinem SW-System). Zufallsdaten sorgen dafür, dass unsere Experimente die Algorithmen testen, nicht die Daten. Pervertierte Daten stellen sicher, dass unser Programm mit beliebigen Eingaben fertig wird. ODE/FHTBM Komplexität von Algorithmen 12. September /41 Kritik an der empirischen Analyse (Ziele) Verschiedene Faktoren entziehen sich dem Einfluss der Programmierenden, z.b. Programmier-Umgebungen, zb. für Java oder.net Java Programme werden in Byte-Code, und dieser Byte-Code wird auf einer virtuellen Maschine (VM) in Ablauf-Code übersetzt. Sowohl der Compiler (Übersetzer) als auch die VM-Implementierungen wirken sich darauf aus, wie die tatsächliche Maschine die Anweisungen ausführt. Kompiler-Optionen bieten Möglichkeiten diesen Prozess zu beeinflussen. Eingabedaten Viele Programme werden stark von den Eingabedaten beeinflusst und ihre Laufzeit kann abhängig von der Eingabe - stark schwanken. Programme (oder Implementierungen) sind schwer verständlich. ODE/FHTBM Komplexität von Algorithmen 12. September /41 (Ziele) Empirische Analyse () Empirische Tests können wir nicht für ein Programm durchführen, das noch nicht geschrieben und mit [Massen-] Eingabedaten gestartet worden ist, aber wir können Eigenschaften des Programms analysieren und die potenzielle Wirksamkeit von Verbesserungen abschätzen. Wir können in unseren Implementierungen bestimmte Parameter verwenden und die Analyse dazu nutzen, uns beim Setzen der Parameter zu helfen. Ziel: wenn wir die grundlegenden Eigenschaften unserer Programme verstehen und im Prinzip wissen, wie die Programme Ressourcen nutzen, können wir potenziell auch bewerten, wie effektiv sie auf noch nicht gebauten Computern sein werden. Wir können sie auch mit Algorithmen vergleichen, die noch nicht entworfen worden sind. ODE/FHTBM Komplexität von Algorithmen 12. September /41 4

5 Wie führen Sie diese durch? Bei der Analyse eines Algorithmus müssen Sie die Operationen identifizieren. Es kann eine große Anzahl von Operationen geben. Grundsätzlich hängt die Leistung von Algorithmen aber nur von wenigen Größen ab, die leicht zu erkennen sind, indem Sie beispielsweise ein Profil anlegen (die Anzahl der Anweisungen zählen). ODE/FHTBM Komplexität von Algorithmen 12. September /41 Für eine Analyse des ungünstigsten Falls ermitteln Sie die Laufzeit-Komplexität (Obergrenze abhängig von dem gewählten Eingabeparameter N) oder Speicherplatz-Komplexität (Obergrenze abhängig von der Nutzung des Speicherplatzes). Beachten Sie, dass sich die Ergebnisse von Laufzeit-Komplexität in Speicherplatz-Komplexität umwandeln lassen, und von Speicherplatz-Komplexität in Laufzeit-Komplexität. Diese Messungen von Komplexität lassen sich als Wachstum der Funktionen zeigen, wobei Sie Groß-Oh Notation verwenden. ODE/FHTBM Komplexität von Algorithmen 12. September /41 Eigenschaften von Algorithmen Fehlerfreiheit Invarianten von Schleifen Methoden-Invarianz Wie Sie effiziente Algorithmen bestimmen Speicherplatz-Komplexität Laufzeit-Komplexität gemeinsame Kostenmaße bester Fall, ungünstigster Fall, durchschnittlicher Fall ODE/FHTBM Komplexität von Algorithmen 12. September /41 5

6 Ein typische mathematische Funktion wird benutzt zur Anzeige der Komplexität eines Algorithmus. Die meisten Algorithmen haben einen primären Parameter N, der die Laufzeit am stärksten beeinflusst. Parameter N könnte sein Grad der Polynomialität, Größe der Datei, die sortiert oder durchsucht werden soll, Anzahl Zeichen in der Zeichenkette, oder andere Maßeinheit für die Größe des Problems, das untersucht wird. Häufig ist es direkt proportional zur Größe der Datenmenge, die verarbeitet wird. Damit verwenden wir ein vereinfachtes Modell, in dem wir uns darauf beschränken, nur den einen Parameter N zu betrachten. ODE/FHTBM Komplexität von Algorithmen 12. September /41 Wir wollen die Anforderungen an die Ressource (Laufzeit oder Speicherplatz) durch N ausdrücken und dabei mathematische Formeln verwenden, die für große Parameterwerte korrekt sind (um dadurch das Implementierungsproblem und das Problem der Massen-Eingabedaten zu überwinden). Algorithmen bewirken typischerweise eine Laufzeit-Komplexität in Abhängigkeit von den folgenden Funktionen, siehe die folgenden Folien. Beachten Sie, dass wir damit eine Klassifikation für alle Algorithmen erhalten. ODE/FHTBM Komplexität von Algorithmen 12. September /41 // return number of distinct triples (i, j, k) // such that a[ i] + a[ j] + a[ k] = 0 public static int count ( int [] a) { int N = a. length ; int cnt = 0; for ( int i = 0; i < N; i ++) { for ( int j = i +1; j < N; j ++) { // N=N^1 for ( int k = j +1; k < N; k ++) { // (N ^2)/2 if (a[i] + a[j] + a[k] == 0) { // {N ^3/6 cnt ++; return cnt ; ODE/FHTBM Komplexität von Algorithmen 12. September /41 6

7 Abbildung: : 1, log(x), x, x log(x), x 2, x 3,.. ODE/FHTBM Komplexität von Algorithmen 12. September /41 : 1 Konstante Laufzeit Die meisten Anweisungen der meisten Programme werden nur ein oder höchstens einige wenige Male ausgeführt. Wenn das für alle Anweisungen eines Programms zutrifft, sagen wir, dass das Programm eine konstante Laufzeit hat. Zum Beispiel: Verdopplung der Eingabelänge hat fast kein Einfluss auf die Laufzeit. ODE/FHTBM Komplexität von Algorithmen 12. September /41 : logn Logarithmische Laufzeit Wenn die Laufzeit eines Programms logarithmisch ist, wird das Programm geringfügig langsamer, wenn N größer wird. Dieser Laufzeit-Effekt tritt üblicherweise in Programmen auf, die ein großes Problem dadurch lösen, dass sie es in eine Reihe kleinerer Probleme umwandeln, wobei sie die Größe des Problems in jedem Schritt um einen konstanten Faktor verringern. Zum Beispiel: Verdopplung vermehrt die Laufzeit mit ein konstanter Beitrag. In dem Bereich, der uns interessiert, können wir die Laufzeit als kleiner als eine große Konstante betrachten. Die Basis des Logarithmus verändert die Konstante, allerdings nicht stark. ODE/FHTBM Komplexität von Algorithmen 12. September /41 7

8 : N Lineare Laufzeit Wenn die Laufzeit eines Programms linear ist, bedeutet das im Allgemeinen, dass jedes Element der Eingabe nur wenig bearbeitet wird. Diese Situation ist optimal für einen Algorithmus, der N Eingaben bearbeiten muss (oder Prozedur N Ausgaben). ODE/FHTBM Komplexität von Algorithmen 12. September /41 : NlogN NlogN Laufzeit Die NlogN Laufzeit entsteht, wenn Algorithmen ein Problem lösen, indem sie es in kleinere Subprobleme zerlegen, die unabhängig gelöst werden, um dann die Lösungen zu kombinieren. Wenn sich N verdoppelt, wird die Laufzeit etwas (aber nicht viel) mehr als verdoppelt. ODE/FHTBM Komplexität von Algorithmen 12. September /41 : N 2 und N 3 N 2 Wenn die Laufzeit eines Algorithmus quadratisch ist, eignet sich dieser Algorithmus in der Praxis nur für relativ kleine Probleme. Quadratische Laufzeiten entstehen typischerweise bei Algorithmen, die Paare von Datenelementen verarbeiten (möglicherweise in einer doppelt verschachtelten Schleife) N 3 Analog hat ein Algorithmus, der Tripels von Datenelementen verarbeitet (möglicherweise in einer dreifach verschachtelten Schleife) eine kubische Laufzeit. Verdoppelt sich N, so verachtfacht sich die Laufzeit. ODE/FHTBM Komplexität von Algorithmen 12. September /41 8

9 : 2 N Es gibt nur wenige Algorithmen mit exponentieller Laufzeit, die sich für die Praxis eignen. Solche Algorithmen sind aber das natürliche Ergebnis von brute-force Lösungen für Probleme. Wenn sich N verdoppelt, wächst die Laufzeit im Quadrat! 2 (2 N) = (2 N ) 2 ODE/FHTBM Komplexität von Algorithmen 12. September /41 Werte von übliche Funktionen lgn N N NlgN N(lgN) 2 N 3/2 N ODE/FHTBM Komplexität von Algorithmen 12. September /41 : Spezielle Funktionen Funktion Beschreibung Beispiel Annäherung für große Werte x Bodenfunktion 3.14 = 3 x x Deckefunktion 3.14 = 4 x lgn Binärer Logarithmus lg(1024) = ln(N) F N Fibonacci Zahlen F 10 = 55 φ N / 5 H N Harmonische Zahlen (Summe) sum = ln(n) + γ N! Fakultät-funktion 10! = (N/e) N lg(n!) lg(10!) 520 Nlg(N) 1.44N ODE/FHTBM Komplexität von Algorithmen 12. September /41 9

10 : Spezielle Konstanten Constant Value e = γ = φ = (1 + 5)/2 = ln(2) = lg(e) = 1/ln(2) = ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) Einige Vorüberlegungen Mit die Effizienz von Algorithmen vergleichen In den meisten Fällen entscheidet sich die Effizienz von Algorithmen damit, wie die (mathematischen) Operationen auf einer Datenstruktur implementiert sind. Andererseits beeinflusst aber auch die ausgewählte, zu Grunde liegende Datenstruktur die Effizienz. Algorithmen können also schneller werden, wenn wir die Datenstruktur ändern. Was bedeutet schnell oder langsam? ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) von f(n) Zur Begrenzung des Fehlers, den wir machen, wenn wir kleine Ausdrücke in Formeln ignorieren Zur Begrenzung des Fehlers, den wir machen, wenn wir die Teile eines Programms ignorieren, die nur wenig zu dem Ganzen beitragen, das wir analysieren Um uns Algorithmen anhand der Obergrenzen ihrer Gesamtlaufzeit klassifizieren zu lassen schnell und langsam lassen sich ermitteln, dargestellt durch O-Notation: O(f (N)) - Groß-Oh von f (N) Die O-Notation beschreibt die Relation ist proportional zu. Wie erwähnt, ist die Untersuchung der Eingabe eine asymptotische Herangehensweise an den ungünstigsten Fall. ODE/FHTBM Komplexität von Algorithmen 12. September /41 10

11 von f(n) Wachstum von Funktionen: Verhalten für großes N f (N) f (N) = N 2 f (N) = Nlog(N) N ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) O-Notation: O(f (N)) - Groß-Oh von f (N) O(f (N)) - Groß-Oh von f (N) Grob gesagt: Die Menge der Funktionen, die nicht schneller als konstante f (N)-Mal zunehmen, wenn N groß wird. Dabei ist N die (Größe oder Länge der) Eingabe(-Daten). Präzise ausgedrückt: Die Menge der Funktionen g(n) : N R wird als O(f (N)) bezeichnet, wenn für jedes g(n) die Konstanten c 0 R + und N 0 N existieren, so dass zutrifft: g(n) c 0 f (N) für alle N > N 0 Tücke: Zwar würden wir einen Algorithmus, der N 2 Nanosekunden braucht, einem vorziehen, der mehr als logn Jahrhunderte braucht, aber diese Entscheidung könnten wir nicht auf der Basis von O-Notation treffen. ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) Grundsätzlich können wir Ausdrücke erweitern, indem wir O-Notation so verwenden, als wäre das O nicht vorhanden, und dann bis auf den größten Ausdruck alle fallen lassen. Wenn wir beispielsweise diesen Ausdruck erweitern: (O(N) + O(1))(O(N) + O(logN) + O(1)) erhalten wir sechs Summanden O(N 2 ) + O(NlogN) + O(N) + O(N) + O(logN) + O(1) ODE/FHTBM Komplexität von Algorithmen 12. September /41 11

12 von f(n) Wir können alle O-Ausdrücke bis auf die größten fallen lassen, womit die Annäherung bleibt: O(N 2 ) + O(NlogN). O(N 2 ) ist eine gute Annäherung an diesen Ausdruck, wenn N groß ist. Diese Formel mit einem O-Ausdruck bezeichnen wir als einen asymptotischen Ausdruck. ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) g(n) = 3N N logN O(N 3 ) g(n) = 3N N logN O(N 4 ) g(n) = g(n) = { 5N, N N 2, N > { N 2, N N, N > enthält auch: O(N 2 ) O(N) ODE/FHTBM Komplexität von Algorithmen 12. September /41 Beispiel: Das Sieb des Eratosthenes von f(n) class Primes { public static void main ( String [] args ) { int N = integer. parseint ( args [0]); boolean [] a = new boolean [ N]; for ( int i = 2; i < N; i ++) a[ i] = true ; for ( int i = 2; i < N; i ++) if ( a[ i]!= false ) for ( int j = i, i* j < N; j ++) a[i*j] = false ; for ( int i = 2; i < N; i ++ ) if ( i > N ) if (a[i]) System. out. println (" " + i); System. out. println (); ODE/FHTBM Komplexität von Algorithmen 12. September /41 12

13 von f(n) Das Sieb des Eratosthenes - Komplexität In der Implementierung gibt es vier Schleifen, von denen drei sequenziell auf die Array-Elemente zugreifen, vom Beginn zum Ende. Die sequenzielle Verarbeitung ist entscheidend. Wir könnten die erste Schleife folgendermaßen ändern: for(i = N-1; i > 1; i--) a[i] = true; Diese Änderung hat total kein Effekt! In einer Analyse der Laufzeit ist das proportional zu N + N/2 + N/3 + N/5 + N/7 + N/ das kleiner ist als N + N/2 + N/3 + N/ Die erste N Summanden dieser Folge: N (1 + 1/2 + 1/3 + 1/ /N) = N H N = O(N logn) H N : harmonic numbers sum ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) Wir haben zwei Methoden untersucht, um Algorithmen zu analysieren Empirische Analyse Komplexitätsklassen ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) Zusammenfassung - Empirische Analyse Implementierung muss existieren. (Massen-)Daten müssen vorhanden sein. Laufzeitmessungen, ggf. unter Berücksichtigung von Systemeinflüssen Schrittweise, möglicherweise sehr kostenintensive Verbesserungen durch Kenntnis von (Neben-)Bedingungen einer speziellen Anwendung Solche (Neben-)Bedingungen können im Einzelfall sehr schnelle Einzellösungen liefern. ODE/FHTBM Komplexität von Algorithmen 12. September /41 13

14 von f(n) sklassen Beim Entwurf eines Algorithmus Konzentration auf die möglichen Eingabedaten ggf. Restriktion auf einen Eingabeparameter und die langsamsten Programmteile Abschätzung des wesentlichen Eingabeparameters mittels Laufzeitkomplexität oder Speicherplatzkomplexität Bestimme eine Komplexitätsklasse, zu der ein Algorithmus gehört. Die Komplexität eines Algorithms gegeben durch die kleinste obere Schranke für Eingaben im schlechtesten Fall. Die kleinste obere Schranke ist gegeben durch das Wachstum einer mathematischen Funktion. ODE/FHTBM Komplexität von Algorithmen 12. September /41 von f(n) Jedes implementierte Programm hat eine Laufzeit. Die Komplexitätsanalyse liefert mit der kleinsten oberen Schranke die schnellste Laufzeit im schlechtesten Fall (oder den benötigten Speicherplatz) jedes Algorithmus bzgl. der mathematischen Operationen. Wir erhalten Kenntnis über die Komplexitätsanalyse die beste Lösung, die gleichzeitig eine absolute Grenze bildet. Die Programmlaufzeit eines implementierten muss nicht der Laufzeit entsprechen, die durch eine Komplexitätsklasse beschrieben wird. Wir wollen in diesem Kurs Algorithmen für die zumeist verwendeten Operationen die besten Algorithmen kennenlernen. ODE/FHTBM Komplexität von Algorithmen 12. September /41 14

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

Programmieren und Problemlösen

Programmieren und Problemlösen Dennis Komm Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 27. Februar 2019 Komplexität von Algorithmen Aufgabe Primzahltest Schreibe ein Programm, das eine ganze Zahl x als Eingabe

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

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

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

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

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

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

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

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

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

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

Abschnitt 7: Komplexität von imperativen Programmen

Abschnitt 7: Komplexität von imperativen Programmen Abschnitt 7: Komplexität von imperativen Programmen 7. Komplexität von imperativen Programmen 7 Komplexität von imperativen Programmen Einf. Progr. (WS 08/09) 399 Ressourcenbedarf von Algorithmen Algorithmen

Mehr

Komplexität von Algorithmen OOPM, Ralf Lämmel

Komplexität von Algorithmen OOPM, Ralf Lämmel Ganz schön komplex! Komplexität von Algorithmen OOPM, Ralf Lämmel 885 Motivierendes Beispiel Algorithmus Eingabe: ein Zahlen-Feld a der Länge n Ausgabe: Durchschnitt Fragen: sum = 0; i = 0; while (i

Mehr

Ziele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1)

Ziele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1) Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 10: Komplexität von Algorithmen und Sortierverfahren Prof. Dr. David Sabel Lehr- und Forschungseinheit

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

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen Ludwig-Maximilians-Universität München München, 16.04.2018 Institut für Informatik Prof. Dr. Thomas Seidl Anna Beer, Florian Richter Algorithmen und Datenstrukturen SS 2018 Übungsblatt 1: Grundlagen Tutorien:

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

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

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

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 4 Abgabe: Montag, 13.05.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes Gruppenmitglieds

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

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

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

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache

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

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall: Laufzeit von Quicksort im Mittel. Wir wollen die erwartete Effizienz von Quicksort ermitteln. Wir nehmen an, die Wahrscheinlichkeit, dass das gewählte Pivot-Element a j das k-t kleinste Element der Folge

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

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge

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

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen I Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Algorithmus..................................... 2 Problem

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Abschnitt 11: Korrektheit von imperativen Programmen

Abschnitt 11: Korrektheit von imperativen Programmen Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961

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

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

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

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

Mehr

Informatik B von Adrian Neumann

Informatik B von Adrian Neumann Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000

Mehr

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1) für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Asymptotische Komplexität): Ordnen Sie die folgenden Funktionen nach

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 2, Donnerstag 30.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 2, Donnerstag 30. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 2, Donnerstag 30. Oktober 2014 (Laufzeitanalyse MinSort / HeapSort, Induktion) Junior-Prof.

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

Informatik II. Woche 15, Giuseppe Accaputo

Informatik II. Woche 15, Giuseppe Accaputo Informatik II Woche 15, 13.04.2017 Giuseppe Accaputo g@accaputo.ch 1 Themenübersicht Repetition: Pass by Value & Referenzen allgemein Repetition: Asymptotische Komplexität Live-Programmierung Aufgabe 7.1

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

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

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

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

Mehr

Zunächst ein paar einfache "Rechen"-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt:

Zunächst ein paar einfache Rechen-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt: Der Groß-O-Kalkül Zunächst ein paar einfache "Rechen"-Regeln: G. Zachmann Informatik 1 - WS 05/06 Komplexität 22 Additionsregel Lemma, Teil 1: Für beliebige Funktionen f und g gilt: Zu beweisen: nur das

Mehr

Algorithmen und Datenstrukturen 04

Algorithmen und Datenstrukturen 04 (17. Mai 2012) 1 Besprechung Blatt 3 Hinweise 2 Induktion Allgemeines Beispiele 3 Rekursion Lineare Rekursion und Endrekursion Entrekursivierung Weitere Rekursionstypen 4 O-Kalkül Allgemein Wichtige Formeln

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Ziele 2 Komplexität von Algorithmen Zeit- und Speicherplatzbedarf einer Anweisung berechnen können Zeit- und Speicherplatzbedarf einer Methode berechnen können Martin Wirsing Unterschiede der Komplexität

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016

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

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 2, Donnerstag 31.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 2, Donnerstag 31. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 2, Donnerstag 31. Oktober 2013 (Laufzeitanalyse MinSort / HeapSort, Induktion) Junior-Prof.

Mehr

1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen

1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen Gliederung 1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen 1/1, Folie 1 2009 Prof. Steffen Lange - HDa/FbI - Effiziente

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration

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

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

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Tutoraufgabe 1 (Verifikation):

Tutoraufgabe 1 (Verifikation): Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.

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

A6.1 Logarithmus. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A6.1 Logarithmus. A6.2 Landau-Notation. A6.

A6.1 Logarithmus. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A6.1 Logarithmus. A6.2 Landau-Notation. A6. Algorithmen und Datenstrukturen 8. März 2018 A6. Laufzeitanalyse: Logarithmus and Landau-Symbole Algorithmen und Datenstrukturen A6. Laufzeitanalyse: Logarithmus and Landau-Symbole Marcel Lüthi and Gabriele

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

Ein Seminarbericht von Johann Basnakowski

Ein Seminarbericht von Johann Basnakowski Ein Seminarbericht von Johann Basnakowski Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Name: Johann Basnakowski

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Organisatorisches Vorlesung: Montag 11 13 Uhr Ulf Leser RUD 26, 0 115 Mittwoch 11 13 Uhr Ulf Leser RUD

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Wiederholung: Validation Validation: nicht-formaler

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Technische Universität München SoSe 2017 Fakultät für Informatik, I-16 Lösungsblatt 4 Dr. Stefanie Demirci 31. Mai 2017 Rüdiger Göbl, Mai Bui Algorithmen und Datenstrukturen Aufgabe 1 Komplexität Berechnung

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

Effiziente Algorithmen mit Python. D. Komm, T. Kohn

Effiziente Algorithmen mit Python. D. Komm, T. Kohn Effiziente Algorithmen mit Python D. Komm, T. Kohn Copyright c 2017, ABZ, ETH Zürich http://www.abz.inf.ethz.ch/ Version vom 7. September 2017. Effiziente Algorithmen mit Python 3 1 Effizienz Effizient

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

AlgoDat Fragen zu Vorlesung und Klausur

AlgoDat Fragen zu Vorlesung und Klausur AlgoDat Fragen zu Vorlesung und Klausur Hochschule Fulda FB AI Sommersemester 2018 http://ad.rz.hs-fulda.de Peter Klingebiel, HS Fulda, AI Vorab: Was ist wichtig? AlgoDat - Fragen - Peter Klingebiel -

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 011 Übungsblatt 30. Mai 011 Grundlagen: Algorithmen und Datenstrukturen

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

Beispielprüfung CuP WS 2015/2016

Beispielprüfung CuP WS 2015/2016 Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Suchen und Amortisierte Analyse Heute: Suchen / Schreibtischtest Amortisierte Analyse Nächste

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 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

(08 - Einfache Sortierverfahren)

(08 - Einfache Sortierverfahren) Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um

Mehr

Volker Kaatz. Faktorisierung. Faktorisierung. Problem und Algorithmen. Relevanz in der Kryptographie

Volker Kaatz. Faktorisierung. Faktorisierung. Problem und Algorithmen. Relevanz in der Kryptographie Faktorisierung Problem und Algorithmen Relevanz in der Kryptographie Inhalt Begriff Faktorisierung Algorithmen (Übersicht) Strategie und Komplexität Pollard p-1 Algorithmus Pseudocode, mathematische Basis,

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr