2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while,...
Transcript of 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while,...
![Page 1: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/1.jpg)
SS 2017 1
2. Grundlagen
Beschreibung von Algorithmen durch Pseudocode.
Korrektheit von Algorithmen durch Invarianten.
Laufzeitverhalten beschreiben durch O-Notation.
DuA - Kapitel 2
![Page 2: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/2.jpg)
SS 2017 2
Pseudocode
Schleifen (for, while, repeat)
Bedingtes Verzweigen (if – then – else)
(Unter-)Programmaufruf/Übergabe (return)
Zuweisung durch ←
Kommentar durch
Daten als Objekte mit einzelnen Feldern oder Eigenschaften (z.B. length(A) ←Länge des Arrays A)
Blockstruktur durch Einrückung
DuA - Kapitel 2
![Page 3: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/3.jpg)
SS 2017 3
Beispiel Minimum-Suche
4 :Ausgabe26,51,48)(31,41,59, :Eingabe
berechnet. Elements kleinsten einesIndex
Folge jeder zu das n, Verfahre:orithmusMinimumalg
1 Indizes alle für dass so ,Index :Suche-Minimum bei Ausgabe
Zahlen n von Folge :Suche-Minimum bei Eingabe
21
21
),a,,a(a
.njaai
).,a,,a(a
n
ji
n
≤≤≤
DuA - Kapitel 2
![Page 4: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/4.jpg)
SS 2017 4
Min-Search in Pseudocode
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
DuA - Kapitel 2
Wir nehmen an, dass die Eingabefolge in einem Feld oderArray A gespeichert ist. A[j]: j-te Zahl in Array A.
![Page 5: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/5.jpg)
SS 2017 5
Min-Search
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 6: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/6.jpg)
SS 2017 6
Min-Search
Zuweisung
min = 1
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 7: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/7.jpg)
SS 2017 7
Min-Search
Schleife
min = 1, j = 2
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 8: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/8.jpg)
SS 2017 8
Min-Search
Verzweigung
min = 1, j = 2, A[2] < A[1] ? Nein
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 9: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/9.jpg)
SS 2017 9
Min-Search
Schleife
min = 1, j = 3
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 10: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/10.jpg)
SS 2017 10
Min-Search
Verzweigung
min = 1, j = 3, A[3] < A[1] ? Nein
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 11: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/11.jpg)
SS 2017 11
Min-Search
Schleife
min = 1, j = 4
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 12: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/12.jpg)
SS 2017 12
Min-Search
Verzweigung
min = 1, j = 4, A[4] < A[1] ? Ja min = 4
Zuweisung
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 13: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/13.jpg)
SS 2017 13
Min-Search
Schleife
min = 4, j = 5
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 14: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/14.jpg)
SS 2017 14
Min-Search
Verzweigung
min = 4, j = 5, A[5] < A[4] ? Nein
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 15: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/15.jpg)
SS 2017 15
Min-Search
Schleife
min = 4, j = 6 = length[A]
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 16: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/16.jpg)
SS 2017 16
Min-Search
Verzweigung
min = 4, j = 6, A[6] < A[4] ? Nein
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 17: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/17.jpg)
SS 2017 17
Min-Search
min = 4
Ausgabe
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
26,51,48)(31,41,59, :Eingabe
DuA - Kapitel 2
![Page 18: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/18.jpg)
SS 2017 18
Invarianten
Definition 2.1 Eine Invariante ist eine Aussage, die über die Ausführung bestimmter Programmbefehle hinweg gilt.
Beispiel: betrachte die Invariante I(x)=„x ist gerade“
x ← 0; I(x)y ← 3; z ← y+x; I(x)
Eine Schleifeninvariante ist eine Sonderform der Invariante, die vor und nach einer Schleife und jedem Durchlauf der Schleife gilt.
DuA - Kapitel 2
I(x) gilt vor und nach diesen Befehlen
![Page 19: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/19.jpg)
SS 2017 19
Invarianten
Definition 2.1 Eine Invariante ist eine Aussage, die über die Ausführung bestimmter Programmbefehle hinweg gilt.Eine Schleifeninvariante ist eine Sonderform der Invariante, die vor und nach einer Schleife und jedem Durchlauf der Schleife gilt.
Invarianten dienen dazu, die Korrektheit vonAlgorithmen zu beweisen.
Sie werden in der Vorlesung immer wieder auftauchenund spielen eine große Rolle.
DuA - Kapitel 2
![Page 20: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/20.jpg)
SS 2017 20
Invarianten und Korrektheit
Für die Korrektheit der Schleifeninvariante muss gezeigt werden, dass
die Invariante direkt vor Ausführung der Schleife und damit auch am Anfang des ersten Schleifendurchlaufs gilt (Initialisierung),
falls die Invariante am Anfang eines Schleifendurchlaufs erfüllt ist, sie dann auch am Ende erfüllt ist (Erhaltung), und
sie direkt nach Beendigung der Schleife gilt (Terminierung).
DuA - Kapitel 2
![Page 21: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/21.jpg)
SS 2017 21
Invarianten und Korrektheit
Beispiel für eine for-Schleife:
I( • , a)for i←a to b do
I(• , i)Anweisungen I(• , i+1)
I( • , b+1)
Beweis ähnlich zu vollständiger Induktion.
DuA - Kapitel 2
Initialisierung (i=a)
Erhaltung (i → i+1)
Terminierung (i=b+1)
i=a
![Page 22: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/22.jpg)
SS 2017 22
Invariante bei Min-Search
Erwünschte Ausgabe: A[min] = min A[i] | 1≤i≤length[A]
Schleifeninvariante I(min,j): A[min] = min A[i] | 1≤i≤j-1
DuA - Kapitel 2
[ ]
minjmin
minAjAA lengthj
min
A
5 4 ][][ 3
to 2 2 1 1
)Search(-Min
returnthen
if do for
←<
←←
![Page 23: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/23.jpg)
SS 2017 23
Invariante bei Min-Search
DuA - Kapitel 2
Min-Search(A) Invariante I(min,j): A[min] = min A[i] | 1≤i≤j-1
1 min←1 I(min,2)
2 for j←2 to length[A] I(min,j)
3 if A[j] < A[min] then I(min,j) ⋀ A[j] < A[min]
4 min←j I(min,j+1) sonst: I(min,j) ⋀ A[j] ≥ A[min] ⇒ I(min,j+1)
I(min,j+1) I(min,length[A]+1) ⇒ A[min] = min A[i] | 1≤i≤length[A]
5 return min
Initialisierung
d.h. A ist korrekt
Erhaltung
Terminierung
j=2
![Page 24: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/24.jpg)
SS 2017 24
Invarianten und Korrektheit
Beispiel für eine while-Schleife:
I( • , a)i ← awhile i<=b do
I(• , i)Anweisungen I(• , i+1)i ← i+1 I(• , i)
I( • , b+1)
DuA - Kapitel 2
Initialisierung
Erhaltung
Terminierung
i=a
![Page 25: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/25.jpg)
SS 2017 25
Invarianten und Korrektheit
Beispiel für eine while-Schleife:
I( • , a)i ← awhile i<=b do
I(• , i)i ← i+1 I(• , i-1)Anweisungen I(• , i)
I( • , b+1)
DuA - Kapitel 2
Initialisierung
Erhaltung
Terminierung
i=a
![Page 26: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/26.jpg)
SS 2017 26
Laufzeitanalyse und RechenmodellFür eine präzise mathematische Laufzeitanalyse benötigenwir ein Rechenmodell, das definiert Welche Basisoperationen zulässig sind. Welche elementaren Datentypen es gibt. Wie Daten gespeichert werden. Wieviel Zeit Operationen auf bestimmten Daten
benötigen.
Formal ist ein solches Rechenmodell gegeben durch die Random Access Maschine (RAM).
DuA - Kapitel 2
Speicher
![Page 27: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/27.jpg)
SS 2017 27
Basisoperationen – KostenDefinition 2.2: Als Basisoperationen bezeichnen wir Arithmetische Operationen – Addition, Multiplikation,
Division, Ab-, Aufrunden. Datenverwaltung – Laden, Speichern, Kopieren. Kontrolloperationen – Verzweigungen, Programm-
aufrufe, Wertübergaben.
Kosten: Zur Vereinfachung nehmen wir an, dass jede dieser Operationen bei allen Operanden gleich viel Zeit benötigt (d.h. 1 Zeiteinheit).
In weiterführenden Veranstaltungen werden Sie andereund häufig realistischere Kostenmodelle kennen lernen.
DuA - Kapitel 2
![Page 28: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/28.jpg)
SS 2017 28
Definition 2.3: Die Laufzeit T(I) eines Algorithmus A beiEingabe I ist definiert als die Anzahl von Basisoperationen, die Algorithmus A zur Berechnung der Lösung bei Eingabe I benötigt.
Definition 2.4: Die (worst-case) Laufzeit eines Algorithmus A ist eine Funktion T:ℕ→ℝ, wobei
T(n) = maxT(I): I hat Eingabegröße ≤n
Eingabegröße - Laufzeit
DuA - Kapitel 2
![Page 29: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/29.jpg)
SS 2017 29
Laufzeit angegeben als Funktion der Größe der Eingabe.
Eingabegröße abhängig vom Problem definiert.
Eingabegröße Minimumssuche = Größe des Arrays.
Laufzeit bei Minimumsuche: A Array, für das Minimum bestimmt werden soll.
T(A):= Anzahl der Operationen, die zur Bestimmung des Minimums in A benötigt werden.
Eingabegröße – Laufzeit (2)
Satz 2.5: Algorithmus Min-Search hat worst-case LaufzeitT(n) ≤ an+b für Konstanten a,b.
DuA - Kapitel 2
![Page 30: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/30.jpg)
SS 2017 30
Minimum-Suche
[ ]
.1gilt Es chsel.Mimimumsweder Anzahl die ist Hierbei
1 min 5 min 4
1 ]min[][ 3 to2 2
1 1 min 1
malKosten Search(A)-Min
5
4
3
2
1
−≤
←−<
←←
ntt
ct cjn cAjAncAlengthj
c
returnthen
if dofor
DuA - Kapitel 2
![Page 31: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/31.jpg)
SS 2017 31
O-Notation
DuA - Kapitel 2
Definition 2.6: Sei g:ℝ→ℝ eine Funktion. Dann bezeichnen wir mit O(g(n)) die folgende Menge von Funktionen:
O(g(n)) = f:ℝ→ℝ | es existieren Konstanten c>0und n0>0, so dass für alle n≥n0 gilt f(n)≤c⋅g(n)
Bemerkungen:• O(g(n)) ist also die Menge der Funktionen f(n), die
asymptotisch nicht schneller wachsen als g(n).• Wenn wir über Funktionen reden, die die Laufzeit
oder den Speicherverbrauch messen, nehmen wirin der Regel an, dass f,g:ℕ→ℕ sind.
![Page 32: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/32.jpg)
SS 2017 32
Illustration von O(g(n))
g(x)=x2
f(x)=100xg(x)=x2
f(x)=200xDuA - Kapitel 2
![Page 33: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/33.jpg)
SS 2017 33
Ω-Notation
DuA - Kapitel 2
Definition 2.7: Sei g:ℝ→ℝ eine Funktion. Dann bezeichnen wir mit Ω(g(n)) die folgende Menge von Funktionen:
Ω(g(n)) = f:ℝ→ℝ | es existieren Konstanten c>0und n0>0, so dass für alle n≥n0 gilt f(n)≥c⋅g(n)
Bemerkungen:• Ω(g(n)) ist also die Menge der Funktionen f(n), die
asymptotisch mindestens so schnell wachsen wieg(n).
• Wenn wir über Funktionen reden, die die Laufzeitoder den Speicherverbrauch messen, nehmen wirin der Regel an, dass f,g:ℕ→ℕ sind.
![Page 34: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/34.jpg)
SS 2017 34
Θ-Notation
DuA - Kapitel 2
Definition 2.8: Sei g:ℝ→ℝ eine Funktion. Dann bezeichnen wir mit Θ(g(n)) die folgende Menge von Funktionen:
Θ(g(n)) = f:ℝ→ℝ | es existieren Konstanten c1,c2>0und n0>0, so dass für alle n≥n0 gilt c1⋅g(n)≤f(n)≤c2⋅g(n)
Bemerkungen:• Θ(g(n)) ist also die Menge der Funktionen f(n), die
asymptotisch genau so schnell wachsen wie g(n).• Wie leicht anhand der Definitionen zu überprüfen ist,
ist Θ(g(n))=O(g(n))∩Ω(g(n)).• Für jede Funktion g gibt es übrigens Funktionen, die
weder in O(g(n)) noch in Ω(g(n)) sind!
![Page 35: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/35.jpg)
SS 2017 35
Illustration von Θ(g(n))
f(n)
)n(gc1
)n(gc2
DuA - Kapitel 2
![Page 36: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/36.jpg)
SS 2017 36
o-Notation
DuA - Kapitel 2
Definition 2.9: Sei g:ℝ→ℝ eine Funktion. Dann bezeichnen wir mit o(g(n)) die folgende Menge von Funktionen:
o(g(n)) = f:ℝ→ℝ | für alle Konstanten c>0 existiertein n0>0, so dass für alle n≥n0 gilt f(n)≤c⋅g(n)
Bemerkungen:• o(g(n)) ist also die Menge der Funktionen f(n), die
asymptotisch weniger schnell wachsen als g(n).• Es gilt also o(g(n))⊂O(g(n)).• Analog zu Ω(g(n)): ω(g(n)) ist die Menge aller
Funktionen, die asymptotisch schneller steigen alsg(n).
![Page 37: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/37.jpg)
• ∃: Existenzquantor (“es existiert”)• ∀: Allquantor (“für alle”)
Kalküle für asymptotisches Verhalten:• O(g(n))= f(n) | ∃ c>0 ∃ n0>0 ∀ n≥n0: f(n) ≤ c⋅g(n) • Ω(g(n))= f(n) | ∃ c>0 ∃ n0>0 ∀ n≥n0: f(n) ≥ c⋅g(n) • Θ(g(n)) = O(g(n)) ∩ Ω(g(n))• o(g(n))= f(n) | ∀ c>0 ∃ n0>0 ∀ n≥n0: f(n) ≤ c⋅g(n) • ω(g(n))= f(n) | ∀ c>0 ∃ n0>0 ∀ n≥n0: f(n) ≥ c⋅g(n)
Wir nehmen im folgenden an, dass f(n)=Ω(1) und g(n)=Ω(1) sind, d.h. beide sind ab einem n0>0 positiv.
SS 2017 37
Übersicht über Kalküle
DuA - Kapitel 2
![Page 38: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/38.jpg)
• xn: limn→∞ (supm≥n xm)sup: Supremum (Beispiel: sup x∈ℝ | x<2 = 2 )
• xn: limn→∞ (infm≥n xm)
inf: Infimum (Beispiel: inf x∈ℝ | x>3 = 3 )
Alternative Schreibweise für Kalküle:• O(g(n))= f(n) | ∃ c>0 f(n)/g(n) ≤ c • Ω(g(n))= f(n) | ∃ c>0 f(n)/g(n) ≥ c
• Θ(g(n)) = O(g(n)) ∩ Ω(g(n))• o(g(n))= f(n) | f(n)/g(n) = 0 • ω(g(n))= f(n) | g(n)/f(n) = 0
SS 2017 38
Übersicht über Kalküle
lim supn→∞
lim supn→∞
lim infn→∞
lim infn→∞
lim supn→∞
lim infn→∞
DuA - Kapitel 2
![Page 39: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/39.jpg)
Sei f:ℕ→ℝ eine Funktion und a,b∈ℝ.• f hat in ∞ den Grenzwert b, falls es zu jedem ε>0 ein k>0 gibt
mit |f(z)-b|<ε für alle z∈ℝ mit z>k. In diesem Fall schreiben wir
• f hat in ∞ den Grenzwert ∞ , falls es zu jedem c>0 ein k>0 gibtmit f(z)>c für alle z∈ℝ mit z>k. Wir schreiben dann
Als Elemente der erweiterten reellen Zahlen ℝ∪-∞, ∞ exis-tieren und für jede Folge (xn) n∈ℕ reeller Zahlen, was für nicht garantiert ist, da es Folgen gibt, die nicht gegen einen Grenzwert gemäß obiger Definition streben. DieExistenz ergibt sich aus dem Satz von Bolzano-Weierstraß.
SS 2017 39
Exkurs über Grenzwerte
limz→∞
lim infn→∞
lim supn→∞
DuA - Kapitel 2
f(z) = b
limz→∞ f(z) = ∞
limn→∞
![Page 40: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/40.jpg)
O-Notation als Platzhalter für eine Funktion:• statt g(n)∈O(f(n)) schreiben wir gewöhnlich
g(n) = O(f(n))• Für f(n)+g(n) mit g(n)=o(h(n)) schreiben wir
auch f(n)+g(n) = f(n)+o(h(n))• Statt O(f(n))⊆O(g(n)) schreiben wir auch
O(f(n)) = O(g(n))
Beispiel: n3+n = n3 + o(n3) = (1+o(1))n3 = O(n3)
O-Notationsgleichungen sollten nur von links nachrechts verstanden werden!
SS 2017 40
Regeln für Kalküle
DuA - Kapitel 2
![Page 41: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/41.jpg)
SS 2017 41
Regeln für Kalküle
O- und Ω- bzw. o- und ω-Kalkül sind komplementärzueinander, d.h.:
f(n) = O(g(n)) ⇒ g(n) = Ω(f(n))
f(n) = Ω(g(n)) ⇒ g(n) = O(f(n))
f(n) = o(g(n)) ⇒ g(n) = ω(f(n))
f(n) = ω(g(n)) ⇒ g(n) = o(f(n))
Beweis: folgt aus Definition der Kalküle
DuA - Kapitel 2
![Page 42: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/42.jpg)
SS 2017 42
Regeln für Kalküle - Reflexivität
O-, Ω- und Θ-Kalkül sind reflexiv, d.h.:
f(n) = O(f(n))
f(n) = Ω(f(n))
f(n) = Θ(f(n))
Θ-Kalkül ist symmetrisch, d.h.
f(n) = Θ(g(n)) genau dann, wenn g(n) = Θ(f(n)).
DuA - Kapitel 2
![Page 43: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/43.jpg)
SS 2017 43
Regeln für Kalküle - Transitivität
Satz 2.10: Die O-, Ω- und Θ-Kalküle sind transitiv, d.h.:
Aus f(n)= O(g(n)) und g(n)= O(h(n)) folgt f(n)= O(h(n)).
Aus f(n)= Ω(g(n)) und g(n)= Ω(h(n)) folgt f(n)= Ω(h(n)).
Aus f(n)= Θ(g(n)) und g(n)= Θ(h(n)) folgt f(n)= Θ(h(n)).
Beweis:Über Definition der Kalküle.
Transitivität gilt auch für o- und ω-Kalkül.
DuA - Kapitel 2
![Page 44: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/44.jpg)
SS 2017 44
Regeln für Kalküle - Transitivität
Beweis: (Punkt 1)f(n) = O(g(n)) ⇔ es gibt c´, n´0 >0 , so dass
f (n) ≤ c´g(n) für alle n > n´0.g(n) = O(h(n)) ⇔ es gibt c´´, n´´0 >0 , so dass
g(n) ≤ c´´h(n) für alle n > n´´0.
Sei n0 = maxn´0, n´´0 und c = c´·c´´. Dann gilt für n > n0:f (n) ≤ c´ · g(n) ≤ c´ · c´´· h(n) = c · h(n).
DuA - Kapitel 2
![Page 45: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/45.jpg)
SS 2017 45
Regeln für Kalküle - Transitivität
Beweis: (Punkt 2)f(n) = Ω(g(n)) ⇔ es gibt c´, n´0 >0, so dass
f (n) ≥ c´g(n) für alle n > n´0.g(n) = Ω(h(n)) ⇔ es gibt c´´, n´´0 >0, so dass
g(n) ≥ c´´h(n) für alle n > n´´0.
Sei n0 = maxn´0, n´´0 und c = c´·c´´. Dann gilt für n > n0:f (n) ≥ c´ · g(n) ≥ c´ · c´´· h(n) = c · h(n).
DuA - Kapitel 2
![Page 46: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/46.jpg)
SS 2017 46
Regeln für Kalküle - Transitivität
Beweis: (Punkt 3)f(n) = Θ(g(n)) ⇒ f(n) = O(g(n)) und f(n) = Ω(g(n))
g(n) = Θ(h(n)) ⇒ g(n) = O(h(n)) und g(n) = Ω(h(n))
f(n) = O(g(n)) und g(n) = O(h(n)) impliziert f(n) = O(h(n))
f(n) = Ω(g(n)) und g(n) = Ω(h(n)) impliziert f(n) = Ω(h(n))
↓f (n) = Θ(h(n)).
DuA - Kapitel 2
![Page 47: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/47.jpg)
SS 2017 47
Satz 2.11: Sei p(n) = ∑i=0k ai⋅ni mit ak>0. Dann ist
p(n) = Θ(nk).Beweis:Zu zeigen: p(n) = O(nk) und p(n) = Ω(nk).p(n) = O(nk) : Für alle n≥1 gilt
p(n) ≤ ∑i=0k |ai| ni ≤ nk ∑i=0
k |ai|Also ist Definition von O() mit c=∑i=0
k |ai| und n0=1 erfüllt.
p(n) = Ω(nk) : Für alle n≥2k⋅A/ak mit A=maxi |ai| giltp(n) ≥ ak⋅nk - ∑i=0
k-1 A⋅ni ≥ ak nk – k⋅A nk-1 ≥ ak nk/2 Also ist Definition von Ω() mit c=ak/2 und n0=2kA/ak erfüllt.
Regeln für Kalküle
DuA - Kapitel 2
![Page 48: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/48.jpg)
Erinnerung: Wir nehmen an, dass alle Funktionenpositiv ab einem n0>0 sind (sonst gilt (b) nicht).
Satz 2.12:Seien f1(n) = O(g1(n)) und f2(n)=O(g2(n)). Dann gilt:(a) f1(n)+f2(n) = O(g1(n)+g2(n))(b) f1(n) ⋅ f2(n) = O(g1(n) ⋅ g2(n))Ausdrücke auch korrekt für Ω , o, ω und Θ.Beweis: folgt aus Definition des O-Kalküls.
Folgerung aus (b): ist f(n)=O(g(n)), dann ist auch f(n)k =O(g(n)k) für alle k∈ℕ
SS 2017 48
Regeln für Kalküle
DuA - Kapitel 2
![Page 49: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/49.jpg)
Beweis von (a):• Seien f1(n) = O(g1(n)) und f2(n)=O(g2(n)).• Dann gilt:∃ c1>0 ∃ n1>0 ∀ n≥n1: f1(n) ≤ c1⋅g1(n)∃ c2>0 ∃ n2>0 ∀ n≥n2: f2(n) ≤ c2⋅g2(n)
• Daraus folgt mit c0=maxc1,c2 und n0=maxn1,n2:∃ c0>0 ∃ n0>0 ∀ n≥n0:
f1(n)+f2(n) ≤ c0⋅(g1(n)+g2(n))• Also ist f1(n)+f2(n) = O(g1(n)+g2(n)).Beweis von (b): Übung
SS 2017 49
Beweis von Satz 2.12
DuA - Kapitel 2
![Page 50: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/50.jpg)
Erinnerung: Wir nehmen an, dass alleFunktionen positiv ab einem n0>0 sind.
Satz 2.13: (Rechnung mit Platzhaltern)(a) c⋅f(n) = Θ(f(n)) für jede Konstante c>0(b) O(f(n))+O(g(n)) = O(f(n)+g(n))(c) O(f(n))⋅O(g(n)) = O(f(n)⋅g(n))(d) O(f(n)+g(n)) = O(f(n)) falls g(n)=O(f(n))Ausdrücke auch korrekt für Ω statt O.
SS 2017 50
Regeln für Kalküle
DuA - Kapitel 2
![Page 51: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/51.jpg)
Beweis von (b):• Betrachte beliebige Funktionen h1(n) und
h2(n) mit h1(n)=O(f(n)) und h2(n)=O(g(n)).• Dann gilt wegen Satz 2.12 (a):
h1(n)+h2(n) = O(f(n)+g(n))• Daraus folgt, dass
O(f(n))+O(g(n)) = O(f(n)+g(n))Beweis vom Rest: Übung
SS 2017 51
Beweis von Satz 2.13
DuA - Kapitel 2
![Page 52: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/52.jpg)
Satz 2.13: (Rechnung mit Platzhaltern)(a) c⋅f(n) = Θ(f(n)) für jede Konstante c>0(b) O(f(n))+O(g(n)) = O(f(n)+g(n))(c) O(f(n))⋅O(g(n)) = O(f(n)⋅g(n))(d) O(f(n)+g(n)) = O(f(n)) falls g(n)=O(f(n))Ausdrücke auch korrekt für Ω statt O.
Vorsicht bei induktiver Anwendung von (d)!
SS 2017 52
Regeln für Kalküle
DuA - Kapitel 2
![Page 53: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/53.jpg)
Behauptung: ∑i=1n i = O(n)
“Beweis”: Sei f(n) = n+f(n-1) und f(1)=1.Induktionsanfang: f(1)=O(1).Induktionsschluss: f(n-1)=O(n-1) gezeigt.Dann gilt:
f(n) = n + f(n-1) = n + O(n-1) = O(n)Also ist f(n) = ∑i=1
n i = O(n) natürlich falsch!
Also Vorsicht mit (d) in Induktionsbeweisen!
SS 2017 53
Regeln für Kalküle
DuA - Kapitel 2
![Page 54: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/54.jpg)
Satz 2.14: Seien f und g stetig und differen-zierbar mit g(n)=ω(1). Dann gilt:(a) Falls f’(n) = O(g’(n)), dann auch f(n)=O(g(n))(b) Falls f’(n) = Ω(g’(n)), dann auch f(n)=Ω(g(n))(c) Falls f’(n) = o(g’(n)), dann auch f(n)=o(g(n))(d) Falls f’(n) = ω(g’(n)), dann auch f(n)=ω(g(n))
Der Umkehrschluss gilt im Allg. nicht!
SS 2017 54
Regeln für Kalküle
DuA - Kapitel 2
![Page 55: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/55.jpg)
SS 2017 55
Beweis – Satz 2.14
DuA - Kapitel 2
Beweis von (a):• Für jede stetige und differenzierbare Funktion
f gilt für alle n≥n0, dassf(n)-f(n0) = ∫n0
f´(x) dx• Falls f´(n) = O(g´(n)), so gilt weiterhin:∃ c>0 ∃ n0>0 ∀ n≥n0: f´(n) ≤ c⋅g´(n)
• Daraus folgt, dass ∀ n≥n0: f(n) = f(n0) + ∫n0
f´(x) dx≤ f(n0) + ∫n0
c⋅g´(x) dx = c⋅g(n) + f(n0) - c⋅g(n0)= c⋅g(n) + d für eine Konstante d
n
n
n
![Page 56: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/56.jpg)
SS 2017 56
Beweis – Satz 2.14
DuA - Kapitel 2
Beweis von (a):• Also gibt es c>0 und n0>0, so dass für alle
n≥n0: f(n) ≤ c⋅g(n) + d für eine Konstante d.• Da g(n)=ω(1), gilt: für alle c´>0 gibt es ein
n´0>0, so dass für alle n≥n´0, g(n) ≥ c´.• Wähle c´=d. Dann gilt für N0=maxn0, n´0: es
gibt c>0, so dass für alle n≥N0, f(n) ≤ c⋅g(n) + g(n) = (c+1)⋅g(n)
• Also ist f(n)=O(g(n)).• (b)-(d): Übung
![Page 57: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/57.jpg)
SS 2017 57
Regeln für Kalküle
DuA - Kapitel 2
Satz 2.15: Sei f:ℝ→ℝ (mit f(n)=Ω(1)). Weiter seienk,l≥0 und k≥l. Dann gilt
(a) f(n)l = O(f(n)k)(b) f(n)k = Ω(f(n)l)Beweis:(a): Ist offensichtlich wahr für l=k, also betrachte l>k.• Da f(n)=Ω(1), ist auch f(n)s=Ω(1) für alle s>0 und
damit aufgrund Folie 41 auch 1=O(f(n)s) für alle s>0.
• Aus Satz 2.12(b) folgt demnach (a).(b): folgt wegen Folie 41 direkt aus (a).
![Page 58: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/58.jpg)
SS 2017 58
Regeln für Kalküle
DuA - Kapitel 2
Satz 2.16: Seien ε,k>0 beliebig. Dann gilt(a) ln(n)k = O(nε)(b) nε = Ω(ln(n)k)Beweis:(b) folgt wegen Folie 41 direkt aus (a). Um (a) zu zeigen, beweisen wir zunächst, dassln n = o(n) ist.Beweis über Satz 2.14:• Wir wissen: (ln n)´ = 1/n, (n)´ = 1. • Da offensichtlich 1/n=o(1) ist, folgt aus Satz 2.14 (c),
dass ln n = o(n) ist.
Beweis über Regel von L´Hospital:
![Page 59: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/59.jpg)
SS 2017 59
Beweis – Satz 2.16 (2)
DuA - Kapitel 2
Regel von L´Hospital (Spezialfall):Seien f,g:ℝ+→ℝ+ stetig und differenzierbar mit
f(x) = g(x) ∈ 0,∞ (beide 0 oder beide ∞). Falls g´(x)≠0 für alle x∈ℝ+ und
dann gilt
f´(x)g´(x)
∈ ℝ∪∞limx→∞
f(x)g(x)
=limx→∞
f´(x)g´(x)
limx→∞
limx →∞
limx →∞
![Page 60: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/60.jpg)
SS 2017 60
Beweis – Satz 2.16 (3)
DuA - Kapitel 2
Die Regel von L´Hospital impliziert mit f(x)=x und g(x)=ln(x), dass
• Also gibt es laut Definition von lim zu jedem c>0 einm>0 mit x/ln(x)>c für alle x>m und daher zu jedemc>0 ein m>0 mit ln(x) < c⋅x für alle x>m.
• Laut Definition des O-Kalküls ist damit ln(n) = o(n).
f(x)g(x)
=limx→∞
f´(x)g´(x)
limx→∞ = ∞
![Page 61: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/61.jpg)
SS 2017 61
Beweis – Satz 2.16 (4)
DuA - Kapitel 2
• Aus ln x = o(x) ergibt sich durch Substitution von xdurch ln(n) : Für alle c>0 gibt es ein m(c)>0, so dass für alle ln(n)>m(c),
ln(n) > c ln ln(n)• Also ist
ln(n) > (k/ε) ln ln(n) für alle ln(n) > m(k/ε)
• Damit gilt:ln(n)k = e (k/ε)⋅(ε/k) k ln ln(n) ≤ e(ε/k) k ln(n) = nε
für alle ln(n)>m(k/ε).• Daraus folgt, dass ln(n)k = O(nε).
![Page 62: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/62.jpg)
SS 2017 DuA - Kapitel 2 62
Berechnung der worst-case Laufzeit:• T(I) sei worst-case Laufzeit für Instruktion I• T(el. Zuweisung) = O(1), T(el. Vergleich) = O(1)• T(return x) = O(1)• T(I;I´) = T(I) + T(I´)• T(if C then I else I´) = T(C) + maxT(I),T(I´)• T(for i←a to b do I) = ∑i=a
b T(I)• T(repeat I until C) = ∑i=1
k (T(C)+T(I))(k: Anzahl Iterationen)
• T(while C do I) = ∑i=1k (T(C)+T(I))
Die Terminierung ist nur für while- und repeat-Schleifen unklar! D.h. um die Terminierung eines Algorithmus nachzuweisen, muss nur die Terminierung dieser Schleifen nachgewiesen werden.
Laufzeitanalyse mithilfe des O-Kalküls
![Page 63: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/63.jpg)
SS 2017 DuA - Kapitel 2 63
Gegeben: Zahl x∈ℝAlgorithmus Signum(x):if x<0 then return -1if x>0 then return 1return 0
T(x<0) = O(1)
T(return -1) = O(1)
T(if B then I) = O(T(B)+ T(I))
Also ist T(if x<0 then return -1) = O(1+1) = O(1)
Wir wissen:
Beispiel: Vorzeichenausgabe
Satz 2.12(d)
![Page 64: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/64.jpg)
SS 2017 DuA - Kapitel 2 64
Gegeben: Zahl x∈ℝAlgorithmus Signum(x):if x<0 then return -1if x>0 then return 1return 0
O(1)O(1)O(1)
Gesamtlaufzeit: O(1+1+1)=O(1)
Beispiel: Vorzeichenausgabe
Satz 2.12(d)
Satz 2.12(b)
![Page 65: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/65.jpg)
SS 2017 DuA - Kapitel 2 65
Gegeben: Zahlenfolge in A[1],…,A[n]Algorithmus Minimum(A):min ← A[1]for i←2 to n do
if A[i]<min then min:=A[i]return min
O(1)∑i=2
n T(I)O(1)
O(1)
Laufzeit: O(1 +(∑i=2n 1) + 1) = O(n)
Beispiel: Minimumsuche
Satz 2.11
![Page 66: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/66.jpg)
SS 2017 DuA - Kapitel 2 66
Gegeben: Zahl x und sortiertes Array A[1],…,A[n]
Algorithmus BinäreSuche(A,x): l←1; r←nwhile l < r do
m← (r+l) div 2if A[m] = x then return mif A[m] < x then l←m+1
else r←m-1return l
O(1)∑i=1
k T(I)
O(1)O(1)
O(1)
O(1)O(1)
O(∑i=1k 1) = O(k)
Beispiel: Binäre Suche
![Page 67: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/67.jpg)
SS 2017 DuA - Kapitel 2 67
Gegeben: Zahl x und sortiertes Array A[1],…,A[n]
Algorithmus BinäreSuche(A,x):l←1; r←nwhile l < r do
m← (r+l) div 2if A[m] = x then return mif A[m] < x then l←m+1
else r←m-1return l
O(∑i=1k 1) = O(k)
Φ(i)=(r-l+1) in Iteration iWas ist k ?? →Zeuge
Φ(1)=n, Φ(i+1)≤ Φ(i)/2Φ(i) ≤ 1: fertigAlso ist k ≤ log n + 1
Beispiel: Binäre Suche
Φ wird auch Potenzialfunktion genannt.
![Page 68: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/68.jpg)
Laufzeit mittels PotenzialfunktionTerminierung von while-/repeat-Schleifen:Finde eine Potenzialfunktion Φ und ein δ>0, das unabhängig von der Anzahl der Schleifendurchläufe ist, so dass• Φ in jedem Durchlauf der while-/repeat-Schleife
um mindestens δ sinkt (bzw. steigt) und• Φ nach unten hin (bzw. nach oben hin)
beschränkt ist.
Warum reicht es nicht, nur strenge Monotonie für Φ zu fordern?
SS 2017 DuA - Kapitel 2 68
![Page 69: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/69.jpg)
Laufzeit mittels PotenzialfunktionLaufzeit von while-/repeat-Schleifen:Wissen wir für eine while-/repeat-Schleife, dass• Φ in jedem Durchlauf der while-/repeat-Schleife um
mindestens δ sinkt (bzw. steigt) und• Φ nach unten hin (bzw. nach oben hin) durch ∆
beschränkt ist,dann wird die while-/repeat-Schleife maximal 1+|Φ0-∆|/δ-mal durchlaufen, wobei Φ0 der initiale Wert von Φ ist.
Bessere Laufzeitabschätzungen sind möglich, wenn z.B. δ von Φ abhängt, wie das in BinäreSuche der Fall ist.
SS 2017 DuA - Kapitel 2 69
![Page 70: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/70.jpg)
SS 2017 DuA - Kapitel 2 70
(x,y)←(0,R)F←1-Rplot(0,R); plot(R,0); plot(0,-R); plot(-R,0)while x<y do
x←x+1if F<0 then
F←F+2⋅x + 1else
y←y-1F←F+2⋅(x-y)
plot(x,y); plot(y,x); plot(-x,y); plot(y,-x)plot(x,-y); plot(-y,x); plot(-y,x); plot(-x,-y)
O(1)O(1)O(1)
∑i=1k T(I)
O(1)
O(∑i=1k 1) = O(k)
alles
Beispiel: Bresenham Algorithmus
![Page 71: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/71.jpg)
(x,y)←(0,R)F←1-Rplot(0,R); plot(R,0); plot(0,-R); plot(-R,0)while x<y do
x←x+1if F<0 then
F←F+2⋅x + 1else
y←y-1F←F+2⋅(x-y)
plot(x,y); plot(y,x); plot(-x,y); plot(y,-x)plot(x,-y); plot(-y,x); plot(-y,x); plot(-x,-y)
SS 2017 DuA - Kapitel 2 71
Potenzialfunktion:φ(x,y) = y-xMonotonie: verringert sich um ≥1 pro while-RundeBeschränktheit: while-Bed.
Beispiel: Bresenham Algorithmus
![Page 72: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/72.jpg)
(x,y)←(0,R)F←1-Rplot(0,R); plot(R,0); plot(0,-R); plot(-R,0)while x<y do
x←x+1if F<0 then
F←F+2⋅x + 1else
y←y-1F←F+2⋅(x-y)
plot(x,y); plot(y,x); plot(-x,y); plot(y,-x)plot(x,-y); plot(-y,x); plot(-y,x); plot(-x,-y)
SS 2017 DuA - Kapitel 2 72
Potenzialfunktion:φ(x,y) = y-xAnzahl Runden:φ0(x,y) = R, φ(x,y)>0→ maximal R Runden
Beispiel: Bresenham Algorithmus
![Page 73: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/73.jpg)
SS 2017 DuA - Kapitel 2 73
Gegeben: natürliche Zahl nAlgorithmus Fakultät(n):if n=1 then return 1
else return n ⋅ Fakultät(n-1)
Laufzeit:• T(n): Laufzeit von Fakultät(n)• T(n) = T(n-1) + O(1), T(1) = O(1)
O(1)O(1) + ??
Beispiel: Fakultät
![Page 74: 2. Grundlagen - cs.uni-paderborn.de · DuA - Kapitel 2. SS 2017 2 Pseudocode Schleifen (for, while, repeat) Bedingtes Verzweigen(if – then – else) (Unter-)Programmaufruf/Übergabe](https://reader035.fdocument.pub/reader035/viewer/2022062912/5e048d0b55dcf173926e353a/html5/thumbnails/74.jpg)
SS 2017 74
Anwendung auf Laufzeiten
O-Notation erlaubt uns, Konstanten zu ignorieren.
Wollen uns auf asymptotische Laufzeit konzentrieren.
Werden in Zukunft Laufzeiten immer mit Hilfe von O-,Ω-,Θ-Notation angeben.
DuA - Kapitel 2