Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Einf¨ uhrung Algorithmenanalyse Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse Frank Heitmann [email protected]...
Author: Dorothea Falk
11 downloads 5 Views 321KB Size
Einf¨ uhrung Algorithmenanalyse

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse Frank Heitmann [email protected]

14. Oktober 2015

Frank Heitmann [email protected]

1/48

Einf¨ uhrung Algorithmenanalyse

Der Sprung ins Wasser...

Worum geht es bei Algorithmen und Datenstrukturen ?

Frank Heitmann [email protected]

2/48

Einf¨ uhrung Algorithmenanalyse

Und warum brauch ich das?!

Was n¨ utzt das? Spaß! Grob absch¨atzen, ob etwas u ¨berhaupt m¨oglich ist. Grob absch¨atzen, wie teuer etwas wird/werden kann. L¨osungsvorschl¨age und deren Kosten verstehen. L¨osungen selbst erarbeiten k¨ onnen! Abstrahieren!

Frank Heitmann [email protected]

3/48

Einf¨ uhrung Algorithmenanalyse

Organisatorisches 1

Zur Vorlesung: Immer Mittwochs in H¨ orsaal A Chemie 0915 - 1045 Vorlesung mit Lecture2Go-Aufzeichnung 1045 - 1100 Pause ¨ 1100 - 1145 Wiederholung, Ubung, Vertiefung, ...

Boxen f¨ ur besonders Wichtiges / f¨ ur Interessierte Das Buch zur Vorlesung: Cormen et al. ’Introduction to Algorithms’, McGraw-Hill. Oder jedes andere Algorithmen-Buch (+Folien)

Frank Heitmann [email protected]

4/48

Einf¨ uhrung Algorithmenanalyse

Organisatorisches 2 ¨ ¨ Zu den Ubungsgruppen und Ubungszetteln: Beginn diesen Mittwoch. Einige Besonderheiten: Gruppe 01 und 04 am ZBH in Raum 16 Gruppe 03 startet erst um 1240 Uhr (bis 1410) Gruppe 04 startet um 1400 Uhr (bis 1530)

Neuen Aufgabenzettel alle zwei Wochen i.A. Mo-Mi Bearbeiten in 2er- oder 3er-Gruppen. Abgabe ca. zwei Wochen sp¨ater am Montag bis 16 Uhr in die Abgabebox im 1. Stock von Haus C (vor C-201). ¨ Besprechung in den Ubungen in der Woche. Alle Gruppenmitglieder m¨ ussen den eigenen L¨osungsvorschlag pr¨asentieren k¨onnen. 50% der Punkte aller Zettel sind n¨ otig. Frank Heitmann [email protected]

5/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Los ...

Frank Heitmann [email protected]

6/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Begriff: Datentyp & Datenstruktur Definition Ein Datentyp ist eine Menge von Werten (z.B. N) und Operationen darauf (z.B. +). Definition Bei einer Datenstruktur sind die Daten zus¨atzlich in bestimmter Weise angeordnet und in bestimmter Weise wird Zugriff und Verwaltung erm¨oglicht. (Beispiele: Array, Liste, Stack, Graph) Bemerkung Abstrakte Definition/Beschreibung/Darstellung erfolgt mittels Abstrakter Datentypen/Datenstrukturen (ADT). Dabei ist die Signatur die algebraische Spezifikation des Datentyps. Die Algebra wird als Datentyp zur Signatur bezeichnet. Frank Heitmann [email protected]

7/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Ein Problem...

Folgendes Problem: Gegeben sei eine (lange) Liste mit Namen. Wir wollen herausfinden ob Max Mustermann auf der Liste steht. Wie machen wir das? Wie machen wir das algorithmisch? Und was ist noch mal ein Algorithmus?

Frank Heitmann [email protected]

8/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Begriff: Algorithmus Definition Ein Algorithmus ist ein endlich und pr¨asize beschriebenes Verfahren, das Eingabewerte in Ausgabewerte umwandelt. Es ist (i.A.) deterministisch und der Ausgang ist determiniert. Die einzelnen Schritte sind zudem elementar/atomar und effektiv ausf¨ uhrbar. Meist wird noch die Termination sowie die Korrektheit des Verfahrens verlangt (beides muss bewiesen werden!). I.A. soll ein Algorithmus ein Problem l¨osen. Eine Instanz ist dabei eine m¨ogliche Eingabe (bspw. zwei Zahlen, die addiert werden sollen). Bemerkung Wir benutzen nachfolgend u ¨bliche Pseudocode-Bausteine und Konventionen. (for, while, Zuweisung, if-then, case, ...)

Frank Heitmann [email protected]

9/48

Einf¨ uhrung Algorithmenanalyse

Motivation

... eine L¨osung

Algorithmus 1 Lineare Suche 1: for i = 0 to n do 2: if a[i] == max mustermann then 3: return true 4: end if 5: end for 6: return false Ist diese L¨ osung gut? Geht das besser?

Frank Heitmann [email protected]

10/48

Einf¨ uhrung Algorithmenanalyse

Motivation

und eine andere L¨osung Algorithmus 2 Bin¨are Suche 1: while first ≤ last ∧ idx < 0 do 2: m = first + ((last − first)/2) 3: if a[m] < p then 4: first = m + 1 5: else if a[m] > p then 6: last = m − 1 7: else 8: idx = m 9: end if 10: end while 11: return idx Ist das besser? Welche Voraussetzungen haben wir hier? Frank Heitmann [email protected]

11/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Sortieren Definition (Das Sortierproblem) Eingabe: Eine Sequenz < a1 , a2 , . . . , an > von n Zahlen. Gesucht: Eine Permutation < a10 , a20 , . . . , an0 > der Eingabesequenz mit a10 ≤ a20 ≤ . . . ≤ an0 . Anmerkung Ob die Reihenfolge zweier Elemente ai , aj (i < j) mit ai = aj beibehalten werden soll oder nicht, ist nicht gesagt. Bleibt sie erhalten, d.h. ist ap0 = ai , aq0 = aj und p < q, so nennt man das Verfahren stabil. Ferner heißt ein Sortierverfahren in-place (oder in situ), wenn der zus¨atzlich ben¨otigte Speicherbedarf unabh¨angig von der gegebenen Sequenz ist. Frank Heitmann [email protected]

12/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Bedeutung des Sortierens

Daten zu Sortieren ist ein fundamentales Problem: Manchmal ist Sortieren das Wesen der Anwendung Sortieren als Vorstufe (z.B. f¨ ur das Suchen) Sortieren als Unterroutine (z.B. Painter’s Algorithm) Viele verschiedene (Algorithmen-)Techniken Beweisbarkeit einer nichttrivialen unteren Schranke Sortiert wird st¨andig: Musikliste nach K¨ unstlern oder Titeln Ankommende Pakete u ¨ber die Datenleitung ...

Frank Heitmann [email protected]

13/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Pause to Ponder...

Wem f¨allt ein Brute-Force-Algorithmus zum Sortieren ein?

Frank Heitmann [email protected]

14/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Sortieren mit Maximumbestimmung (MaxSort)

Algorithmus 3 Sortieren mit Max 1: for i = n downto 1 do 2: idx = max(A) 3: B[i] = A[idx] 4: A[idx] = 0 5: end for 6: return B

Frank Heitmann [email protected]

15/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Bestimmung des Maximums

Algorithmus 4 Find Maximum 1: max = 1 2: for i = 2 to n do 3: if a[i] > a[max] then 4: max = i 5: end if 6: end for 7: return max;

Frank Heitmann [email protected]

16/48

Einf¨ uhrung Algorithmenanalyse

Motivation

InsertionSort: Die Idee Beim Sortieren durch Einf¨ ugen (InsertionSort) wird ¨ahnlich wie beim Spielkarten sortieren vorgegangen: Starte mit der leeren linken Hand Nimm ein Karte und f¨ uge sie an der richtigen Position in der linken Hand ein. Dazu Vergleiche diese neue Karte von rechts nach links mit den Karten, die schon auf der linken Hand sind. Sobald eine kleinere Karte erreicht wird, f¨ uge ein.

⇒ Zu jedem Zeitpunkt sind die Karten auf der linken Hand sortiert. ⇒ Die Karten auf der linken Hand sind jeweils die obersten Karten des Haufens.

Frank Heitmann [email protected]

17/48

Einf¨ uhrung Algorithmenanalyse

Motivation

InsertionSort: Der Algorithmus

Algorithmus 5 InsertionSort(A[1 . . . n]) 1: for j = 2 to n do 2: key = A[j] 3: i =j −1 4: while i > 0 und A[i] > key do 5: A[i + 1] = A[i] 6: i =i −1 7: end while 8: A[i + 1] = key 9: end for

Frank Heitmann [email protected]

18/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Zusammenfassung / Diskussion

Wir kennen jetzt Lineares Suchen und bin¨ares Suchen MaxSort und InsertionSort Aber: Ist ein Verfahren besser als ein anderes? Was messen wir?

Frank Heitmann [email protected]

19/48

Einf¨ uhrung Algorithmenanalyse

Motivation

Algorithmenanalyse

Wir behandeln nachfolgend Zeit- und Platzkomplexit¨at. Eine (elementare) Anweisung z¨ahlt dabei als eine Zeiteinheit. Eine benutzte (elemantare) Variable als eine Platzeinheit. Zeit- und Platzbedarf wird abh¨angig von der L¨ange n der Eingabe gez¨ahlt. Wir arbeiten hierf¨ ur mit Funktionen f : N → N bzw. f : N → R.

Frank Heitmann [email protected]

20/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmenanalyse... Algorithmus 6 Lineare Suche 1: for i = 0 to n do 2: if a[i] == max mustermann then 3: return true 4: end if 5: end for 6: return false Wir behandeln nachfolgend Zeit- und Platzkomplexit¨at (im uniformen Maß). Eine (elementare) Anweisung z¨ahlt dabei als eine Zeiteinheit. Eine benutzte (elemantare) Variable als eine Platzeinheit. Zeit- und Platzbedarf wird abh¨angig von der L¨ange n der Eingabe gez¨ahlt. Wir arbeiten hierf¨ ur mit Funktionen f : N → R. Frank Heitmann [email protected]

21/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

O-Notation - Motivation

Wir werden nachfolgend konstante Faktoren ignorieren. Diese ’verschwinden’ in der O-Notation (auch Landau-Notation). ⇒ Konzentration auf das wesentliche. ⇒ Abstrahiert von verschiedenen Rechnerarchitekturen. ⇒ Guter Vergleich von Algorithmen m¨ oglich (praxisbew¨ahrt). ⇒ Ferner werden wir ’anf¨angliche Schwankungen’ ignorieren k¨onnen. ABER: 5 · n und 5000 · n wird als ’im Prinzip’ gleich angesehen werden!

Frank Heitmann [email protected]

22/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Beware ...

Anmerkung Der Sinn der O-Notation zur Analyse der Laufzeit und des Speicherbedarfs von Algorithmen wird sp¨ater klarer. Gleich folgen erstmal Definitionen und Beispiele dazu, bevor die Anwendung auf Algorithmen folgt.

Frank Heitmann [email protected]

23/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

O-Notation - Definition Definition (O-Notation (und Verwandte)) O(g (n)) = {f | ∃c ∈ R+ ∃n0 ∈ N ∀n ≥ n0 : |f (n)| ≤ c · |g (n)|} Ω(g (n)) = {f | ∃c ∈ R+ ∃n0 ∈ N ∀n ≥ n0 : |f (n)| ≥ c · |g (n)|} o(g (n)) = {f | ∀c ∈ R+ ∃n0 ∈ N ∀n ≥ n0 : |f (n)| ≤ c · |g (n)|} ω(g (n)) = {f | ∀c ∈ R+ ∃n0 ∈ N ∀n ≥ n0 : |f (n)| ≥ c · |g (n)|} Θ(g (n)) = {f | ∃c1 , c2 ∈ R+ ∃n0 ∈ N ∀n ≥ n0 : c1 · |g (n)| ≤ |f (n)| ≤ c2 · |g (n)|} Bemerkung f ist dabei stets eine Funktion von N nach R, also f : N → R. (Daher u ¨berall die Betragsstriche!) In der Literatur gibt es hier Varianten. Bei der tats¨achlichen Algorithmenanalyse machen diese aber kaum einen Unterschied. Frank Heitmann [email protected]

24/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Wichtige Funktionen Bemerkung Wichtige Funktionen in der Algorithmik/Algorithmenanalyse: Konstante Funktionen Logarithmen (log, ln) √ Wurzelfunktionen ( n) √ Polynome (beachte: n = n1/2 ) Exponentialfunktionen (2n ) ... Kombinationen davon In welchem Zusammenhang stehen diese bzgl. der O-Notation? (⇒ Hausaufgabe!)

Frank Heitmann [email protected]

25/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Zum Logarithmus Bemerkung Mit log werden wir stets eine Variante des Logarithmus zur Basis 2 meinen, n¨amlich:  1 , falls n ≤ 1 log(n) := blog2 (n)c + 1 , sonst. Damit ist log (n) die L¨ange der Bin¨ardarstellung einer nat¨ urlichen Zahl n. (Die Anzahl von Speicherstellen/Schritten ist stets eine nat¨ urliche Zahl!) Andere Logarithmen werden nur selten ben¨otigt und sind bis auf einen konstanten Faktor ohnehin gleich. Die Rechengesetze wie z.B. log(x · y ) = log(x) + log(y ) und log(x r ) = r · log(x) sind oft hilfreich.

Frank Heitmann [email protected]

26/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

O-Notation - Beispiele I Definition (Θ - Wiederholung) Θ(g (n)) = {f | ∃c1 , c2 ∈ R + ∃n0 ∈ N ∀n ≥ n0 : c1 · g (n) ≤ f (n) ≤ c2 · g (n)} Beispiel Wir wollen 12 n2 − 3n ∈ Θ(n2 ) zeigen. Wir suchen also Konstanten c1 , c2 , n0 , so dass 1 c1 n2 ≤ n2 − 3n ≤ c2 n2 2 f¨ ur alle n ≥ n0 erf¨ ullt ist. Teilen durch n2 f¨ uhrt zu c1 ≤

1 3 − ≤ c2 2 n

. Dies kann man z.B. mit c1 = 28 , c2 = 1, n0 = 24 erf¨ ullen. Frank Heitmann [email protected]

27/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

O-Notation - Variante Satz f (n) g (n) < ∞ o(g (n)) ⇔ limn→∞ gf (n) (n) = 0 Ω(g (n)) ⇔ limn→∞ gf (n) (n) > 0 ω(g (n)) ⇔ limn→∞ gf (n) (n) = ∞

1

f (n) ∈ O(g (n)) ⇔ limn→∞

2

f (n) ∈

3

f (n) ∈

4

f (n) ∈

Bemerkung ¨ Mit obigen Aquivalenzen und mit Kenntnissen der Limesbildung sind einige der unten folgenden S¨atze schnell zu zeigen (und evtl. schneller als mit der obigen, urspr¨ unglichen Definition).

Frank Heitmann [email protected]

28/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

O-Notation - Beispiele II Satz / Definition f (n) ∈ O(g (n)) ⇔ limn→∞

f (n) g (n)

g Wir sagen, dass f asymptotisch kleiner gleich, gr¨oßer gleich, gleich, kleiner bzw. gr¨oßer ist als g , wenn f ∈ O(g ), f ∈ Ω(g ), f ∈ Θ(g ), f ∈ o(g ) bzw. f ∈ ω(g ) gilt.

Frank Heitmann [email protected]

30/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Wichtige Eigenschaften Satz 1

f ∈ X (g ) und g ∈ X (h) impliziert f ∈ X (h) (X ∈ {O, Ω, Θ, o, ω})

2

f ∈ X (f ) (X ∈ {O, Ω, Θ})

3

f ∈ Θ(g ) ⇔ g ∈ Θ(f )

Beweis (f¨ ur 1. und X = O) Sei f ∈ O(g ) und g ∈ O(h), dann gibt es c, n0 , so dass f (n) ≤ c · g (n) ∀n ≥ n0 und ebenso c 0 , n00 , so dass g (n0 ) ≤ c 0 · h(n0 ) ∀n0 ≥ n00 . Sei nun n000 = max(n0 , n00 ). Dann gelten ∀n00 ≥ n000 beide Ungleichungen und f¨ ur diese n00 gilt dann f (n00 ) ≤ c · g (n) ≤ c · c 0 · 00 00 h(n ) also f (n ) ≤ c · c 0 · h(n00 ) und da c · c 0 eine Konstante ist, folgt f ∈ O(h). Frank Heitmann [email protected]

31/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Weitere wichtige Eigenschaften Satz 1

g ∈ O(f ) ⇔ f ∈ Ω(g )

2

g ∈ o(f ) ⇔ f ∈ ω(g )

3

g ∈ Θ(f ) ⇔ g ∈ O(f ) ∩ Ω(f )

4

o(f ) ⊆ O(f )

5

ω(f ) ⊆ Ω(f )

6

ω(f ) ∩ o(f ) =?

7

Ω(f ) ∩ O(f ) =?

Beweis (f¨ ur 4.) Sei g ∈ o(f ), dann gilt limn→∞ gf (n) (n) = 0. Um g ∈ O(f ) zu zeigen, ur eine Konstante c gezeigt werden. Mit muss limn→∞ gf (n) (n) = c f¨ c = 0 folgt dies sofort. Frank Heitmann [email protected]

32/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Noch mehr wichtige Eigenschaften

Satz 1

f , g ∈ O(h) ⇒ f + g ∈ O(h)

2

f ∈ O(g ), c ∈ R + ⇒ c · f ∈ O(g )

3

f ∈ O(h1 ), g ∈ O(h2 ) ⇒ f · g ∈ O(h1 · h2 )

Beweis (f¨ ur 3.) Sei f ∈ O(h1 ) und g ∈ O(h2 ), dann gibt es c, n0 , so dass f (n) ≤ c · h1 (n) ∀n ≥ n0 und ebenso c 0 , n00 , so dass g (n0 ) ≤ c 0 ·h2 (n0 ) ∀n0 ≥ n00 . Daraus folgt f (n00 )·g (n00 ) ≤ c ·c 0 ·h1 (n00 )·h2 (n00 ) ∀n00 ≥ max(n0 , n00 ), also f · g ∈ O(h1 · h2 ).

Frank Heitmann [email protected]

33/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

¨ Zur Ubung

¨ Zur Ubung Formaler Nachweis der obigen Eigenschaften (¨ ubt das Formale). Sei g eine unserer ’¨ ublichen Funktionen’. Man u ¨berlege sich f¨ ur jedes X ∈ {O, Ω, Θ, o, ω} ein f mit f ∈ X (g ) (baut Intuition auf).

Frank Heitmann [email protected]

34/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmus 1: Lineare Suche Algorithmus 7 Algorithmus 1 1: for i = 0 to n do 2: if a[i] == max mustermann then 3: return true 4: end if 5: end for 6: return false Analyse Laufzeit ist linear in der L¨ange n des Arrays, d.h. in O(n) oder genauer sogar in Θ(n). (Korrektheit ist noch zu zeigen. Dazu sp¨ater mehr...)

Frank Heitmann [email protected]

35/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmus 2: Fakult¨at

Algorithmus 8 fac(n) 1: res = 1 2: for i = 1 to n do 3: res = res · i 4: end for 5: return res Analyse Die Laufzeit ist in O(n). Aber Achtung! Dies ist exponentiell in der Gr¨ oße der Eingabe! Diese ist n¨amlich nur in O(log n).

Frank Heitmann [email protected]

36/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Vorgehen Vorgehen, wenn wir einen Algorithmus analysieren: 1

2

¨ Uberlegen bzgl. welcher Kenngr¨oße der Eingabe wir messen wollen. Diese kann sich von der Gr¨ oße der Eingabe unterscheiden! (Beispiel: Anzahl Knoten eines Graphen). Laufzeit/Speicherbedarf bzgl. dieser Kenngr¨ oße ausdr¨ ucken.

Nochmal u ¨berlegen, ob dies die Aussage des Ergebnisses verf¨alscht (so wie bei der Fakult¨atsberechnung eben). ⇒ I.A. sollte sich die eigentliche Eingabegr¨ oße leicht durch die Kenngr¨oße ausdr¨ ucken lassen und der Unterschied sollte nicht zu groß sein. 3

+ Beim Graphen mit n Knoten ist die Adjazenmatrix in O(n2 ). − Ist eine Zahl n die Eingabe, so ist die Eingabegr¨oße in O(log n). Eine Laufzeit von O(n) w¨are also exponentiell in der Eingabe! Frank Heitmann [email protected]

37/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmus 3: Bestimmung des Maximums Algorithmus 9 Find Maximum 1: max = 1 2: for i = 2 to n do 3: if a[i] > a[max] then 4: max = i 5: end if 6: end for 7: return max; Analyse Laufzeit ist linear in der L¨ange n des Arrays, d.h. in O(n) oder genauer sogar in Θ(n).

Frank Heitmann [email protected]

38/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmus 4: MaxSort

Algorithmus 10 Sortieren mit Max 1: for i = n downto 1 do 2: idx = max(A) 3: B[i] = A[idx] 4: A[idx] = 0 5: end for 6: return B Laufzeit ist in O(n2 ).

Frank Heitmann [email protected]

39/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmus 5: InsertionSort Algorithmus 11 InsertionSort(A[1 . . . n]) 1: for j = 2 to n do 2: key = A[j] 3: i =j −1 4: while i > 0 und A[i] > key do 5: A[i + 1] = A[i] 6: i =i −1 7: end while 8: A[i + 1] = key 9: end for Laufzeit ist ebenfalls in O(n2 ).

Frank Heitmann [email protected]

40/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmus 6: Bin¨are Suche Algorithmus 12 Bin¨are Suche 1: while first ≤ last ∧ idx < 0 do 2: m = first + ((last − first)/2) 3: if a[m] < p then 4: first = m + 1 5: else if a[m] > p then 6: last = m − 1 7: else 8: idx = m 9: end if 10: end while 11: return idx Laufzeit ist in O(log n). Frank Heitmann [email protected]

41/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Algorithmus 7: Brute-Force-Algorithmen Das Mengenpartitionsproblem Gegeben P sei einePMenge S ⊆ N. Gesucht ist eine Menge A ⊆ S, so dass x∈A x = x∈A x gilt. Algorithmus 13 Suchraum durchsuchen 1: for all A ⊆ S do P P 2: if x∈A x = x∈A x then 3: return true 4: end if 5: end for 6: return false Laufzeit ist in O(2|S| ). Frank Heitmann [email protected]

42/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Eine kleine Warnung zum Schluss

Wichtige Anmerkung Die O-Notation ’verschluckt’ Konstanten. Wenn die zu gross/klein sind, dann kann dies das Ergebnis verf¨alschen! In dem Fall ist dann eine genauere Analyse (ohne O-Notation) n¨ otig. I.A. hat sich die O-Notation aber bew¨ahrt, weil Extreme wie 106 · n und 10−10 · 2n in der Praxis kaum vorkommen. Kurz: O(2n ) ist nicht zwingend immer schlimmer als O(n) aber auf lange Sicht (d.h. bei wachsenden Eingabel¨angen) auf jeden Fall und im Allgemeinen (und bei allem, was einem so i.A. in der Praxis begegnet) ist O(2n ) eben doch schlimmer als O(n).

Frank Heitmann [email protected]

43/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Sequentielle Algorithmen - Zusammenfassung Ein paar Merkregeln f¨ ur die bisherigen Laufzeiten: Konstant - Selten. Es wird nicht mal die ganze Eingabe betrachtet! - Aber Grundoperationen kosten nur konstant viel! Logarithmisch - Bei wiederholten Halbierungen oder wenn man mit der H¨ohe eines Baumes arbeitet. Lineare Laufzeiten, wenn man sich jedes Element der Eingabe einmal (oder: eine konstante Anzahl von Malen) ansieht. Quadratisch - jedes Element mit jedem anderen vergleichen. H¨ohere Polynome - ? Exponentiell - wenn man jede M¨ oglichkeit durchprobiert.

Frank Heitmann [email protected]

44/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Zusammenfassung

Begriffe: Datentyp, Datenstruktur, Algorithmus Zeit- und Platzkomplexit¨at (’gute’ Algorithmen), wobei wir das uniforme Kostenmaß nutzen (jeder (elementare) Schritt eine Zeiteinheit, jede (elementare) Variable eine Platzeinheit) Zwei Definitionen f¨ ur die O-Notation (und Verwandte) Wichtige Eigenschaften der O-Notation Wichtige Funktionen und ihre Klassifizierung bzgl. der O-Notation Lineares Suchen und Bin¨ares Suchen MaxSort und InsertionSort

Frank Heitmann [email protected]

45/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Themen der Vorlesung Thema 2 Wir untersuchen den Zeit- und Platzbedarf von Algorithmen, wobei wir das uniforme Kostenmaß nutzen (jeder (elementare) Schritt eine Zeiteinheit, jede (elementare) Variable eine Platzeinheit). Zeit- und Platzbedarf wird abh¨angig von der L¨ange n der Eingabe gez¨ahlt. Hierzu nutzen wir Funktionen f : N → N, bzw. f : N → R. Thema 1 & 3 Weitere (Ober-)Themen der Vorlesung sind bekannte Algorithmen f¨ ur Probleme lesen, verstehen und anwenden zu k¨onnen, sowie neue Algorithmen entwerfen, deren Korrektheit beweisen und ihre Laufzeit analysieren zu k¨onnen.

Frank Heitmann [email protected]

46/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Ausblick: Eine andere Art von Algorithmen

Algorithmus 14 fac(n) 1: if n == 0 then 2: return 1 3: else 4: return n · fac(n − 1) 5: end if Dies ist ein rekursiver Algorithmus... unsere bisherigen Techniken sind hier bei der Analyse wenig hilfreich.

Frank Heitmann [email protected]

47/48

Einf¨ uhrung Algorithmenanalyse

Einf¨ uhrung O-Notation

Ausblick

N¨achstes Mal: Rekurrenzgleichungen Korrektheit von Algorithmen Dabei: Weiteres zu Suchen und Sortieren Datenstrukturen

Frank Heitmann [email protected]

48/48