Komplexität von Algorithmen OOPM, Ralf Lämmel
|
|
|
- Johanna Hofmeister
- vor 8 Jahren
- Abrufe
Transkript
1 Ganz schön komplex! Komplexität von Algorithmen OOPM, Ralf Lämmel
2 885 Motivierendes Beispiel Algorithmus Eingabe: ein Zahlen-Feld a der Länge n Ausgabe: Durchschnitt Fragen: sum = 0; i = 0; while (i < n) { sum += a[i]; i++; } return sum/n Was ist die Laufzeit des Algorithmus? Speicherverbrauch ist offensichtlich gering.
3 886 Komplexitätsanalyse Unmittelbare Ziele Vorhersage der Kosten Verifikation von Kosten Weitere Ziele Auswahl eines besseren Algorithmus Feststellung eines optimalen Algorithmus Im Kontext von Qualitätseigenschaften von Algorithmen: Korrektheit Effizienz Verständlichkeit...
4 887 Zeitliche Komplexität: Wie bestimmt man sie? Vergleich der Ausführung zweier Algorithmen (Programme): unerwünschte Abhängigkeit von Eingabe, Maschine, Rechnerauslastung,... Vorhersage der auszuführenden Anweisungen in Abhängigkeit von der Eingabe: unerwünschte Abhängigkeit von Sprache, Compiler, Maschine, u.a. Wie oben, aber Zählen von wesentlichen Basisoperationen - hier: arithmetische und Boolesche Operationen sowie Vergleiche. Wir lassen hier Zugriffe auf Speicher (Variablen) unbeachtet. (Zeit-) Komplexität = Anzahl der Basisoperationen (in Abhängigkeit von Eingabe (-größe))
5 888 Zählen der Operationen für die Berechnung des Durchschnitts Program # Operationen 1. sum = 0; 0 2. i = 0; 0 3. while (i < n) { n+1 4. sum += a[i]; n 5. i++; n 6. } 7. return sum/n 1 Summe 3n + 2
6 Was ist die Zeitkomplexität von Matrizenmultiplikation? Basisoperationen: Multiplizieren von Matrizeneinträgen Komplexität: m * p * n Zum Beispiel: m=n=p Eingabe: a m n, b n p Ausgabe: c m p for (i=0; i<m; i++) for (j=0; j<p; j++) c ij = 0 for (k=0; k<n; k++) c ij = c ij + a ik b kj Komplexität: n 3 Komplexität hängt nur von Eingabegröße ab. (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 889
7 890 Verschiedene Zeitkomplexitäten T(n) - Genaue Anzahl der Operationen TW(n) - Komplexität im schlechtesten Fall (engl.: worst-case complexity): die größte Anzahl von Basisoperationen unten allen möglichen Eingaben der Größe n. TA(n) - Komplexität im Durchschnitt (engl.: average complexity): die durchschnittliche Anzahl von Basisoperationen für alle möglichen Eingaben der Größe n.
8 891 Was ist die Zeikomplexität von Linearer Suche? boolean linear(int[] a, int x) r = false i = 0 i < a.length &&!r r = a[i] == x i = i + 1 return r Basisoperationen: hier nur Vergleiche
9 892 Schlimmster Fall: Das Element ist nicht zu finden. boolean linear(int[] a, int x) r = false i = 0 i < a.length &&!r r = a[i] == x i = i + 1 return r Vergleiche alle n Elemente. TW(n) = n
10 893 Durchschnittlicher Fall Fall 1: x nicht in a, siehe TW(n) Fall 2: x kommt in a vor. Annahme: alle Elemente verschieden in a. Es gibt ein i so dass x auf i-ter Position mit 0 i < n. Wahrscheinlichkeit für beliebiges i: 1/n i+1 Vergleiche benötigt Für alle i: n = n (n + 1) / 2 Nach Wichtung: (n + 1) / 2
11 894 Durchschnittlicher Fall Zu kombinieren: Fall 1: n Fall 2: (n + 1) / 2 Annahme: q ist Wahrscheinlichkeit für Fall 2. TA(n) = (1 - q) n + q (n + 1) / 2 Zum Beispiel: q = 0.5 TA(n) = 1/2 n + 1/4 (n + 1) = 3/4 n + 1/4 3/4 aller Elemente werden verglichen.
12 895 Speicherkomplexität Speicherplatz für Programm hier vernachlässigt. Speicherplatz für Eingabe Konstant für skalare Werte Feldgröße für Felder Speicherkomplexität = Extra Speicherplatz für Arbeitsspeicher Ausgabe S(n): Speicherkompl. in Abh. von Eingabegröße Analog: SW(n) und SA(n) Algorithmus in place für konstantes S(n)
13 896 Was ist die Speicherkomplexität von MergeSort? MergeSort benötigt Arbeitsspeicher. Implementation: public static void mergesort(int[] a) { int[] temp = new int[a.length]; mergesort(a,temp,0,a.length-1); } S(n) = n Ist n optimal? in place Arbeits- speicher
14 897 Optimalität von Algorithmen Ein Algorithmus ist optimal wenn es keinen Algorithmus für das gleiche Problem gibt, dessen Zeit- oder Speicherkomplexität besser ist. Beachte: Mehrere Dimensionen: TW(n), TA(n), SW(n), SA(n)
15 898 Von Termen über der Eingabegröße n zu Komplexitätsklassen Probleme beim Zählen von Basisoperationen in Abhängigkeit von der Eingabegröße Verschiedene Festlegungen zu den Basisoperationen Abhängigkeit von Compiler und Plattform Interne Operationen werden eventuell übersehen Wie vergleicht man Terme über n?
16 899 Ziel: Vergleich asymptotischen Wachstums Haben wir lineare, quadratische, exponentielle,... Abhängigkeit der Anzahl der Operationen bzw. der Grösse des Speichers von Grösse der Eingabe?
17 900 Erneute Betrachtung der Komplexität des Durchschnitts Program # Operationen sum = 0; 0 i = 0; 0 while (i < n) { n+1 sum += a[i]; n i++; n } return sum/n 1 Laufzeit wächst asymptotisch proportional mit Eingabegröße n. Summe 3n + 2
18 901 Konstante Faktoren Betrachten wir zwei Komplexitäten ( Funktionen ): a) 2n b) 2.5n Wir vernachlässigen konstante Fakoren. 2n = 2.5n
19 902 Asymptotisches Wachstum Betrachten wir zwei Komplexitäten ( Funktionen ): a) n 3 /2 b) 5n 2 Kubische Funktionen wachsen schneller als quadratische. Für einige kleine n ist b) größer. Für genügend große n ist a) größer. n 3 /2 > 5n 2
20 903 Asymptotisches Wachstum Betrachten wir zwei Komplexitäten ( Funktionen ): 3n 3-2n 2 4n 3 Bei der Abbildung von Komplexitätsfunktionen auf Komplexitätsklassen vernachlässigen wir auch Summanden von kleinerem asymptotischen Wachstum. 3n 3-2n 2 = 3n 3 = 4n 3
21 904 Komplexitätsklassen Konstant: 1 Logarithmisch: log n Linear: n Quadratisch: n 2 Polynomial: n k, k > 1 Exponentiell: a n, a > 1
22 905 Schranken für asymptotisches Wachstum Ω(f) enthält Funktionen die mindestens so schnell wie f wachsen. (f ist eine untere Schranke für Komplexitätsfunktionen.) f Θ(f) enthält Funktionen die genauso schnell wie f wachsen. (f ist ein asymptotisch enges Mass.) O(f) enthält Funktionen die nicht schneller als f wachsen. (f ist eine obere Schranke für Komplexitätsfunktionen.) Aussprache: (Big) oh (O) (Big) theta (Θ) (Big) omega (Ω)
23 906 O - Notation für obere Schranke von Komplexität O(f(n)) = { g: N N n0 > 0. c > 0. n n0. g(n) c*f(n) } Anmerkungen k(n) O(f(n)) Wir betrachten Funktionen über den natürlichen Zahlen, weil wir so die Eingabegröße ausdrücken. Wir sind an kleinen, oberen Schranken interessiert. f(n) ist eine asymptotische obere Schranke für k(n). Sprechweise k(n) ist O(f(n)) Analog: Ω und Θ
24 907 Analog: Ω - Notation für untere Schranke von Komplexität Ω(f(n)) = { g: N N n0 > 0. c > 0. n n0. c*f(n) g(n) } k(n) Ω(f(n)) Wir sind an großen, unteren Schranken interessiert. f(n) ist eine asymptotische untere Schranke für k(n).
25 908 Analog: Θ - Notation für asymptotisch enges Maß Θ(f(n)) = { g: N N n0 > 0. c1, c2 > 0. n n0. c1*f(n) g(n) c2*f(n) }
26 909 Rechenregeln für die O-Notation f(n) O(f(n)) c*o(f(n)) O(f(n)) O(f(n))*O(g(n)) O(f(n)*g(n)) O(f(n)*g(n)) O(f(n))*O(g(n))... Wenn sowohl S und S Mengen sind in der Notation S S, dann ist dies gemeint: f S. f S.
27 910 Was ist die Komplexität von Sortieralgorithmen? TW(n) SW(n) SelectionSort MergeSort????
28 911 Was ist die Zeitkomplexität von SelectionSort? public static void selectionsort(int[] a) { for (int i = 0; i < a.length; i++) { // Find least element among the remaining ones int least = i; for (int j = i + 1; j < a.length; j++) if (a[j] < a[least]) least = j; // Swap current element with least one if (least!= i) { int swap = a[i]; a[i] = a[least]; a[least] = swap; } } }
29 912 Was ist die Zeitkomplexität von SelectionSort? Zählen der Vergleiche Feld der Größe n Äußere Schleife i=0..n-1 for (int i=0; i<a.length; i++) { int least = i; for (int j=i+1; j<a.length; j++) if (a[j] < a[least]) } Innere Schleife j=i+1..n-1 Vergleiche: (n-1) + (n-2) = n * (n - 1) / 2 O(n 2 )
30 913 Was ist die Zeitkomplexität von MergeSort? public static void mergesort(int[] a, int[] temp, int min, int max) { // Cease on trivial sorting problem if (!(min<max)) return; // Divide int middle = ( min + max ) / 2 ; // Solve smaller problems recursively mergesort(a,temp,min,middle); mergesort(a,temp,middle+1,max); } // Merge via temporary array merge(a,temp,min,middle,max);
31 914 Was ist die Zeitkomplexität von MergeSort? Merge: TW(n) = O(n) MergeSort: TW(n) = 2 TW(n/2) + O(n) = n log n (per Mastertheorem ) Siehe weiterführende Veranstaltungen.
32 915 Übersicht Sortieralgorithmen TW(n) SW(n) SelectionSort MergeSort Θ(n 2 ) Θ(n log n) Θ(1) O(n) Geht es schneller als n log n? Geht n log n auch ohne Speicheraufwand? Warum verwenden wir SelectionSort?
33 916 Satz: Jeder vergleichsbasierte Algorithmus zum Sortieren braucht Ω(n log n) Vergleiche im schlimmsten Fall.
34 917 Bedeutung von Schrankenaussagen Obere Schranke (O(f(n)): Um zu zeigen, dass ein Problem (z.b. Sortieren) in f(n) gelöst werden kann, genügt es einen Algorithmus mit dieser Komplexität anzugeben. Untere Schranke (Ω(f(n)): Um zu zeigen, dass ein Problem nicht schneller als f(n) gelöst werden kann, muss man zeigen, dass alle möglichen Algorithmen nicht schneller sein können.
35 918 Ein Entscheidungsbaum zum Sortieren einer Liste mit drei verschiedenen Elementen a, b, c durch binäre Vergleiche Ja Nein a<b a<b b<a a<b a<c Ja Nein Ja Nein a<c a<c b<a c<a Ja Nein c < a < b b < a < c Ja Nein b<c b<c a < b < c a < c < b b < c < a c < b < a Sortieralgorithmen mögen mehr Vergleiche bemühen.
36 919 Der Entscheidungsbaum Jeder Knoten vergleicht zwei Elemente. Der Baum ist binär wegen der Entscheidungen. Alle möglichen Permutationen müssen unterschieden werden. Es gibt dementsprechend viele verschiedene Pfade und Blätter. Also gibt es n! Blätter bei n Elementen in der Eingabe. Was ist die Tiefe eines Binärbaumes mit n! Blättern?
37 Zusammenhang zwischen Höhe und Anzahl der Blätter Höhe: 0 Knoten: 1 Blätter: 1 Höhe: 1 Knoten: 3 Blätter: 2 Höhe: 2 Knoten: 7 Blätter: 4 Höhe: h Knoten: 2 h+1-1 Blätter: 2 h Wenn der Baum nicht vollstândig ist, dann ist die Höhe größer bei gleicher Blattzahl. Höhe: log2(n!) Blätter: n! (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 920
38 921 Vergleichsbasiertes Sortieren TW(n) längster Pfad log(n!) = log n + + log 1 log n + + log (n/2) n/2 (log n/2) = Ω(n log n) Es gibt Algorithmen die zusätzliche Annahmen über die Daten machen. Jeder vergleichsbasierte Algorithmus braucht Ω(n log n) Vergleiche im schlimmsten Fall.
39 922 Komplexität rekursiver Algorithmen Ein rekursiver Algorithmus ohne Schleifen hat die Komplexität f(x) wenn f(x) die Anzahl der rekursiven Aufrufe in Abhängigkeit von der Eingabe x beschreibt. Beispiel n! n rekursive Aufrufe
40 923 Komplexität Fibonacci Definition fib(n) = 0, falls n = 0 1, falls n = 1 fib(n-2) + fib(n-1), n >= 2 Für n > 2 zwei direkt rekursive Aufrufe Was ist die resultierende Komplexität?
41 924 Komplexität Fibonacci Anzahl der Aufrufe insgesamt Exponentiell steigend (zur Basis 2) mit n Fazit: fib(n) ist O(2 n ) Fib(n) Fib(n-1) + Fib(n-2) Fib(n-2) + Fib(n-3) Fib(n-3) + Fib(n-4) Fib(0) + Fib(1) Fib(1) + Fib(0)
42 Zusammenfassung Es gibt weniger und mehr effiziente Programme. Wir unterscheiden Laufzeit- und Speicherkomplexität. Komplexität wird in Abhängigkeit von Eingabe angegeben. Wir messen Basisoperationen oder skalare Zellen. Komplexität ist durch das Problem beschränkt. Wir sind an asymptotischer Komplexität interessiert. Ausblick Ausnahmebehandlung Syntax von Softwaresprachen
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:
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:
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,
Ü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
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,
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
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
Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
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
Notation für das asymptotische Verhalten von Funktionen
Vorbemerkungen: Notation für das asymptotische Verhalten von Funktionen 1. Aussagen über die Komplexität von Algorithmen und von Problemen sollen (in der Regel) unabhängig von speziellen Maschinenmodellen
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
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]
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
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)
Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
ADS: 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
Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung
Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte
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
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
Untere Schranke für allgemeine Sortierverfahren
Untere Schranke für allgemeine Sortierverfahren Prinzipielle Frage: wie schnell kann ein Algorithmus (im worst case) überhaupt sein? Satz: Zum einer Folge von n Keys mit einem allgemeinen Sortierverfahren
Ü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
Programmierung mit Feldern OOPM, Ralf Lämmel
Übung: Deklarieren Sie ein entsprechendes Feld in Java! Programmierung mit Feldern OOPM, Ralf Lämmel Einführendes Beispiel Eingabe: ein Feld von int-werten public static int sum(int[] a) { int result =
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
8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen
lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany [email protected] Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer
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
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
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6. November 2014 (O-Notation, Theta, Omega) Junior-Prof. Dr. Olaf Ronneberger
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
Prof. Dr. Margarita Esponda
Die O-Notation Analyse von Algorithmen Die O-Notation Prof. Dr. Margarita Esponda Freie Universität Berlin ALP II: Margarita Esponda, 5. Vorlesung, 26.4.2012 1 Die O-Notation Analyse von Algorithmen Korrektheit
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
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
2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :
2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine
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,
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
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
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 [email protected] 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
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
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
Kapitel 8 Fortgeschrittene Sortieralgorithmen
Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
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
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
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin [email protected] Raum NA 1/70 Sprechzeiten:
Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:
Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls
V. Claus, Juli 2005 Einführung in die Informatik II 45
Um die Größenordnung einer reellwertigen oder ganzzahligen Funktion zu beschreiben, verwenden wir die so genannten Landau-Symbole (nach dem deutschen Mathematiker Edmund Landau, 1877-1938). Hierbei werden
2 Wachstumsverhalten von Funktionen
Algorithmen und Datenstrukturen 40 2 Wachstumsverhalten von Funktionen Beim Vergleich der Worst-Case-Laufzeiten von Algorithmen in Abhängigkeit von der Größe n der Eingabedaten ist oft nur deren Verhalten
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
Informatik I Komplexität von Algorithmen
Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany [email protected] Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz
2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
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
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
Aufgabe 1 O-Notation (2+3+5=10 Punkte)
1 Aufgabe 1 O-Notation (2+3+=10 Punkte) Zeigen oder widerlegen Sie die folgenden Aussagen: a) n 2 +log n Θ(n 2 ) Ist die Aussage wahr, so muss gelten: 0 < lim n + n 2 +logn n 2
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
Lö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
Algorithmen 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
Rekursive 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?
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
es gibt Probleme, die nicht berechenbar sind (z.b. Menge aller Funktionen N N und die Menge aller Sprachen sind überabzählbar)
Komplexitätstheorie es gibt Probleme, die nicht berechenbar sind (z.b. Menge aller Funktionen N N und die Menge aller Sprachen sind überabzählbar) andere Probleme sind im Prinzip berechenbar, möglicherweise
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
Informatik B Sommersemester Musterlösung zur Klausur vom
Informatik B Sommersemester 007 Musterlösung zur Klausur vom 0.07.007 Aufgabe : Graphen und Graphalgorithmen + + + () Punkte Für eine beliebige positive, ganze Zahl n definieren wir einen Graphen G n =
Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)
Über-/Rückblick Algorithmenbegriff: Berechenbarkeit Turing-Maschine RAM µ-rekursive Funktionen Zeit Platz Komplexität Algorithmentechniken Algorithmenanalyse (Berechnung der Komplexität) Rekursion Iteration
Informatik II. Algorithmen und Datenstrukturen. Vorläufige Version 1 c 2002 Peter Thiemann
Informatik II Algorithmen und Datenstrukturen Vorläufige Version 1 c 2002 Peter Thiemann 1 Einführung 1.1 Inhalt Wichtige Datentypen und ihre Implementierung (Datenstrukturen) Operationen auf Datenstrukturen
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: [email protected] Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim
Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
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
Prof. Dr. Margarita Esponda
Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen
2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 9. Vorlesung Sortieren in Linearzeit Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,...,
Informatik I Komplexität von Algorithmen
Leistungsverhalten von Algorithmen Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany [email protected] Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz
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
Ü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.
Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik
Tag 17 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 08.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:
Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing [email protected] www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
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
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
Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse
Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Frank Heitmann [email protected] 14. Oktober 2015 Frank Heitmann [email protected] 1/48 Der Sprung ins Wasser...
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
( )= 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
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
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
Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik
Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen VO 708.031 Um was geht es? Datenstrukturen Algorithmen Algorithmus Versuch einer Erklärung: Ein Algorithmus nimmt bestimmte Daten als Input und transformiert diese nach festen
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.
4 Rekursionen. 4.1 Erstes Beispiel
4 Rekursionen Viele Algorithmen besitzen sowohl eine iterative als auch eine rekursive Lösung. Sie unterscheiden sich darin, dass die iterative Version meist einen etwas längeren Kode besitzt, während
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
Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.
Kapitel 1: Algorithmen und ihre Analyse
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 1: Algorithmen und ihre Analyse Skript zur Vorlesung Algorithmen und Datenstrukturen
