Programmieren und Problemlösen

Größe: px
Ab Seite anzeigen:

Download "Programmieren und Problemlösen"

Transkript

1 Dennis Komm Programmieren und Problemlösen Komplexität von Algorithmen Frühling Februar 2019

2 Komplexität von Algorithmen

3 Aufgabe Primzahltest Schreibe ein Programm, das eine ganze Zahl x als Eingabe erhält berechnet, ob x eine Primzahl ist dabei den %-Operator verwendet davon abhängig Primzahl oder einen Teiler von x ausgibt Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 1 / 35

4 Primzahltest public class PrimeTest { public static void main(string[] args) { Out.print("Input number: "); int x = In.readInt(); int d = 2; while (d < x) { if (x % d == 0) { Out.println("No prime number, divisor: " + d); return; } d += 1; } Out.println("Prime number"); } } Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 2 / 35

5 Primzahltest Wie lange braucht der Algorithmus, um Ausgabe zu erzeugen? Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 3 / 35

6 Primzahltest Wie lange braucht der Algorithmus, um Ausgabe zu erzeugen? Was ist seine Laufzeit? Hängt von Anzahl Schleifendurchläufe ab Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 3 / 35

7 Primzahltest Wie lange braucht der Algorithmus, um Ausgabe zu erzeugen? Was ist seine Laufzeit? Hängt von Anzahl Schleifendurchläufe ab Absoluter Wert ergibt keinen Sinn Schleife wird (ungefähr) x Mal durchlaufen (wenn x prim ist) Laufzeit wächst mit x Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 3 / 35

8 Primzahltest Wie lange braucht der Algorithmus, um Ausgabe zu erzeugen? Was ist seine Laufzeit? Hängt von Anzahl Schleifendurchläufe ab Absoluter Wert ergibt keinen Sinn Schleife wird (ungefähr) x Mal durchlaufen (wenn x prim ist) Laufzeit wächst mit x... aber wie schnell? Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 3 / 35

9 Laufzeit Funktion der Eingabelänge Wir messen Laufzeit als Funktion der Eingabelänge Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 4 / 35

10 Laufzeit Funktion der Eingabelänge Wir messen Laufzeit als Funktion der Eingabelänge Für unseren Algorithmus ist die Eingabe eine Zahl x Zahlen werden im Computer binär dargestellt Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 4 / 35

11 Laufzeit Funktion der Eingabelänge Wir messen Laufzeit als Funktion der Eingabelänge Für unseren Algorithmus ist die Eingabe eine Zahl x Zahlen werden im Computer binär dargestellt Wenn wir führende Nullen ignorieren, gilt für n Bits 2 n 1 ist 10 }.{{.. 00}, 2 n ist 10 }.{{.. 01},... und 2 n 1 ist 11 }.{{.. 11} n n n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 4 / 35

12 Laufzeit Funktion der Eingabelänge Wir messen Laufzeit als Funktion der Eingabelänge Für unseren Algorithmus ist die Eingabe eine Zahl x Zahlen werden im Computer binär dargestellt Wenn wir führende Nullen ignorieren, gilt für n Bits 2 n 1 ist 10 }.{{.. 00}, 2 n ist 10 }.{{.. 01},... und 2 n 1 ist 11 }.{{.. 11} n n n Eine Zahl, die mit n Bits dargestellt wird, hat ungefähr die Grösse 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 4 / 35

13 Laufzeit Technologiemodell Random Access Machine Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 5 / 35

14 Laufzeit Technologiemodell Random Access Machine Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt Speichermodell: Konstante Zugriffszeit Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 5 / 35

15 Laufzeit Technologiemodell Random Access Machine Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt Speichermodell: Konstante Zugriffszeit Elementare Operationen: Rechenoperation (+,,,... ), Vergleichsoperationen, Zuweisung / Kopieroperation, Flusskontrolle (Sprünge) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 5 / 35

16 Laufzeit Technologiemodell Random Access Machine Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt Speichermodell: Konstante Zugriffszeit Elementare Operationen: Rechenoperation (+,,,... ), Vergleichsoperationen, Zuweisung / Kopieroperation, Flusskontrolle (Sprünge) Einheitskostenmodell: Elementare Operation hat Kosten 1 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 5 / 35

17 Laufzeit Technologiemodell Random Access Machine Ausführungsmodell: Instruktionen werden der Reihe nach (auf einem Prozessorkern) ausgeführt Speichermodell: Konstante Zugriffszeit Elementare Operationen: Rechenoperation (+,,,... ), Vergleichsoperationen, Zuweisung / Kopieroperation, Flusskontrolle (Sprünge) Einheitskostenmodell: Elementare Operation hat Kosten 1 Datentypen: Fundamentaltypen wie grössenbeschränkte Ganzzahl oder Fliesskommazahl Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 5 / 35

18 Laufzeit Anmerkung Wir sind an dieser Stelle nicht ganz exakt Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 6 / 35

19 Laufzeit Anmerkung Wir sind an dieser Stelle nicht ganz exakt Wenn unsere Eingabe als int kodiert ist, hat sie immer dieselbe Länge Es existieren Java-Datentypen für beliebig grosse Zahlen, die wir hier aber nicht verwenden Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 6 / 35

20 Laufzeit Anmerkung Wir sind an dieser Stelle nicht ganz exakt Wenn unsere Eingabe als int kodiert ist, hat sie immer dieselbe Länge Es existieren Java-Datentypen für beliebig grosse Zahlen, die wir hier aber nicht verwenden Die Kodierung einer Fliesskommazahl kann man nicht sofort aus ihrer Grösse ablesen Eine Addition ist sicherlich schneller zu bewältigen als eine Multiplikation Die Zeit der Addition zweier n-bit-zahlen hängt von n ab Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 6 / 35

21 Laufzeit Anmerkung Wir sind an dieser Stelle nicht ganz exakt Wenn unsere Eingabe als int kodiert ist, hat sie immer dieselbe Länge Es existieren Java-Datentypen für beliebig grosse Zahlen, die wir hier aber nicht verwenden Die Kodierung einer Fliesskommazahl kann man nicht sofort aus ihrer Grösse ablesen Eine Addition ist sicherlich schneller zu bewältigen als eine Multiplikation Die Zeit der Addition zweier n-bit-zahlen hängt von n ab Logarithmisches Kostenmodell berücksichtigt dies, verwenden wir aber ebenfalls nicht Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 6 / 35

22 Komplexität von Algorithmen Laufzeit unseres Primzahltests

23 Laufzeit unseres Primzahltests Angenommen, x ist eine Primzahl und mit n Bits dargestellt Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 7 / 35

24 Laufzeit unseres Primzahltests Angenommen, x ist eine Primzahl und mit n Bits dargestellt Anzahl Schleifendurchläufe wächst mit Grösse von x 2 n Die Schleife wird also ca. 2 n Mal ausgeführt Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 7 / 35

25 Laufzeit unseres Primzahltests Angenommen, x ist eine Primzahl und mit n Bits dargestellt Anzahl Schleifendurchläufe wächst mit Grösse von x 2 n Die Schleife wird also ca. 2 n Mal ausgeführt Wir wollen elementare Operationen zählen Algorithmus führt vier Operationen pro Iteration aus Insgesamt ca. 4 2 n Operationen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 7 / 35

26 Laufzeit unseres Primzahltests Angenommen, x ist eine Primzahl und mit n Bits dargestellt Anzahl Schleifendurchläufe wächst mit Grösse von x 2 n Die Schleife wird also ca. 2 n Mal ausgeführt Wir wollen elementare Operationen zählen Algorithmus führt vier Operationen pro Iteration aus Insgesamt ca. 4 2 n Operationen Uns interessiert, wie sich Laufzeit verhält, wenn n wächst Ignoriere Konstante 4 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 7 / 35

27 Komplexität von Algorithmen Asymptotische obere Schranken

28 Asymptotische obere Schranken Genaue Laufzeit lässt sich selbst für kleine Eingaben kaum voraussagen Uns interessieren obere Schranken Betrachte das asymptotische Verhalten eines Algorithmus Ignoriere alle konstanten Faktoren Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 8 / 35

29 Asymptotische obere Schranken Genaue Laufzeit lässt sich selbst für kleine Eingaben kaum voraussagen Uns interessieren obere Schranken Betrachte das asymptotische Verhalten eines Algorithmus Ignoriere alle konstanten Faktoren Beispiel Lineares Wachstum mit Steigung 5 ist genauso gut wie lineares Wachstum mit Steigung 1 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 8 / 35

30 Asymptotische obere Schranken Genaue Laufzeit lässt sich selbst für kleine Eingaben kaum voraussagen Uns interessieren obere Schranken Betrachte das asymptotische Verhalten eines Algorithmus Ignoriere alle konstanten Faktoren Beispiel Lineares Wachstum mit Steigung 5 ist genauso gut wie lineares Wachstum mit Steigung 1 Quadratisches Wachstum mit Koeffizient 10 ist genauso gut wie quadratisches Wachstum mit Koeffizient 1 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 8 / 35

31 Asymptotische obere Schranken Gross-O-Notation Die Menge O(2 n ) enthält alle Funktionen, die nicht schneller wachsen als c 2 n für eine Konstante c Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 9 / 35

32 Asymptotische obere Schranken Gross-O-Notation Die Menge O(2 n ) enthält alle Funktionen, die nicht schneller wachsen als c 2 n für eine Konstante c O(g(n)) enthält alle Funktionen f(n), die nicht schneller wachsen als c g(n) für eine Konstante c, wobei f und g positiv sind Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 9 / 35

33 Asymptotische obere Schranken Gross-O-Notation Die Menge O(2 n ) enthält alle Funktionen, die nicht schneller wachsen als c 2 n für eine Konstante c O(g(n)) enthält alle Funktionen f(n), die nicht schneller wachsen als c g(n) für eine Konstante c, wobei f und g positiv sind Verwende die asymptotische Notation zur Kennzeichnung der Laufzeit von Algorithmen Wir schreiben O(n 2 ) und meinen, dass der Algorithmus sich für grosse n (maximal) wie n 2 verhält: verdoppelt sich die Eingabelänge, so vervierfacht sich die Laufzeit (maximal) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 9 / 35

34 Asymptotische obere Schranken Formale Definition Gross-O-Notation Formale Definition Für jede Funktion g : N R + ist O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 10 / 35

35 Asymptotische obere Schranken Formale Definition Gross-O-Notation Formale Definition Für jede Funktion g : N R + ist O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} Wir verwenden O(g) und O(g(n)) synonym Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 10 / 35

36 Asymptotische obere Schranken Formale Definition Gross-O-Notation Formale Definition Für jede Funktion g : N R + ist O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} Wir verwenden O(g) und O(g(n)) synonym Sie finden in der Literatur oftmals f = O(g) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 10 / 35

37 Asymptotische obere Schranken Formale Definition Gross-O-Notation Formale Definition Für jede Funktion g : N R + ist O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} Wir verwenden O(g) und O(g(n)) synonym Sie finden in der Literatur oftmals f = O(g) Dies ist zu verstehen als f O(g) Denn aus f 1 = O(g) und f 2 = O(g) folgt natürlich nicht f 1 = f 2 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 10 / 35

38 Asymptotische obere Schranken Anschauung g(n) = n 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 11 / 35

39 Asymptotische obere Schranken Anschauung g(n) = n 2 f O(g) n 0 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 11 / 35

40 Asymptotische obere Schranken Anschauung g(n) = n 2 f O(g) h O(g) n 0 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 11 / 35

41 Asymptotische obere Schranken Beispiele O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} f(n) f O(?) Beispiel 3n + 4 2n n n n + n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 12 / 35

42 Asymptotische obere Schranken Beispiele O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n n n n + n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 12 / 35

43 Asymptotische obere Schranken Beispiele O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n O(n) c = 2, n 0 = 0 n n n + n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 12 / 35

44 Asymptotische obere Schranken Beispiele O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n O(n) c = 2, n 0 = 0 n n O(n 2 ) c = 2, n 0 = 100 n + n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 12 / 35

45 Asymptotische obere Schranken Beispiele O(g(n)) = {f : N R + c > 0, n 0 N: n n 0 : f(n) c g(n)} f(n) f O(?) Beispiel 3n + 4 O(n) c = 4, n 0 = 4 2n O(n) c = 2, n 0 = 0 n n O(n 2 ) c = 2, n 0 = 100 n + n O(n) c = 2, n 0 = 1 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 12 / 35

46 Asymptotische obere Schranken Eigenschaft f 1 O(g) und f 2 O(g) impliziert f 1 + f 2 O(g) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 13 / 35

47 Asymptotische obere Schranken Eigenschaft f 1 O(g) und f 2 O(g) impliziert f 1 + f 2 O(g) Es existieren n 1, c 1, sodass für alle n > n 1 gilt, dass f 1 (n) c 1 g(n) Ferner existieren n 2, c 2, sodass für alle n > n 2 gilt, dass f 2 (n) c 2 g(n) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 13 / 35

48 Asymptotische obere Schranken Eigenschaft f 1 O(g) und f 2 O(g) impliziert f 1 + f 2 O(g) Es existieren n 1, c 1, sodass für alle n > n 1 gilt, dass f 1 (n) c 1 g(n) Ferner existieren n 2, c 2, sodass für alle n > n 2 gilt, dass f 2 (n) c 2 g(n) Sei n 0 := max{n 1, n 2 } und c := max{c 1, c 2 } Dann ist f 1 (n) c g(n) und f 2 (n) c g(n) für alle n n 0 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 13 / 35

49 Asymptotische obere Schranken Eigenschaft f 1 O(g) und f 2 O(g) impliziert f 1 + f 2 O(g) Es existieren n 1, c 1, sodass für alle n > n 1 gilt, dass f 1 (n) c 1 g(n) Ferner existieren n 2, c 2, sodass für alle n > n 2 gilt, dass f 2 (n) c 2 g(n) Sei n 0 := max{n 1, n 2 } und c := max{c 1, c 2 } Dann ist f 1 (n) c g(n) und f 2 (n) c g(n) für alle n n 0 Also gilt f 1 (n) + f 2 (n) 2 c g(n) für alle n n 0 Somit folgt, dass f 1 + f 2 in O(g) ist Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 13 / 35

50 Komplexität von Algorithmen Asymptotische untere Schranken

51 Asymptotische untere Schranken Formale Definition Gross-Ω-Notation Formale Definition Für jede Funktion g : N R + ist Ω(g) = {f : N R c > 0, n 0 N: n n 0 : c g(n) f(n)} Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 14 / 35

52 Asymptotische untere Schranken Anschauung g(n) = n n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 15 / 35

53 Asymptotische untere Schranken Anschauung f Ω(g) g(n) = n n 0 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 15 / 35

54 Asymptotische untere Schranken Anschauung h Ω(g) f Ω(g) g(n) = n n 0 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 15 / 35

55 Komplexität von Algorithmen Asymptotische scharfe Schranken

56 Asymptotisch scharfe Schranke Formale Definition Definition Für jede Funktion g : N R + ist Θ(g) = Ω(g) O(g) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 16 / 35

57 Asymptotisch scharfe Schranke Anschauung f Θ(n 2 ) n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 17 / 35

58 Asymptotisch scharfe Schranke Anschauung f Θ(n 2 ) h(n) = 0.5 n 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 17 / 35

59 Asymptotisch scharfe Schranke Anschauung g(n) = n 2 f Θ(n 2 ) h(n) = 0.5 n 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 17 / 35

60 Komplexität von Algorithmen Laufzeit-Analyse

61 Wachstumsbezeichnungen Funktion in Beschreibung Beispiel O(1) konstant Array-Zugriff O(log n) logarithmisch Binäre sortierte Suche O(n) linear Unsortierte naive Suche O(n log n) superlinear / loglinear Gute Sortieralgorithmen O(n 2 ) quadratisch Einfache Sortieralgorithmen O(n c ) polynomiell Matrixmultiplikation O(2 n ) exponentiell Traveling Salesman Dynamic Programming O(n!) faktoriell Traveling Salesman naiv Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 18 / 35

62 Kleine n 60 n 4 2 n 40 n n ln n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 19 / 35

63 Grössere n n n n log n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 20 / 35

64 Grosse n n n 4 n log n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 21 / 35

65 Logarithmen 1,000 n n 3/2 n log n n log n 50 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 22 / 35

66 Zeitbedarf Nehmen wir an, 1 elementare Operation braucht 1µs Eingabelänge log 2 n 1µs n 1µs n log 2 n 1µs n 2 1µs 2 n 1µs Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 23 / 35

67 Zeitbedarf Nehmen wir an, 1 elementare Operation braucht 1µs Eingabelänge log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs n log 2 n 1µs n 2 1µs 2 n 1µs Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 23 / 35

68 Zeitbedarf Nehmen wir an, 1 elementare Operation braucht 1µs Eingabelänge log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs n 2 1µs 2 n 1µs Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 23 / 35

69 Zeitbedarf Nehmen wir an, 1 elementare Operation braucht 1µs Eingabelänge log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs 700µs 13/100µs 20s 8.5 Stunden n 2 1µs 2 n 1µs Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 23 / 35

70 Zeitbedarf Nehmen wir an, 1 elementare Operation braucht 1µs Eingabelänge log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs 700µs 13/100µs 20s 8.5 Stunden n 2 1µs 1/100s 1.7 Minuten 11.5 Tage 317 Jahrhund. 2 n 1µs Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 23 / 35

71 Zeitbedarf Nehmen wir an, 1 elementare Operation braucht 1µs Eingabelänge log 2 n 1µs 7µs 13µs 20µs 30µs n 1µs 100µs 1/100s 1s 17 Minuten n log 2 n 1µs 700µs 13/100µs 20s 8.5 Stunden n 2 1µs 1/100s 1.7 Minuten 11.5 Tage 317 Jahrhund. 2 n 1µs Jahrh. Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 23 / 35

72 Einfluss schnellerer Computer Na gut... dann kaufe ich mir eben eine neue Maschine. Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 24 / 35

73 Einfluss schnellerer Computer Na gut... dann kaufe ich mir eben eine neue Maschine. Wenn aktuelle Maschine Eingaben der Länge n lösen kann, dann kann eine 10 oder 100 Mal so schnelle Maschine... Komplexität (Geschwindigkeit 10) (Geschwindigkeit 100) log 2 n n n 2 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 24 / 35

74 Einfluss schnellerer Computer Na gut... dann kaufe ich mir eben eine neue Maschine. Wenn aktuelle Maschine Eingaben der Länge n lösen kann, dann kann eine 10 oder 100 Mal so schnelle Maschine... Komplexität (Geschwindigkeit 10) (Geschwindigkeit 100) log 2 n n n 10 n n 100 n n 2 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 24 / 35

75 Einfluss schnellerer Computer Na gut... dann kaufe ich mir eben eine neue Maschine. Wenn aktuelle Maschine Eingaben der Länge n lösen kann, dann kann eine 10 oder 100 Mal so schnelle Maschine... Komplexität (Geschwindigkeit 10) (Geschwindigkeit 100) log 2 n n n 10 n n 100 n n 10 n n 100 n n 2 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 24 / 35

76 Einfluss schnellerer Computer Na gut... dann kaufe ich mir eben eine neue Maschine. Wenn aktuelle Maschine Eingaben der Länge n lösen kann, dann kann eine 10 oder 100 Mal so schnelle Maschine... Komplexität (Geschwindigkeit 10) (Geschwindigkeit 100) log 2 n n n 10 n n 100 n n 10 n n 100 n n 2 n 3.16 n n 10 n 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 24 / 35

77 Einfluss schnellerer Computer Na gut... dann kaufe ich mir eben eine neue Maschine. Wenn aktuelle Maschine Eingaben der Länge n lösen kann, dann kann eine 10 oder 100 Mal so schnelle Maschine... Komplexität (Geschwindigkeit 10) (Geschwindigkeit 100) log 2 n n n 10 n n 100 n n 10 n n 100 n n 2 n 3.16 n n 10 n 2 n n n n n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 24 / 35

78 Asymptotische Komplexität Beispiele n O(n 2 ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

79 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

80 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

81 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

82 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) 2n 2 O(n) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

83 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) 2n 2 O(n) ist falsch, denn 2n2 cn = 2 n ist nicht konstant c Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

84 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) 2n 2 O(n) ist falsch, denn 2n2 cn O(n) O(n 2 ) = 2 n ist nicht konstant c Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

85 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) 2n 2 O(n) ist falsch, denn 2n2 cn O(n) O(n 2 ) ist korrekt, = 2 n ist nicht konstant c Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

86 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) 2n 2 O(n) ist falsch, denn 2n2 = 2 n ist nicht konstant cn c O(n) O(n 2 ) ist korrekt, Θ(n) Θ(n 2 ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

87 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) 2n 2 O(n) ist falsch, denn 2n2 = 2 n ist nicht konstant cn c O(n) O(n 2 ) ist korrekt, Θ(n) Θ(n 2 ) ist falsch: Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

88 Asymptotische Komplexität Beispiele n O(n 2 ) ist korrekt, aber ungenau: n O(n) und sogar n Θ(n) 3n 2 O(2n 2 ) ist korrekt, aber unüblich: Konstanten weglasssen: 3n 2 O(n 2 ) 2n 2 O(n) ist falsch, denn 2n2 = 2 n ist nicht konstant cn c O(n) O(n 2 ) ist korrekt, Θ(n) Θ(n 2 ) ist falsch: n Ω(n 2 ) Θ(n 2 ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 25 / 35

89 Problem-Komplexität Definition Die Komplexität eines Problems P entspricht den minimalen (asymptotischen) Kosten über alle Algorithmen, die P lösen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 26 / 35

90 Problem-Komplexität Definition Die Komplexität eines Problems P entspricht den minimalen (asymptotischen) Kosten über alle Algorithmen, die P lösen Obere Schranken durch Angabe eines Algorithmus Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 26 / 35

91 Problem-Komplexität Definition Die Komplexität eines Problems P entspricht den minimalen (asymptotischen) Kosten über alle Algorithmen, die P lösen Obere Schranken durch Angabe eines Algorithmus Zu testen, ob eine n-bit-zahl prim ist, hat Komplexität in O(2 n ) Sortieren von n Zahlen vom Typ int hat Komplexität in O(n log n) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 26 / 35

92 Problem-Komplexität Definition Die Komplexität eines Problems P entspricht den minimalen (asymptotischen) Kosten über alle Algorithmen, die P lösen Obere Schranken durch Angabe eines Algorithmus Zu testen, ob eine n-bit-zahl prim ist, hat Komplexität in O(2 n ) Sortieren von n Zahlen vom Typ int hat Komplexität in O(n log n) Untere Schranken sind viel schwerer zu zeigen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 26 / 35

93 Problem-Komplexität Definition Die Komplexität eines Problems P entspricht den minimalen (asymptotischen) Kosten über alle Algorithmen, die P lösen Obere Schranken durch Angabe eines Algorithmus Zu testen, ob eine n-bit-zahl prim ist, hat Komplexität in O(2 n ) Sortieren von n Zahlen vom Typ int hat Komplexität in O(n log n) Untere Schranken sind viel schwerer zu zeigen Stärkere Schranken als Ω(n) nur unter Zusatzannahmen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 26 / 35

94 Ein schnellerer Primzahltest Erster Versuch

95 Ein schnellerer Primzahltest Ziel Laufzeit ausserhalb Ω(2 n ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 27 / 35

96 Ein schnellerer Primzahltest Ziel Laufzeit ausserhalb Ω(2 n ) Beobachtung Wenn x nicht durch 2 teilbar ist, dann ist sie auch nicht durch 4 oder 6 oder 8 etc. teilbar Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 27 / 35

97 Ein schnellerer Primzahltest Ziel Laufzeit ausserhalb Ω(2 n ) Beobachtung Wenn x nicht durch 2 teilbar ist, dann ist sie auch nicht durch 4 oder 6 oder 8 etc. teilbar Es reicht dann nur ungerade Zahlen zu testen Algorithmus muss nur noch die Hälfte der Zahlen testen Schleife wird nur noch x/2 Mal durchlaufen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 27 / 35

98 Ein schnellerer Primzahltest Out.print("Input number: "); int x = In.readInt(); if (x % 2 == 0) { Out.println("Even number"); return; } int d = 3; while (d < x) { if (x % d == 0) { Out.println("No prime number, divisor: " + d); return; } d += 2; } Out.println("Prime number"); Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 28 / 35

99 Ein schnellerer Primzahltest Out.print("Input number: "); int x = In.readInt(); if (x % 2 == 0) { Out.println("Even number"); return; } int d = 3; while (d < x) { if (x % d == 0) { Out.println("No prime number, divisor: " + d); return; } d += 2; } Out.println("Prime number"); Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 28 / 35

100 Ein schnellerer Primzahltest Wie gross ist die Verbesserung? Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 29 / 35

101 Ein schnellerer Primzahltest Wie gross ist die Verbesserung? Schleife wird ca. x/2 Mal durchlaufen anstatt x Mal Laufzeit verbessert sich um Faktor 2 Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 29 / 35

102 Ein schnellerer Primzahltest Wie gross ist die Verbesserung? Schleife wird ca. x/2 Mal durchlaufen anstatt x Mal Laufzeit verbessert sich um Faktor 2 Sei x wieder mit n Bits dargestellt Insgesamt ca. 4 2 n /2 = 2 2 n elementare Operationen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 29 / 35

103 Ein schnellerer Primzahltest Wie gross ist die Verbesserung? Schleife wird ca. x/2 Mal durchlaufen anstatt x Mal Laufzeit verbessert sich um Faktor 2 Sei x wieder mit n Bits dargestellt Insgesamt ca. 4 2 n /2 = 2 2 n elementare Operationen Laufzeit noch immer in Ω(2 n ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 29 / 35

104 Ein schnellerer Primzahltest Wie gross ist die Verbesserung? Schleife wird ca. x/2 Mal durchlaufen anstatt x Mal Laufzeit verbessert sich um Faktor 2 Sei x wieder mit n Bits dargestellt Insgesamt ca. 4 2 n /2 = 2 2 n elementare Operationen Laufzeit noch immer in Ω(2 n ) Keine asymptotische Verbesserung Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 29 / 35

105 Ein schnellerer Primzahltest Zweiter Versuch

106 Ein schnellerer Primzahltest Beobachtung Wenn x keine Primzahl ist, dann ist x teilbar durch eine Zahl a mit 1 < a < x Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 30 / 35

107 Ein schnellerer Primzahltest Beobachtung Wenn x keine Primzahl ist, dann ist x teilbar durch eine Zahl a mit 1 < a < x Dann ist x auch durch Zahl b teilbar mit a b = x und 1 < b < x Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 30 / 35

108 Ein schnellerer Primzahltest Beobachtung Wenn x keine Primzahl ist, dann ist x teilbar durch eine Zahl a mit 1 < a < x Dann ist x auch durch Zahl b teilbar mit a b = x und 1 < b < x Es kann nicht sein, dass a > x und b > x, denn sonst wäre a b > x Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 30 / 35

109 Ein schnellerer Primzahltest public class PrimeTest { public static void main(string[] args) { Out.print("Input number: "); int x = In.readInt(); int d = 2; while (d < x) { if (x % d == 0) { Out.println("No prime number, divisor: " + d); return; } d += 1; } Out.println("Prime number"); } } Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 31 / 35

110 Ein schnellerer Primzahltest public class PrimeTest { public static void main(string[] args) { Out.print("Input number: "); int x = In.readInt(); int d = 2; while (d <= Math.sqrt(x)) { if (x % d == 0) { Out.println("No prime number, divisor: " + d); return; } d += 1; } Out.println("Prime number"); } } Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 31 / 35

111 Ein schnellerer Primzahltest Übung Wie gross ist diesmal die Verbesserung? Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 32 / 35

112 Ein schnellerer Primzahltest Übung Wie gross ist diesmal die Verbesserung? Was ist die Laufzeit dieses Algorithmus? Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 32 / 35

113 Ein schnellerer Primzahltest Übung Wie gross ist diesmal die Verbesserung? Was ist die Laufzeit dieses Algorithmus? Schleife wird x Mal durchlaufen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 32 / 35

114 Ein schnellerer Primzahltest Übung Wie gross ist diesmal die Verbesserung? Was ist die Laufzeit dieses Algorithmus? Schleife wird x Mal durchlaufen Laufzeit wächst mit Grösse des Werts von x Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 32 / 35

115 Ein schnellerer Primzahltest Übung Wie gross ist diesmal die Verbesserung? Was ist die Laufzeit dieses Algorithmus? Schleife wird x Mal durchlaufen Laufzeit wächst mit Grösse des Werts von x Laufzeit in O( 2 n ) Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 32 / 35

116 Ein schnellerer Primzahltest Übung 10,000,000 5,000, Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 33 / 35

117 Ein schnellerer Primzahltest Übung 10,000,000 5,000,000 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 33 / 35

118 Ein schnellerer Primzahltest Übung 10,000,000 5,000,000 2 n 2 n Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 33 / 35

119 Ein schnellerer Primzahltest Best- und Worst-Case-Analyse

120 Best- und Worst-Case-Analyse Welcher Algorithmus ist schneller? Out.print("Input number: "); int x = In.readInt(); int d = 2; while (d < Math.sqrt(x)) { if (x % d == 0) { Out.println("Composite number"); return; } d = d + 1; } Out.println("Prime number"); Out.print("Input number: "); int x = In.readInt(); int d = 2; boolean isprime = true; while (d < Math.sqrt(x)) { if (x % d == 0) { isprime = false; } d = d + 1; } if (isprime == true) { Out.println("Prime number"); } else { Out.println("Composite number"); } Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 34 / 35

121 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

122 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Dann ist der linke Algorithmus sehr schnell Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

123 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Dann ist der linke Algorithmus sehr schnell Schleife wird nach dem ersten Vergleich verlassen Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

124 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Dann ist der linke Algorithmus sehr schnell Schleife wird nach dem ersten Vergleich verlassen Early Exit Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

125 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Dann ist der linke Algorithmus sehr schnell Schleife wird nach dem ersten Vergleich verlassen Early Exit Rechter Algorithmus macht ca. 2 n Vergleiche Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

126 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Dann ist der linke Algorithmus sehr schnell Schleife wird nach dem ersten Vergleich verlassen Early Exit Rechter Algorithmus macht ca. 2 n Vergleiche Angenommen, x ist Primzahl Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

127 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Dann ist der linke Algorithmus sehr schnell Schleife wird nach dem ersten Vergleich verlassen Early Exit Rechter Algorithmus macht ca. 2 n Vergleiche Angenommen, x ist Primzahl Dann machen beide Algorithmen ca. 2 n Vergleiche Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

128 Best- und Worst-Case-Analyse Angenommen, x ist gerade Zahl Dann ist der linke Algorithmus sehr schnell Schleife wird nach dem ersten Vergleich verlassen Early Exit Rechter Algorithmus macht ca. 2 n Vergleiche Angenommen, x ist Primzahl Dann machen beide Algorithmen ca. 2 n Vergleiche ( ) Natürlich sollte der linke implementiert werden Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 Dennis Komm 35 / 35

129 Danke für die Aufmerksamkeit

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

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

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

Mehr

Informatik II. 1. Einführung. Ziele der Vorlesung. Inhalte der Vorlesung. Vorlesung am D-BAUG der ETH Zürich

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

Mehr

Informatik II. 1. Einführung. Inhalte der Vorlesung. Ziele der Vorlesung. Vorlesung am D-BAUG der ETH Zürich

Informatik II. 1. Einführung. Inhalte der Vorlesung. Ziele der Vorlesung. Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich 1. Einführung Felix Friedrich & Hermann Lehner Algorithmen und Datenstrukturen, Korrektheit, erstes Beispiel FS 2019 1 2 Ziele der Vorlesung Inhalte der

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I 61 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken, Typkonversionen Namen und Bezeichner 62 Ein Programm (also Klasse)

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen Vorlesung am D-Math (CSE) der ETH Zürich 1. Einführung Felix Friedrich Überblick, Algorithmen und Datenstrukturen, Korrektheit, erstes FS 2019 1 19 Ziele des Kurses Verständnis

Mehr

3. Java - Sprachkonstrukte I

3. Java - Sprachkonstrukte I Namen und Bezeichner Ein Programm (also Klasse) braucht einen Namen 3. Java - Sprachkonstrukte I Namen und Bezeichner, Variablen, Zuweisungen, Konstanten, Datentypen, Operationen, Auswerten von Ausdrücken,

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

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

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

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

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

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

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

4. Effizienz von Algorithmen

4. Effizienz von Algorithmen Effizienz von Algorithmen 4. 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

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

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

Mehr

Übung 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) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise

Mehr

Übungen zu Algorithmen

Übungen zu Algorithmen Institut für Informatik Universität Osnabrück, 08.11.2016 Prof. Dr. Oliver Vornberger http://www-lehre.inf.uos.de/~ainf Lukas Kalbertodt, B.Sc. Testat bis 16.11.2016, 14:00 Uhr Nils Haldenwang, M.Sc. Übungen

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

Ü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

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

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

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

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

Mehr

Clevere Algorithmen programmieren

Clevere Algorithmen programmieren ClevAlg 2017 Arithmetische Operationen Clevere Algorithmen programmieren Dennis Komm, Jakub Závodný, Tobias Kohn 27. September 2017 Addition zweier Zahlen Addition von Zahlen Wir stellen Zahlen als Strings

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

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

Vorlesung Datenstrukturen

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

Mehr

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

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

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

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

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

Ü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

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

Daten suchen und durchsuchen. Programmieren und Problemlösen Daten suchen und durchsuchen, weiterführende Komplexitätstheorie

Daten suchen und durchsuchen. Programmieren und Problemlösen Daten suchen und durchsuchen, weiterführende Komplexitätstheorie Daten suchen und durchsuchen Lineare Suche Dennis Komm Programmieren und Problemlösen Daten suchen und durchsuchen, weiterführende Komplexitätstheorie Frühling 2019 1. April 2019 Lineare Suche Einfachste

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

Ü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

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

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

Grundlagen: Algorithmen und Datenstrukturen

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

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

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Die asymptotische Notation

Die asymptotische Notation Die asymptotische Notation f, g : N R 0 seien Funktionen, die einer Eingabelänge n N eine nicht-negative Laufzeit f (n), bzw. g(n) zuweisen. Asymptotik 1 / 9 Die asymptotische Notation f, g : N R 0 seien

Mehr

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

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

Mehr

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

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

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Mathematische Grundlagen

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Die Landau-Notation (Wiederholung und Vertiefung) 2. Vorbereitung Aufgabenblatt 1, Aufgabe 1

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 3 (27.4.2014) O-Notation, Asymptotische Analyse, Sortieren III Algorithmen und Komplexität Selection Sort Algorithmus SelectionSort (informell):

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

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

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1 Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element

Mehr

2 Wachstumsverhalten von Funktionen

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

Mehr

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, Algorithmen und Programmierung 2 Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 2. VO SS 2009 16. April 2009 1 Überblick Asymptotische Schranken

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

Der Sprung ins Wasser... Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse. Und warum brauch ich das?! Organisatorisches 1

Der Sprung ins Wasser... Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse. Und warum brauch ich das?! Organisatorisches 1 Der Sprung ins Wasser... Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Frank Heitmann heitmann@informatik.uni-hamburg.de Worum geht es bei Algorithmen und Datenstrukturen? 14. Oktober 2015 Frank

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

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

Ü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 Fibonacci Zahlen Fibonacci Folge Die Fibonacci

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 Jeremias Weihmann Sommersemester 2014 Übungsblatt 2 28. April 2014 Grundlagen: Algorithmen und

Mehr

Algorithmentheorie Randomisierung

Algorithmentheorie Randomisierung Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Technische Universität München WiSe 2012/13 Institut für Informatik I-16 Lösungsblatt 7 Dr. Tobias Lasser 3. Dezember 2012 Jakob Vogel Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen

Mehr

Stichpunktezettel fürs Tutorium

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

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 2 (23.4.2018) Sortieren II, Asymptotische Analyse, O-Notation Algorithmen und Komplexität Laufzeit Zeitmessung SelectionSort n 2 Laufzeit/n

Mehr

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus Algorithmen verbrauchen Ressourcen Rechenzeit

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

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Primitive Datentypen Fließkommazahlen float: Fließkommazahl nach IEEE 754 Standard mit 32 bit Vorzeichen Exponent 8 bit Mantisse 23 bit double: Fließkommazahl nach IEEE 754 Standard mit 64 bit Vorzeichen

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

V. Claus, Juli 2005 Einführung in die Informatik II 45

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

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

1 Asymptotische Notation

1 Asymptotische Notation In diesem Kapitel wollen wir die Grundlagen der asymptotischen Notation vermitteln. Diese ist ein wichtiges Werkzeug zur Betrachtung der Effizienz eines Algorithmus. 1.1 Grundlagen und einleitende Beispiele

Mehr

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

Mehr

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Frank Heitmann heitmann@informatik.uni-hamburg.de 14. Oktober 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/48 Der Sprung ins Wasser...

Mehr

Informatik I Komplexität von Algorithmen

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

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Frank Heitmann heitmann@informatik.uni-hamburg.de 14. Oktober 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/48 Der Sprung ins Wasser...

Mehr

Das O-Tutorial. 1 Definition von O, Ω, Θ, o und ω

Das O-Tutorial. 1 Definition von O, Ω, Θ, o und ω Definition von O, Ω, Θ, o und ω Das O-Tutorial Seien f und g zwei Funktionen von N nach R 0. Hierbei bezeichne R 0 die nicht-negativen reellen Zahlen. Die Funktionsmengen O, Ω, Θ, o und ω sind wie folgt

Mehr

Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)

Thomas 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

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

8 Komplexitätstheorie

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

Mehr

VL-04: Rekursionsgleichungen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

VL-04: Rekursionsgleichungen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger VL-04: Rekursionsgleichungen (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger SS 2017, RWTH DSAL/SS 2017 VL-04: Rekursionsgleichungen 1/37 Organisatorisches Vorlesung: Gerhard Woeginger (Zimmer

Mehr

Algorithmen I - Tutorium 28 Nr. 2

Algorithmen I - Tutorium 28 Nr. 2 Algorithmen I - Tutorium 28 Nr. 2 11.05.2017: Spaß mit Invarianten (die Zweite), Rekurrenzen / Mastertheorem und Merging Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK

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

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

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

3.3 Laufzeit von Programmen

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

Mehr

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 3, Donnerstag 7.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 3, Donnerstag 7. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 3, Donnerstag 7. November 2013 (O-Notation, Theta, Omega) Junior-Prof. Dr. Olaf Ronneberger

Mehr

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen 3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge

Mehr

Übung Algorithmen und Datenstrukturen

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

Mehr

2. Tag. Teil II. 1.5 Interpretation der Grenzwertregeln

2. Tag. Teil II. 1.5 Interpretation der Grenzwertregeln Teil II 2. Tag Die bisherige Darstellung war zwar weitgehend intuitiv, ist aber für Beweise über Komplexitätsaussagen nur bedingt geeignet. 1.5 Interpretation der Grenzwertregeln Für die Funktionen f,g

Mehr