datenstrukturen, algorithmen und programmierung 2 (dap2)
DESCRIPTION
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2). Organisatorisches. Praktikum Falls Sie einen eigenen Laptop mit einem C-Compiler besitzen, können Sie diesen gerne zum Praktikum mitbringen. Organisatorisches. Lernräume Montag: 14.30-17.30 Uhr (OH14, Raum 340) - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/1.jpg)
LS 2 / Informatik
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
![Page 2: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/2.jpg)
LS 2 / Informatik
2
Organisatorisches
Praktikum Falls Sie einen eigenen Laptop mit einem C-Compiler besitzen, können Sie
diesen gerne zum Praktikum mitbringen
![Page 3: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/3.jpg)
LS 2 / Informatik
3
Organisatorisches
Lernräume Montag: 14.30-17.30 Uhr (OH14, Raum 340) Dienstag: 15-18 Uhr (OH14, Raum 340) Mittwoch: 13-16 Uhr (OH14, Raum 340) Donnerstag: 9-12 Uhr (GB V, Raum 105)
![Page 4: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/4.jpg)
LS 2 / Informatik
4
1. Teil der Vorlesung – Grundlagen der Algorithmenanalyse
Inhalt Wie beschreibt man einen Algorithmus? Wie beweist man die Korrektheit eines Algorithmus? Rechenmodell Laufzeitanalyse
![Page 5: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/5.jpg)
LS 2 / Informatik
5
InsertionSort(Array A) Eingabegröße n 1. for j 2 to length[A] do length[A] = n2. key A[j]3. i j-1 verschiebe alle Elemente aus4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts6. i i-17. A[i+1] key Speichere key in Lücke
FragestellungWie kann man die Laufzeit eines Algorithmus vorhersagen?
Laufzeitanalyse
![Page 6: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/6.jpg)
LS 2 / Informatik
6
Laufzeitanalyse
Laufzeit hängt ab von Größe der Eingabe (Parameter n) Art der Eingabe
(Insertionsort ist schneller auf sortierten Eingaben)
Analyse Parametrisiere Laufzeit als Funktion der Eingabegröße Finde obere Schranken (Garantien) an die Laufzeit
![Page 7: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/7.jpg)
LS 2 / Informatik
7
Laufzeitanalyse
Worst-Case Analyse Für jedes n definiere Laufzeit
T(n) = Maximum über alle Eingaben der Größe n Garantie für jede Eingabe Standard
Average-Case Analyse Für jedes n definiere Laufzeit
T(n) = Durchschnitt über alle Eingaben der Größe n Hängt von Definition des Durchschnitts ab (wie sind die Eingaben verteilt)
![Page 8: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/8.jpg)
LS 2 / Informatik
8
Laufzeitanalyse
Laufzeit hängt auch ab von Hardware
(Prozessor, Cache, Pipelining) Software
(Betriebssystem, Programmiersprache, Compiler)
Aber Analyse soll unabhängig von Hard- und Software gelten
![Page 9: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/9.jpg)
LS 2 / Informatik
9
Laufzeitanalyse
Maschinenmodell Eine Pseudocode-Instruktion braucht einen Zeitschritt Wird eine Instruktion r-mal aufgerufen, werden r Zeitschritte benötigt Formales Modell: Random Access Machines (RAM Modell)
Idee Ignoriere rechnerabhängige Konstanten Betrachte Wachstum von T(n) für n
„Asymptotische Analyse“
![Page 10: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/10.jpg)
LS 2 / Informatik
10
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key
Laufzeitanalyse
![Page 11: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/11.jpg)
LS 2 / Informatik
11
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] n-13. i j-14. while i>0 and A[i]>key do5. A[i+1] A[i]6. i i-17. A[i+1] key
Laufzeitanalyse
![Page 12: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/12.jpg)
LS 2 / Informatik
12
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] n-13. i j-1 n-14. while i>0 and A[i]>key do5. A[i+1] A[i]6. i i-17. A[i+1] key
Laufzeitanalyse
![Page 13: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/13.jpg)
LS 2 / Informatik
13
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] n-13. i j-1 n-1
4. while i>0 and A[i]>key do n-1 + S t5. A[i+1] A[i]6. i i-17. A[i+1] key
t : Anzahl Wiederholungen der while-Schleife bei Laufindex j
Laufzeitanalyse
j
j
![Page 14: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/14.jpg)
LS 2 / Informatik
14
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] n-13. i j-1 n-1
4. while i>0 and A[i]>key do n-1 + S t
5. A[i+1] A[i] S t6. i i-17. A[i+1] key
t : Anzahl Wiederholungen der while-Schleife bei Laufindex j
Laufzeitanalyse
j
j
j
![Page 15: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/15.jpg)
LS 2 / Informatik
15
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] n-13. i j-1 n-1
4. while i>0 and A[i]>key do n-1 + S t
5. A[i+1] A[i] S t
6. i i-1 S t7. A[i+1] key
t : Anzahl Wiederholungen der while-Schleife bei Laufindex j
Laufzeitanalyse
j
j
j
j
![Page 16: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/16.jpg)
LS 2 / Informatik
16
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] n-13. i j-1 n-1
4. while i>0 and A[i]>key do n-1 + S t
5. A[i+1] A[i] S t
6. i i-1 S t7. A[i+1] key n-1
t : Anzahl Wiederholungen der while-Schleife bei Laufindex j
Laufzeitanalyse
j
j
j
j
![Page 17: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/17.jpg)
LS 2 / Informatik
17
InsertionSort(Array A) Zeit:1. for j 2 to length[A] do n2. key A[j] n-13. i j-1 n-1
4. while i>0 and A[i]>key do n-1 + S t
5. A[i+1] A[i] S t
6. i i-1 S t7. A[i+1] key n-1
t : Anzahl Wiederholungen der while-Schleife bei Laufindex j
Laufzeitanalyse
j
j
j
5n-4+3 S tj
j
![Page 18: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/18.jpg)
LS 2 / Informatik
18
Laufzeitanalyse
Worst-Case Analyse t =j-1 für absteigend sortierte Eingabe (schlechtester Fall)
n
j
n
j
jnjnnT12
342)1(345)(
j
![Page 19: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/19.jpg)
LS 2 / Informatik
19
Laufzeitanalyse
Worst-Case Analyse t =j-1 für absteigend sortierte Eingabe (schlechtester Fall)
n
j
n
j
jnjnnT12
342)1(345)(
2
87²3
2
)1(342
nnnnn
j
![Page 20: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/20.jpg)
LS 2 / Informatik
20
Laufzeitanalyse
Worst-Case Analyse t =j-1 für absteigend sortierte Eingabe (schlechtester Fall)
Abstraktion von multiplikativen Konstanten O-Notation (gleich)
n
j
n
j
jnjnnT12
342)1(345)(
2
87²3
2
)1(342
nnnnn
j
![Page 21: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/21.jpg)
LS 2 / Informatik
21
Laufzeitanalyse
Beispiel Problem: Nullvektortest Eingabe: Feld A[1,…,n] (n-dimensionaler Vektor) Ausgabe: true, wenn A[i]=0, für alle 1in; false, sonst
Nullvektortest(Array A) 1. output true 2. i1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
![Page 22: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/22.jpg)
LS 2 / Informatik
22
Laufzeitanalyse
Beispiel Problem: Nullvektortest Eingabe: Feld A[1,…,n] (n-dimensionaler Vektor) Ausgabe: true, wenn A[i]=0, für alle 1in; false, sonst
Nullvektortest(Array A) 1. output true 2. i1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Invariante:Nach dem k-ten Schleifendurchlauf gilt:(a) i=k+1 und (b) output=true, gdw. A[j]=0 für alle
1jk
![Page 23: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/23.jpg)
LS 2 / Informatik
23
Nullvektortest(Array A) 1. output true 2. i1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Laufzeit Jede Anweisung braucht einen Zeitschritt
Laufzeitanalyse
![Page 24: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/24.jpg)
LS 2 / Informatik
24
Nullvektortest(Array A) 1. output true 2. i1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Laufzeit Jede Anweisung braucht einen Zeitschritt
LaufzeitanalyseLaufzeit parametrisiert durch Länge der Eingabe n. Hier ist n = length[A].
![Page 25: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/25.jpg)
LS 2 / Informatik
25
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Laufzeit Jede Anweisung braucht einen Zeitschritt
Laufzeitanalyse
![Page 26: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/26.jpg)
LS 2 / Informatik
26
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Laufzeit Jede Anweisung braucht einen Zeitschritt
Laufzeitanalyse
![Page 27: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/27.jpg)
LS 2 / Informatik
27
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Laufzeit Jede Anweisung braucht einen Zeitschritt
Laufzeitanalyse
Anzahl Durchläufe abhängig von
Eingabe.
![Page 28: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/28.jpg)
LS 2 / Informatik
28
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Definition t=max{i: A[j]=0 für alle 0j<i; in}
Laufzeitanalyse
Anzahl Durchläufe abhängig von
Eingabe.
0 0 5 0 3
t=3
![Page 29: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/29.jpg)
LS 2 / Informatik
29
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false 5. ii+1 6. return output
Definition t=max{i: A[j]=0 für alle 0j<i; in}
Laufzeitanalyse
0 0 5 0 3
t=3
![Page 30: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/30.jpg)
LS 2 / Informatik
30
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 6. return output
Definition t=max{i: A[j]=0 für alle 0j<i; in}
Laufzeitanalyse
0 0 5 0 3
t=3
![Page 31: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/31.jpg)
LS 2 / Informatik
31
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output
Definition t=max{i: A[j]=0 für alle 0j<i; in}
Laufzeitanalyse
0 0 5 0 3
t=3
![Page 32: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/32.jpg)
LS 2 / Informatik
32
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output 1
Definition t=max{i: A[j]=0 für alle 0j<i; in}
Laufzeitanalyse
0 0 5 0 3
t=3
![Page 33: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/33.jpg)
LS 2 / Informatik
33
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output 1
3t+4
Laufzeitanalyse
![Page 34: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/34.jpg)
LS 2 / Informatik
34
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output 1
3t+4
Worst-Case Laufzeit• T(n) = maximale Laufzeit von Nullvektortest bei Eingabe der Länge n
Laufzeitanalyse
![Page 35: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/35.jpg)
LS 2 / Informatik
35
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output 1
3t+4
Worst-Case Laufzeit• T(n) = maximale Laufzeit von Nullvektortest bei Eingabe der Länge n• T(n) ≤ 3n+4, da t maximal n ist
Laufzeitanalyse
![Page 36: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/36.jpg)
LS 2 / Informatik
36
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output 1
3t+4
Worst-Case Laufzeit• T(n) = maximale Laufzeit von Nullvektortest bei Eingabe der Länge n• T(n) ≤ 3n+4, da t maximal n ist• T(n) ≥ 3n+4, da bei Eingabe eines Nullvektors 3n+4 Schritte benötigt
werden
Laufzeitanalyse
![Page 37: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/37.jpg)
LS 2 / Informatik
37
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output 1
3t+4
Worst-Case Laufzeit• T(n) = maximale Laufzeit von Nullvektortest bei Eingabe der Länge n• Also: T(n) = 3n+4
Laufzeitanalyse
![Page 38: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/38.jpg)
LS 2 / Informatik
38
Laufzeitanalyse
Diskussion Die konstanten Faktoren sind wenig aussagekräftig, da wir bereits bei den
einzelnen Befehlen konstante Faktoren ignorieren Je nach Rechnerarchitektur und genutzten Befehlen könnte also z.B. 3n+4
langsamer sein als 5n+7 Betrachte nun Algorithmus A mit Laufzeit 100n und Algorithmus B mit
Laufzeit 5n² Ist n klein, so ist Algorithmus B schneller Ist n groß, so wird das Verhältnis Laufzeit B / Laufzeit A beliebig groß Algorithmus B braucht also einen beliebigen Faktor mehr Laufzeit als A
(wenn die Eingabe lang genug ist)
![Page 39: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/39.jpg)
LS 2 / Informatik
39
Laufzeitanalyse
Idee (asymptotische Laufzeitanalyse) Ignoriere konstante Faktoren Betrachte das Verhältnis von Laufzeiten für n Klassifiziere Laufzeiten durch Angabe von „einfachen Vergleichsfunktionen“
Beispiel Die Laufzeit von Algorithmus Nullvektortest verhält sich für n
(bei Ignorieren von Konstanten) wie f(n) = n.
![Page 40: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/40.jpg)
LS 2 / Informatik
40
Laufzeitanalyse
O-Notation O(f(n)) = {g(n) : c>0, n >0, so dass für alle n≥n gilt g(n) cf(n)} (wobei f(n), g(n)>0)
Interpretation g(n)O(f(n)) bedeutet, dass g(n) für n höchstens genauso stark wächst wie
f(n) Beim Wachstum ignorieren wir Konstanten
0 0
![Page 41: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/41.jpg)
LS 2 / Informatik
41
Laufzeitanalyse
Beispiele 10nO(n) 10nO(n²) n²O(1000n) O(1000n) = O(n)
Hierarchie O(log n)O(log²n)O(log n)O(n )O(n)O(n) O(n)O(n²)O(n )O(2 ) (für c>=2 und 0<e1/2)
c e
c n
![Page 42: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/42.jpg)
LS 2 / Informatik
42
Laufzeitanalyse
W-Notation W(f(n)) = {g(n) : c>0, n >0, so dass für alle n≥n gilt g(n) cf(n)} (wobei f(n), g(n)>0)
Interpretation g(n)W(f(n)) bedeutet, dass g(n) für n mindestens so stark wächst
wie f(n) Beim Wachstum ignorieren wir Konstanten
0 0
![Page 43: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/43.jpg)
LS 2 / Informatik
43
Laufzeitanalyse
Beispiele 10nW(n) 1000nW(n²) n²W(n) W(1000n) = W(n) f(n) = (W g(n)) g(n) = O(f(n))
![Page 44: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/44.jpg)
LS 2 / Informatik
44
Laufzeitanalyse
Q-Notation g(n) Q(f(n)) g(n)=O(f(n)) und g(n)=W(f(n))
Beispiele 1000n Q(n) 10n²+1000n Q(n²) n Q(n)1-sin n
![Page 45: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/45.jpg)
LS 2 / Informatik
45
Laufzeitanalyse
o-Notation o(f(n)) {g(n): c>0 n >0, so dass für alle n≥n gilt cg(n)<f(n)} (f(n), g(n) >0)
w-Notation f(n)w(g(n)) g(n)o(f(n))
0 0
![Page 46: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/46.jpg)
LS 2 / Informatik
46
Laufzeitanalyse
Beispiele no(n²) no(n)
Eine weitere Interpretation Grob gesprochen sind O,W,Q,o,w die „asymptotischen Versionen“ von
,,=,<,> (in dieser Reihenfolge)
Schreibweise Wir schreiben häufig f(n)=O(g(n)) anstelle von f(n)O(g(n))
![Page 47: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/47.jpg)
LS 2 / Informatik
47
Nullvektortest(Array A) Zeit 1. output true 1 2. i1 1 3. while output=true and in do t+1 4. if A[i] <> 0 then output false t 5. ii+1 t 6. return output 1
3t+4
Worst-Case Laufzeit• T(n) = maximale Laufzeit von Nullvektortest bei Eingabe der Länge n• Also: T(n) = 3n+4 = Q(n)
Laufzeitanalyse
![Page 48: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/48.jpg)
LS 2 / Informatik
48
Laufzeitanalyse
Worst-Case Analyse (Insertion Sort) t =j-1 für absteigend sortierte Eingabe (schlechtester Fall)
n
j
n
j
jnjnnT12
342)1(345)(
²)(2
87²3
2
)1(342 n
nnnnn
j
![Page 49: Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)](https://reader035.vdokument.com/reader035/viewer/2022062422/56813a14550346895da1ed82/html5/thumbnails/49.jpg)
LS 2 / Informatik
49
Zusammenfassung
Rechenmodell Abstrahiert von maschinennahen Einflüssen wie Cache, Pipelining,
Prozessor, etc. Jede Pseudocodeoperation braucht einen Zeitschritt
Laufzeitanalyse Normalerweise Worst-Case, manchmal Average-Case (sehr selten auch
Best-Case) Asymptotische Analyse für n Ignorieren von Konstanten O-Notation