Algorithmen und Datenstrukturen

Werbung
SS12
Algorithmen und Datenstrukturen
Vorbemerkungen und 1. Kapitel
Christopher Mattern
April 2012
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
Team:
Vorlesung:
Dipl.-Ing. Christopher Mattern
(Vertretung von Univ.-Prof. Dr. Martin Dietzfelbinger)
Übungen:
Dipl.-Inf. Michael Rink, Dipl.-Ing. Christopher Mattern
FG Komplexitätstheorie und Effiziente Algorithmen
Fachgebietsseite:
http://www.tu-ilmenau.de/ktea/
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
1
Hörer:
Informatikstudierende im 2. Semester.
Andere Interessenten sehr willkommen!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
2
Hörer:
Informatikstudierende im 2. Semester.
Andere Interessenten sehr willkommen!
Material: Eigene Notizen!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
2
Hörer:
Informatikstudierende im 2. Semester.
Andere Interessenten sehr willkommen!
Material: Eigene Notizen!
Folienkopien, Übungsblätter
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
2
Hörer:
Informatikstudierende im 2. Semester.
Andere Interessenten sehr willkommen!
Material: Eigene Notizen!
Folienkopien, Übungsblätter
auf der folgenden Webseite:
www.tu-ilmenau.de/iti/lehre/lehre-ss-2012/aud/
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
2
Hörer:
Informatikstudierende im 2. Semester.
Andere Interessenten sehr willkommen!
Material: Eigene Notizen!
Folienkopien, Übungsblätter
auf der folgenden Webseite:
www.tu-ilmenau.de/iti/lehre/lehre-ss-2012/aud/
Ebenso: Aktuelle Mitteilungen.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
2
Hörer:
Informatikstudierende im 2. Semester.
Andere Interessenten sehr willkommen!
Material: Eigene Notizen!
Folienkopien, Übungsblätter
auf der folgenden Webseite:
www.tu-ilmenau.de/iti/lehre/lehre-ss-2012/aud/
Ebenso: Aktuelle Mitteilungen.
Zugang auch über die FG-Seite.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
2
Zur Arbeitsweise:
Der Stoff ist zu kompliziert und zu umfangreich, um
durch reines Zuhören verstanden zu werden.
• Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend!
• Begleitend Bücher ansehen.
• Übungsblätter drucken, lesen, zur Übung mitbringen,
vorher Lösung ausdenken, Lösungsweg aufschreiben, an
Lösungen mitarbeiten, Lösungen vortragen.
• Regelmäßig Übungen nacharbeiten. Semesterbegleitend!
• Bei Verständnisproblemen frühzeitig fragen!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
3
Übung
Michael Rink
Mittwoch, ungerade KW 9:00 – 10:30 Sr HU 129
Mittwoch, gerade KW
11:00 – 12:30 Sr Oe 117
Donnerstag
9:00 – 10:30 Sr HU 117
Christopher Mattern
Mittwoch
Freitag
9:00 – 10:30 Sr HU 210
13:00 – 14:30 Sr K 2077
Es geht diese Woche los . . .
• Übungsblätter stehen im Netz.
• Übung vor- und nachbereiten!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
4
Prüfungsstoff: Vorlesung + Übungsaufgaben.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
5
Prüfungsstoff: Vorlesung + Übungsaufgaben.
Prüfung: Klausur (90 Minuten).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
5
Prüfungsstoff: Vorlesung + Übungsaufgaben.
Prüfung: Klausur (90 Minuten).
90 Punkte.
15 Bonuspunkte über Zwischenklausur (21.05., 30 Minuten).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
5
Grundlagen, Voraussetzungen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
6
Grundlagen, Voraussetzungen
• Prof. G. Schäfer, Algorithmen und Programmierung für Informatiker, WS 2011/12
www.tu-ilmenau.de/telematik/lehre/wintersemester-20112012/
Wird vorausgesetzt!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
6
Grundlagen, Voraussetzungen
• Prof. G. Schäfer, Algorithmen und Programmierung für Informatiker, WS 2011/12
www.tu-ilmenau.de/telematik/lehre/wintersemester-20112012/
Wird vorausgesetzt!
• G. Saake, K. U. Sattler. Algorithmen und Datenstrukturen Eine Einführung mit Java. dpunkt.verlag, 3. Auflage, 2006.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
6
Grundlagen, Voraussetzungen
• Prof. G. Schäfer, Algorithmen und Programmierung für Informatiker, WS 2011/12
www.tu-ilmenau.de/telematik/lehre/wintersemester-20112012/
Wird vorausgesetzt!
• G. Saake, K. U. Sattler. Algorithmen und Datenstrukturen Eine Einführung mit Java. dpunkt.verlag, 3. Auflage, 2006.
• Dr. E. Hexel: Grundlagen und diskrete Strukturen, Vorlesung, WS 2011/12
Wird vorausgesetzt!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
6
Literatur
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
7
Literatur
• R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen,
3. Auflage, Vieweg+Teubner 2004.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
7
Literatur
• R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen,
3. Auflage, Vieweg+Teubner 2004.
• T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
7
Literatur
• R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen,
3. Auflage, Vieweg+Teubner 2004.
• T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002.
• T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction
to Algorithms, Second Edition, MIT Press 2001.
(Auch auf deutsch erhältlich.)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
7
Literatur
• R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen,
3. Auflage, Vieweg+Teubner 2004.
• T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002.
• T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction
to Algorithms, Second Edition, MIT Press 2001.
(Auch auf deutsch erhältlich.)
• K. Mehlhorn, P. Sanders, Algorithms and
Data Structures: The Basic Toolbox, Springer-Verlag, 2008
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
7
Literatur
• R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen,
3. Auflage, Vieweg+Teubner 2004.
• T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2002.
• T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction
to Algorithms, Second Edition, MIT Press 2001.
(Auch auf deutsch erhältlich.)
• K. Mehlhorn, P. Sanders, Algorithms and
Data Structures: The Basic Toolbox, Springer-Verlag, 2008
• R. Sedgewick, Algorithms, Addison-Wesley, 2002 (auch C-,
C++, Java-Versionen, auch auf deutsch bei Pearson)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
7
Kapitel 1
Einführung und Grundlagen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
8
Datenstrukturen!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
9
Datenstrukturen!
• Listen, Stacks, Queues
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
9
Datenstrukturen!
• Listen, Stacks, Queues
• Einfache Suchbäume
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
9
Datenstrukturen!
• Listen, Stacks, Queues
• Einfache Suchbäume
• Balancierte Suchbäume
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
9
Datenstrukturen!
• Listen, Stacks, Queues
• Einfache Suchbäume
• Balancierte Suchbäume
• Hashtabellen implementieren Wörterbücher
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
9
Datenstrukturen!
• Listen, Stacks, Queues
• Einfache Suchbäume
• Balancierte Suchbäume
• Hashtabellen implementieren Wörterbücher
• Heaps implementieren Vorrangswarteschlangen (Priority
Queues)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
9
Datenstrukturen!
• Listen, Stacks, Queues
• Einfache Suchbäume
• Balancierte Suchbäume
• Hashtabellen implementieren Wörterbücher
• Heaps implementieren Vorrangswarteschlangen (Priority
Queues)
• Datenstrukturen für Graphen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
9
Spezifikation des Verhaltens von Datenstrukturen (vereinfacht)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
10
Spezifikation des Verhaltens von Datenstrukturen (vereinfacht):
(Abstrakte) Datentypen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
10
Spezifikation des Verhaltens von Datenstrukturen (vereinfacht):
(Abstrakte) Datentypen
Syntax: Signatur
Semantik: Mathematisches Modell
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
10
Spezifikation des Verhaltens von Datenstrukturen (vereinfacht):
(Abstrakte) Datentypen
Syntax: Signatur
Semantik: Mathematisches Modell
(Axiomatische Variante: evtl. in Logische Strukturen“)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
10
Algorithmen!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Algorithmen!
Aufgabe: Für jede beliebige gegebene Folge
a1, a2, . . . , an
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Algorithmen!
Aufgabe: Für jede beliebige gegebene Folge
a1, a2, . . . , an
• von natürlichen / ganzen / reellen Zahlen
• von Objekten aus einem total geordneten Bereich (U, <)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Algorithmen!
Aufgabe: Für jede beliebige gegebene Folge
a1, a2, . . . , an
• von natürlichen / ganzen / reellen Zahlen
• von Objekten aus einem total geordneten Bereich (U, <)
Z.B.: Zahlentupel, Strings (Zeichenreihen),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Algorithmen!
Aufgabe: Für jede beliebige gegebene Folge
a1, a2, . . . , an
• von natürlichen / ganzen / reellen Zahlen
• von Objekten aus einem total geordneten Bereich (U, <)
Z.B.: Zahlentupel, Strings (Zeichenreihen),
mit Namen versehene Datensätze, usw.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Algorithmen!
Aufgabe: Für jede beliebige gegebene Folge
a1, a2, . . . , an
• von natürlichen / ganzen / reellen Zahlen
• von Objekten aus einem total geordneten Bereich (U, <)
Z.B.: Zahlentupel, Strings (Zeichenreihen),
mit Namen versehene Datensätze, usw.
sortiere a1, a2, . . . , an in aufsteigende Reihenfolge.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Algorithmen!
Aufgabe: Für jede beliebige gegebene Folge
a1, a2, . . . , an
• von natürlichen / ganzen / reellen Zahlen
• von Objekten aus einem total geordneten Bereich (U, <)
Z.B.: Zahlentupel, Strings (Zeichenreihen),
mit Namen versehene Datensätze, usw.
sortiere a1, a2, . . . , an in aufsteigende Reihenfolge.
Vorher: (5, 2, 9, 3, 6, 5, 8)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Algorithmen!
Aufgabe: Für jede beliebige gegebene Folge
a1, a2, . . . , an
• von natürlichen / ganzen / reellen Zahlen
• von Objekten aus einem total geordneten Bereich (U, <)
Z.B.: Zahlentupel, Strings (Zeichenreihen),
mit Namen versehene Datensätze, usw.
sortiere a1, a2, . . . , an in aufsteigende Reihenfolge.
Vorher: (5, 2, 9, 3, 6, 5, 8) Nachher: (2, 3, 5, 5, 6, 8, 9)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
11
Sortieren durch Einfügen (Insertion Sort)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
Idee:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
Idee: Für i = 2, 3, . . . , n:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
Idee: Für i = 2, 3, . . . , n:
Suche die Stelle in der sortierten Version von a1, . . . , ai−1,
an die ai gehört,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
Idee: Für i = 2, 3, . . . , n:
Suche die Stelle in der sortierten Version von a1, . . . , ai−1,
an die ai gehört, und füge ai dort ein.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
Idee: Für i = 2, 3, . . . , n:
Suche die Stelle in der sortierten Version von a1, . . . , ai−1,
an die ai gehört, und füge ai dort ein. – Pseudocode:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
Idee: Für i = 2, 3, . . . , n:
Suche die Stelle in der sortierten Version von a1, . . . , ai−1,
an die ai gehört, und füge ai dort ein. – Pseudocode:
Algorithmus Straight Insertion Sort
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Sortieren durch Einfügen (Insertion Sort)
Eingabe (a1, . . . , an) in Array (Feld) A[1..n]
Idee: Für i = 2, 3, . . . , n:
Suche die Stelle in der sortierten Version von a1, . . . , ai−1,
an die ai gehört, und füge ai dort ein. – Pseudocode:
Algorithmus Straight Insertion Sort
(1) for i from 2 to n do
(2)
x ← A[i].key ;
(3)
j ← i-1 ;
(4)
while j ≥ 1 and x < A[j].key do
(5)
A[j+1] ← A[j] ;
(6)
j ← j-1 ;
(7)
A[j+1] ← x.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
12
Was ist ein Algorithmus?
Erklärung:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A ist eine durch einen endlichen
Text
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A ist eine durch einen endlichen
Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen
Eingabe x
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A ist eine durch einen endlichen
Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen
Eingabe x aus einer Menge
I
FG KTuEA, TU Ilmenau
(Menge der möglichen Eingaben)
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A ist eine durch einen endlichen
Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen
Eingabe x aus einer Menge
I
(Menge der möglichen Eingaben)
eindeutig eine Reihe von auszuführenden Schritten vorschreibt.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A ist eine durch einen endlichen
Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen
Eingabe x aus einer Menge
I
(Menge der möglichen Eingaben)
eindeutig eine Reihe von auszuführenden Schritten vorschreibt.
Wenn nach endlich vielen Schritten diese Ausführung anhält,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A ist eine durch einen endlichen
Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen
Eingabe x aus einer Menge
I
(Menge der möglichen Eingaben)
eindeutig eine Reihe von auszuführenden Schritten vorschreibt.
Wenn nach endlich vielen Schritten diese Ausführung anhält,
wird ein Ergebnis A(x) ausgegeben.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Was ist ein Algorithmus?
Erklärung: Ein Algorithmus A ist eine durch einen endlichen
Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen
Eingabe x aus einer Menge
I
(Menge der möglichen Eingaben)
eindeutig eine Reihe von auszuführenden Schritten vorschreibt.
Wenn nach endlich vielen Schritten diese Ausführung anhält,
wird ein Ergebnis A(x) ausgegeben.
Mögliche Formen: Umgangssprache, Pseudocode, Programm
in Programmiersprache, Programm für formales Maschinenmodell, Programm in Maschinensprache.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
13
Allgemeine Merkmale eines Algorithmus
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Allgemeine Merkmale eines Algorithmus
• Endlicher Text
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Allgemeine Merkmale eines Algorithmus
• Endlicher Text
• Ein Algorithmus für eine große (oft: unendliche!) Menge
von Eingaben x
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Allgemeine Merkmale eines Algorithmus
• Endlicher Text
• Ein Algorithmus für eine große (oft: unendliche!) Menge
von Eingaben x
(Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine
Eingabe.)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Allgemeine Merkmale eines Algorithmus
• Endlicher Text
• Ein Algorithmus für eine große (oft: unendliche!) Menge
von Eingaben x
(Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine
Eingabe.)
• Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Allgemeine Merkmale eines Algorithmus
• Endlicher Text
• Ein Algorithmus für eine große (oft: unendliche!) Menge
von Eingaben x
(Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine
Eingabe.)
• Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt
• Wenn Verarbeitung anhält: Ausgabe ablesbar
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Allgemeine Merkmale eines Algorithmus
• Endlicher Text
• Ein Algorithmus für eine große (oft: unendliche!) Menge
von Eingaben x
(Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine
Eingabe.)
• Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt
• Wenn Verarbeitung anhält: Ausgabe ablesbar
Nicht verlangt:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Allgemeine Merkmale eines Algorithmus
• Endlicher Text
• Ein Algorithmus für eine große (oft: unendliche!) Menge
von Eingaben x
(Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine
Eingabe.)
• Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt
• Wenn Verarbeitung anhält: Ausgabe ablesbar
Nicht verlangt: Terminierung auf allen x ∈ I.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
14
Erweiterungen des Algorithmusbegriffs
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
15
Erweiterungen des Algorithmusbegriffs
• Online-Algorithmen: Die Eingabe wird nicht am Anfang
der Berechnung, sondern nach und nach zur Verfügung
gestellt
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
15
Erweiterungen des Algorithmusbegriffs
• Online-Algorithmen: Die Eingabe wird nicht am Anfang
der Berechnung, sondern nach und nach zur Verfügung
gestellt
→ Häufige Situation bei Datenstrukturen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
15
Erweiterungen des Algorithmusbegriffs
• Online-Algorithmen: Die Eingabe wird nicht am Anfang
der Berechnung, sondern nach und nach zur Verfügung
gestellt
→ Häufige Situation bei Datenstrukturen
→ Standard bei Betriebssystemen, Systemprogrammen,
Anwendungsprogrammen mit Benutzerdialog usw.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
15
Erweiterungen des Algorithmusbegriffs
• Online-Algorithmen: Die Eingabe wird nicht am Anfang
der Berechnung, sondern nach und nach zur Verfügung
gestellt
→ Häufige Situation bei Datenstrukturen
→ Standard bei Betriebssystemen, Systemprogrammen,
Anwendungsprogrammen mit Benutzerdialog usw.
• Randomisierung: Algorithmus führt Zufallsexperimente
durch
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
15
Erweiterungen des Algorithmusbegriffs
• Online-Algorithmen: Die Eingabe wird nicht am Anfang
der Berechnung, sondern nach und nach zur Verfügung
gestellt
→ Häufige Situation bei Datenstrukturen
→ Standard bei Betriebssystemen, Systemprogrammen,
Anwendungsprogrammen mit Benutzerdialog usw.
• Randomisierung: Algorithmus führt Zufallsexperimente
durch
• Verteilte Algorithmen∗: Mehrere Rechner arbeiten zusammen, kommunizieren, zeitliche Abfolge nicht vorhersagbar
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
15
Erweiterungen des Algorithmusbegriffs
• Online-Algorithmen: Die Eingabe wird nicht am Anfang
der Berechnung, sondern nach und nach zur Verfügung
gestellt
→ Häufige Situation bei Datenstrukturen
→ Standard bei Betriebssystemen, Systemprogrammen,
Anwendungsprogrammen mit Benutzerdialog usw.
• Randomisierung: Algorithmus führt Zufallsexperimente
durch
• Verteilte Algorithmen∗: Mehrere Rechner arbeiten zusammen, kommunizieren, zeitliche Abfolge nicht vorhersagbar
∗
in dieser Vorlesung nicht oder nur am Rande diskutiert
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
15
Algorithmen in dieser Vorlesung:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
Algorithmen in dieser Vorlesung:
• Darstellung von Algorithmen, Bausteine für Algorithmen
(besonders Iteration, Rekursion)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
Algorithmen in dieser Vorlesung:
• Darstellung von Algorithmen, Bausteine für Algorithmen
(besonders Iteration, Rekursion)
• Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise
für iterative und rekursive Verfahren
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
Algorithmen in dieser Vorlesung:
• Darstellung von Algorithmen, Bausteine für Algorithmen
(besonders Iteration, Rekursion)
• Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise
für iterative und rekursive Verfahren
• Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
Algorithmen in dieser Vorlesung:
• Darstellung von Algorithmen, Bausteine für Algorithmen
(besonders Iteration, Rekursion)
• Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise
für iterative und rekursive Verfahren
• Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse
• Algorithmen zur Implementierung von Datentypen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
Algorithmen in dieser Vorlesung:
• Darstellung von Algorithmen, Bausteine für Algorithmen
(besonders Iteration, Rekursion)
• Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise
für iterative und rekursive Verfahren
• Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse
• Algorithmen zur Implementierung von Datentypen
• Balancierte Suchbäume, einfache Hashverfahren
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
Algorithmen in dieser Vorlesung:
• Darstellung von Algorithmen, Bausteine für Algorithmen
(besonders Iteration, Rekursion)
• Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise
für iterative und rekursive Verfahren
• Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse
• Algorithmen zur Implementierung von Datentypen
• Balancierte Suchbäume, einfache Hashverfahren
• Sortierverfahren: Quicksort, Heapsort, Mergesort, CountingSort
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
Algorithmen in dieser Vorlesung:
• Darstellung von Algorithmen, Bausteine für Algorithmen
(besonders Iteration, Rekursion)
• Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise
für iterative und rekursive Verfahren
• Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse
• Algorithmen zur Implementierung von Datentypen
• Balancierte Suchbäume, einfache Hashverfahren
• Sortierverfahren: Quicksort, Heapsort, Mergesort, CountingSort Grundbegriffe der Graphentheorie
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
16
• Grundlegende Exploration von Graphen:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
17
• Grundlegende Exploration von Graphen: Breitensuche
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
17
Algorithmus Straight Insertion Sort (Pseudocode)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
18
Algorithmus Straight Insertion Sort (Pseudocode)
(1) for i from 2 to n do
(2)
x ← A[i] ;
(3)
j ← i-1 ;
(4)
while j ≥ 1 and x.key < A[j].key do
(5)
A[j+1] ← A[j] ;
(6)
j ← j-1 ;
(7)
A[j+1] ← x.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
18
Algorithmus Straight Insertion Sort (Pseudocode)
(1) for i from 2 to n do
(2)
x ← A[i] ;
(3)
j ← i-1 ;
(4)
while j ≥ 1 and x.key < A[j].key do
(5)
A[j+1] ← A[j] ;
(6)
j ← j-1 ;
(7)
A[j+1] ← x.
Fragen:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
18
Algorithmus Straight Insertion Sort (Pseudocode)
(1) for i from 2 to n do
(2)
x ← A[i] ;
(3)
j ← i-1 ;
(4)
while j ≥ 1 and x.key < A[j].key do
(5)
A[j+1] ← A[j] ;
(6)
j ← j-1 ;
(7)
A[j+1] ← x.
Fragen:
(a) Ist dieser Algorithmus korrekt“?
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
18
Algorithmus Straight Insertion Sort (Pseudocode)
(1) for i from 2 to n do
(2)
x ← A[i] ;
(3)
j ← i-1 ;
(4)
while j ≥ 1 and x.key < A[j].key do
(5)
A[j+1] ← A[j] ;
(6)
j ← j-1 ;
(7)
A[j+1] ← x.
Fragen:
(a) Ist dieser Algorithmus korrekt“?
”
(b) Wie lange braucht der Algorithmus, um die Berechnung zu
beenden?
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
18
(a) Korrektheitsbeweise
Damit die Frage nach einem Beweis der Korrektheit sinnvoll
ist, müssen wir die zu lösende Aufgabe
spezifizieren.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
19
(a) Korrektheitsbeweise
Damit die Frage nach einem Beweis der Korrektheit sinnvoll
ist, müssen wir die zu lösende Aufgabe
spezifizieren.
Bemerkung: Aus einer vagen Problemstellung eine präzise
Spezifikation des zu lösenden Problems zu gewinnen ist ein
in der Praxis extrem wichtiger Schritt, dessen Bedeutung oft
unterschätzt wird.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
19
Berechnungsprobleme
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Berechnungsprobleme
Erklärung: Ein Berechnungsproblem P besteht aus
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Berechnungsprobleme
Erklärung: Ein Berechnungsproblem P besteht aus
(i) einer Menge I von möglichen Eingaben
( Inputs“, Instanzen“)
”
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Berechnungsprobleme
Erklärung: Ein Berechnungsproblem P besteht aus
(i) einer Menge I von möglichen Eingaben
( Inputs“, Instanzen“) (I kann unendlich sein!)
”
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Berechnungsprobleme
Erklärung: Ein Berechnungsproblem P besteht aus
(i) einer Menge I von möglichen Eingaben
( Inputs“, Instanzen“) (I kann unendlich sein!)
”
”
(ii) einer Menge O von möglichen Ausgaben
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Berechnungsprobleme
Erklärung: Ein Berechnungsproblem P besteht aus
(i) einer Menge I von möglichen Eingaben
( Inputs“, Instanzen“) (I kann unendlich sein!)
”
”
(ii) einer Menge O von möglichen Ausgaben
(iii) einer Funktion f : I → O
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Berechnungsprobleme
Erklärung: Ein Berechnungsproblem P besteht aus
(i) einer Menge I von möglichen Eingaben
( Inputs“, Instanzen“) (I kann unendlich sein!)
”
”
(ii) einer Menge O von möglichen Ausgaben
(iii) einer Funktion f : I → O
Ein Algorithmus A löst P“, wenn A genau die Eingaben aus
”
I verarbeitet und zu Eingabe x ∈ I Ausgabe A(x) = f (x)
liefert.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Berechnungsprobleme
Erklärung: Ein Berechnungsproblem P besteht aus
(i) einer Menge I von möglichen Eingaben
( Inputs“, Instanzen“) (I kann unendlich sein!)
”
”
(ii) einer Menge O von möglichen Ausgaben
(iii) einer Funktion f : I → O
Ein Algorithmus A löst P“, wenn A genau die Eingaben aus
”
I verarbeitet und zu Eingabe x ∈ I Ausgabe A(x) = f (x)
liefert.
Spezialfall O = {1, 0} =“ {true, false} =“ {Ja, Nein}
”
”
(Entscheidungsproblem)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
20
Varianten
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
21
Varianten
• Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse.
Formal: In (iii) haben wir statt einer Funktion f eine
Relation R ⊆ I × O mit:
∀x ∈ I ∃y ∈ O : R(x, y).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
21
Varianten
• Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse.
Formal: In (iii) haben wir statt einer Funktion f eine
Relation R ⊆ I × O mit:
∀x ∈ I ∃y ∈ O : R(x, y).
A löst P, wenn A genau die Eingaben aus I verarbeitet
und R(x, A(x)) für jedes x ∈ I gilt.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
21
Varianten
• Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse.
Formal: In (iii) haben wir statt einer Funktion f eine
Relation R ⊆ I × O mit:
∀x ∈ I ∃y ∈ O : R(x, y).
A löst P, wenn A genau die Eingaben aus I verarbeitet
und R(x, A(x)) für jedes x ∈ I gilt.
Beispiel: Beim Sortieren von Datensätzen (k, dk ), wobei ein
Schlüssel k wiederholt vorkommen darf, ist jede sortierte
Anordnung eine legale Lösung.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
21
Varianten
• Zu einer Eingabe x ∈ I gibt es mehrere legale Ergebnisse.
Formal: In (iii) haben wir statt einer Funktion f eine
Relation R ⊆ I × O mit:
∀x ∈ I ∃y ∈ O : R(x, y).
A löst P, wenn A genau die Eingaben aus I verarbeitet
und R(x, A(x)) für jedes x ∈ I gilt.
Beispiel: Beim Sortieren von Datensätzen (k, dk ), wobei ein
Schlüssel k wiederholt vorkommen darf, ist jede sortierte
Anordnung eine legale Lösung.
• Online-Situation: Eingabe wird in Raten“ geliefert, Zwi”
schenausgaben werden verlangt.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
21
Spezifikation des Sortierproblems
Parameter: Der Grundbereich, aus dem die zu sortierenden
Objekte stammen, ist ein Parameter der Spezifikation.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
22
Spezifikation des Sortierproblems
Parameter: Der Grundbereich, aus dem die zu sortierenden
Objekte stammen, ist ein Parameter der Spezifikation.
(U, <): eine total geordnete Menge (endlich oder unendlich).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
22
Spezifikation des Sortierproblems
Parameter: Der Grundbereich, aus dem die zu sortierenden
Objekte stammen, ist ein Parameter der Spezifikation.
(U, <): eine total geordnete Menge (endlich oder unendlich).
Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von
Strings.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
22
Spezifikation des Sortierproblems
Parameter: Der Grundbereich, aus dem die zu sortierenden
Objekte stammen, ist ein Parameter der Spezifikation.
(U, <): eine total geordnete Menge (endlich oder unendlich).
Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von
Strings.
D: Eine Menge (von Datensätzen“).
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
22
Spezifikation des Sortierproblems
Parameter: Der Grundbereich, aus dem die zu sortierenden
Objekte stammen, ist ein Parameter der Spezifikation.
(U, <): eine total geordnete Menge (endlich oder unendlich).
Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von
Strings.
D: Eine Menge (von Datensätzen“).
”
Jeder Datensatz a hat einen Sortierschlüssel“: key : D → U .
”
S
<∞
I = O = Seq(D) = D
= n≥0 Dn
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
22
Spezifikation des Sortierproblems
Parameter: Der Grundbereich, aus dem die zu sortierenden
Objekte stammen, ist ein Parameter der Spezifikation.
(U, <): eine total geordnete Menge (endlich oder unendlich).
Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von
Strings.
D: Eine Menge (von Datensätzen“).
”
Jeder Datensatz a hat einen Sortierschlüssel“: key : D → U .
”
S
<∞
I = O = Seq(D) = D
= n≥0 Dn
= {(a1 . . . , an) | n ∈ N, a1, . . . , an ∈ D},
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
22
Spezifikation des Sortierproblems
Parameter: Der Grundbereich, aus dem die zu sortierenden
Objekte stammen, ist ein Parameter der Spezifikation.
(U, <): eine total geordnete Menge (endlich oder unendlich).
Beispiele: Zahlenmengen {1, . . . , n}, N, Z, Q; Mengen von
Strings.
D: Eine Menge (von Datensätzen“).
”
Jeder Datensatz a hat einen Sortierschlüssel“: key : D → U .
”
S
<∞
I = O = Seq(D) = D
= n≥0 Dn
= {(a1 . . . , an) | n ∈ N, a1, . . . , an ∈ D},
die Menge aller endlichen Folgen von Datensätzen.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
22
Beispiel: U = N, D = N × {a, . . . , z}
key : D 3 (i, b) 7→ i ∈ U
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
23
Beispiel: U = N, D = N × {a, . . . , z}
key : D 3 (i, b) 7→ i ∈ U
Ein möglicher Input:
x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
23
Beispiel: U = N, D = N × {a, . . . , z}
key : D 3 (i, b) 7→ i ∈ U
Ein möglicher Input:
x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z)).
Das Ergebnis beim Sortieren sollte z. B. sein:
y = ((3, q), (4, u), (5, z), (5, a), (5, p), (6, q), (9, a)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
23
x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der
Relation R genau dann wenn
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
24
x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der
Relation R genau dann wenn
n=m
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
24
x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der
Relation R genau dann wenn
n = m und es gibt eine Permutation π von {1, . . . , n}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
24
x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der
Relation R genau dann wenn
n = m und es gibt eine Permutation π von {1, . . . , n} mit
bi = aπ(i), 1 ≤ i ≤ n, und key(b1) ≤ key(b2) ≤ · · · ≤ key(bn).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
24
x = (a1, . . . , an) ∈ I und y = (b1, . . . , bm) ∈ O stehen in der
Relation R genau dann wenn
n = m und es gibt eine Permutation π von {1, . . . , n} mit
bi = aπ(i), 1 ≤ i ≤ n, und key(b1) ≤ key(b2) ≤ · · · ≤ key(bn).
Beispiel: Für x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z))
und y = ((3, q), (4, u), (5, z), (5, a), (5, p), (6, q), (9, a))
1 2 3 4 5 6 7
wäre π =
passend.
2 6 7 5 1 4 3
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
24
Alternative Formulierung für die Spezifikation einer Lösung
des Sortierproblems:
O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
25
Alternative Formulierung für die Spezifikation einer Lösung
des Sortierproblems:
O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N}
Definition: x = (a1, . . . , an) wird durch π sortiert, wenn
key(aπ(1)) ≤ key(aπ(2)) ≤ · · · ≤ key(aπ(n)) gilt.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
25
Alternative Formulierung für die Spezifikation einer Lösung
des Sortierproblems:
O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N}
Definition: x = (a1, . . . , an) wird durch π sortiert, wenn
key(aπ(1)) ≤ key(aπ(2)) ≤ · · · ≤ key(aπ(n)) gilt.
x = (a1, . . . , an) und π stehen in der Relation R0,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
25
Alternative Formulierung für die Spezifikation einer Lösung
des Sortierproblems:
O = {π | π Permutation einer Menge {1, . . . , n}, n ∈ N}
Definition: x = (a1, . . . , an) wird durch π sortiert, wenn
key(aπ(1)) ≤ key(aπ(2)) ≤ · · · ≤ key(aπ(n)) gilt.
x = (a1, . . . , an) und π stehen in der Relation R0, wenn x
durch π sortiert wird.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
25
Löst Straight Insertion Sort das Sortierproblem?
Gilt für jede Eingabe (a1, . . . , an) in A[1..n], dass nachher
dieselben Elemente im Array stehen, aber nach Schlüsseln
aufsteigend sortiert?
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
26
Korrektheitsbeweis an Beispiel:
Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man
die folgende Behauptung:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
27
Korrektheitsbeweis an Beispiel:
Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man
die folgende Behauptung:
(IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
27
Korrektheitsbeweis an Beispiel:
Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man
die folgende Behauptung:
(IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife
stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
27
Korrektheitsbeweis an Beispiel:
Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man
die folgende Behauptung:
(IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife
stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert.
I.A.: i = 1: Nach Durchlauf für i = 1“ ist vor Beginn.
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
27
Korrektheitsbeweis an Beispiel:
Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man
die folgende Behauptung:
(IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife
stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert.
I.A.: i = 1: Nach Durchlauf für i = 1“ ist vor Beginn.
”
Anfangs ist das Teilarray A[1..1] (nur ein Eintrag) sortiert.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
27
Korrektheitsbeweis an Beispiel:
Durch vollständige Induktion über i = 1, 2, . . . , n zeigt man
die folgende Behauptung:
(IBi) Nach Durchlauf Nummer i (in i) der äußeren Schleife
stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert.
I.A.: i = 1: Nach Durchlauf für i = 1“ ist vor Beginn.
”
Anfangs ist das Teilarray A[1..1] (nur ein Eintrag) sortiert.
I.V.: (IBi−1) gilt, d. h.A[1..i − 1] ist sortiert, und Schleifendurchlauf i beginnt.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
27
Ind.-Schritt: Betrachte Schleifendurchlauf i.
Die innere Schleife (2)–(7) transportiert x = A[i] (via x)
an die Position j unmittelbar rechts von dem Eintrag in
A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
28
Ind.-Schritt: Betrachte Schleifendurchlauf i.
Die innere Schleife (2)–(7) transportiert x = A[i] (via x)
an die Position j unmittelbar rechts von dem Eintrag in
A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist.
Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel
in A[1..i − 1] ist.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
28
Ind.-Schritt: Betrachte Schleifendurchlauf i.
Die innere Schleife (2)–(7) transportiert x = A[i] (via x)
an die Position j unmittelbar rechts von dem Eintrag in
A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist.
Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel
in A[1..i − 1] ist.
Die Einträge A[j],. . . ,A[i − 1] werden um eine Position nach
rechts verschoben, um für A[i] Platz zu machen.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
28
Ind.-Schritt: Betrachte Schleifendurchlauf i.
Die innere Schleife (2)–(7) transportiert x = A[i] (via x)
an die Position j unmittelbar rechts von dem Eintrag in
A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist.
Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel
in A[1..i − 1] ist.
Die Einträge A[j],. . . ,A[i − 1] werden um eine Position nach
rechts verschoben, um für A[i] Platz zu machen.
⇒ Ind.-Beh. (IBi) erfüllt.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
28
Ind.-Schritt: Betrachte Schleifendurchlauf i.
Die innere Schleife (2)–(7) transportiert x = A[i] (via x)
an die Position j unmittelbar rechts von dem Eintrag in
A[1..i − 1] mit dem größten Schlüssel, der ≤ key(x) ist.
Oder an Position 1, wenn key(A[i]) kleiner als alle Schlüssel
in A[1..i − 1] ist.
Die Einträge A[j],. . . ,A[i − 1] werden um eine Position nach
rechts verschoben, um für A[i] Platz zu machen.
⇒ Ind.-Beh. (IBi) erfüllt.
Also gilt (IBn), also ist nach Abschluss des Ablaufs das Array
sortiert.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
28
Methoden für Korrektheitsbeweise
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
29
Methoden für Korrektheitsbeweise
• Diskrete Mathematik
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
29
Methoden für Korrektheitsbeweise
• Diskrete Mathematik
• Vollständige Induktion
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
29
Methoden für Korrektheitsbeweise
• Diskrete Mathematik
• Vollständige Induktion
→ Schleifen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
29
Methoden für Korrektheitsbeweise
• Diskrete Mathematik
• Vollständige Induktion
→ Schleifen
Wesentlich: Formulierung der Induktionsbehauptung.
Schleifeninvariante“.
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
29
Methoden für Korrektheitsbeweise
• Diskrete Mathematik
• Vollständige Induktion
→ Schleifen
Wesentlich: Formulierung der Induktionsbehauptung.
Schleifeninvariante“.
”
• Andere Formen der Induktion
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
29
Methoden für Korrektheitsbeweise
• Diskrete Mathematik
• Vollständige Induktion
→ Schleifen
Wesentlich: Formulierung der Induktionsbehauptung.
Schleifeninvariante“.
”
• Andere Formen der Induktion
→ Rekursive Prozeduren
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
29
(b) Laufzeitanalysen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
30
(b) Laufzeitanalysen
Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf
”
Eingabe x abläuft.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
30
(b) Laufzeitanalysen
Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf
”
Eingabe x abläuft.
Eingabegröße: n = |x| = size(x).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
30
(b) Laufzeitanalysen
Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf
”
Eingabe x abläuft.
Eingabegröße: n = |x| = size(x).
(Bedeutung ist abhängig von Problem P.)
In = {x ∈ I | size(x) = n}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
30
(b) Laufzeitanalysen
Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf
”
Eingabe x abläuft.
Eingabegröße: n = |x| = size(x).
(Bedeutung ist abhängig von Problem P.)
In = {x ∈ I | size(x) = n} – Größenklasse
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
30
(b) Laufzeitanalysen
Kosten, Aufwand, Rechenzeit“, wenn Algorithmus A auf
”
Eingabe x abläuft.
Eingabegröße: n = |x| = size(x).
(Bedeutung ist abhängig von Problem P.)
In = {x ∈ I | size(x) = n} – Größenklasse
Beim Sortierproblem: size((a1, . . . , an)) = n.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
30
Kosten – Rechenzeiten
Kosten für Elementaroperationen:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
31
Kosten – Rechenzeiten
Kosten für Elementaroperationen:
Addition, Vergleich, Test, Sprung, Zuweisung,
Auswertung eines Attributs, Zeiger-/Indexauswertung
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
31
Kosten – Rechenzeiten
Kosten für Elementaroperationen:
Addition, Vergleich, Test, Sprung, Zuweisung,
Auswertung eines Attributs, Zeiger-/Indexauswertung
Jede Elementaroperation op ist mit einer Konstanten cop
bewertet,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
31
Kosten – Rechenzeiten
Kosten für Elementaroperationen:
Addition, Vergleich, Test, Sprung, Zuweisung,
Auswertung eines Attributs, Zeiger-/Indexauswertung
Jede Elementaroperation op ist mit einer Konstanten cop
bewertet, abhängig von Programmiersprache, Compiler,
Prozessor, Hauptspeichertyp, Cachestruktur, . . .
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
31
Kosten – Rechenzeiten
Kosten für Elementaroperationen:
Addition, Vergleich, Test, Sprung, Zuweisung,
Auswertung eines Attributs, Zeiger-/Indexauswertung
Jede Elementaroperation op ist mit einer Konstanten cop
bewertet, abhängig von Programmiersprache, Compiler,
Prozessor, Hauptspeichertyp, Cachestruktur, . . .
Idee: op benötigt höchstens Zeit cop (Takte oder µs)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
31
Kosten – Rechenzeiten
Kosten für Elementaroperationen:
Addition, Vergleich, Test, Sprung, Zuweisung,
Auswertung eines Attributs, Zeiger-/Indexauswertung
Jede Elementaroperation op ist mit einer Konstanten cop
bewertet, abhängig von Programmiersprache, Compiler,
Prozessor, Hauptspeichertyp, Cachestruktur, . . .
Idee: op benötigt höchstens Zeit cop (Takte oder µs)
Unabhängig vom konkreten Input x.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
31
Kosten – Rechenzeiten
Kosten für Elementaroperationen:
Addition, Vergleich, Test, Sprung, Zuweisung,
Auswertung eines Attributs, Zeiger-/Indexauswertung
Jede Elementaroperation op ist mit einer Konstanten cop
bewertet, abhängig von Programmiersprache, Compiler,
Prozessor, Hauptspeichertyp, Cachestruktur, . . .
Idee: op benötigt höchstens Zeit cop (Takte oder µs)
Unabhängig vom konkreten Input x.
Die Konstanten cop werden nie explizit genannt;
vereinfachend oft: cop = 1 ( 1 RAM-Schritt“).
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
31
Kosten – Rechenzeiten
Oder wir schreiben:
O(1)
für:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
32
Kosten – Rechenzeiten
Oder wir schreiben:
O(1)
für: nicht größer als eine (von x unabhängige) Konstante c“
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
32
Kosten – Rechenzeiten
Oder wir schreiben:
O(1)
für: nicht größer als eine (von x unabhängige) Konstante c“
”
(z.B. cop, für eine Operation op)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
32
Kosten – Rechenzeiten
Oder wir schreiben:
O(1)
für: nicht größer als eine (von x unabhängige) Konstante c“
”
(z.B. cop, für eine Operation op)
Grund: Analyse des Algorithmus anhand von Pseudocode o.ä.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
32
Kosten – Rechenzeiten
Oder wir schreiben:
O(1)
für: nicht größer als eine (von x unabhängige) Konstante c“
”
(z.B. cop, für eine Operation op)
Grund: Analyse des Algorithmus anhand von Pseudocode o.ä.
Technische Besonderheiten von konkreten Rechnern (Cachearchitekturen, Mehrkernprozessoren, Coprozessoren,. . . ),
Implementierungen, Compileroptimierungen zu berücksichtigen wäre viel zu komplex!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
32
Kosten – Rechenzeiten
kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
33
Kosten – Rechenzeiten
kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
33
Kosten – Rechenzeiten
kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann:
tA(x) :=
X
kop(x) · cop.
op Operation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
33
Kosten – Rechenzeiten
kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann:
tA(x) :=
X
kop(x) · cop.
op Operation
oder im Fall cop = 1:
X
tA(x) :=
kop(x) = #(ausgeführte Op.).
op Operation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
33
Kosten – Rechenzeiten
kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann:
tA(x) :=
X
kop(x) · cop.
op Operation
oder im Fall cop = 1:
X
tA(x) :=
kop(x) = #(ausgeführte Op.).
op Operation
Wir nennen tA(x) die Kosten von A auf x.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
33
Kosten – Rechenzeiten
kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann:
tA(x) :=
X
kop(x) · cop.
op Operation
oder im Fall cop = 1:
X
tA(x) :=
kop(x) = #(ausgeführte Op.).
op Operation
Wir nennen tA(x) die Kosten von A auf x. Ungefähres Maß
für die Rechenzeit!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
33
Kosten – Rechenzeiten
kop(x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann:
tA(x) :=
X
kop(x) · cop.
op Operation
oder im Fall cop = 1:
X
tA(x) :=
kop(x) = #(ausgeführte Op.).
op Operation
Wir nennen tA(x) die Kosten von A auf x. Ungefähres Maß
für die Rechenzeit!
Oft Rechenzeit“ statt Kosten“.
”
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
33
Gesamtlaufzeit:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
34
Gesamtlaufzeit: Nicht größer als die Summe aller Konstanten
für die Einzeloperationen.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
34
Gesamtlaufzeit: Nicht größer als die Summe aller Konstanten
für die Einzeloperationen.
Entscheidend: Wie oft wird jede Operation ausgeführt?
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
34
Beispiel: Straight Insertion Sort
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7):
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1)
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
(4)–(6) für i:
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
(4)–(6) für i: Entscheidend: Anzahl der Tests in (4).
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
(4)–(6) für i: Entscheidend: Anzahl der Tests in (4).
Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt,
”
der Test x.key < A[j].key“
”
zwischen 1-mal und (i − 1)-mal
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
(4)–(6) für i: Entscheidend: Anzahl der Tests in (4).
Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt,
”
der Test x.key < A[j].key“
”
zwischen 1-mal und (i − 1)-mal, inputabhängig.
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
(4)–(6) für i: Entscheidend: Anzahl der Tests in (4).
Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt,
”
der Test x.key < A[j].key“
”
zwischen 1-mal und (i − 1)-mal, inputabhängig.
Setze∗ ki = #{l | l < i und key(ai) < key(al)}.
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
(4)–(6) für i: Entscheidend: Anzahl der Tests in (4).
Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt,
”
der Test x.key < A[j].key“
”
zwischen 1-mal und (i − 1)-mal, inputabhängig.
Setze∗ ki = #{l | l < i und key(ai) < key(al)}.
Kosten für (4)–(6) bei ai: (ki + 1) · O(1)
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Beispiel: Straight Insertion Sort
(1)–(3) und (7): Wird (n − 1)-mal ausgeführt.
Es gibt aber n Schleifenende-Tests →
Kosten n · O(1) = O(n)
(4)–(6) für i: Entscheidend: Anzahl der Tests in (4).
Der Test j ≥ 1“ wird zwischen 1-mal und i-mal durchgeführt,
”
der Test x.key < A[j].key“
”
zwischen 1-mal und (i − 1)-mal, inputabhängig.
Setze∗ ki = #{l | l < i und key(ai) < key(al)}.
Kosten für (4)–(6) bei ai: (ki + 1) · O(1) = O(ki).
∗
Notation: #A oder |A|: Kardinalität von A.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
35
Kosten insgesamt:
O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) =
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
36
Kosten insgesamt:
O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) =
= O(n +
X
ki).
2≤i≤n
Typisch: Charakteristische Operationen“ sind entscheidend,
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
36
Kosten insgesamt:
O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) =
= O(n +
X
ki).
2≤i≤n
Typisch: Charakteristische Operationen“ sind entscheidend,
”
Hier: Vergleiche zwischen Elementen (Zeile (4)),
Anzahl ≤ ki + 1.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
36
Kosten insgesamt:
O(n) + (k2 + 1) · O(1) + (k3 + 1) · O(1) + · · · + (kn + 1) · O(1) =
= O(n +
X
ki).
2≤i≤n
Typisch: Charakteristische Operationen“ sind entscheidend,
”
Hier: Vergleiche zwischen Elementen (Zeile (4)),
Anzahl ≤ ki + 1.
Oder: Zuweisungen von Elementen (Zeilen (5) und (7)),
Anzahl ki + 1.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
36
Definition:
P
Fx = 2≤i≤n ki
= #{(l, i) | 1 ≤ l < i ≤ n, key(al) > key(ai)}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
37
Definition:
P
Fx = 2≤i≤n ki
= #{(l, i) | 1 ≤ l < i ≤ n, key(al) > key(ai)}
Anzahl der Fehlstände“ in x = (a1, . . . , an)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
37
Definition:
P
Fx = 2≤i≤n ki
= #{(l, i) | 1 ≤ l < i ≤ n, key(al) > key(ai)}
Anzahl der Fehlstände“ in x = (a1, . . . , an)
”
Z. B. gibt es in (4, 7, 5, 3) vier Fehlstände.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
37
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
FG KTuEA, TU Ilmenau
n2
2:
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
Es kann auch eine so große Laufzeit auftreten:
Betrachte Eingabe mit ki = i − 1 für alle i,
d. h. x ist absteigend sortiert.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
Es kann auch eine so große Laufzeit auftreten:
Betrachte Eingabe mit ki = i − 1 für alle i,
d. h. x ist absteigend sortiert.
Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
Es kann auch eine so große Laufzeit auftreten:
Betrachte Eingabe mit ki = i − 1 für alle i,
d. h. x ist absteigend sortiert.
Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)).
Best case“ (Bester Fall): ki = 0, für alle i.
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
Es kann auch eine so große Laufzeit auftreten:
Betrachte Eingabe mit ki = i − 1 für alle i,
d. h. x ist absteigend sortiert.
Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)).
Best case“ (Bester Fall): ki = 0, für alle i.
”
Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
Es kann auch eine so große Laufzeit auftreten:
Betrachte Eingabe mit ki = i − 1 für alle i,
d. h. x ist absteigend sortiert.
Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)).
Best case“ (Bester Fall): ki = 0, für alle i.
”
Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)),
Aufwand pro Durchlauf durch Schleife (2)–(7): O(1)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
Es kann auch eine so große Laufzeit auftreten:
Betrachte Eingabe mit ki = i − 1 für alle i,
d. h. x ist absteigend sortiert.
Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)).
Best case“ (Bester Fall): ki = 0, für alle i.
”
Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)),
Aufwand pro Durchlauf durch Schleife (2)–(7): O(1)
Gesamtaufwand für S.I.S.: n · O(1)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Worst case“ (Schlechtester Fall):
”
P
<
Wegen Fx = 2≤i≤n(i − 1) = n(n−1)
2
n2
2:
Gesamtaufwand für S.I.S.: O(n + n2) = O(n2).
Es kann auch eine so große Laufzeit auftreten:
Betrachte Eingabe mit ki = i − 1 für alle i,
d. h. x ist absteigend sortiert.
Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)).
Best case“ (Bester Fall): ki = 0, für alle i.
”
Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)),
Aufwand pro Durchlauf durch Schleife (2)–(7): O(1)
Gesamtaufwand für S.I.S.: n · O(1) = O(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
38
Average case“ (Mittlerer Fall):
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
39
Average case“ (Mittlerer Fall):
”
Vereinfachung:
Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
39
Average case“ (Mittlerer Fall):
”
Vereinfachung:
Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ).
Unter der Annahme, dass jede Anordnung der Schlüssel
(a1, . . . , an) mit derselben Wahrscheinlichkeit 1/n! auftritt
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
39
Average case“ (Mittlerer Fall):
”
Vereinfachung:
Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ).
Unter der Annahme, dass jede Anordnung der Schlüssel
(a1, . . . , an) mit derselben Wahrscheinlichkeit 1/n! auftritt
(Beispiel bei Schlüsseln 2, 3, 7:
(2, 3, 7), (2, 7, 3), (3, 2, 7), (3, 7, 2), (7, 2, 3), (7, 3, 2): je 61 )
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
39
Average case“ (Mittlerer Fall):
”
Vereinfachung:
Für alle i 6= j: key(ai) < key(aj ) oder key(ai) > key(aj ).
Unter der Annahme, dass jede Anordnung der Schlüssel
(a1, . . . , an) mit derselben Wahrscheinlichkeit 1/n! auftritt
(Beispiel bei Schlüsseln 2, 3, 7:
(2, 3, 7), (2, 7, 3), (3, 2, 7), (3, 7, 2), (7, 2, 3), (7, 3, 2): je 61 )
P
bilde Mittelwert/Erwartungswert für Fx = 2≤i≤n ki.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
39
Kann Erwartungswert berechnen:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
40
Kann Erwartungswert berechnen:
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
40
Kann Erwartungswert berechnen:
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
(Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann
man Einträge an Positionen l und i vertauschen. Einmal liefert
das Paar
(l, i) einen Fehlstand, einmal nicht. Daher führt jedes
der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem
Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände
bei.)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
40
Kann Erwartungswert berechnen:
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
(Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann
man Einträge an Positionen l und i vertauschen. Einmal liefert
das Paar
(l, i) einen Fehlstand, einmal nicht. Daher führt jedes
der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem
Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände
bei.)
Aufwand von Straight Insertion Sort im mittleren Fall, auf
Inputs der Länge n,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
40
Kann Erwartungswert berechnen:
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
(Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann
man Einträge an Positionen l und i vertauschen. Einmal liefert
das Paar
(l, i) einen Fehlstand, einmal nicht. Daher führt jedes
der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem
Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände
bei.)
Aufwand von Straight Insertion Sort im mittleren Fall, auf
Inputs der Länge n,
unter der Gleichverteilungsannahme:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
40
Kann Erwartungswert berechnen:
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
(Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann
man Einträge an Positionen l und i vertauschen. Einmal liefert
das Paar
(l, i) einen Fehlstand, einmal nicht. Daher führt jedes
der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem
Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände
bei.)
Aufwand von Straight Insertion Sort im mittleren Fall, auf
Inputs der Länge n,
unter der Gleichverteilungsannahme:
O(n2), aber auch Ω(n2)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
40
Kann Erwartungswert berechnen:
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
(Grund: In jeder Anordnung (a01, . . . , a0n) der Schlüssel kann
man Einträge an Positionen l und i vertauschen. Einmal liefert
das Paar
(l, i) einen Fehlstand, einmal nicht. Daher führt jedes
der n2 Paare (l, i) mit Wahrscheinlichkeit genau 12 zu einem
Fehlstand, trägt also 12 zur erwarteten Anzahl der Fehlstände
bei.)
Aufwand von Straight Insertion Sort im mittleren Fall, auf
Inputs der Länge n,
unter der Gleichverteilungsannahme:
O(n2), aber auch Ω(n2)
Zusammengefasst: Θ(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
40
Größenordnungen von Funktionen
Notation:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
Größenordnungen von Funktionen
Notation:
N = {0, 1, 2, 3, . . .}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
Größenordnungen von Funktionen
Notation:
N = {0, 1, 2, 3, . . .}
N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
Größenordnungen von Funktionen
Notation:
N = {0, 1, 2, 3, . . .}
N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .}
R+
0 = {x ∈ R | x ≥ 0}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
Größenordnungen von Funktionen
Notation:
N = {0, 1, 2, 3, . . .}
N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .}
R+
0 = {x ∈ R | x ≥ 0}
R+ = {x ∈ R | x > 0}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
Größenordnungen von Funktionen
Notation:
N = {0, 1, 2, 3, . . .}
N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .}
R+
0 = {x ∈ R | x ≥ 0}
R+ = {x ∈ R | x > 0}
Uns interessieren meistens (als Rechenaufwand oder
Abschätzungen hierfür) nur Funktionen, die schließlich“ po”
sitiv oder nichtnegativ sind.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
Größenordnungen von Funktionen
Notation:
N = {0, 1, 2, 3, . . .}
N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .}
R+
0 = {x ∈ R | x ≥ 0}
R+ = {x ∈ R | x > 0}
Uns interessieren meistens (als Rechenaufwand oder
Abschätzungen hierfür) nur Funktionen, die schließlich“ po”
sitiv oder nichtnegativ sind. – Abkürzung:
F + := {f | f : N → R, ∃n0∀n ≥ n0 : f (n) > 0}.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
Größenordnungen von Funktionen
Notation:
N = {0, 1, 2, 3, . . .}
N+ = {n ∈ N | n > 0} = {1, 2, 3, . . .}
R+
0 = {x ∈ R | x ≥ 0}
R+ = {x ∈ R | x > 0}
Uns interessieren meistens (als Rechenaufwand oder
Abschätzungen hierfür) nur Funktionen, die schließlich“ po”
sitiv oder nichtnegativ sind. – Abkürzung:
F + := {f | f : N → R, ∃n0∀n ≥ n0 : f (n) > 0}.
F0+ := {f | f : N → R, ∃n0∀n ≥ n0 : f (n) ≥ 0}.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
41
O-Notation
Informal: g ist von der Ordnung f“ (Notation O(f )), wenn:
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
42
O-Notation
Informal: g ist von der Ordnung f“ (Notation O(f )), wenn:
”
2f (n)
g(n)
f (n)
n ≥ n0
Für genügend große n ist 0 ≤ g(n) ≤ c · f (n), für c > 0 konstant.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
42
O-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Formal:
Definition
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Formal:
Definition
Sei f ∈ F +.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Formal:
Definition
Sei f ∈ F +.
O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0
∀n ≥ n0 : g(n) ≤ c · f (n)}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Formal:
Definition
Sei f ∈ F +.
O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0
∀n ≥ n0 : g(n) ≤ c · f (n)}
g ∈ O(f ) heißt,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Formal:
Definition
Sei f ∈ F +.
O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0
∀n ≥ n0 : g(n) ≤ c · f (n)}
g ∈ O(f ) heißt, dass g asymptotisch (für genügend große n)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Formal:
Definition
Sei f ∈ F +.
O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0
∀n ≥ n0 : g(n) ≤ c · f (n)}
g ∈ O(f ) heißt, dass g asymptotisch (für genügend große n)
und unter Vernachlässigung konstanter Faktoren
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Formal:
Definition
Sei f ∈ F +.
O(f ) := { g ∈ F0+ | ∃n0 ∈ N ∃c > 0
∀n ≥ n0 : g(n) ≤ c · f (n)}
g ∈ O(f ) heißt, dass g asymptotisch (für genügend große n)
und unter Vernachlässigung konstanter Faktoren
höchstens so schnell wächst wie f .
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
43
O-Notation
Beispiele:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
44
O-Notation
Beispiele:
(a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
44
O-Notation
Beispiele:
(a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ).
(b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
44
O-Notation
Beispiele:
(a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ).
(b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ).
(c) Wenn g(n) = 4n3 − 13n2 + 10 und f (n) = n3 log n,
dann ist g ∈ O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
44
O-Notation
Beispiele:
(a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ).
(b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ).
(c) Wenn g(n) = 4n3 − 13n2 + 10 und f (n) = n3 log n,
dann ist g ∈ O(f ).
(d) Wenn g(n) = 3+2 sin(n) und f (n) = 1, dann ist g ∈ O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
44
O-Notation
Beispiele:
(a) Wenn g(n) = 2n + 7 log n und f (n) = n, dann ist g ∈ O(f ).
(b) Wenn g(n) = 2n + 7 log n und f (n) = n2, dann ist g ∈ O(f ).
(c) Wenn g(n) = 4n3 − 13n2 + 10 und f (n) = n3 log n,
dann ist g ∈ O(f ).
(d) Wenn g(n) = 3+2 sin(n) und f (n) = 1, dann ist g ∈ O(f ).
(e) Wenn g(n) = 2n für gerade n und g(n) = 2/n für ungerade
n, und f (n) = n, dann ist g ∈ O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
44
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
(ii) g(n) ist O(f (n))“.
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
(ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“
”
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
(ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“
”
”
Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht
”
symmetrisch.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
(ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“
”
”
Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht
”
symmetrisch.
Intuition:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
(ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“
”
”
Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht
”
symmetrisch.
Intuition:
O(f (n)) steht für ein beliebiges Element von O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
(ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“
”
”
Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht
”
symmetrisch.
Intuition:
O(f (n)) steht für ein beliebiges Element von O(f ).
(Eine anonyme Funktion g ∈ F0+, von der man nur weiß, dass
sie für genügend große n durch c · f (n) beschränkt ist.)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation“
”
Schreib- und Sprechweisen:
(i) g(n) = O(f (n)) als Abkürzung für g ∈ O(f ).
(ii) g(n) ist O(f (n))“. Sprich: g(n) ist Groß-Oh von f (n)“
”
”
Warnung: Das =“ bedeutet nicht Gleichheit, ist nicht
”
symmetrisch.
Intuition:
O(f (n)) steht für ein beliebiges Element von O(f ).
(Eine anonyme Funktion g ∈ F0+, von der man nur weiß, dass
sie für genügend große n durch c · f (n) beschränkt ist.)
Damit z. B. auch sinnvoll: 3n3 + 2n2 − 5n + 4 = 3n3 + O(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
45
O(f (n))-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
O(f (n))-Notation
Beispiele:
(a) 2n + 7 log n = O(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
O(f (n))-Notation
Beispiele:
(a) 2n + 7 log n = O(n).
(b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n
für alle n ≥ 10 erfüllt g(n) = O(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
O(f (n))-Notation
Beispiele:
(a) 2n + 7 log n = O(n).
(b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n
für alle n ≥ 10 erfüllt g(n) = O(n2).
(c) 2n2 − 30n + 3 = O(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
O(f (n))-Notation
Beispiele:
(a) 2n + 7 log n = O(n).
(b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n
für alle n ≥ 10 erfüllt g(n) = O(n2).
(c) 2n2 − 30n + 3 = O(n2).
(d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
O(f (n))-Notation
Beispiele:
(a) 2n + 7 log n = O(n).
(b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n
für alle n ≥ 10 erfüllt g(n) = O(n2).
(c) 2n2 − 30n + 3 = O(n2).
(d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n).
(e) 4n2 log n + 2n(log n)3 = 4n2 log n + O(n2) = O(n3).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
O(f (n))-Notation
Beispiele:
(a) 2n + 7 log n = O(n).
(b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n
für alle n ≥ 10 erfüllt g(n) = O(n2).
(c) 2n2 − 30n + 3 = O(n2).
(d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n).
(e) 4n2 log n + 2n(log n)3 = 4n2 log n + O(n2) = O(n3).
(e0) 4n2 log n + 2n(log n)3 = O(n2 log n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
O(f (n))-Notation
Beispiele:
(a) 2n + 7 log n = O(n).
(b) Jede Funktion g mit 2n log n ≤ g(n) ≤ 4n2/ log n
für alle n ≥ 10 erfüllt g(n) = O(n2).
(c) 2n2 − 30n + 3 = O(n2).
(d) 4 · 2n + 3 · n2 = 4 · 2n + O(n2) = O(2n).
(e) 4n2 log n + 2n(log n)3 = 4n2 log n + O(n2) = O(n3).
(e0) 4n2 log n + 2n(log n)3 = O(n2 log n).
(f) 3 + 2 sin(n) = O(1).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
46
Konvention:
Möglichst kleine und möglichst einfache Funktionen
innerhalb des O(. . .)-Terms.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
47
Konvention:
Möglichst kleine und möglichst einfache Funktionen
innerhalb des O(. . .)-Terms.
17n2/(log n)3 + 13n3/2 = O(n2/(log n)3)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
(klein)
47
Konvention:
Möglichst kleine und möglichst einfache Funktionen
innerhalb des O(. . .)-Terms.
17n2/(log n)3 + 13n3/2 = O(n2/(log n)3)
17n2/(log n)3 + 13n3/2 = O(n2)
FG KTuEA, TU Ilmenau
(klein)
oder
(besonders einfach)
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
47
o-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
48
o-Notation
g(n) wächst asymptotisch streng langsamer als f (n).“
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
48
o-Notation
g(n) wächst asymptotisch streng langsamer als f (n).“
”
f (n)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
g(n)
48
o-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
49
o-Notation
Definition
Für f ∈ F +:
n
o
g(n)
o(f ) := g ∈ F0+ lim
=0
n→∞ f (n)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
49
o-Notation
Definition
Für f ∈ F +:
n
o
g(n)
o(f ) := g ∈ F0+ lim
=0
n→∞ f (n)
Schreibe g(n) = o(f (n))“ für g ∈ o(f ).
”
(Sprich: g(n) ist klein-oh von f (n)“.)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
49
o-Notation
Definition
Für f ∈ F +:
n
o
g(n)
o(f ) := g ∈ F0+ lim
=0
n→∞ f (n)
Schreibe g(n) = o(f (n))“ für g ∈ o(f ).
”
(Sprich: g(n) ist klein-oh von f (n)“.)
”
Beispiele:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
49
o-Notation
Definition
Für f ∈ F +:
n
o
g(n)
o(f ) := g ∈ F0+ lim
=0
n→∞ f (n)
Schreibe g(n) = o(f (n))“ für g ∈ o(f ).
”
(Sprich: g(n) ist klein-oh von f (n)“.)
”
Beispiele:
(a) n/ log n = o(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
49
o-Notation
Definition
Für f ∈ F +:
n
o
g(n)
o(f ) := g ∈ F0+ lim
=0
n→∞ f (n)
Schreibe g(n) = o(f (n))“ für g ∈ o(f ).
”
(Sprich: g(n) ist klein-oh von f (n)“.)
”
Beispiele:
(a) n/ log n = o(n).
(b) 5n2 log n + 7n2.1 = o(n5/2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
49
o-Notation
Definition
Für f ∈ F +:
n
o
g(n)
o(f ) := g ∈ F0+ lim
=0
n→∞ f (n)
Schreibe g(n) = o(f (n))“ für g ∈ o(f ).
”
(Sprich: g(n) ist klein-oh von f (n)“.)
”
Beispiele:
(a) n/ log n = o(n).
(b) 5n2 log n + 7n2.1 = o(n5/2).
(c) n10 = o(2n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
49
Ω-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
50
Ω-Notation
g(n) ist asymptotisch und bis auf einen konstanten Faktor
”
durch f (n) nach unten beschränkt.“
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
50
Ω-Notation
g(n) ist asymptotisch und bis auf einen konstanten Faktor
”
durch f (n) nach unten beschränkt.“
f (n)
g(n)
3/4f (n)
n ≥ n0
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
50
Ω-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Ω-Notation
Definition Sei f ∈ F +.
Ω(f ) := {g ∈ F + |
∃n0 ∈ N ∃d > 0
∀n ≥ n0 : g(n) ≥ d · f (n)}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Ω-Notation
Definition Sei f ∈ F +.
Ω(f ) := {g ∈ F + |
∃n0 ∈ N ∃d > 0
∀n ≥ n0 : g(n) ≥ d · f (n)}
Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ).
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Ω-Notation
Definition Sei f ∈ F +.
Ω(f ) := {g ∈ F + |
∃n0 ∈ N ∃d > 0
∀n ≥ n0 : g(n) ≥ d · f (n)}
Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ).
”
(Sprich: g(n) ist Groß-Omega von f (n)“.)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Ω-Notation
Definition Sei f ∈ F +.
Ω(f ) := {g ∈ F + |
∃n0 ∈ N ∃d > 0
∀n ≥ n0 : g(n) ≥ d · f (n)}
Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ).
”
(Sprich: g(n) ist Groß-Omega von f (n)“.)
”
Beispiele:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Ω-Notation
Definition Sei f ∈ F +.
Ω(f ) := {g ∈ F + |
∃n0 ∈ N ∃d > 0
∀n ≥ n0 : g(n) ≥ d · f (n)}
Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ).
”
(Sprich: g(n) ist Groß-Omega von f (n)“.)
”
Beispiele: (a) 0.3n log n − 20n = Ω(n log n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Ω-Notation
Definition Sei f ∈ F +.
Ω(f ) := {g ∈ F + |
∃n0 ∈ N ∃d > 0
∀n ≥ n0 : g(n) ≥ d · f (n)}
Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ).
”
(Sprich: g(n) ist Groß-Omega von f (n)“.)
”
Beispiele: (a) 0.3n log n − 20n = Ω(n log n).
(b)
FG KTuEA, TU Ilmenau
1 2
10 n
− 20n + 1 = Ω(n2).
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Ω-Notation
Definition Sei f ∈ F +.
Ω(f ) := {g ∈ F + |
∃n0 ∈ N ∃d > 0
∀n ≥ n0 : g(n) ≥ d · f (n)}
Schreibe g(n) = Ω(f (n))“ für g ∈ Ω(f ).
”
(Sprich: g(n) ist Groß-Omega von f (n)“.)
”
Beispiele: (a) 0.3n log n − 20n = Ω(n log n).
(b)
1 2
10 n
− 20n + 1 = Ω(n2).
(c) n10 log n = Ω(n10).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
51
Manchmal benutzt:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
52
Manchmal benutzt: Für f ∈ F +:
ω(f ) := {g ∈ F + | limn→∞ fg(n)
(n) = ∞}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
52
Manchmal benutzt: Für f ∈ F +:
ω(f ) := {g ∈ F + | limn→∞ fg(n)
(n) = ∞}
g(n) wächst asymptotisch echt schneller als f .“
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
52
Manchmal benutzt: Für f ∈ F +:
ω(f ) := {g ∈ F + | limn→∞ fg(n)
(n) = ∞}
g(n) wächst asymptotisch echt schneller als f .“
”
Schreibe g(n) = ω(f (n))“ für g ∈ ω(f ).
”
(Sprich: g(n) ist klein-omega von f (n)“.)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
52
Manchmal benutzt: Für f ∈ F +:
ω(f ) := {g ∈ F + | limn→∞ fg(n)
(n) = ∞}
g(n) wächst asymptotisch echt schneller als f .“
”
Schreibe g(n) = ω(f (n))“ für g ∈ ω(f ).
”
(Sprich: g(n) ist klein-omega von f (n)“.)
”
Klar: Für f, g ∈ F + gilt: g ∈ ω(f ) ⇔ f ∈ o(g).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
52
Θ-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
53
Θ-Notation
g(n) ist asymptotisch und bis auf konstante Faktoren von
”
derselben Größenordnung wie f (n).“
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
53
Θ-Notation
g(n) ist asymptotisch und bis auf konstante Faktoren von
”
derselben Größenordnung wie f (n).“
f (n)
3/2f (n)
g(n)
3/4f (n)
n ≥ n0
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
53
Θ-Notation
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
54
Θ-Notation
Für f ∈ F + definiere:
Θ(f ) := O(f ) ∩ Ω(f )
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
54
Θ-Notation
Für f ∈ F + definiere:
Θ(f ) := O(f ) ∩ Ω(f ) ,
d.h.
Θ(f ) = {g ∈ F + | ∃n0 ∈ N ∃c, d > 0
∀n ≥ n0 : d · f (n) ≤ g(n) ≤ c · f (n)}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
54
Θ-Notation
Für f ∈ F + definiere:
Θ(f ) := O(f ) ∩ Ω(f ) ,
d.h.
Θ(f ) = {g ∈ F + | ∃n0 ∈ N ∃c, d > 0
∀n ≥ n0 : d · f (n) ≤ g(n) ≤ c · f (n)}
Beobachtung: g ∈ Θ(f ) ⇔ O(g) = O(f ).
Schreibe g(n) = Θ(f (n))“ für g ∈ Θ(f ).
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
54
Θ-Notation
Für f ∈ F + definiere:
Θ(f ) := O(f ) ∩ Ω(f ) ,
d.h.
Θ(f ) = {g ∈ F + | ∃n0 ∈ N ∃c, d > 0
∀n ≥ n0 : d · f (n) ≤ g(n) ≤ c · f (n)}
Beobachtung: g ∈ Θ(f ) ⇔ O(g) = O(f ).
Schreibe g(n) = Θ(f (n))“ für g ∈ Θ(f ).
”
(Sprich: g(n) ist Theta von f (n)“.)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
54
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
Lemma 1 (Grenzwertregel)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
Lemma 1 (Grenzwertregel)
Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n)
(n) = c für ein c > 0, so
ist g(n) = Θ(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
Lemma 1 (Grenzwertregel)
Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n)
(n) = c für ein c > 0, so
ist g(n) = Θ(f (n)).
Beweis: limn→∞ fg(n)
(n) = c impliziert:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
Lemma 1 (Grenzwertregel)
Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n)
(n) = c für ein c > 0, so
ist g(n) = Θ(f (n)).
Beweis: limn→∞ fg(n)
(n) = c impliziert:
Es gibt n0, so dass für n ≥ n0 gilt: c/2 <
FG KTuEA, TU Ilmenau
g(n)
f (n)
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
< 2c.
55
Rechenregeln
Lemma 1 (Grenzwertregel)
Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n)
(n) = c für ein c > 0, so
ist g(n) = Θ(f (n)).
Beweis: limn→∞ fg(n)
(n) = c impliziert:
Es gibt n0, so dass für n ≥ n0 gilt: c/2 <
g(n)
f (n)
< 2c.
Also: g(n) = Θ(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
Lemma 1 (Grenzwertregel)
Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n)
(n) = c für ein c > 0, so
ist g(n) = Θ(f (n)).
Beweis: limn→∞ fg(n)
(n) = c impliziert:
Es gibt n0, so dass für n ≥ n0 gilt: c/2 <
g(n)
f (n)
< 2c.
Also: g(n) = Θ(f (n)).
Beachte:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
Lemma 1 (Grenzwertregel)
Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n)
(n) = c für ein c > 0, so
ist g(n) = Θ(f (n)).
Beweis: limn→∞ fg(n)
(n) = c impliziert:
Es gibt n0, so dass für n ≥ n0 gilt: c/2 <
g(n)
f (n)
< 2c.
Also: g(n) = Θ(f (n)).
Beachte:
c = 0: limn→∞ fg(n)
(n) = 0 bedeutet: g(n) = o(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
Lemma 1 (Grenzwertregel)
Falls f ∈ F +, g ∈ F0+ und limn→∞ fg(n)
(n) = c für ein c > 0, so
ist g(n) = Θ(f (n)).
Beweis: limn→∞ fg(n)
(n) = c impliziert:
Es gibt n0, so dass für n ≥ n0 gilt: c/2 <
g(n)
f (n)
< 2c.
Also: g(n) = Θ(f (n)).
Beachte:
c = 0: limn→∞ fg(n)
(n) = 0 bedeutet: g(n) = o(f (n)).
Daraus folgt: g(n) = O(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
55
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
56
Rechenregeln
Folgerung aus der Grenzwertregel:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
56
Rechenregeln
Folgerung aus der Grenzwertregel:
Wenn g ein Polynom ist:
g(n) = ak nk + ak−1nk−1 + · · · + a1n + a0
für ak , . . . , a1, a0 ∈ R, wobei ak > 0,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
56
Rechenregeln
Folgerung aus der Grenzwertregel:
Wenn g ein Polynom ist:
g(n) = ak nk + ak−1nk−1 + · · · + a1n + a0
für ak , . . . , a1, a0 ∈ R, wobei ak > 0, und f (n) = nk , dann
g(n)
ak−1
a1
a0 lim
= lim ak +
+ · · · + k−1 + k = ak ,
n→∞ f (n)
n→∞
n
n
n
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
56
Rechenregeln
Folgerung aus der Grenzwertregel:
Wenn g ein Polynom ist:
g(n) = ak nk + ak−1nk−1 + · · · + a1n + a0
für ak , . . . , a1, a0 ∈ R, wobei ak > 0, und f (n) = nk , dann
g(n)
ak−1
a1
a0 lim
= lim ak +
+ · · · + k−1 + k = ak ,
n→∞ f (n)
n→∞
n
n
n
damit: ak nk + ak−1nk−1 + · · · + a1n + a0 = Θ(nk ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
56
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
Lemma 2 (Transitivität)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
Lemma 2 (Transitivität)
Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
Lemma 2 (Transitivität)
Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+:
Wenn g(n) = O(f (n)) und h(n) = O(g(n)),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
Lemma 2 (Transitivität)
Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+:
Wenn g(n) = O(f (n)) und h(n) = O(g(n)),
dann folgt h(n) = O(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
Lemma 2 (Transitivität)
Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+:
Wenn g(n) = O(f (n)) und h(n) = O(g(n)),
dann folgt h(n) = O(f (n)).
D.h.: Wenn g ∈ O(f ), dann ist O(g) ⊆ O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
Lemma 2 (Transitivität)
Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+:
Wenn g(n) = O(f (n)) und h(n) = O(g(n)),
dann folgt h(n) = O(f (n)).
D.h.: Wenn g ∈ O(f ), dann ist O(g) ⊆ O(f ).
Kurz: h(n) = O(g(n)) = O(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
Lemma 2 (Transitivität)
Es seien f, g ∈ F +. Dann gilt für jedes h ∈ F0+:
Wenn g(n) = O(f (n)) und h(n) = O(g(n)),
dann folgt h(n) = O(f (n)).
D.h.: Wenn g ∈ O(f ), dann ist O(g) ⊆ O(f ).
Kurz: h(n) = O(g(n)) = O(f (n)).
Achtung: In der O(f (n))-Notation bedeutet =“ keine Gleich”
heit, die Relation ist nicht symmetrisch.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
57
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
Beispiele:
Nicht g(n) = O(3n log2.8 n)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
Beispiele:
Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n);
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
Beispiele:
Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n);
nicht g(n) = O(n/3)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
Beispiele:
Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n);
nicht g(n) = O(n/3), sondern g(n) = O(n);
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
Beispiele:
Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n);
nicht g(n) = O(n/3), sondern g(n) = O(n);
nicht g(n) = O(2.5)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
Beispiele:
Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n);
nicht g(n) = O(n/3), sondern g(n) = O(n);
nicht g(n) = O(2.5), sondern g(n) = O(1).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
Lemma 3 ( Konstante Faktoren weglassen“)
”
Ist g(n) = O(d · f (n)) und d > 0 beliebig,
dann gilt g(n) = O(f (n)).
D.h.: Wenn d > 0, dann ist O(d · f ) = O(f ).
Beispiele:
Nicht g(n) = O(3n log2.8 n), sondern g(n) = O(n log n);
nicht g(n) = O(n/3), sondern g(n) = O(n);
nicht g(n) = O(2.5), sondern g(n) = O(1).
Analog bei o(·), Ω(·), ω(·), Θ(·).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
58
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
59
Rechenregeln
Lemma 4 (Linearität und Maximumsregel)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
59
Rechenregeln
Lemma 4 (Linearität und Maximumsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
59
Rechenregeln
Lemma 4 (Linearität und Maximumsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt
g1(n) + g2(n) = O(f1(n) + f2(n))
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
59
Rechenregeln
Lemma 4 (Linearität und Maximumsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt
g1(n) + g2(n) = O(f1(n) + f2(n))
= O(max{f1(n), f2(n)}).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
59
Rechenregeln
Lemma 4 (Linearität und Maximumsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt
g1(n) + g2(n) = O(f1(n) + f2(n))
= O(max{f1(n), f2(n)}).
Anwendung: Hintereinanderausführung von Algorithmen:
Rechenzeiten addieren sich, auch in der O-Abschätzung.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
59
Rechenregeln
Lemma 4 (Linearität und Maximumsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)), so folgt
g1(n) + g2(n) = O(f1(n) + f2(n))
= O(max{f1(n), f2(n)}).
Anwendung: Hintereinanderausführung von Algorithmen:
Rechenzeiten addieren sich, auch in der O-Abschätzung.
Analog bei o(·), Ω(·), ω(·), Θ(·).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
59
Beispiele:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
60
Beispiele:
10n log n + 5n2 = O(n log n) + O(n2) = O(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
60
Beispiele:
10n log n + 5n2 = O(n log n) + O(n2) = O(n2).
10n log n + 5n2 = Θ(n log n) + Θ(n2) = Θ(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
60
Beispiele:
10n log n + 5n2 = O(n log n) + O(n2) = O(n2).
10n log n + 5n2 = Θ(n log n) + Θ(n2) = Θ(n2).
10n log n + 5n2 = Ω(n log n) + Ω(n2) = Ω(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
60
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
61
Rechenregeln
Lemma 5 (Weglassen von Termen kleinerer Ordnung“)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
61
Rechenregeln
Lemma 5 (Weglassen von Termen kleinerer Ordnung“)
”
+
Ist f ∈ F und |g(n)| = o(f (n)),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
61
Rechenregeln
Lemma 5 (Weglassen von Termen kleinerer Ordnung“)
”
+
Ist f ∈ F und |g(n)| = o(f (n)),
und ist h(n) = O(f (n) + g(n)),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
61
Rechenregeln
Lemma 5 (Weglassen von Termen kleinerer Ordnung“)
”
+
Ist f ∈ F und |g(n)| = o(f (n)),
und ist h(n) = O(f (n) + g(n)), so ist h(n) = O(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
61
Rechenregeln
Lemma 5 (Weglassen von Termen kleinerer Ordnung“)
”
+
Ist f ∈ F und |g(n)| = o(f (n)),
und ist h(n) = O(f (n) + g(n)), so ist h(n) = O(f (n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
61
Rechenregeln
Lemma 5 (Weglassen von Termen kleinerer Ordnung“)
”
+
Ist f ∈ F und |g(n)| = o(f (n)),
und ist h(n) = O(f (n) + g(n)), so ist h(n) = O(f (n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
Fazit:
In Summen suche den dominierenden Term“;
”
lasse die anderen weg.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
61
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
so folgt g1(n)g2(n) = O(f1(n)f2(n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
so folgt g1(n)g2(n) = O(f1(n)f2(n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
so folgt g1(n)g2(n) = O(f1(n)f2(n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
so folgt g1(n)g2(n) = O(f1(n)f2(n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)).
Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
so folgt g1(n)g2(n) = O(f1(n)f2(n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)).
Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)).
Wird eine Schleife g1(n)-mal ausgeführt,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
so folgt g1(n)g2(n) = O(f1(n)f2(n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)).
Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)).
Wird eine Schleife g1(n)-mal ausgeführt,
wobei die Kosten für die einmalige Ausführung höchstens g2(n)
betragen,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
Lemma 6 (Multiplikationsregel)
Ist g1(n) = O(f1(n)) und g2(n) = O(f2(n)),
so folgt g1(n)g2(n) = O(f1(n)f2(n)).
Analog bei o(·), Ω(·), ω(·), Θ(·).
Bei o(·) genügt sogar: g1(n) = O(f1(n)) und g2(n) = o(f2(n)).
Anwendung: Sei g1(n) = O(f1(n)) und g2(n) = O(f2(n)).
Wird eine Schleife g1(n)-mal ausgeführt,
wobei die Kosten für die einmalige Ausführung höchstens g2(n)
betragen, dann sind die Gesamtkosten O(f1(n)f2(n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
62
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
Beweise: zu Lemma 2:
Wähle c0 > 0 und n0 so groß, dass gilt:
∀n ≥ n0 : g(n) ≤ c0 · f (n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
Beweise: zu Lemma 2:
Wähle c0 > 0 und n0 so groß, dass gilt:
∀n ≥ n0 : g(n) ≤ c0 · f (n).
Wähle c1 > 0 und n1 so groß, dass gilt:
∀n ≥ n1 : h(n) ≤ c1 · g(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
Beweise: zu Lemma 2:
Wähle c0 > 0 und n0 so groß, dass gilt:
∀n ≥ n0 : g(n) ≤ c0 · f (n).
Wähle c1 > 0 und n1 so groß, dass gilt:
∀n ≥ n1 : h(n) ≤ c1 · g(n).
Setze n2 := max{n0, n1}.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
Beweise: zu Lemma 2:
Wähle c0 > 0 und n0 so groß, dass gilt:
∀n ≥ n0 : g(n) ≤ c0 · f (n).
Wähle c1 > 0 und n1 so groß, dass gilt:
∀n ≥ n1 : h(n) ≤ c1 · g(n).
Setze n2 := max{n0, n1}.
Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
Beweise: zu Lemma 2:
Wähle c0 > 0 und n0 so groß, dass gilt:
∀n ≥ n0 : g(n) ≤ c0 · f (n).
Wähle c1 > 0 und n1 so groß, dass gilt:
∀n ≥ n1 : h(n) ≤ c1 · g(n).
Setze n2 := max{n0, n1}.
Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n).
Also: h(n) = O(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
Beweise: zu Lemma 2:
Wähle c0 > 0 und n0 so groß, dass gilt:
∀n ≥ n0 : g(n) ≤ c0 · f (n).
Wähle c1 > 0 und n1 so groß, dass gilt:
∀n ≥ n1 : h(n) ≤ c1 · g(n).
Setze n2 := max{n0, n1}.
Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n).
Also: h(n) = O(f (n)).
zu Lemma 3:
Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
Beweise: zu Lemma 2:
Wähle c0 > 0 und n0 so groß, dass gilt:
∀n ≥ n0 : g(n) ≤ c0 · f (n).
Wähle c1 > 0 und n1 so groß, dass gilt:
∀n ≥ n1 : h(n) ≤ c1 · g(n).
Setze n2 := max{n0, n1}.
Dann gilt für n ≥ n2: h(n) ≤ c1g(n) ≤ c1(c0f (n)) = (c1c0)f (n).
Also: h(n) = O(f (n)).
zu Lemma 3:
Wähle c0 > 0 und n0 so groß, dass gilt: ∀n ≥ n0 : g(n) ≤ c0 · f (n).
Dann gilt für alle n ≥ 0 auch g(n) ≤ (c0/d) · (d · f (n)),
d. h. g(n) = O(d · f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
63
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
64
Rechenregeln
zu Lemma 4:
Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt:
∀n ≥ ni : gi(n) ≤ ci · fi(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
64
Rechenregeln
zu Lemma 4:
Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt:
∀n ≥ ni : gi(n) ≤ ci · fi(n).
Setze n0 := max{n0, n1} und c0 = max{c0 + c1}.
Dann gilt für n ≥ n0:
g1(n) + g2(n) ≤ c1f1(n) + c2f2(n) ≤ c0(f1(n) + f2(n)),
also g1(n) + g2(n) = O(f1(n) + f2(n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
64
Rechenregeln
zu Lemma 4:
Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt:
∀n ≥ ni : gi(n) ≤ ci · fi(n).
Setze n0 := max{n0, n1} und c0 = max{c0 + c1}.
Dann gilt für n ≥ n0:
g1(n) + g2(n) ≤ c1f1(n) + c2f2(n) ≤ c0(f1(n) + f2(n)),
also g1(n) + g2(n) = O(f1(n) + f2(n)).
Zudem für n ≥ n0: f1(n) + f2(n) ≤ 2 max{f1(n), f2(n)}.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
64
Rechenregeln
zu Lemma 4:
Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt:
∀n ≥ ni : gi(n) ≤ ci · fi(n).
Setze n0 := max{n0, n1} und c0 = max{c0 + c1}.
Dann gilt für n ≥ n0:
g1(n) + g2(n) ≤ c1f1(n) + c2f2(n) ≤ c0(f1(n) + f2(n)),
also g1(n) + g2(n) = O(f1(n) + f2(n)).
Zudem für n ≥ n0: f1(n) + f2(n) ≤ 2 max{f1(n), f2(n)}.
Also g1(n) + g2(n) ≤ 2c0 max{f1(n), f2(n)}.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
64
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
65
Rechenregeln
zu Lemma 5:
Wähle n1 so groß, dass für n ≥ n1 gilt: |g(n)| ≤ f (n).
Wähle n2 und c > 0 so groß, dass für n ≥ n2 gilt: h(n) ≤ c(f (n) + g(n)).
Dann gilt für n ≥ max{n1, n2}:
h(n) ≤ c(f (n) + g(n)) ≤ c · 2f (n),
also h(n) = O(f (n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
65
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
66
Rechenregeln
zu Lemma 6:
Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt:
∀n ≥ ni : gi(n) ≤ ci · fi(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
66
Rechenregeln
zu Lemma 6:
Für i = 1, 2: Wähle ci > 0 und ni so groß, dass gilt:
∀n ≥ ni : gi(n) ≤ ci · fi(n).
Setze n0 := max{n0, n1} und c0 = c0c1.
Dann gilt für n ≥ n0:
g1(n) · g2(n) ≤ c1f1(n)c2f2(n) ≤ c0(f1(n) · f2(n)),
also g1(n) · g2(n) = O(f1(n) · f2(n)).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
66
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
O-Notation in Summen
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
O-Notation in Summen
Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
O-Notation in Summen
Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen.
n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
O-Notation in Summen
Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen.
n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i).
Maximum: O(n · 2n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
O-Notation in Summen
Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen.
n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i).
Maximum: O(n · 2n).
Multiplikationsregel liefert: O(n · (n · 2n)) = O(n2 · 2n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
O-Notation in Summen
Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen.
n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i).
Maximum: O(n · 2n).
Multiplikationsregel liefert: O(n · (n · 2n)) = O(n2 · 2n).
Aber: 2 + 22 + 23 + · · · + 2n−1 + 2n = 2n+1 − 2 = O(2n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
O-Notation in Summen
Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen.
n Durchläufe, Kosten beim i-ten Durchlauf: O(n · 2i).
Maximum: O(n · 2n).
Multiplikationsregel liefert: O(n · (n · 2n)) = O(n2 · 2n).
Aber: 2 + 22 + 23 + · · · + 2n−1 + 2n = 2n+1 − 2 = O(2n).
Vermutung: Gesamtkosten sind nur O(n · 2n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
67
Rechenregeln
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
68
Rechenregeln
Lemma 7 (O-Notation in Summen)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
68
Rechenregeln
Lemma 7 (O-Notation in Summen)
Sei g : N × N → R+
0.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
68
Rechenregeln
Lemma 7 (O-Notation in Summen)
Sei g : N × N → R+
0.
Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit
∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
68
Rechenregeln
Lemma 7 (O-Notation in Summen)
Sei g : N × N → R+
0.
Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit
∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i).
( an,i ist uniform durch ein Vielfaches von g(n, i) be”
schränkt“; man schreibt kurz: an,i = O(g(n, i)))
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
68
Rechenregeln
Lemma 7 (O-Notation in Summen)
Sei g : N × N → R+
0.
Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit
∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i).
( an,i ist uniform durch ein Vielfaches von g(n, i) be”
schränkt“; man schreibt kurz: an,i = O(g(n, i)))
Dann gilt (die Variable ist n):
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
68
Rechenregeln
Lemma 7 (O-Notation in Summen)
Sei g : N × N → R+
0.
Für jedes n ∈ N sei an,1, . . . , an,t(n) Zahlenfolge mit
∃c > 0∃n0∀n ≥ n0∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ c · g(n, i).
( an,i ist uniform durch ein Vielfaches von g(n, i) be”
schränkt“; man schreibt kurz: an,i = O(g(n, i)))
Dann gilt (die Variable ist n):

X
X
an,i = O 
1≤i≤t(n)
FG KTuEA, TU Ilmenau

g(n, i)
1≤i≤t(n)
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
68
Achtung!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
69
Achtung!
Wenn es für jedes n ≥ n0 ein cn gibt mit
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
69
Achtung!
Wenn es für jedes n ≥ n0 ein cn gibt mit
∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ cn · g(n, i),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
69
Achtung!
Wenn es für jedes n ≥ n0 ein cn gibt mit
∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ cn · g(n, i),
(an,i nicht-uniform beschränkt),
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
69
Achtung!
Wenn es für jedes n ≥ n0 ein cn gibt mit
∀1 ≤ i ≤ t(n) : 0 ≤ an,i ≤ cn · g(n, i),
(an,i nicht-uniform beschränkt),
dann kann man nicht folgern, dass

X
X
an,i = O 
1≤i≤t(n)

g(n, i)
1≤i≤t(n)
ist.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
69
O-Notation bei Kosten
Beispiel Straight Insertion Sort“, Eingabe x:
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
70
O-Notation bei Kosten
Beispiel Straight Insertion Sort“, Eingabe x:
”
Mit Multiplikationsregel:
Der i-te Durchlauf durch die äußere Schleife hat Kosten Θ(1)+
ki · Θ(1) = Θ(1 + ki),
wobei ki = #{` < i | key(a`) > key(ai)} (abhängig von x!).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
70
O-Notation bei Kosten
Beispiel Straight Insertion Sort“, Eingabe x:
”
Mit Multiplikationsregel:
Der i-te Durchlauf durch die äußere Schleife hat Kosten Θ(1)+
ki · Θ(1) = Θ(1 + ki),
wobei ki = #{` < i | key(a`) > key(ai)} (abhängig von x!).
Mit Summationsregel:
Der gesamte Ablauf hat Kosten
X
tS.I.S(x) = Θ(n +
ki) = Θ(n + Fx).
2≤i≤n
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
70
O-Notation bei Kosten
Beispiel Straight Insertion Sort“, Eingabe x:
”
Mit Multiplikationsregel:
Der i-te Durchlauf durch die äußere Schleife hat Kosten Θ(1)+
ki · Θ(1) = Θ(1 + ki),
wobei ki = #{` < i | key(a`) > key(ai)} (abhängig von x!).
Mit Summationsregel:
Der gesamte Ablauf hat Kosten
X
tS.I.S(x) = Θ(n +
ki) = Θ(n + Fx).
2≤i≤n
Fx: Anzahl der Fehlstände“ ` < i, key(a`) > key(ai).
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
70
Kosten – Rechenzeiten
Oft: Detaillierte Aussagen für einzelne Inputs gar nicht
erwünscht.
Vergröberung: Größenklassen
Eingabegröße: n = |x| = size(x).
In = {x ∈ I | size(x) = n} – Größenklasse
Beim Sortierproblem z. B.: size((a1, . . . , an)) = n
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
71
Worst-case-Kosten
worst-case-Kosten oder Kosten im schlechtesten Fall:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
72
Worst-case-Kosten
worst-case-Kosten oder Kosten im schlechtesten Fall:
Sei A Algorithmus für Inputs aus I.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
72
Worst-case-Kosten
worst-case-Kosten oder Kosten im schlechtesten Fall:
Sei A Algorithmus für Inputs aus I.
In = {x ∈ I | size(x) = n}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
72
Worst-case-Kosten
worst-case-Kosten oder Kosten im schlechtesten Fall:
Sei A Algorithmus für Inputs aus I.
In = {x ∈ I | size(x) = n}
worst-case-Kosten:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
72
Worst-case-Kosten
worst-case-Kosten oder Kosten im schlechtesten Fall:
Sei A Algorithmus für Inputs aus I.
In = {x ∈ I | size(x) = n}
worst-case-Kosten:
TA(n) = max{tA(x) | x ∈ In}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
72
Worst-case-Kosten
worst-case-Kosten oder Kosten im schlechtesten Fall:
Sei A Algorithmus für Inputs aus I.
In = {x ∈ I | size(x) = n}
worst-case-Kosten:
TA(n) = max{tA(x) | x ∈ In}
Wenn man betonen will, dass es um die worst-case Kosten
geht: TA,worst(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
72
Worst-case-Kosten
Beispiel S.I.S.:
Für den Input x = (n, n − 1, . . . , 1) gilt
n + Fx = n +
X
2≤i≤n
FG KTuEA, TU Ilmenau
n(n − 1)
.
(i − 1) = n +
2
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
73
Worst-case-Kosten
Beispiel S.I.S.:
Für den Input x = (n, n − 1, . . . , 1) gilt
n + Fx = n +
X
2≤i≤n
n(n − 1)
.
(i − 1) = n +
2
Für jeden Input gilt
n + Fx ≤ n +
X
2≤i≤n
FG KTuEA, TU Ilmenau
n(n − 1)
.
(i − 1) = n +
2
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
73
Worst-case-Kosten
Beispiel S.I.S.:
Für den Input x = (n, n − 1, . . . , 1) gilt
n + Fx = n +
X
2≤i≤n
n(n − 1)
.
(i − 1) = n +
2
Für jeden Input gilt
n + Fx ≤ n +
X
2≤i≤n
n(n − 1)
.
(i − 1) = n +
2
Also: TS.I.S.,worst(n) = Θ(n + n2) = Θ(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
73
Best-case-Kosten
best-case-Kosten oder Kosten im besten Fall:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
74
Best-case-Kosten
best-case-Kosten oder Kosten im besten Fall:
TA,best(n) = min{tA(x) | x ∈ In}
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
74
Best-case-Kosten
best-case-Kosten oder Kosten im besten Fall:
TA,best(n) = min{tA(x) | x ∈ In}
Beispiel S.I.S.:
Für den Input (1, 2, . . . , n) gilt
n + Tx = n + 0 = n;
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
74
Best-case-Kosten
best-case-Kosten oder Kosten im besten Fall:
TA,best(n) = min{tA(x) | x ∈ In}
Beispiel S.I.S.:
Für den Input (1, 2, . . . , n) gilt
n + Tx = n + 0 = n;
für jeden Input gilt n +
FG KTuEA, TU Ilmenau
P
2≤i≤n ki
≥ n.
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
74
Best-case-Kosten
best-case-Kosten oder Kosten im besten Fall:
TA,best(n) = min{tA(x) | x ∈ In}
Beispiel S.I.S.:
Für den Input (1, 2, . . . , n) gilt
n + Tx = n + 0 = n;
für jeden Input gilt n +
P
2≤i≤n ki
≥ n.
Also: TS.I.S.,best(n) = O(n), sogar = Θ(n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
74
Average-case Kosten
average-case-Kosten oder durchschnittliche Kosten:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
75
Average-case Kosten
average-case-Kosten oder durchschnittliche Kosten:
Gegeben sei, für jedes n ∈ N,
eine Wahrscheinlichkeitsverteilung Prn auf In.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
75
Average-case Kosten
average-case-Kosten oder durchschnittliche Kosten:
Gegeben sei, für jedes n ∈ N,
eine Wahrscheinlichkeitsverteilung Prn auf In.
D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x)
festgelegt.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
75
Average-case Kosten
average-case-Kosten oder durchschnittliche Kosten:
Gegeben sei, für jedes n ∈ N,
eine Wahrscheinlichkeitsverteilung Prn auf In.
D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x)
festgelegt. (Empirisch, oder per Festlegung.)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
75
Average-case Kosten
average-case-Kosten oder durchschnittliche Kosten:
Gegeben sei, für jedes n ∈ N,
eine Wahrscheinlichkeitsverteilung Prn auf In.
D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x)
festgelegt. (Empirisch, oder per Festlegung.)
TA,av(n) = E(tA) =
X
Prn(x) · tA(x).
x∈In
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
75
Average-case Kosten
average-case-Kosten oder durchschnittliche Kosten:
Gegeben sei, für jedes n ∈ N,
eine Wahrscheinlichkeitsverteilung Prn auf In.
D.h.: Für jedes x ∈ In ist eine Wahrscheinlichkeit Prn(x)
festgelegt. (Empirisch, oder per Festlegung.)
TA,av(n) = E(tA) =
X
Prn(x) · tA(x).
x∈In
(Erwartungswert, berechnet mit Prn; Mittelwert“)
”
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
75
Average-case Kosten
Beispiel S.I.S.:
Wahrscheinlichkeitsannahme (Standard für das Sortierproblem):
Alle Schlüssel in der Eingabe verschieden, jede Anordnung der
Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
76
Average-case Kosten
Beispiel S.I.S.:
Wahrscheinlichkeitsannahme (Standard für das Sortierproblem):
Alle Schlüssel in der Eingabe verschieden, jede Anordnung der
Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!.
Jedes Paar von Positionen (l, i) ist mit W.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
1
2
ein Fehlstand.
76
Average-case Kosten
Beispiel S.I.S.:
Wahrscheinlichkeitsannahme (Standard für das Sortierproblem):
Alle Schlüssel in der Eingabe verschieden, jede Anordnung der
Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!.
Jedes Paar von Positionen (l, i) ist mit W.
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
1
2
ein Fehlstand.
76
Average-case Kosten
Beispiel S.I.S.:
Wahrscheinlichkeitsannahme (Standard für das Sortierproblem):
Alle Schlüssel in der Eingabe verschieden, jede Anordnung der
Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!.
Jedes Paar von Positionen (l, i) ist mit W.
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
Aufwand von Straight Insertion
Fall, auf Inputs der Länge n,
FG KTuEA, TU Ilmenau
1
2
Sort
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
ein Fehlstand.
im
mittleren
76
Average-case Kosten
Beispiel S.I.S.:
Wahrscheinlichkeitsannahme (Standard für das Sortierproblem):
Alle Schlüssel in der Eingabe verschieden, jede Anordnung der
Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!.
Jedes Paar von Positionen (l, i) ist mit W.
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
1
2
ein Fehlstand.
Aufwand von Straight Insertion Sort im mittleren
Fall, auf Inputs der Länge n, unter der genannten
Gleichverteilungsannahme:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
76
Average-case Kosten
Beispiel S.I.S.:
Wahrscheinlichkeitsannahme (Standard für das Sortierproblem):
Alle Schlüssel in der Eingabe verschieden, jede Anordnung der
Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!.
Jedes Paar von Positionen (l, i) ist mit W.
1
n
1
E(Fx) = 2 · 2 = 4 n(n − 1)
1
2
ein Fehlstand.
Aufwand von Straight Insertion Sort im mittleren
Fall, auf Inputs der Länge n, unter der genannten
Gleichverteilungsannahme:
TS.I.S,av(n) = Θ(n + 14 n(n − 1)) = Θ(n2).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
76
Analyse von Kosten – Fazit
Fazit:
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
77
Analyse von Kosten – Fazit
Fazit:
Selbst für feste Implementierung eines Algorithmus A auf
fester Maschine
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
77
Analyse von Kosten – Fazit
Fazit:
Selbst für feste Implementierung eines Algorithmus A auf
fester Maschine und feste
Eingabegröße“ n = size(x) = |x|
”
kann der Berechnungsaufwand auf verschiedenen Inputs sehr
unterschiedlich sein.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
77
Analyse von Kosten – Fazit
Fazit:
Selbst für feste Implementierung eines Algorithmus A auf
fester Maschine und feste
Eingabegröße“ n = size(x) = |x|
”
kann der Berechnungsaufwand auf verschiedenen Inputs sehr
unterschiedlich sein.
Begriff Die Laufzeit von Algorithmus A auf Eingaben x vom
”
Umfang n = size(x)“
ist meist sinnlos.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
77
Analyse von Kosten – Fazit
Fazit:
Selbst für feste Implementierung eines Algorithmus A auf
fester Maschine und feste
Eingabegröße“ n = size(x) = |x|
”
kann der Berechnungsaufwand auf verschiedenen Inputs sehr
unterschiedlich sein.
Begriff Die Laufzeit von Algorithmus A auf Eingaben x vom
”
Umfang n = size(x)“
ist meist sinnlos.
Sinnvoll: Schlechtester und bester Fall, durchschnittlicher
Fall.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
77
Analyse von Kosten – Fazit
In allen drei Situationen (worst c., best c., average c.):
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
78
Analyse von Kosten – Fazit
In allen drei Situationen (worst c., best c., average c.):
Obere Schranken
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
78
Analyse von Kosten – Fazit
In allen drei Situationen (worst c., best c., average c.):
Obere Schranken → O-Notation.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
78
Analyse von Kosten – Fazit
In allen drei Situationen (worst c., best c., average c.):
Obere Schranken → O-Notation.
Untere Schranken
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
78
Analyse von Kosten – Fazit
In allen drei Situationen (worst c., best c., average c.):
Obere Schranken → O-Notation.
Untere Schranken → Ω-Notation .
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
78
Analyse von Kosten – Fazit
In allen drei Situationen (worst c., best c., average c.):
Obere Schranken → O-Notation.
Untere Schranken → Ω-Notation .
Asymptotisches Verhalten, präzise: Θ-Notation.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
78
Analyse von Kosten – Fazit
In allen drei Situationen (worst c., best c., average c.):
Obere Schranken → O-Notation.
Untere Schranken → Ω-Notation .
Asymptotisches Verhalten, präzise: Θ-Notation.
Konstante Faktoren ignorieren!
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
78
Ignorieren konstanter Faktoren – Beispiel:
Alternativer Sortieralgorithmus: Mergesort. (1. Sem.)
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
79
Ignorieren konstanter Faktoren – Beispiel:
Alternativer Sortieralgorithmus: Mergesort. (1. Sem.)
Rechenzeit/Kosten: Θ(n log n).
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
79
Ignorieren konstanter Faktoren – Beispiel:
Alternativer Sortieralgorithmus: Mergesort. (1. Sem.)
Rechenzeit/Kosten: Θ(n log n).
Mergesort wird für genügend große Inputs“ schneller sein als
”
Straight Insertion Sort, auch wenn wir die Konstanten nicht
kennen.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
79
Ein Vergleich: 10n log n versus n2/5
5.5
5
4.5
4
3.5
3
2.5
2
1.5
1
0.5
0
−0.5
·104
FG KTuEA, TU Ilmenau
10n log(n)
n2/5
0
100
200 n 300
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
400
500
80
Ein Vergleich: 10n log n versus n2/5
2.2
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
−0.2
·107
FG KTuEA, TU Ilmenau
10n log(n)
n2/5
0
0.2
0.4 n 0.6
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
0.8
1
·104
81
Wachstumsordnungen
Einfach“: Funktionen mit unterschiedlich schnellem
”
Wachstum bilden Hierarchie. Beispiele (s. Übung):
f1(n) = √
log log n,
f4(n) = n,
f7(n) = n log n,
f10(n) = n2,
f13(n) = n5 · 2n,
FG KTuEA, TU Ilmenau
f2(n) = log n,
f5(n) = logn n ,
f8(n) = n(log n)2,
f11(n) = n3,
f14(n) = en,
f3(n) = (log n)2,
f6(n) = n,
f9(n) = n3/2,
f12(n) = 2n,
f15(n) = 3n
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
82
Wachstumsordnungen
Einfach“: Funktionen mit unterschiedlich schnellem
”
Wachstum bilden Hierarchie. Beispiele (s. Übung):
f1(n) = √
log log n,
f4(n) = n,
f7(n) = n log n,
f10(n) = n2,
f13(n) = n5 · 2n,
f16(n) = (n/e)n,
FG KTuEA, TU Ilmenau
f2(n) = log n,
f5(n) = logn n ,
f8(n) = n(log n)2,
f11(n) = n3,
f14(n) = en,
f17(n) = n!,
f3(n) = (log n)2,
f6(n) = n,
f9(n) = n3/2,
f12(n) = 2n,
f15(n) = 3n
f18(n) = nn.
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
82
Wachstumsordnungen
Einfach“: Funktionen mit unterschiedlich schnellem
”
Wachstum bilden Hierarchie. Beispiele (s. Übung):
f2(n) = log n,
f3(n) = (log n)2,
f5(n) = logn n ,
f6(n) = n,
f8(n) = n(log n)2, f9(n) = n3/2,
f11(n) = n3,
f12(n) = 2n,
f14(n) = en,
f15(n) = 3n
f17(n) = n!,
f18(n) = nn.
fi+1(n)
in folgendem Sinn: lim
= ∞, für 1 ≤ i ≤ 17.
n→∞ fi (n)
Bem.: In dieser Vorlesung: log x bedeutet log2 x.
f1(n) = √
log log n,
f4(n) = n,
f7(n) = n log n,
f10(n) = n2,
f13(n) = n5 · 2n,
f16(n) = (n/e)n,
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
82
Vergleich einiger Wachstumsordnungen
Zeit für eine (Elementar-)Operation: 10 ns.
tA(n)
10
100
1000
log
√n
n
n
n log n
n3/2
n2
n3
1.1n
2n
n!
nn
33ns
32ns
100ns
0.3µs
0.3µs
1µs
10µs
26ns
10µs
36ms
1.7m
66ns
0.1µs
1µs
6.6µs
10µs
0.1ms
10ms
0.1ms
4.0·1014y
3.0·10142y
3.2·10184y
0.1µs
0.3µs
10µs
0.1ms
0.3ms
10ms
10s
7.8·1025y
FG KTuEA, TU Ilmenau
n
104
105
106
107
108
0.1µs
1µs
0.1ms
1.3ms
10ms
1s
2.8h
0.2µs
3.1µs
1ms
16ms
0.3s
1.7m
115d
0.2µs
10µs
10ms
0.2s
10s
2.8h
317y
0.2µs
31µs
0.1s
2.3s
5.2m
11d
3.2·105y
0.3µs
0.1ms
1s
27s
2.7h
3.2y
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
83
Hilft ein schnellerer Rechner?
Wie wächst die maximal behandelbare Eingabegröße, wenn der Rechner
um den Faktor 10 schneller wird?
tA(n) Maxalt
MaxNEU
10
log
n
n
n
√
n
n
100n
n
n
10n
log n
n
10n · log n+log
n log n
10
n3/2
n
4.64n
n2
n
3.16n
n3
n
2.15n
nk
n
101/k n
cn
n
n + logc 10
n!
um von n auf n + 1 zu kommen,
braucht man einen um den Faktor n
nn
schnelleren Rechner
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
84
Hilft ein schnellerer Rechner?
Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen
ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit
(kleine Exponenten) wesentlich.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
85
Hilft ein schnellerer Rechner?
Angetrieben durch die höheren Rechengeschwindigkeiten
und die noch rascher wachsenden Speicherkapazitäten
wächst in vielen Bereichen die Menge der zu bewältigenden
Daten noch schneller als die Rechnergeschwindigkeit.
Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen
ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit
(kleine Exponenten) wesentlich.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
85
Hilft ein schnellerer Rechner?
Angetrieben durch die höheren Rechengeschwindigkeiten
und die noch rascher wachsenden Speicherkapazitäten
wächst in vielen Bereichen die Menge der zu bewältigenden
Daten noch schneller als die Rechnergeschwindigkeit.
Beispiele:
Indizes der Internet-Suchmaschinen.
Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen
ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit
(kleine Exponenten) wesentlich.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
85
Hilft ein schnellerer Rechner?
Angetrieben durch die höheren Rechengeschwindigkeiten
und die noch rascher wachsenden Speicherkapazitäten
wächst in vielen Bereichen die Menge der zu bewältigenden
Daten noch schneller als die Rechnergeschwindigkeit.
Beispiele:
Indizes der Internet-Suchmaschinen.
Routenplaner, Fahrplan-, Ticketsysteme der Bahn.
Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen
ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit
(kleine Exponenten) wesentlich.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
85
Hilft ein schnellerer Rechner?
Angetrieben durch die höheren Rechengeschwindigkeiten
und die noch rascher wachsenden Speicherkapazitäten
wächst in vielen Bereichen die Menge der zu bewältigenden
Daten noch schneller als die Rechnergeschwindigkeit.
Beispiele:
Indizes der Internet-Suchmaschinen.
Routenplaner, Fahrplan-, Ticketsysteme der Bahn.
Computergraphik
(Szenen aus zig Milliarden von Elementen!)
Um die steigende Rechnergeschwindigkeit wenigstens einigermaßen
ausnutzen zu können, sind Algorithmen mit polynomieller Laufzeit
(kleine Exponenten) wesentlich.
FG KTuEA, TU Ilmenau
Algorithmen und Datenstrukturen – SS122 – Kapitel 0+1
85
Herunterladen