2.1 analyse von algorithmen 2.2 entwurfsparadigmen 2.3 ... · 2.1 analyse von algorithmen 2.2...
TRANSCRIPT
![Page 1: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/1.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
2 Algorithmen
2.1 Analyse von Algorithmen
2.2 Entwurfsparadigmen
2.3 Sortieren
2.4 Suchen
2.5 ...
1
![Page 2: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/2.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Begriffe
• Effizienz
= gute Ausnutzung von Resourcen
• Resourcen
= Rechenzeit, Speicherplatz
• Aufwand / Komplexität
= tatsächlicher Verbrauch von Resourcen
2
![Page 3: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/3.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Performanzfaktoren
• Prozessorleistung
• Hauptspeicher
• Caches
• Compiler-Version
• Betriebssystem
• . . .
3
![Page 4: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/4.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Matrix mit 2048×2048 Einträgen • Entry(i,j) = A[i×2048+j] • Löschen 1:
for i←0 to 2047 do for j←0 to 2047 do Entry(i,j) ← 0
• Löschen 2: for j←0 to 2047 do for i←0 to 2047 do Entry(i,j) ← 0
4
![Page 5: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/5.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Effizienz eines Algorithmus
• Implement / Run / Test
– Abhängig vom speziellen System
– Abhängig von der aktuellen Auslastung
– Abhängig von den Testdaten
– Abhängig von der Begabung des Programmierers
– Gibt es noch bessere Algorithmen?
5
![Page 6: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/6.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Effizienz eines Algorithmus
• Tatsächliche Laufzeit variiert auf unterschiedlichen Computer-Systemen
• Erwartete Laufzeit verschiedener Algorithmen auf dem selben Computer kann nur für lange Berechnungen verglichen werden (variierende Systemauslastung).
6
![Page 7: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/7.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Effizienz eines Algorithmus
• In der Regel interessiert man sich nicht für die exakte Anzahl von Operationen, sondern nur für die Komplexitätsklasse.
• Beispiel: lineare Liste vs. Suchbaum: – 1000 vs. 10 – 2000 vs. 11
– …
– 1000000 vs. 20
– 2000000 vs. 21
7
![Page 8: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/8.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Komplexitätsklassen
• Performance Charts
– X-Achse : Größe der Eingabedaten
– Y-Achse : Rechenzeit
• Lineare vs. logarithmische Achsen
– Exakte Werte
– Größenordnungen
8
![Page 9: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/9.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Komplexitätsklassen
9
x, 10x, 100x [lin / lin]
![Page 10: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/10.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Komplexitätsklassen
10
x, 10x, 100x [lin / log]
![Page 11: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/11.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Komplexitätsklassen
11
x, 10x, 100x [log / log]
![Page 12: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/12.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Komplexitätsklassen
12
Log(x), x, x2
[lin / lin]
![Page 13: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/13.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Komplexitätsklassen
13
Log(x), x, x2
[lin / log]
![Page 14: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/14.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Komplexitätsklassen
14
Log(x), x, x2
[log / log]
![Page 15: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/15.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abstrakte Analyse
• Abstrakte Analyse
Zähle die wesentlichen Operationen
auf einem idealen Computer.
• Die Komplexität eines Algorithmus ist
unabhängig von der
Programmiersprache.
15
![Page 16: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/16.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Stripped Java
• Teilmenge von Java
– Prozedur-Aufrufe • Integer-Arithmetik
• Zuweisungen (Lesen, Schreiben)
• if-then-else
• while
• Vollständig aber einfacher zu analysieren als full Java
16
![Page 17: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/17.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Berechnungsaufwand
• Prozedur-Aufruf – Speichere Kontext auf dem Stack
– Speichere Rücksprungadresse
– Kopiere aktuelle Parameter
– Generiere neuen Prozedurkontext
– …
– Kopiere Rückgabewert
– Stelle alten Kontext wieder her
• Kosten: CPC = CPC(Sold, Args, Snew)
17
![Page 18: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/18.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Berechnungsaufwand
• Integer-Arithmetik (Einheitskosten der Elementaroperationen) C+ ≤ C− ≤ C× ≤ C/
• Konvertiere komplizierte Terme in die 3-Adress-Form
• Achtung: bei genauer Analyse muß die Anzahl der Stellen berücksichtigt werden
18
![Page 19: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/19.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
3-Adress-Form
19
A + B × (C + D) / E
h1 = C + D h2 = B × h1 h3 = h2 / E h4 = A + h3 h1
h4
h3
h2 E
+
C
B
D
A /
×
+
![Page 20: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/20.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
3-Adress-Form
20
A + B × (C + D) / E
h1 = C + D h1 = B × h1 h1 = h1 / E h1 = A + h1 h1
h1
h1
h1 E
+
C
B
D
A /
×
+
![Page 21: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/21.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Kostenmaße
• C+ ≤ C− ≤ C× ≤ C/
• Addition – Addition einzelner Ziffern:
x + y = z + c
• Berücksichtigung des Überlaufs
• # Sub-Operationen = # Stellen ≈ log z
• Java-Integer : # Stellen = 32
21
![Page 22: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/22.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Kostenmaße
• C+ ≤ C− ≤ C× ≤ C/
• Multiplikation – Multiplikation einzelner Ziffern: x·y = z
• (10·x1 + x0)·(10·y1 + y0) = 100·x1·y1 + 10·(x1·y0 + x0·y1) + x0·y0
• # Sub-Operationen = # Stellen2 ≈ (log z)2
• Java-Integer : # Stellen = 32
22
![Page 23: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/23.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Kostenmaße
• C+ ≤ C− ≤ C× ≤ C/
• Multiplikation – Multiplikation einzelner Ziffern: x·y = z
• (b·x1 + x0)·(b·y1 + y0) = b2·x1·y1 + b·(x1·y0 + x0·y1) + x0·y0
• # Sub-Operationen = # Stellen2 ≈ (log z)2
• Java-Integer : # Stellen = 32
23
![Page 24: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/24.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Kostenmaße
• C+ ≤ C− ≤ C× ≤ C/
• Multiplikation – Multiplikation einzelner Ziffern: x·y = z
• (b·x1 + x0)·(b·y1 + y0) = x0·y0+b·((x0+x1)·(y0+y1)−x0·y0−x1·y1) + b2·x1·y1
• # Sub-Operationen = # Stellen1.58 ≈ (log z)log 3
• Java-Integer : # Stellen = 32
24
![Page 25: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/25.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Kostenmaße
• C+ ≤ C− ≤ C× ≤ C/
• Multiplikation – Karatsuba-Multiplikation
• Spart eine Sub-Multiplikation aber benötigt drei zusätzliche Additionen
• Lohnt sich nur für sehr große Zahlen !!!
• Es gibt theoretisch noch bessere Algorithmen
25
![Page 26: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/26.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abstrakte Analyse
• Theorie: Effiziente Algorithmen lohnen sich vor allem für große Probleme
• Praxis: Für kleinere Probleme können einfache Algorithmen unter Umständen sinnvoller sein.
• Die Klassifizierung groß/klein hängt vom Problem und vom Algorithmus ab.
26
![Page 27: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/27.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Berechnungsaufwand
• Zuweisung (Lesen, Schreiben)
– Einheitskosten Cass
– Caching-Effekte werden vernachlässigt
• Array-Zugriff A[ i ] enthält eine
versteckte Addition.
27
![Page 28: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/28.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Berechnungsaufwand
• if X then Y else Z – Worst Case:
#OP = #OP(X) + max #OP(Y), #OP(Z)
– Average Case: P = Probability(X = true) #OP = #OP(X) + P×#OP(Y) + (1−P)×#OP(Z)
28
![Page 29: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/29.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Berechnungsaufwand
• while X do Y
– Konstanter Aufwand:
#OP = #Loops × [ #OP(X) + #OP(Y) ]
– Variabler Aufwand: #OP = #Loops × #OP(X) + SUM(#OP(Yi))
29
![Page 30: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/30.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Sortiere(A[1..n]) i ← 1 while i < n do min ← i j ← i+1 while j ≤ n do if A[j] < A[min] then min ← j j ← j+1 swap(A[i],A[min]) i ← i+1
30
![Page 31: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/31.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Aufwand der inneren Schleife Cinner
• Aufwand der äußeren Schleife Couter
• Anzahl der Durchläufe
C(n) = ∑i Couter + (n−i) × Cinner
= n × Couter + n×(n−1)/2 × Cinner
≈ n2 × Cinner/2... für „große“ n
31
![Page 32: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/32.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Best / Worst / Average Case
• Verschieden optimistische Abschätzungen – Untere Schranke
– Erwartungswert – Obere Schranke
• Erwartungswert: Mittelwert des Aufwandes über alle möglichen Eingaben gewichtet mit der Auftrittswahrscheinlichkeit.
32
![Page 33: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/33.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Multipliziere zwei n-bit Zahlen in Binärdarstellung
• Multiply(x,y) i ← 0
result ← 0 while i < n do if bit(x,i) = 1 then
result ← result + shift(y,i) i ← i+1
33
![Page 34: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/34.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Aufwand ≈ Anzahl der Additionen = Anzahl der Einsen in der Binärdarstellung von x
• Best Case : x = 0 ... 0 Additionen
• Worst Case : x = 2n−1 ... n Additionen
• Average Case ???
34
![Page 35: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/35.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Anzahl der möglichen Eingaben N = 2n
• Anzahl der Eingaben mit k Einsen in x
• Mittlerer Aufwand ...
35
![Page 36: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/36.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Mittlerer Aufwand
36
![Page 37: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/37.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiel
• Mittlerer Aufwand
S / N = n×2n-1 / 2n = n / 2 Additionen
• Bemerkung zur Kombinatorik
– Permutationen n!
– Kombinationen
37
![Page 38: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/38.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• In der Regel ist das quantitative Zählen der Elementaroperationen mühsam und wenig ergiebig.
• Man ist daher eher an qualitativen Aussagen interessiert, z.B. wie verändert sich der Rechenaufwand, wenn man die Eingabedaten verdoppelt?
38
![Page 39: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/39.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Beispiele
• Addition – Verdopplung der Stellen – Verdopplung der Sub-Operationen
• Multiplikation / Sortierbeispiel – Verdopplung der Stellen / Elemente – Vervierfachung der Sub-Operationen
• Suchen im Suchbaum: – Verdopplung der Knoten im Baum – Erhöhung des Suchaufwandes um einen Test
(vollständiger Baum erhöht sich um ein Level)
39
![Page 40: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/40.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• Definition von Schranken für Funktionen f,g : N → R+
– O(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≤ c·f(n)
– ΩΩ(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≥ c·f(n)
– Θ(f) = O(f) ∩ ΩΩ(f) =
g | ∃c>0 ∃n0>0 ∀n≥n0 : f(n)/c ≤ g(n) ≤ c·f(n)
40
![Page 41: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/41.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• Definition von Schranken für Funktionen f,g : N → R+
– O(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≤ c·f(n)
– ΩΩ(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≥ c·f(n)
– Θ(f) = O(f) ∩ ΩΩ(f) =
g | ∃c>0 ∃n0>0 ∀n≥n0 : f(n)/c ≤ g(n) ≤ c·f(n)
41
![Page 42: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/42.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• Definition von Schranken für Funktionen f,g : N → R+
– O(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≤ c·f(n)
– ΩΩ(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≥ c·f(n)
– Θ(f) = O(f) ∩ ΩΩ(f) =
g | ∃c>0 ∃n0>0 ∀n≥n0 : f(n)/c ≤ g(n) ≤ c·f(n)
42
![Page 43: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/43.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• Definition von Schranken für Funktionen f,g : N → R+
– O(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≤ c·f(n)
– ΩΩ(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≥ c·f(n)
– Θ(f) = O(f) ∩ ΩΩ(f) =
g | ∃c>0 ∃n0>0 ∀n≥n0 : f(n)/c ≤ g(n) ≤ c·f(n)
43
![Page 44: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/44.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• Definition von Schranken für Funktionen f,g : N → R+
– O(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≤ c·f(n)
– ΩΩ(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≥ c·f(n)
– Θ(f) = O(f) ∩ ΩΩ(f) =
g | ∃c>0 ∃n0>0 ∀n≥n0 : f(n)/c ≤ g(n) ≤ c·f(n)
44
![Page 45: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/45.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• Definition von Schranken für Funktionen f,g : N → R+
– O(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≤ c·f(n)
– ΩΩ(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≥ c·f(n)
– Θ(f) = O(f) ∩ ΩΩ(f) =
g | ∃c>0 ∃n0>0 ∀n≥n0 : f(n)/c ≤ g(n) ≤ c·f(n)
45
![Page 46: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/46.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Asymptotische Komplexität
• Definition von Schranken für Funktionen f,g : N → R+
– O(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≤ c·f(n)
– ΩΩ(f) = g | ∃c>0 ∃n0>0 ∀n≥n0 : g(n) ≥ c·f(n)
– Θ(f) = O(f) ∩ ΩΩ(f) =
g | ∃c>0 ∃n0>0 ∀n≥n0 : f(n)/c ≤ g(n) ≤ c·f(n)
46
![Page 47: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/47.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rechenregeln
• f + g ∈ O(maxf,g) =
• f×g ∈ O(f×g)
• g(n) := a·f(n) + b ∧ f ∈ ΩΩ(1) ⇒ g ∈ O(f)
• Schreibweise n×Couter + n×(n−1)/2×Cinner = O(n2)
47
O(f) falls g∈O(f) O(g) falls f∈O(g)
![Page 48: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/48.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci-Zahlen
• F(n) =
• F(n) positiv für alle n
• F(n) wächst für n > 2 streng monoton
48
0 ... n = 0 1 ... n = 1 F(n−1)+F(n−2) ... n > 1
![Page 49: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/49.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci-Zahlen
• F(n) = F(n−1) + F(n−2) < 2×F(n−1) < 4×F(n−2) < ... < 2n−1 × F(1) = 2n/2
• F ∈ O(2n), c = 1/2
49
![Page 50: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/50.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci-Zahlen
• F(n) = F(n−1) + F(n−2) > 2×F(n−2) > 4×F(n−4) > ...
>
• F ∈ ΩΩ(2n/2), c = 1/√2
50
2(n-1)/2×F(1) ... n ungerade 2n/2-1×F(2) ... n gerade
![Page 51: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/51.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Alternative Definition
• „Wachstumsrate“ (f,g : N → R+)
• limn→∞ g(n) / f(n) =
• g wächst langsamer : g ∈ O(f) \ Θ(f) • g und f wachsen gleich : g ∈ Θ(f)
• g wächst schneller : g ∉ O(f)
51
0 ... g wächst langsamer c ... g und f wachsen gleich ∞ ... g wächst schneller
![Page 52: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/52.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Typische Komplexitätsklassen
• O(1) Elementaroperation
• O(logn) Binäre Suche
• O(n) Lineare Suche
• O(n×logn) Sortieren (später)
• O(n2) Sortieren (vorhin) • O(n3) Invertieren von Matrizen
• O(2n) Labyrinth-Suche (vollständig)
• O(n!) Zahl von Permutationen 52
![Page 53: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/53.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci-Zahlen
• F(n) =
• F(n) positiv für allen
• F(n) wächst für n > 2 streng monoton
53
0 ... n = 0 1 ... n = 1 F(n−1)+F(n−2) ... n > 1
![Page 54: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/54.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci rekursiv
• F(n) if n> 1 then return F(n−1) + F(n−2) else return n
• T(0) = T(1) = t
• T(n+2) = t + T(n+1) + T(n)
54
![Page 55: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/55.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci rekursiv
• Behauptung: T(n) ≥ t×F(n+1)
• Beweis: Vollständige Induktion ... – Anfang: T(0) = t ≥ t×F(1) = t
T(1) = t ≥ t×F(2) = t
– Schritt: T(n+2) = t + T(n+1) + T(n) ≥ t + t×F(n+2) + t×F(n+1) ≥ t + t×F(n+3) ≥ t×F(n+3)
• T(n) ∈ ΩΩ(2n/2)
55
![Page 56: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/56.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci iterativ
• F(n) fold = 1 fnew = 0 while n > 0 do fnew ← fnew + fold fold ← fnew − fold n ← n−1 return fnew
• T(n) = t × n = Θ(n)
56
![Page 57: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/57.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci Vergleich
57
x, 2x/2
[lin / lin]
![Page 58: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/58.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci Vergleich
58
x, 2x/2
[lin / log]
![Page 59: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/59.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Fibonacci Vergleich
59
x, 2x/2
[log / log]
![Page 60: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/60.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Standardabschätzungen
• Reihensummen – Geschachtelte Schleifen
• Abschätzung durch Integrale
• Vollständige Induktion
• Rekursionsgleichungen – Eliminierung
• Master-Theorem
• Direkter Ansatz
60
![Page 61: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/61.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Reihensummen
• GeschachtelteSchleifen – for i ←1 to n do
O(1) = O(n)
– for i ←1 to n do O( i ) = O(n2)
61
![Page 62: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/62.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Reihensummen
• GeschachtelteSchleifen – for i ←1 to n do O(1) = O(n)
– for i ←1 to n do O( i ) = O(n2)
– for i ←1 to n do for j ←1 to n do O(1) = O(n2)
– for i ←1 to n do for j ←1 to i do O(1) = O(n2)
– . . .
62
![Page 63: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/63.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Reihensummen
• Geschachtelte Schleifen – Generell: der Aufwand Tk(n) einer k-fach
geschachtelten Schleife (mit linear beschränkten Laufintervallen) besitzt als obere Schranke ein Polynom vom Grad k
Tk(n) = O( ∑ αini ) = O(nk)
63
i=0
k
![Page 64: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/64.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abschätzung durch Integral
• Abschätzungen der Summe – Summanden monoton wachsend / fallend
– Interpretation als Approximation eines bestimmten Integrals
64
![Page 65: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/65.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abschätzung durch Integral
• Abschätzungen der Summe – Summanden monoton wachsend / fallend
– Interpretation als Approximation eines bestimmten Integrals
65
![Page 66: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/66.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abschätzung durch Integral
• Abschätzungen der Summe – Summanden monoton wachsend / fallend
– Interpretation als Approximation eines bestimmten Integrals
66
![Page 67: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/67.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abschätzung durch Integral
• Abschätzungen der Summe – Summanden monoton wachsend / fallend
– Interpretation als Approximation eines bestimmten Integrals
67
![Page 68: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/68.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abschätzung durch Integral
• Abschätzungen der Summe – Summanden monoton wachsend / fallend
– Interpretation als Approximation eines bestimmten Integrals
68
![Page 69: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/69.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abschätzung durch Integral
• Beispiel
69
![Page 70: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/70.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Vollständige Induktion
• Behauptung
• Zeige: Behauptung gilt für n = n0
• Zeige: Wenn die Behauptung für ein n
gilt, dann gilt sie auch für n+1
70
![Page 71: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/71.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Vollständige Induktion
• Behauptung:
• Beweis: n = 1
71
![Page 72: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/72.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Vollständige Induktion
• Behauptung:
• Beweis: n → n+1
72
nach Induktions- voraussetzung
![Page 73: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/73.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rekursionsgleichungen
• Elimination
• Master-Theorem
• Direkter Ansatz
73
![Page 74: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/74.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rekursionsgleichungen
• F(n) = a + b×F(n−1)
• F(n) = a + b×F(n−1) + c×F(n−2)
• . . .
• F(n) = a + b×F(n/c)
• G(m) := F(cm) → G(m) = a + b×G(m−1)
74
![Page 75: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/75.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Rekursionsgleichungen
• F(n) = a(n) + b(n)×F(n−1)
• F(n) = a(n) + b(n)×F(n−1) + c(n)×F(n−2)
• . . .
• F(n) = a(n) + b(n)×F(n/c)
• G(m) := F(cm) → G(m) = a(n) + b(n)×G(m−1)
75
![Page 76: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/76.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Elimination
• F(n) = n + F(n−1) = n + (n−1) + F(n−2) = ... = n + (n−1) + ... + 1 + F(0) = n×(n−1) / 2 + F(0) = O(n2)
76
einfaches Sortieren
![Page 77: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/77.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Elimination
• F(n) = F(n−1) + F(n−2) = 2×F(n−2) + F(n−3)
= 3×F(n−3) + 2×F(n−4)
= 5×F(n−4) + 3×F(n−5)
= ...
= ???
77
Fibonacci
![Page 78: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/78.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Abschätzung nach oben
• Typisch: T(n) = a×T(n/2) + b
• Einfach, wenn n = 2k
• Sonst: finde m = 2k mit m/2 < n ≤ m
• Dann gilt: T(n) ≤ T(m)
78
![Page 79: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/79.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Elimination
• T(n) = T(n/2) + 1 = T(n/4) + 1 + 1
= T(n/8) + 1 + 1 + 1
= ...
= T(1) + log n
= O(logn)
79
binäre Suche
![Page 80: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/80.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Elimination
• T(n) = 4×T(n/2) = 16×T(n/4)
= 64×T(n/8)
= ...
= 4ld n×T(1)
= n2×T(1)
= O(n2)
80
Multiplikation großer Zahlen
![Page 81: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/81.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Elimination
• T(n) = 4×T(n/2) + 3×n = 16×T(n/4) + 12×n/2 + 3×n
= 64×T(n/8) + 48×n/4 + 12×n/2 + 3×n
= ...
= 3×n×(n + ... + 4 + 2 + 1)
= 3×n×(2(log n)+1−1) = 3×n×(2×n−1) = O(n2)
81
Multiplikation großer Zahlen
![Page 82: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/82.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Elimination
• T(n) = 2×T(n/2) + n = 4×T(n/4) + 2×n/2 + n
= 8×T(n/8) + 4×n/4 + 2×n/2 + n
= ...
= 2(log n)−1×n / 2(log n)−1 + ... + 2×n/2 + n
= n×logn
82
effizientes Sortieren
![Page 83: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/83.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Master-Theorem
• T(n) =
• T(n) =
83
O(n) ... a < b O(n×logn) ... a = b O(nlogba) ... a > b
c ... n = 1 a×T(n/b)+c×n ... n > 1
![Page 84: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/84.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Master-Theorem
• ... sei n = bk:
• T(n) = a×T(n/b) + c×n = a2×T(n/b2) + a×c×n/b + c×n = a3×T(n/b3) + a2×c×n/b2 + a×c×n/b
+ c×n = ...
=
84
![Page 85: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/85.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Master-Theorem
• T(n) =
• a < b: T(n) ≤
• a = b: T(n) =
• a > b: T(n) =
85
![Page 86: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/86.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Master-Theorem
86
![Page 87: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/87.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Master-Theorem
87
![Page 88: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/88.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Master-Theorem
• T(n) =
• T(n) =
88
O(n) ... a < b O(n×log n) ... a = b O(nlogba) ... a > b
c ... n = 1 a×T(n/b)+c×n ... n > 1
![Page 89: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/89.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Master-Theorem
• T(n) =
• T(n) =
89
O(np) ... a < bp O(np×logn) ... a = bp O(nlogba) ... a > bp
c ... n = 1 a×T(n/b)+O(np) ... n > 1
![Page 90: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/90.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Multiplikation großer Zahlen
• Standard: T(n) = 4×T(n/2) + 3×n = O(nld 4) = O(n2)
• Karatsuba: T(n) = 3×T(n/2) + 6×n = O(nld 3) = O(n1.58)
90
![Page 91: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/91.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Direkter Ansatz
• F(n) = F(n−1) + F(n−2)
• Ansatz : F(n) = φn
• φn = φn−1 + φn−2
⇔ φ2 = φ + 1 ⇔ φ2 − φ − 1 = 0 ⇔ φ± = (1±√5) / 2
91
![Page 92: 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen 2.3 ... · 2.1 Analyse von Algorithmen 2.2 Entwurfsparadigmen ... • Prozedur-Aufruf – Speichere Kontext auf dem Stack – Speichere](https://reader031.vdocuments.pub/reader031/viewer/2022021510/5b1419ab7f8b9a2a7c8b4a24/html5/thumbnails/92.jpg)
Datenstrukturen und Algorithmen Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Direkter Ansatz
• φ± = (1±√5) / 2
• F(n) := α×φ+n + β×φ−n
• F(0) = α + β = 0 ⇒ α = −β
• F(1) = α×φ+ + β×φ− = α×(φ+ − φ−) = 1 ⇒ α = 1/√5
• F(n) = (φ+n − φ−n) / √5
92