Komplexität von Algorithmen
|
|
- Kora Peters
- vor 7 Jahren
- Abrufe
Transkript
1 Komplexität von Algorithmen Ziel Angabe der Effizienz eines Algorithmus unabhängig von Rechner, Programmiersprache, Compiler. Page 1
2 Eingabegröße n n Integer, charakterisiert die Größe einer Eingabe, die zu verarbeiten ist, z.b. Länge einer Liste, die zu durchsuchen ist, Anzahl der Knoten eines Baumes, die zu drucken sind, Anzahl von Elementen eines Arrays, die zu sortieren sind, Anzahl der Wörter in der Eingabe, die zu parsen sind. Komplexität eines Algorithmus a) Ausmaß an Speicherplatz b) Ausmaß an Rechenzeit O Obere Komplexitätsgrenze (höchstens) Untere Komplexitätsgrenze (mindestens) Genaue Komplexität (genau) Page 2
3 Bedeutung der O-Notation Aussage: Bedeutet: Das Programm erledigt seine Aufgabe in O(g(n)) Schritten. Tatsächliche Anzahl der ausgeführten Schritte ist nicht größer als eine Konstante K mal g(n). Definition der O-Notation f ( n) O ( g ( n)) f ist g.-ter Ordnung Genau dann, wenn es positive Konstanten K und n 0 gibt, so dass f(n) K g(n) für alle n n 0. Page 3
4 Beispiel f ( n) O ( g ( n)) f ist g.-ter Ordnung da 8n 3 + n ist O(n 3 ) 8n 3 + n n 3 für alle n 1 Bedeutung der O-Notation K * g(n) f(n) n n 0 Page 4
5 Interpretationen der Grafik f(n) = O(g(n)) genau dann, wenn die Kurve zu K x g(n) für ein konstantes Vielfaches von g(n) oberhalb der Kurve zu f(n) liegt, sobald ein genügend großer Wert n 0 erreicht ist. Es gibt eine Proportionalitätskonstante K, so dass die Kurve zu f(n) oben durch die Kurve zu K x g(n) begrenzt ist, sobald ein genügend großes n 0 erreicht ist. Für alle Werte (außer endlichen vielen kleinen Werten) von n liegt die Kurve zu f(n) unterhalb der Kurve zu einem genügend großen konstanten Vielfachen von g(n). Eigenschaften der O-Notation Betont die dominante Größe (höchster Exponent) für Aufgaben mit großem Umfang. Ignoriert Größen kleinerer Ordnung und Aufgaben mit kleinem Umfang. Ignoriert Proportionalitätskonstante. Im Grunde eine sehr ungenaue Abschätzung! Es soll eben nur eine Abschätzung der oberen Grenze des Aufwands angegeben werden ("worst case"). Page 5
6 Definition der -Notation f ( n) ( g ( n)) f ist g.-ter Ordnung Genau dann, wenn es positive Konstanten K und n 0 gibt, so dass f(n) K g(n) für alle n n 0 Definition der -Notation f ( n) ( g ( n)) f ist g.-ter Ordnung Genau dann, wenn und f ( n) O ( g ( n)) f ( n) ( g ( n)) Page 6
7 Kosten Bedeutung von gross-o Beschreibt die allgemeine Form der Komplexitätskurve konstant O(1) logarithmisch O(log n) linear n log n O(n) O(nlogn) quadratisch O(n 2 ) kubisch O(n 3 ) exponentiell O(2 n ), Berechnung geschlossener Funktionen Suche unter gewissen Bedingungen Suche im ungünstigen Fall, Fakultät Sortieren Optimierungsprobleme O(2 N ) O(N 3 ) O(N 2 ) O(NlogN) O(N) O(logN) O(l) Problemgrösse N Page 7
8 zum Beispiel N log 2 N N*log 2 N N 2 2 N , ,536 4,294,967,296.. Wie kann man Gross-O bestimmen? 5 Fälle zur Bestimmung der Laufzeit-Komplexiät 1. Schleifen 2. geschachtelte Schleifen 3. Aneinanderreihung von Anweisungen 4. If-then-else Anweisung 5. Logarithmische Komplexität Page 8
9 Fall1: Schleifen Die Laufzeit in einer Schleife besteht hauptsächlich aus der Laufzeit innerhalb der Anweisungen in der Schleife multipliziert mit der Anzahl von Iterationen. for (i=1; i <= n; i++) { n Durchläufe m = m + 2; Konstante Zeit c Gesamtzeit = c * n = cn = O(N) Fall 2: geschachtelte Schleifen Analyse von Innen nach Aussen. Gesamte Laufzeit ist das Produkt aller Schleifen. äussere Schleife n- Durchläufe for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { k = k+1; konstante Zeit innere Schleife n- Durchläufe Gesamtzeit = c * n * n * = cn 2 = O(N 2 ) Page 9
10 Fall 3: Aneinanderreihung von Anweisungen Addiere die Komplexität aller Anweisungen. konstante Zeit konstante Zeit äussere Schleife n- Durchläufe x = x +1; for (i=1; i<=n; i++) { m = m + 2; for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { k = k+1; konstante Zeit n- Durchläufe innere Schleife n- Durchläufe Gesamtzeit = c 0 + c 1 n + c 2 n 2 = O(N 2 ) Fall 4: If-Anweisung Im schlechtesten Fall: der Test, plus entweder der if-true Teil oder der else Teil (der grössere von beiden!). Test: konstant nochmals if : konstant + konstant if (depth( )!= otherstack.depth( ) ) { return false; else { for (int i = 0; i < depth( ); i++) { if (!list[i].equals(otherstack.list[i])) return false; if-true Teil: konstant else Teil: ( konstant + konstant ) * n Laufzeit = c 0 + (c 1 + c 2 ) * n = O(N) Page 10
11 Fall 5: Logarithmische Komplexität Ein Algorithmus ist O(log N), wenn es konstante Zeit benötigt das Problem auf einen Bruchteil zu reduzieren (z.b. zu halbieren ) Beispiel binäres Suchen : Suche ein Wort in einem Wörterbuch mit n Seiten Suche in der Mitte des Buchs. Ist das Wort vor oder nach der Mitte? Wiederholen des Vorgangs im entsprechenden Teil des Wörterbuchs bis das Wort gefunden ist. Laufzeitanalyse des Summe-Algorithmus s ( n ) i n kann in linearer Zeit berechnet werden. i 1 Wie man aber schon seit Gauss weiß, ist das nicht optimal: n -2 n-1 n n gerade: s(n) = ½ n (n+1) n ungerade: s(n) = ½ (n-1) n + n ----> = (n/2 ½) n + n ----> = (n/2 + ½) n ----> = ½ n (n+1)... erlaubt die Berechnung von s(n) in einem Schritt, also in konstanter Zeit. (Es wird nicht berücksichtigt, dass es eine Addition, eine Multiplikation und eine Division sind.) Page 11
12 Türme von Hanoi Gegeben: Drei Stäbe auf denen n unterschiedlich große Scheiben stecken. Stäbe und Scheiben eindeutig benannt, beispielsweise Stäbe A, B, C und für n = 3 Scheiben 1, 2, 3 Ziel: Kompletten Turm von einem Startstab (hier A) auf einen anderen Zielstab versetzen, z.b. B A B C Regeln 1. Es darf immer nur die oberste Scheibe von einem Stab auf einen anderen versetzt werden. 2. Eine größere Scheibe darf niemals auf einer kleineren liegen. Rekursion: Türme von Hanoi Lösen des Problems für die Spitze (n - 1) Scheiben. from to help Wenn man es für (n-1) Scheiben löst, dann geht es auch mit n. Rekursionsverankerung: 1 Scheibe transportieren. Page 12
13 Türme von Hanoi public class Hanoi { public static void main(string[] args){ hanoi( Integer.parseInt(args[0]), 'A', 'B', 'C' ); static void hanoi(int discs, char from, char to, char help) { if( discs!= 1) { hanoi(discs - 1, from, help, to); // now you can move the lowest disc! hanoi(discs - 1, help, to, from); System.out.println( discs + moved " + from + "-->" + to); Türme von Hanoi Page 13
14 Komplexität der Türme von Hanoi: Sie T n die Anzahl der Bewegungen um n Scheiben zu versetzen. T 0 = 0 T n = T n T n-1 => T n = 2 T n-1 +1 für n>1 Beweis durch umformen: wir untersuchen: T n = 2 T n T 0 = 0 T n +1= 2 T n T 1 = 1 Sei U n = T n + 1 T 2 = 3 dann ist T 3 = 7 U o = 1 T n = 2 n -1????? und U n = 2 U n-1 für n > 0 => U n = 2 n => T n = 2 n -1 Die Türme von Hanoi sind O (2 n ) Fibonacci Folge Wie viele Kaninchen leben nach einem Jahr? (Leonardo da Pisa, Filius des Bonacci 1202) Angenommen, jedes Paar erzeugt jeden Monat ein weiteres Paar, wobei Kaninchen im Alter von zwei Monaten geschlechtsreif sind. Wie viele Paare Kaninchen leben nach einen Jahr ausgehend von einem Paar? Page 14
15 Fibonacci Folge Laufzeitanalyse Fibonacci-Algorithmus Fibonacci-Rekursionsgleichung: fib(0) = 0 fib(1) = fib(2) = 1 fib(i) = fib(i-1) + fib(i-2) für i > 2 Laufzeit: Tfib(1) = 1 und Tfib(2) = 1 Tfib (i) = Tfib(i-1) + Tfib(i-2) + 1 (+ 1 für die Addition) Die Fibonacci-Zahlen (und ihr rekursiver Berechnungsaufwand) wachsen schneller als jede polynomielle Funktion. Sie wachsen genauso wie Kaninchenpopulationen exponentiell. Page 15
16 Aufwand der rekursiven Fibonacci-Berechnung Bsp.: Berechnungsbaum für fib( 5 ) Ergebnis wie hoch ist der Aufwand? Berechnungsaufwand: Fibonacci rekursiv rekursive Aufrufe mit einer Addition für jede Stufe: n > 2 Aufwand( n ) = Aufwand( n - 1 ) + Aufwand( n - 2 ). genau wie die Werte selbst: exponentiell (mit Basis 1,618034). Unnötig hoher Aufwand, da Fibonacci Zahlen mehrfach berechnet werden Was schlagen Sie zur Lösung vor? Page 16
17 Fibonacci iterativ Fibonacci Rekursionsformel: fib 1 = 1, fib 2 = 1, fib n = fib n fib n - 2 (für n > 2) Jede Rekursion lässt sich als Schleife formulieren: int result = fib1 = fib2 = 1; i = 2; while ( i < n ) { i = i + 1; result = fib1 + fib2; // für nächsten Schleifendurchlauf: fib1 = fib2; fib2 = result; // while Idee: Vorgänger aufheben Berechnungsaufwand linear: O(n) n - 1 Schleifendurchläufe Gestiegener Speicherbedarf: 3 Variablen Lösen der Rekursionsgleichung! Beweis per Induktion Raten und Ausprobieren von Lösungen bzw -Abschätzungen (vgl. auch die Lösung zu s ( n ) i ) selten trivial!! Mathematik (Analysis) n i 1 Bekannte Algorithmen-Schemata nutzen LERNEN!! Page 17
18 Abschätzen der Fibonacci-Rekurrenz! Fibonacci-Rekursionsgleichung: fib(1) = fib(2) = 1 fib(i) = fib(i-1) + fib(i-2) für i > 2 Naheliegend ist, dass g(h) = 2 n eine obere Abschätzung ist fib(0) = 0 < 2 0 und fib (1) = 1 < 2 1 Induktionsschritt: Einsetzen in die Rekursionsgleichung ergibt fib(i) = fib(i-1) + fib(i-2) < 2 i i-2 < 2*2 i-1 = 2 i die zweiten < Abschätzung ist jedoch ziemlich großzügig!! Abschätzen der Fibonacci-Rekurrenz! Untere Grenze: Wir zeigen, dass für gewisse Konstanten a,c gilt: f(n) >= ac n, n >= n 0 Induktives einsetzen in Rekursionsgleichung: fib(n) = fib(n-1) + fib(n-2) >= ac n-1 + ac n-2 = ac n (c/c 2 + 1/c 2 ) = ac n ((c+1)/c 2 ) Letzter Ausdruck sollte >= ac n sein d.h.: ((c+1)/c 2 ) >= 1 Dies ist äquivalent zu c 2 c 1 <= 0. Eine Lösung der quadratischen Gleichung lautet c = (1+ 5) / 2 (goldener Schnitt). Damit ist der Induktionsschritt gezeigt für c <= ( 5 + 1) / 2 = Der Induktionsanfang gilt für geeignete Konstante a und Startwert n 0. Obere Grenze: Durch vertauschen von >= und <= zeigt man, dass f(n) <= bd n für d >= (1+ 5) / 2 und eine Konstante b gilt. Somit : 1 5 fib( n) 2 n Page 18
19 Weitere Komplexitätsklassen! Neben den bisher betrachteten deterministischen Algorithmen und Komplexitätsklassen gibt es noch nichtdeterministische Problemklassen: P bezeichnet die Klasse aller in polynomieller Zeit ablaufenden Algorithmen, bzw die Klasse aller Probleme, für die solche Algorithmen bekannt sind. NP bezeichnet die Klasse der Probleme, die nichtdeterministischpolynomiell lösbar sind: man rät eine (potentielle) Lösung und kann dann in polynomieller Zeit testen, ob es eine Lösung ist. Wenn es exponentiell viele Möglichkeiten gibt, die man jeweils in polynomieller Zeit generieren kann, ist das Problem deterministisch-exponentiell (EXP) Oft kann man das raten durch polynomielle Heuristiken unterstützen. Weitere Komplexitätsklassen! (2) Offensichtlich ist P NP. Ob NP P ist weiss man nicht, vermutlich nicht. Exponentiell und NP ist aber immer noch besser als unentscheidbar (Halteproblem). Auch da gibt es in der Komplexitätstheorie verschiedene Zwischenklassen... Der rekursive Fibonacci-Algorithmus ist exponentiell. Es gibt Besseres! - Beliebig gute Programmierkenntnisse nützen nichts, wenn man einen suboptimalen Algorithmus ausgewählt hat. Page 19
20 Literatur Helmut Balzert 1999 Lehrbuch Grundlagen der Informatik Spektrum Akademischer Verlag, Heidelberg Barton, Edward G. Jr.; Berwick Robert C. und Eric Sven Ristad (1987): Computational Complexity and Natural Language. Cambridge, Mass.: MIT Press. Standish, Thomas A. (1998): Data Structures in Java. Reading, Mass.: Addison Wesley Longman, Inc. Page 20
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( )= 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
Mehr11. 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
MehrKapitel 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Ü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
MehrKapitel 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Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.
Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.
MehrProf. Dr. Margarita Esponda
Die O-Notation Analyse von Algorithmen Die O-Notation Prof. Dr. Margarita Esponda Freie Universität Berlin ALP II: Margarita Esponda, 5. Vorlesung, 26.4.2012 1 Die O-Notation Analyse von Algorithmen Korrektheit
MehrLaufzeit 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
Mehr11. Rekursion, Komplexität von Algorithmen
nwendung der Rekursion 11. Rekursion, Komplexität von lgorithmen Teil 2 Java-eispiele: Power1.java Hanoi.java Rekursiv definierte Funktionen - Fibonacci-Funktion - Fakultät, Potenz -... Rekursiver ufbau
Mehr2. Algorithmenbegriff
2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen
MehrEinstieg 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
MehrAbgabe: (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,
MehrLösungsvorschlag Serie 2 Rekursion
(/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma
MehrAchtung: 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
MehrKapitel 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
MehrRekursive Funktionen
Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?
MehrGrundlagen 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
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
MehrEinfü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
Mehr4 Effizienz und Komplexität 3.1 1
4 Effizienz und Komplexität 3.1 1 Effizienz (efficiency): auf den Ressourcen-Verbrauch bezogene Programmeigenschaft: hohe Effizienz bedeutet geringen Aufwand an Ressourcen. Typische Beispiele: Speichereffizienz
MehrInformatik I: Einführung in die Programmierung
Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in Public
MehrBabeș-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
MehrProgrammiertechnik 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
MehrRekursion. Sie wissen wie man Programme rekursiv entwickelt. Sie kennen typische Beispiele von rekursiven Algorithmen
Rekursion Sie wissen wie man Programme rekursiv entwickelt Sie kennen typische Beispiele von rekursiven Algorithmen Sie kennen die Vor-/Nachteile von rekursiven Algorithmen Einführung 2 von 40 Rekursiver
MehrKomplexitä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
MehrJAVA - Rekursion
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Allgemeines Fakultät Fibonacci Türme von Hanoi Übungen Informatik 1 Folie 2 Ein Objekt
MehrSpeicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrProgrammiertechnik Methoden, Teil 2
Programmiertechnik Methoden, Teil 2 Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Rekursion Oliver Haase Hochschule Konstanz 2 Definition Was ist Rekursion? Allgemein: Rekursion ist die Definition
MehrInformatik-Grundlagen
Informatik-Grundlagen Komplexität Karin Haenelt 1 Komplexitätsbetrachtungen: Ansätze Sprachentheorie Klassifiziert Mengen nach ihrer strukturellen Komplexität Komplexitätstheorie Klassifiziert Probleme
MehrGrundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem
Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung
MehrSuchen 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Überblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
Mehr12. Rekursion Grundlagen der Programmierung 1 (Java)
12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung
MehrVorkurs Informatik WiSe 16/17
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrJava 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrAlgorithmen 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Ü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
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
MehrAbschnitt: 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
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind ausgewählte Teile in Anlehnung an
Mehr3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1
3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)
MehrWS 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
MehrGrundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)
Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya
MehrAlgorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011
Algorithmen und Datenstrukturen Tafelübung 4 Jens Wetzl 15. November 2011 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:
MehrProgrammieren lernen mit Groovy Rekursion Rekursion und Iteration
Programmieren lernen mit Groovy Rekursion Seite 1 Rekursion Rekursion Ursprung lat. recurrere ~ zurücklaufen rekursive Definition Definition mit Bezug auf sich selbst Beispiel Fakultätsfunktion n! 0! =
MehrThomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)
Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 6 2. November 2010 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin
Mehr3.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
MehrAbschnitt 18: Effizientes Suchen in Mengen
Abschnitt 18: Effizientes Suchen in Mengen 18. Effizientes Suchen in Mengen 18.1 Vollständig ausgeglichene binäre Suchbäume 18.2 AVL-Bäume 18.3 Operationen auf AVL-Bäumen 18.4 Zusammenfassung 18 Effizientes
Mehr3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr
3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:
Mehr... direkte Umsetzung in Scheme. Prozeduren und von ihnen erzeugte Prozesse Gültigkeitsbereiche und Rekursion
Prozeduren und von ihnen erzeugte Prozesse Gültigkeitsbereiche und Rekursion Stand: Wir kennen Elementare ( primitive ) Operationen Kombination dieser Operationen Abstraktion zusammengesetzter Operationen
MehrAlgorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg
MehrAlgorithmen 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
MehrSortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block
Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in
MehrInformatik 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
MehrNachklausur Bitte in Druckschrift leserlich ausfüllen!
Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift
Mehr12. September 2012 Kompexität. Analyse von Algorithmen (Ziele) Empirische Analyse Beispiel Schlussfolgerungen
Komplexität von Algorithmen Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 12. September 2012 ODE/FHTBM Komplexität von Algorithmen 12. September 2012 1/41 (Ziele)
MehrEinführung in die Informatik 2
Einführung in die Informatik 2 Suchen in Datenmengen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.
MehrTheoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
MehrBeispiel 1: Fakultät
16. Rekursion Beispiel 1: Fakultät Rekursive Definition der Fakultät (Mathematik) n! = 1 falls n=0 n*(n-1)! falls n>0 Programmierung mittels einer rekursiven Funktion in C++ double fakultaet(int n) if
MehrInduktion und Rekursion
Mathematische Beweistechniken Vorkurs Informatik SoSe13 10. April 013 Mathematische Beweistechniken Ziel Mathematische Beweistechniken Ziel beweise, dass eine Aussage A(n) für alle n N gilt. Beispiel Für
Mehr3. Anweisungen und Kontrollstrukturen
3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen
MehrDynamische Programmierung. Problemlösungsstrategie der Informatik
als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung
MehrAlgorithmen. Sortieren durch Auswählen, Sortieren durch Mischen und Vergleich der Laufzeit. Abschätzung der Laufzeit eines Algorithmus, O-Notation.
Algorithmen Sortieren durch Auswählen, Sortieren durch Mischen und Vergleich der Laufzeit Abschätzung der Laufzeit eines Algorithmus, O-Notation. Rekursion Einführung in die Informatik: Programmierung
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,
MehrKasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck
Kasparov versus Deep Blue Institut für Theoretische Informatik Universität zu Lübeck 18. Vorlesung zu Informatik A für MLS 14. Dezember 2006 Die Lernziele der heutigen Vorlesung und der Übungen. 1 Das
MehrUE 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
MehrProgrammieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Special Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe: Wertkopie -By- public class MethodParameters { public
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare
MehrKurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am
1 Aufgabe 1 Analysiert man das Verfahren anhand des angegebenen Beispiels, ist schnell zu erkennen, dass das erste Element von infeld2 nach outfeld an Index 2 kopiert wird, das zweite den Index 4 bekommt,
MehrProgrammierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.
1 Programmierung 2 Dynamische Programmierung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 2 Übersicht Stammt aus den Zeiten als mit Programmierung
MehrInformatik 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
MehrRekursive Auswertungsprozesse in Haskell
Rekursive Auswertungsprozesse in Haskell Auswertungsprozess, der durch eine rekursive Funktion bewirkt wird Beispiel: Auswertung der rekursiven Fakultätsfunktion 0! := 1 n! := n (n 1)! fakultaet x = if
MehrJavakurs 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
Mehr2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik
Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,
MehrDer Dreyfus-Wagner Algorithmus für das Steiner Baum Problem
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner
MehrEinführung in die Informatik I
Einführung in die Informatik I Fortgeschrittene Rekursion Prof. Dr. Nikolaus Wulff Problematische Rekursion Mittels Rekursion lassen sich Spezifikationen recht elegant und einfach implementieren. Leider
MehrProf. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015
Technische Universität Dortmund Informatik VII (Graphische Systeme) Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Übungsaufgaben zum Vorkurs Informatik Wintersemester 2015/2016 Teil I
Mehr2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:
2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden
MehrIdeen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man
Mehr2. 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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017 Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2 Vorbetrachtungen Wir betrachten rekursive Gleichungen
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
Mehrabgeschlossen unter,,,, R,
Was bisher geschah Turing-Maschinen können Sprachen L X akzeptieren entscheiden Funktionen berechnen f : X X (partiell) Menge aller Turing-akzeptierbaren Sprachen genau die Menge aller Chomsky-Typ-0-Sprachen
Mehr13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems
13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrSchnittstellen, Stack und Queue
Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In
MehrAlle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung
MehrADS: Algorithmen und Datenstrukturen
ADS: Algorithmen und Datenstrukturen Akuter Denk-Stau Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig
MehrViel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-)
Datenstrukturen (DS) Sommersemester 2015 Prof. Dr. Georg Schnitger Dipl-Inf. Bert Besser Hannes Seiwert, M.Sc. Institut für Informatik AG Theoretische Informatik Übung 0 Ausgabe: 14.04.2015 Abgabe: - Wenn
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
MehrEinstieg in die Informatik mit Java
1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking
Mehr1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...
Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.
MehrKapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte
Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In
MehrKapitel 5: Dynamisches Programmieren 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