Algorithmen und Datenstrukturen SS09
|
|
- Herta Böhmer
- vor 7 Jahren
- Abrufe
Transkript
1 Foliensatz 1 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009
2 Einiges Vorweg
3 Organisatorisches Hörer: Vorlesung: Übungen: Homepage: Prüfungsstoff: Prüfung: Studierende der Informatik (2. FS) und Ingenieurinformatik (4. FS) wöchentlich Dienstag 13:00-14:30 Uhr, Hu-HS Informatik: wöchentlich Ingenieurinformatik: 14-tägig Dort finden Sie Folien, Übungsblätter usw. Vorlesungen und Übungen 90 minütige Klausur nach Vorlesungsende und Bonusprogramm
4 Organisatorisches Termine der Übungen: Dienstag (G) 15:00-16:30 Uhr, Sr HU 117 Dr. Elke Hübel Mittwoch 11:00-12:30 Uhr, Sr HU 202 Dr. Michael Brinkmeier Mittwoch 15:00-16:30 Uhr, Sr H 1520b Dr. Elke Hübel Donnerstag 15:00-16:30 Uhr, Sr HU 201 Dr. Elke Hübel
5 Das Bonusprogramm Zwei 15 minütige Kurzklausuren in der Vorlesung 12. Mai 23. Juni Die in diesen Klausuren gesammelten Punkte werden als 10 prozentiger Bonus auf die in der Prüfungsklausur erreichten Punkte aufgeschlagen, d.h. Gesamtpunkte = n + N 10 n1 + n 2 N 1 + N 2. n = in der Prüfungsklausr erreichte Punkte N = erreichbare Punkte in der Prüfungsklausur n i = in der i-ten Zwischenklausur erreichten Punkte, i = 1, 2 N i = erreichbare Punkte in der i-ten Zwischenklausur erreichbaren Punkte,
6 Das Bonusprogramm Zwei 15 minütige Kurzklausuren in der Vorlesung 12. Mai 23. Juni Die in diesen Klausuren gesammelten Punkte werden als 10 prozentiger Bonus auf die in der Prüfungsklausur erreichten Punkte aufgeschlagen, d.h. Gesamtpunkte = n + N 10 n1 + n 2 N 1 + N 2. n = in der Prüfungsklausr erreichte Punkte N = erreichbare Punkte in der Prüfungsklausur n i = in der i-ten Zwischenklausur erreichten Punkte, i = 1, 2 N i = erreichbare Punkte in der i-ten Zwischenklausur erreichbaren Punkte,
7 Literatur (Auswahl) G. Schäfer, Lehrmaterialien zur Vorlesung Algorithmen und Programmierung, WS 2008/09. Wird vorausgesetzt! T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, Second Edition, MIT Press T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, 2001 R. Sedgewick, Algorithmen, 2. Auflage, Pearson, 2002 R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 2. Auflage, Teubner K. Mehlhorn, P. Sanders, Data Structures and Algorithms A Basic Toolbox, Springer, 2008 U. Schöning, Algorithmik, Spektrum Akademischer Verlag, 2001 M. T. Goodrich, R. Tamassia, Data Structures and Algorithms in Java, 2. Auflage, Wiley, 2003
8 Inhalte Algorithmen Analyse und Laufzeit Korrektheit Einfache Datenstrukturen: Listen, Stacks, Queues, Mengen, Bäume Einfache und balancierte Suchbäume Hashtabellen Sortieralgorithmen Graphen
9 Algorithmen und Probleme
10 Etymologie des Begriffes Algorithmus Übersetzung aus Al-Khwarizmi, ein persischer Astronom und Mathematiker, schrieb 825 n.chr. eine Abhandlung mit dem Titel Über das Rechnen mit indischen Ziffern. Es wurde im 12. Jahrhundert unter dem Titel Algoritmi de numero Indorum ins Lateinische übersetzt, was wahrscheinlich Algoritmi über die Ziffern der Inder bedeuten sollte. Dabei war Algoritmi die Übertragung des Autorennamens in das Lateinische; Aber Leser, die den Titel mißverstanden, behandelten das Wort Algoritmi als lateinischen Plural, was zum Begriff Algorithmus (Latein: algorismus) in der Bedeutung Rechenmethode führte. Das th wurde wahrscheinlich auf Grund einer angenommenen falschen Verwandschaft zu arithmos (Griechisch für Zahl) eingefügt.
11 Etymologie des Begriffes Algorithmus Übersetzung aus Al-Khwarizmi, ein persischer Astronom und Mathematiker, schrieb 825 n.chr. eine Abhandlung mit dem Titel Über das Rechnen mit indischen Ziffern. Es wurde im 12. Jahrhundert unter dem Titel Algoritmi de numero Indorum ins Lateinische übersetzt, was wahrscheinlich Algoritmi über die Ziffern der Inder bedeuten sollte. Dabei war Algoritmi die Übertragung des Autorennamens in das Lateinische; Aber Leser, die den Titel mißverstanden, behandelten das Wort Algoritmi als lateinischen Plural, was zum Begriff Algorithmus (Latein: algorismus) in der Bedeutung Rechenmethode führte. Das th wurde wahrscheinlich auf Grund einer angenommenen falschen Verwandschaft zu arithmos (Griechisch für Zahl) eingefügt.
12 Etymologie des Begriffes Algorithmus Übersetzung aus Al-Khwarizmi, ein persischer Astronom und Mathematiker, schrieb 825 n.chr. eine Abhandlung mit dem Titel Über das Rechnen mit indischen Ziffern. Es wurde im 12. Jahrhundert unter dem Titel Algoritmi de numero Indorum ins Lateinische übersetzt, was wahrscheinlich Algoritmi über die Ziffern der Inder bedeuten sollte. Dabei war Algoritmi die Übertragung des Autorennamens in das Lateinische; Aber Leser, die den Titel mißverstanden, behandelten das Wort Algoritmi als lateinischen Plural, was zum Begriff Algorithmus (Latein: algorismus) in der Bedeutung Rechenmethode führte. Das th wurde wahrscheinlich auf Grund einer angenommenen falschen Verwandschaft zu arithmos (Griechisch für Zahl) eingefügt.
13 Der Algorithmusbegriff Algorithmus Ein Algorithmus ist eine Handlungs-/Rechenvorschrift zur Lösung eines Problemes, bzw. zum Erreichen eines Zieles. Durch diese Definition wird der Begriff Algorithmus mittels zweier intuitiver Begriffe definiert: Problem Handlungs-/Rechenvorschrift Beide Begriffe hängen dabei wesentlich vom betrachteten Kontext ab. Dazu gehören: die Spezifikation des Problems die Möglichkeiten der handelnden Instanz/Person
14 Der Algorithmusbegriff Algorithmus Ein Algorithmus ist eine Handlungs-/Rechenvorschrift zur Lösung eines Problemes, bzw. zum Erreichen eines Zieles. Durch diese Definition wird der Begriff Algorithmus mittels zweier intuitiver Begriffe definiert: Problem Handlungs-/Rechenvorschrift Beide Begriffe hängen dabei wesentlich vom betrachteten Kontext ab. Dazu gehören: die Spezifikation des Problems die Möglichkeiten der handelnden Instanz/Person
15 Der Algorithmusbegriff Algorithmus Ein Algorithmus ist eine Handlungs-/Rechenvorschrift zur Lösung eines Problemes, bzw. zum Erreichen eines Zieles. Durch diese Definition wird der Begriff Algorithmus mittels zweier intuitiver Begriffe definiert: Problem Handlungs-/Rechenvorschrift Beide Begriffe hängen dabei wesentlich vom betrachteten Kontext ab. Dazu gehören: die Spezifikation des Problems die Möglichkeiten der handelnden Instanz/Person
16 Die Spezifikation von Problemen Ein (mathematisches) Problem umfasst üblicherweise eine (möglicherweise unendliche) Menge von Situationen, die üblicherweise durch eine Reihe von Parametern beschrieben werden. Eine Fragestellung oder eine Aufgabe, die von den Parametern abhängt. Im Kontext von Computerprogrammen werden häufig die folgenden Bezeichnungen verwendet: Eingabe (Input): Die Belegung der Parameter Ausgabe (Output): Die Antwort auf die Fragestellung
17 Die Spezifikation von Problemen Ein (mathematisches) Problem umfasst üblicherweise eine (möglicherweise unendliche) Menge von Situationen, die üblicherweise durch eine Reihe von Parametern beschrieben werden. Eine Fragestellung oder eine Aufgabe, die von den Parametern abhängt. Im Kontext von Computerprogrammen werden häufig die folgenden Bezeichnungen verwendet: Eingabe (Input): Die Belegung der Parameter Ausgabe (Output): Die Antwort auf die Fragestellung
18 Berechnungsprobleme Auf einer sehr abstrakten Ebene ergibt sich die folgende Definition: Definition (Berechnungsproblem) Eine Berechnunsproblem P = (I, O, f ) besteht aus 1 eine Menge I von möglichen Eingaben (Inputs, Instanzen) 2 einer Menge O von möglichen Ausgaben (Outputs, Lösungen) 3 einer Abbildung f : I 2 O, wobei 2 O die Potenzmenge von O ist, d.h. 2 O = {X O}. Interpretation: Die Elemente in f (x) sind alle möglichen Lösungen zur Eingabe x I. Dabei wird berücksichtigt, dass es unter Umständen mehr als eine Lösung gibt.
19 Berechnungsprobleme Auf einer sehr abstrakten Ebene ergibt sich die folgende Definition: Definition (Berechnungsproblem) Eine Berechnunsproblem P = (I, O, f ) besteht aus 1 eine Menge I von möglichen Eingaben (Inputs, Instanzen) 2 einer Menge O von möglichen Ausgaben (Outputs, Lösungen) 3 einer Abbildung f : I 2 O, wobei 2 O die Potenzmenge von O ist, d.h. 2 O = {X O}. Interpretation: Die Elemente in f (x) sind alle möglichen Lösungen zur Eingabe x I. Dabei wird berücksichtigt, dass es unter Umständen mehr als eine Lösung gibt.
20 Beispiele von Problemen MULT Eingabe: a, b Z Ausgabe: a b I = Z 2 O = Z f (x, y) = {x y} MAX Eingabe: a 1,..., a n Z Ausgabe: Ein a i mit a i a j für alle j = 1,...,n. I = Seq(Z) O = Z f (x) = {a i a i = max{a 1,..., a n }} ARGMAX Eingabe: a 1,..., a n Z Ausgabe: Ein i mit a i a j für alle j = 1,...,n. I = Seq(Z) O = N f (x) = {i a i = max{a 1,...,a n }}
21 Beispiele von Problemen MULT Eingabe: a, b Z Ausgabe: a b I = Z 2 O = Z f (x, y) = {x y} MAX Eingabe: a 1,..., a n Z Ausgabe: Ein a i mit a i a j für alle j = 1,...,n. I = Seq(Z) O = Z f (x) = {a i a i = max{a 1,..., a n }} ARGMAX Eingabe: a 1,..., a n Z Ausgabe: Ein i mit a i a j für alle j = 1,...,n. I = Seq(Z) O = N f (x) = {i a i = max{a 1,...,a n }}
22 Beispiele von Problemen MULT Eingabe: a, b Z Ausgabe: a b I = Z 2 O = Z f (x, y) = {x y} MAX Eingabe: a 1,..., a n Z Ausgabe: Ein a i mit a i a j für alle j = 1,...,n. I = Seq(Z) O = Z f (x) = {a i a i = max{a 1,..., a n }} ARGMAX Eingabe: a 1,..., a n Z Ausgabe: Ein i mit a i a j für alle j = 1,...,n. I = Seq(Z) O = N f (x) = {i a i = max{a 1,...,a n }}
23 Entscheidungsprobleme Falls für P = (I, O, f ) O = {falsch, wahr} und f (x) = 1 für jedes x I gilt, spricht man auch von einem Entscheidungsproblem. Die Bedingungen entsprechen f (x) = {wahr} oder f (x) = {falsch} für alle x I. PRIM Eingabe: a Z Ist a eine Primzahl? I = Z { O = {wahr, falsch} f (x) = wahr falls x prim ist falsch sonst
24 Entscheidungsprobleme Falls für P = (I, O, f ) O = {falsch, wahr} und f (x) = 1 für jedes x I gilt, spricht man auch von einem Entscheidungsproblem. Die Bedingungen entsprechen f (x) = {wahr} oder f (x) = {falsch} für alle x I. PRIM Eingabe: a Z Ist a eine Primzahl? I = Z { O = {wahr, falsch} f (x) = wahr falls x prim ist falsch sonst
25 Entscheidungsprobleme Falls für P = (I, O, f ) O = {falsch, wahr} und f (x) = 1 für jedes x I gilt, spricht man auch von einem Entscheidungsproblem. Die Bedingungen entsprechen f (x) = {wahr} oder f (x) = {falsch} für alle x I. PRIM Eingabe: a Z Ist a eine Primzahl? I = Z { O = {wahr, falsch} f (x) = wahr falls x prim ist falsch sonst
26 Ein abstrakter Algorithmusbegriff Definition (Algorithmus) P = (I, O, f ) sein ein Berechnungsproblem. Ein (deterministischer) Algorithmus A der P löst ist eine durch einen endlichen Text beschriebene Abbildung A: I O mit A(x) f (x) für alle I. Dabei ist der Text der A beschreibt im Kontext eines Rechenmodelles gegeben. Auf den ersten Blick, entspricht die Funktion f von P einem Algorithmus. Jedoch ist die Einschränkung auf endliche Texte und den Kontext eines Rechenmodelles wesentlich. Diese besteht nicht für die zu berechnende Funktion f von P.
27 Ein abstrakter Algorithmusbegriff Definition (Algorithmus) P = (I, O, f ) sein ein Berechnungsproblem. Ein (deterministischer) Algorithmus A der P löst ist eine durch einen endlichen Text beschriebene Abbildung A: I O mit A(x) f (x) für alle I. Dabei ist der Text der A beschreibt im Kontext eines Rechenmodelles gegeben. Auf den ersten Blick, entspricht die Funktion f von P einem Algorithmus. Jedoch ist die Einschränkung auf endliche Texte und den Kontext eines Rechenmodelles wesentlich. Diese besteht nicht für die zu berechnende Funktion f von P.
28 Rechenmodelle Um ein Problem und eine zugehörige Lösungsvorschrift d.h. einen Algorithmus präzise beschreiben zu können, muss ein Kontext definiert werden, der beschreibt wie die Ein- und Ausgabe repräsentiert werden und... welche Bearbeitungsschritte gemacht werden können. Diesen Kontext liefern uns Rechenmodelle, z.b.: klassische Arithmetik, Geometrie, Algebra und Logik (Axiomensysteme) Endliche Automaten (Vorlesung AFS) Turing-Maschinen (Vorlesung BuK) Random Access Maschinen (RAM, Vorlesung BuK) Quantencomputer... Das Rechenmodell bestimmt dabei wesentlich, wie die Probleme spezifiziert werden müssen und welche Probleme überhaupt lösbar sind (Vorlesungen AFS und BuK).
29 Rechenmodelle Um ein Problem und eine zugehörige Lösungsvorschrift d.h. einen Algorithmus präzise beschreiben zu können, muss ein Kontext definiert werden, der beschreibt wie die Ein- und Ausgabe repräsentiert werden und... welche Bearbeitungsschritte gemacht werden können. Diesen Kontext liefern uns Rechenmodelle, z.b.: klassische Arithmetik, Geometrie, Algebra und Logik (Axiomensysteme) Endliche Automaten (Vorlesung AFS) Turing-Maschinen (Vorlesung BuK) Random Access Maschinen (RAM, Vorlesung BuK) Quantencomputer... Das Rechenmodell bestimmt dabei wesentlich, wie die Probleme spezifiziert werden müssen und welche Probleme überhaupt lösbar sind (Vorlesungen AFS und BuK).
30 Rechenmodelle Um ein Problem und eine zugehörige Lösungsvorschrift d.h. einen Algorithmus präzise beschreiben zu können, muss ein Kontext definiert werden, der beschreibt wie die Ein- und Ausgabe repräsentiert werden und... welche Bearbeitungsschritte gemacht werden können. Diesen Kontext liefern uns Rechenmodelle, z.b.: klassische Arithmetik, Geometrie, Algebra und Logik (Axiomensysteme) Endliche Automaten (Vorlesung AFS) Turing-Maschinen (Vorlesung BuK) Random Access Maschinen (RAM, Vorlesung BuK) Quantencomputer... Das Rechenmodell bestimmt dabei wesentlich, wie die Probleme spezifiziert werden müssen und welche Probleme überhaupt lösbar sind (Vorlesungen AFS und BuK).
31 Algorithmen Ist ein Rechenmodell spezifiziert, kann ein Algorithmus häufig als Abfolge von Operationen auf den vorhandenen Daten aufgefasst werden. Im Allgemeinen haben Algorithmen die folgenden Eigenschaften: Endlicher Text Ein Algorithmus für eine (unendliche) Menge von Eingaben x I Hierbei ist die zeitliche Trennung zwischen Formulierung und Ausführung zu beachten. Zur Zeit der Formulierung ist die konkrete Eingabe nicht bekannt. Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabe x bekannt ist (deterministischer Algorithmus) Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutig definierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein Es ist explizit nicht verlangt, dass der Algorithmus terminiert
32 Algorithmen Ist ein Rechenmodell spezifiziert, kann ein Algorithmus häufig als Abfolge von Operationen auf den vorhandenen Daten aufgefasst werden. Im Allgemeinen haben Algorithmen die folgenden Eigenschaften: Endlicher Text Ein Algorithmus für eine (unendliche) Menge von Eingaben x I Hierbei ist die zeitliche Trennung zwischen Formulierung und Ausführung zu beachten. Zur Zeit der Formulierung ist die konkrete Eingabe nicht bekannt. Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabe x bekannt ist (deterministischer Algorithmus) Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutig definierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein Es ist explizit nicht verlangt, dass der Algorithmus terminiert
33 Algorithmen Ist ein Rechenmodell spezifiziert, kann ein Algorithmus häufig als Abfolge von Operationen auf den vorhandenen Daten aufgefasst werden. Im Allgemeinen haben Algorithmen die folgenden Eigenschaften: Endlicher Text Ein Algorithmus für eine (unendliche) Menge von Eingaben x I Hierbei ist die zeitliche Trennung zwischen Formulierung und Ausführung zu beachten. Zur Zeit der Formulierung ist die konkrete Eingabe nicht bekannt. Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabe x bekannt ist (deterministischer Algorithmus) Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutig definierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein Es ist explizit nicht verlangt, dass der Algorithmus terminiert
34 Algorithmen Ist ein Rechenmodell spezifiziert, kann ein Algorithmus häufig als Abfolge von Operationen auf den vorhandenen Daten aufgefasst werden. Im Allgemeinen haben Algorithmen die folgenden Eigenschaften: Endlicher Text Ein Algorithmus für eine (unendliche) Menge von Eingaben x I Hierbei ist die zeitliche Trennung zwischen Formulierung und Ausführung zu beachten. Zur Zeit der Formulierung ist die konkrete Eingabe nicht bekannt. Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabe x bekannt ist (deterministischer Algorithmus) Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutig definierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein Es ist explizit nicht verlangt, dass der Algorithmus terminiert
35 Algorithmen Ist ein Rechenmodell spezifiziert, kann ein Algorithmus häufig als Abfolge von Operationen auf den vorhandenen Daten aufgefasst werden. Im Allgemeinen haben Algorithmen die folgenden Eigenschaften: Endlicher Text Ein Algorithmus für eine (unendliche) Menge von Eingaben x I Hierbei ist die zeitliche Trennung zwischen Formulierung und Ausführung zu beachten. Zur Zeit der Formulierung ist die konkrete Eingabe nicht bekannt. Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabe x bekannt ist (deterministischer Algorithmus) Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutig definierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein Es ist explizit nicht verlangt, dass der Algorithmus terminiert
36 Algorithmen Ist ein Rechenmodell spezifiziert, kann ein Algorithmus häufig als Abfolge von Operationen auf den vorhandenen Daten aufgefasst werden. Im Allgemeinen haben Algorithmen die folgenden Eigenschaften: Endlicher Text Ein Algorithmus für eine (unendliche) Menge von Eingaben x I Hierbei ist die zeitliche Trennung zwischen Formulierung und Ausführung zu beachten. Zur Zeit der Formulierung ist die konkrete Eingabe nicht bekannt. Eine eindeutig vorgeschriebene Abfolge von Schritten, wenn die Eingabe x bekannt ist (deterministischer Algorithmus) Wenn der Algorithmus terminiert, muss die Ausgabe auf eine eindeutig definierte (und einfache) Weise aus den vorliegenden Daten ablesbar sein Es ist explizit nicht verlangt, dass der Algorithmus terminiert
37 Das verwendete Rechenmodell Im Gegensatz zu späteren Vorlesungen (AFS, BuK), verwenden wir in dieser Vorlesung kein explizit formuliertes Rechenmodell. Stattdessen verwenden wir einen Pseudocode, der an die gängigen höheren Programmiersprachen wie z.b. C, C++, Java..., angelehnt ist. Algorithmus MAX Eingabe: a 1,..., a n Z Ausgabe: max{a i i = 1,...,n} Daten: x Z x a 1 ; für i = 2,...,n tue wenn a i > x dann x a i ; Ende zurück x;
38 Das verwendete Rechenmodell Im Gegensatz zu späteren Vorlesungen (AFS, BuK), verwenden wir in dieser Vorlesung kein explizit formuliertes Rechenmodell. Stattdessen verwenden wir einen Pseudocode, der an die gängigen höheren Programmiersprachen wie z.b. C, C++, Java..., angelehnt ist. Algorithmus MAX Eingabe: a 1,..., a n Z Ausgabe: max{a i i = 1,...,n} Daten: x Z x a 1 ; für i = 2,...,n tue wenn a i > x dann x a i ; Ende zurück x;
39 Das verwendete Rechenmodell Im Gegensatz zu späteren Vorlesungen (AFS, BuK), verwenden wir in dieser Vorlesung kein explizit formuliertes Rechenmodell. Stattdessen verwenden wir einen Pseudocode, der an die gängigen höheren Programmiersprachen wie z.b. C, C++, Java..., angelehnt ist. Algorithmus MAX Eingabe: a 1,..., a n Z Ausgabe: max{a i i = 1,...,n} Daten: x Z x a 1 ; für i = 2,...,n tue wenn a i > x dann x a i ; Ende zurück x;
40 Analyse von Algorithmen Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen: Korrektheit Ist ein gegebener Algorithmus A für ein Berechnungsproblem P korrekt, d.h. gilt A(x) f (x) für alle x I? Laufzeit Wieviel Zeit benötigt ein ein gegebener Algorithmus A auf einer Eingabe x? Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche der Informatik.
41 Analyse von Algorithmen Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen: Korrektheit Ist ein gegebener Algorithmus A für ein Berechnungsproblem P korrekt, d.h. gilt A(x) f (x) für alle x I? Laufzeit Wieviel Zeit benötigt ein ein gegebener Algorithmus A auf einer Eingabe x? Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche der Informatik.
42 Analyse von Algorithmen Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen: Korrektheit Ist ein gegebener Algorithmus A für ein Berechnungsproblem P korrekt, d.h. gilt A(x) f (x) für alle x I? Laufzeit Wieviel Zeit benötigt ein ein gegebener Algorithmus A auf einer Eingabe x? Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche der Informatik.
43 Analyse von Algorithmen Im Zusammenhang mit Algorithmen stellen sich zwei wesentliche Fragen: Korrektheit Ist ein gegebener Algorithmus A für ein Berechnungsproblem P korrekt, d.h. gilt A(x) f (x) für alle x I? Laufzeit Wieviel Zeit benötigt ein ein gegebener Algorithmus A auf einer Eingabe x? Die Beantwortung dieser beiden Fragen ist einer der Kernbereiche der Informatik.
44 Ein erster Sortieralgorithmus
45 Das Sortierproblem Das Sortierproblem hat als Parameter die Menge, über der sortiert werden soll. (U, <) sei eine total geordnete Menge, d.h. für alle x U gilt x x (Irreflexivität) für alle x, y, z U folgt aus x < y udn y < z auch x < z (Transitivität) für alle x, y U gilt x < y, x = y oder y < x (Totalität) Ferner sei Seq(U) := {(a 1,...,a n ) n N und a 1,..., a n U} die Menge aller endlichen Folgen (Sequenzen) über U und SortSeq(U) := {(a 1,...,a n ) Seq(U) a 1 a 2 a n } die Menge aller sortierten endlichen Folgen über U.
46 Das Sortierproblem Das Sortierproblem hat als Parameter die Menge, über der sortiert werden soll. (U, <) sei eine total geordnete Menge, d.h. für alle x U gilt x x (Irreflexivität) für alle x, y, z U folgt aus x < y udn y < z auch x < z (Transitivität) für alle x, y U gilt x < y, x = y oder y < x (Totalität) Ferner sei Seq(U) := {(a 1,...,a n ) n N und a 1,..., a n U} die Menge aller endlichen Folgen (Sequenzen) über U und SortSeq(U) := {(a 1,...,a n ) Seq(U) a 1 a 2 a n } die Menge aller sortierten endlichen Folgen über U.
47 Das Sortierproblem Das Sortierproblem hat als Parameter die Menge, über der sortiert werden soll. (U, <) sei eine total geordnete Menge, d.h. für alle x U gilt x x (Irreflexivität) für alle x, y, z U folgt aus x < y udn y < z auch x < z (Transitivität) für alle x, y U gilt x < y, x = y oder y < x (Totalität) Ferner sei Seq(U) := {(a 1,...,a n ) n N und a 1,..., a n U} die Menge aller endlichen Folgen (Sequenzen) über U und SortSeq(U) := {(a 1,...,a n ) Seq(U) a 1 a 2 a n } die Menge aller sortierten endlichen Folgen über U.
48 Das Sortierproblem, erste Variante Sei π eine Permutation der Zahlen {1,...,n}, dann sei (a 1,...,a n ) π := (a π(1),... a π(n) ). Damit lässt sich das Sortierproblem über U folgendermaßen spezifizieren: Das Sortierproblem über (U, <) I = Seq(U) O = SortSeq(U) f (a 1,...,a n ) ist die Menge aller (b 1,..., b n ) SortSeq(U) für die eine Permutation π existiert mit (b 1,..., b n ) = (a 1,...,a n ) π (a 1,..., a n ) wird durch π sortiert, wenn (a 1..., a n ) π SortSeq(U).
49 Das Sortierproblem, erste Variante Sei π eine Permutation der Zahlen {1,...,n}, dann sei (a 1,...,a n ) π := (a π(1),... a π(n) ). Damit lässt sich das Sortierproblem über U folgendermaßen spezifizieren: Das Sortierproblem über (U, <) I = Seq(U) O = SortSeq(U) f (a 1,...,a n ) ist die Menge aller (b 1,..., b n ) SortSeq(U) für die eine Permutation π existiert mit (b 1,..., b n ) = (a 1,...,a n ) π (a 1,..., a n ) wird durch π sortiert, wenn (a 1..., a n ) π SortSeq(U).
50 Das Sortierproblem, erste Variante Sei π eine Permutation der Zahlen {1,...,n}, dann sei (a 1,...,a n ) π := (a π(1),... a π(n) ). Damit lässt sich das Sortierproblem über U folgendermaßen spezifizieren: Das Sortierproblem über (U, <) I = Seq(U) O = SortSeq(U) f (a 1,...,a n ) ist die Menge aller (b 1,..., b n ) SortSeq(U) für die eine Permutation π existiert mit (b 1,..., b n ) = (a 1,...,a n ) π (a 1,..., a n ) wird durch π sortiert, wenn (a 1..., a n ) π SortSeq(U).
51 Das Sortierproblem, zweite Variante Alternativ kann man auch die Permutation als Ausgabe betrachten: Das Sortierproblem über (U, <) I = Seq(U) O ist die Menge aller Permutationen von Mengen der Form {1,..., n} mit n 0. f (a 1,...,a n ) ist die Menge aller Permutationen π mit (a 1,...,a n ) π SortSeq(U) Beide Formalisierungen sind äquivalent in dem Sinne, dass jede Lösung der einen Formalisierung eine Lösung in der anderen Formalisierung induziert, und umgekehrt (Übungsaufgabe).
52 Das Sortierproblem, zweite Variante Alternativ kann man auch die Permutation als Ausgabe betrachten: Das Sortierproblem über (U, <) I = Seq(U) O ist die Menge aller Permutationen von Mengen der Form {1,..., n} mit n 0. f (a 1,...,a n ) ist die Menge aller Permutationen π mit (a 1,...,a n ) π SortSeq(U) Beide Formalisierungen sind äquivalent in dem Sinne, dass jede Lösung der einen Formalisierung eine Lösung in der anderen Formalisierung induziert, und umgekehrt (Übungsaufgabe).
53 Straight Insertion Sort Idee Füge a i an der korrekten Stelle in der bereits sortierten Liste a 1,...,a i 1 ein. Straight Insertion Sort Eingabe: Ein Array A[1... n] von Elementen in Z Ausgabe: Das sortierte Feld A[1... n] für i von 2 bis n tue x A[i]; j i; solange j > 1 und x < A[j 1] tue A[j] A[j 1]; j j 1; Ende A[j] x; Ende
54 Straight Insertion Sort Idee Füge a i an der korrekten Stelle in der bereits sortierten Liste a 1,...,a i 1 ein. Straight Insertion Sort Eingabe: Ein Array A[1... n] von Elementen in Z Ausgabe: Das sortierte Feld A[1... n] für i von 2 bis n tue x A[i]; j i; solange j > 1 und x < A[j 1] tue A[j] A[j 1]; j j 1; Ende A[j] x; Ende
55 Die Korrektheit von Straight Insertion Sort Wir wollen im Folgenden die Korrektheit von Straight Insertion Sort beweisen, d.h.: Satz Straight Insertion Sort sortiert jede Eingabe A[1...n] aufsteigend. In der Regel muss man zum Beweis der Korrektheit von Algorithmen auf die Diskrete Mathematik zurückgreifen. Wesentliche Techniken sind dabei: Die Vollständige Induktion bei Schleifen Die Wertverlaufsinduktion bei rekursiven Prozeduren
56 Die Korrektheit von Straight Insertion Sort Wir wollen im Folgenden die Korrektheit von Straight Insertion Sort beweisen, d.h.: Satz Straight Insertion Sort sortiert jede Eingabe A[1...n] aufsteigend. In der Regel muss man zum Beweis der Korrektheit von Algorithmen auf die Diskrete Mathematik zurückgreifen. Wesentliche Techniken sind dabei: Die Vollständige Induktion bei Schleifen Die Wertverlaufsinduktion bei rekursiven Prozeduren
57 Die Korrektheit von Straight Insertion Sort Wir wollen im Folgenden die Korrektheit von Straight Insertion Sort beweisen, d.h.: Satz Straight Insertion Sort sortiert jede Eingabe A[1...n] aufsteigend. In der Regel muss man zum Beweis der Korrektheit von Algorithmen auf die Diskrete Mathematik zurückgreifen. Wesentliche Techniken sind dabei: Die Vollständige Induktion bei Schleifen Die Wertverlaufsinduktion bei rekursiven Prozeduren
58 Die Korrektheit von Straight Insertion Sort Satz Straight Insertion Sort sortiert jede Eingabe A[1...n] aufsteigend. Der Satz ist ein Korollar des folgenden Lemma: Lemma Nach dem Durchlauf mit i = k, enthält A[1...k] die ersten k Elemente der Eingabe in aufsteigender Reihenfolge. Beweis Wir beweisen das Lemma mittels vollständiger Induktion über k. Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesem Zeitpunkt ist A[1... 1] offensichtlich sortiert....
59 Die Korrektheit von Straight Insertion Sort Satz Straight Insertion Sort sortiert jede Eingabe A[1...n] aufsteigend. Der Satz ist ein Korollar des folgenden Lemma: Lemma Nach dem Durchlauf mit i = k, enthält A[1...k] die ersten k Elemente der Eingabe in aufsteigender Reihenfolge. Beweis Wir beweisen das Lemma mittels vollständiger Induktion über k. Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesem Zeitpunkt ist A[1... 1] offensichtlich sortiert....
60 Die Korrektheit von Straight Insertion Sort Satz Straight Insertion Sort sortiert jede Eingabe A[1...n] aufsteigend. Der Satz ist ein Korollar des folgenden Lemma: Lemma Nach dem Durchlauf mit i = k, enthält A[1...k] die ersten k Elemente der Eingabe in aufsteigender Reihenfolge. Beweis Wir beweisen das Lemma mittels vollständiger Induktion über k. Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesem Zeitpunkt ist A[1... 1] offensichtlich sortiert....
61 Die Korrektheit von Straight Insertion Sort Satz Straight Insertion Sort sortiert jede Eingabe A[1...n] aufsteigend. Der Satz ist ein Korollar des folgenden Lemma: Lemma Nach dem Durchlauf mit i = k, enthält A[1...k] die ersten k Elemente der Eingabe in aufsteigender Reihenfolge. Beweis Wir beweisen das Lemma mittels vollständiger Induktion über k. Induktionsanfang: i = 1, d.h. vor dem ersten Durchlauf. Zun diesem Zeitpunkt ist A[1... 1] offensichtlich sortiert....
62 Die Korrektheit von Straight Insertion Sort Beweis (Fortsetzung) Induktionsvoraussetzung: Nach dem Durchlauf mit i = k 1 ist A[1...k 1] sortiert. Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder j = min{i 1 i k 1 und A[i] > x} Gleichzeitig verschiebt die Schleife alle Einträge A[j...i 1] um eine Position nach rechts. Falls j der kleinste Index eines Wertes in A[1...k 1] echt größer x ist, ergibt sich durch Verschieben von A[j...k 1] und Einfügen von x = A[k] eine sortierte Teilfolge A[1... k]. Falls j = 1 und A[i] > x für alle 1 i k 1, so ergibt sich durch die Verschiebung und das Einfügen von x = A[k] an der Position 1 ebenfalls eine sortierte Teilfolge.
63 Die Korrektheit von Straight Insertion Sort Beweis (Fortsetzung) Induktionsvoraussetzung: Nach dem Durchlauf mit i = k 1 ist A[1...k 1] sortiert. Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder j = min{i 1 i k 1 und A[i] > x} Gleichzeitig verschiebt die Schleife alle Einträge A[j...i 1] um eine Position nach rechts. Falls j der kleinste Index eines Wertes in A[1...k 1] echt größer x ist, ergibt sich durch Verschieben von A[j...k 1] und Einfügen von x = A[k] eine sortierte Teilfolge A[1... k]. Falls j = 1 und A[i] > x für alle 1 i k 1, so ergibt sich durch die Verschiebung und das Einfügen von x = A[k] an der Position 1 ebenfalls eine sortierte Teilfolge.
64 Die Korrektheit von Straight Insertion Sort Beweis (Fortsetzung) Induktionsvoraussetzung: Nach dem Durchlauf mit i = k 1 ist A[1...k 1] sortiert. Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder j = min{i 1 i k 1 und A[i] > x} Gleichzeitig verschiebt die Schleife alle Einträge A[j...i 1] um eine Position nach rechts. Falls j der kleinste Index eines Wertes in A[1...k 1] echt größer x ist, ergibt sich durch Verschieben von A[j...k 1] und Einfügen von x = A[k] eine sortierte Teilfolge A[1... k]. Falls j = 1 und A[i] > x für alle 1 i k 1, so ergibt sich durch die Verschiebung und das Einfügen von x = A[k] an der Position 1 ebenfalls eine sortierte Teilfolge.
65 Die Korrektheit von Straight Insertion Sort Beweis (Fortsetzung) Induktionsvoraussetzung: Nach dem Durchlauf mit i = k 1 ist A[1...k 1] sortiert. Induktionsschritt: Am Ende der inneren Schleife gilt entweder j = 1 oder j = min{i 1 i k 1 und A[i] > x} Gleichzeitig verschiebt die Schleife alle Einträge A[j...i 1] um eine Position nach rechts. Falls j der kleinste Index eines Wertes in A[1...k 1] echt größer x ist, ergibt sich durch Verschieben von A[j...k 1] und Einfügen von x = A[k] eine sortierte Teilfolge A[1... k]. Falls j = 1 und A[i] > x für alle 1 i k 1, so ergibt sich durch die Verschiebung und das Einfügen von x = A[k] an der Position 1 ebenfalls eine sortierte Teilfolge.
66 Laufzeitanalyse
67 Laufzeitanalyse Idee der Laufzeitanalyse Analysiere die vom Algorithmus A auf Eingabe x benötigte Rechenzeit. Um die benötigte Zeit abzuschätzen, wird nicht die tatsächlich benötigte Zeit auf einem realen Rechner gemessen (wäre nur mit Experimenten und auf einzelnen Eingaben möglich), sondern es wird gezählt wieviele und welche Elementaroperationen der Algorithmus auf einer Eingabe benötigt. Da die genau Zahl von Elementaroperationen unter Umständen stark von der Eingabe abhängt, wird in der Regel versucht, eine obere Schranke in Abhängigkeit von der anzugeben. Eingabegröße x
68 Laufzeitanalyse Idee der Laufzeitanalyse Analysiere die vom Algorithmus A auf Eingabe x benötigte Rechenzeit. Um die benötigte Zeit abzuschätzen, wird nicht die tatsächlich benötigte Zeit auf einem realen Rechner gemessen (wäre nur mit Experimenten und auf einzelnen Eingaben möglich), sondern es wird gezählt wieviele und welche Elementaroperationen der Algorithmus auf einer Eingabe benötigt. Da die genau Zahl von Elementaroperationen unter Umständen stark von der Eingabe abhängt, wird in der Regel versucht, eine obere Schranke in Abhängigkeit von der anzugeben. Eingabegröße x
69 Laufzeitanalyse Idee der Laufzeitanalyse Analysiere die vom Algorithmus A auf Eingabe x benötigte Rechenzeit. Um die benötigte Zeit abzuschätzen, wird nicht die tatsächlich benötigte Zeit auf einem realen Rechner gemessen (wäre nur mit Experimenten und auf einzelnen Eingaben möglich), sondern es wird gezählt wieviele und welche Elementaroperationen der Algorithmus auf einer Eingabe benötigt. Da die genau Zahl von Elementaroperationen unter Umständen stark von der Eingabe abhängt, wird in der Regel versucht, eine obere Schranke in Abhängigkeit von der anzugeben. Eingabegröße x
70 Elementaroperationen Was Elementaroperationen sind hängt wesentlich vom Rechenmodell ab. Im Wesentlichen: Arithmetische Grundoperationen (Addition, Subtraktion, Multiplikation, Division) Vergleiche Sprünge Zuweisungen Zeiger- und Indexauswertungen (Speicherzugriff) Wesentliche Einflüsse: Prozessor Programmiersprache und Compiler Hauptspeichertyp Cachestruktur...
71 Elementaroperationen Was Elementaroperationen sind hängt wesentlich vom Rechenmodell ab. Im Wesentlichen: Arithmetische Grundoperationen (Addition, Subtraktion, Multiplikation, Division) Vergleiche Sprünge Zuweisungen Zeiger- und Indexauswertungen (Speicherzugriff) Wesentliche Einflüsse: Prozessor Programmiersprache und Compiler Hauptspeichertyp Cachestruktur...
72 Elementaroperationen A B + C umfasst im Pseudocode 2 Elementaroperationen - eine Addition und eine Zuweisung. Implementiert man sie in Assembler auf einem x86 Prozessor, ergibt sich: mov add mov EAX,<B> EAX, <C> <A>, EAX (Naive) Annahme Jede Elementaroperation im Pseudocode lässt sich mittels einer konstanten Anzahl von Elementaroperationen eines anderen Rechenmodells realisieren.
73 Elementaroperationen A B + C umfasst im Pseudocode 2 Elementaroperationen - eine Addition und eine Zuweisung. Implementiert man sie in Assembler auf einem x86 Prozessor, ergibt sich: mov add mov EAX,<B> EAX, <C> <A>, EAX (Naive) Annahme Jede Elementaroperation im Pseudocode lässt sich mittels einer konstanten Anzahl von Elementaroperationen eines anderen Rechenmodells realisieren.
74 Elementaroperationen A B + C umfasst im Pseudocode 2 Elementaroperationen - eine Addition und eine Zuweisung. Implementiert man sie in Assembler auf einem x86 Prozessor, ergibt sich: mov add mov EAX,<B> EAX, <C> <A>, EAX (Naive) Annahme Jede Elementaroperation im Pseudocode lässt sich mittels einer konstanten Anzahl von Elementaroperationen eines anderen Rechenmodells realisieren.
75 Rechenzeit und Elementaroperationen Zu jeder Elementaroperation op existiert eine Konstante C op, so dass das Ausführen von op höchstens Zeit C op benötigt. Technische Unterschiede des Rechenmodells können bei der Festlegung der Konstanten berücksichtigt werden. Die Konstanten C op sind in der Regel unbekannt, bzw. werden nicht explizit genannt.
76 Rechenzeit und Elementaroperationen Zu jeder Elementaroperation op existiert eine Konstante C op, so dass das Ausführen von op höchstens Zeit C op benötigt. Technische Unterschiede des Rechenmodells können bei der Festlegung der Konstanten berücksichtigt werden. Die Konstanten C op sind in der Regel unbekannt, bzw. werden nicht explizit genannt.
77 Rechenzeit und Elementaroperationen Zu jeder Elementaroperation op existiert eine Konstante C op, so dass das Ausführen von op höchstens Zeit C op benötigt. Technische Unterschiede des Rechenmodells können bei der Festlegung der Konstanten berücksichtigt werden. Die Konstanten C op sind in der Regel unbekannt, bzw. werden nicht explizit genannt.
78 Rechenzeit und Elementaroperationen Definition (Kosten) k op sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung eines Algorithmus A auf Eingabe x. Dann sind die Kosten t A (x) von A auf x definiert als t A (x) := op k op (x) C op, wobei über alle möglichen Elementaroperationen summiert wird. Die Kosten sind ein ungefähres Maß für die von A benötigte Rechenzeit. Daher sagt man auch häufig Rechenzeit statt Kosten.
79 Rechenzeit und Elementaroperationen Definition (Kosten) k op sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung eines Algorithmus A auf Eingabe x. Dann sind die Kosten t A (x) von A auf x definiert als t A (x) := op k op (x) C op, wobei über alle möglichen Elementaroperationen summiert wird. Die Kosten sind ein ungefähres Maß für die von A benötigte Rechenzeit. Daher sagt man auch häufig Rechenzeit statt Kosten.
80 Worst- und Best-Case Definition Worst- und Best-Case-Kosten A sei ein Algorithmus mit Eingabemenge I. Ferner sei für n N I n := {x I x = n}. Die Worst-Case-Kosten von A sind und die Best-Case-Kosten sind T A (n) := max {t A (x) x I n } T A,best (n) := min {t A (x) x I n }
81 Eine vorläufige Vereinfachung Um die Kosten, bzw. die Rechenzeit von Straight Insertion Sort abzuschätzen, machen wir eine vorläufige Vereinfachung: Die Konstanten C op für die Laufzeit der Elementaroperationen sind alle gleich, d.h. C op = C für alle op Alternativ, können wir die C op durch die größte Konstante abschätzen: C := max { C op op ist eine Elementaroperation } Mit diesen Vereinfachungen ergeben sich die Kosten als t A (x) = C k op = C #Elementaroperationen op
82 Eine vorläufige Vereinfachung Um die Kosten, bzw. die Rechenzeit von Straight Insertion Sort abzuschätzen, machen wir eine vorläufige Vereinfachung: Die Konstanten C op für die Laufzeit der Elementaroperationen sind alle gleich, d.h. C op = C für alle op Alternativ, können wir die C op durch die größte Konstante abschätzen: C := max { C op op ist eine Elementaroperation } Mit diesen Vereinfachungen ergeben sich die Kosten als t A (x) = C k op = C #Elementaroperationen op
83 Eine vorläufige Vereinfachung Um die Kosten, bzw. die Rechenzeit von Straight Insertion Sort abzuschätzen, machen wir eine vorläufige Vereinfachung: Die Konstanten C op für die Laufzeit der Elementaroperationen sind alle gleich, d.h. C op = C für alle op Alternativ, können wir die C op durch die größte Konstante abschätzen: C := max { C op op ist eine Elementaroperation } Mit diesen Vereinfachungen ergeben sich die Kosten als t A (x) = C k op = C #Elementaroperationen op
84 Die Laufzeit von Straight Insertion Sort Straight Insertion Sort Eingabe: Ein Array A[1...n] von Elementen in Z Ausgabe: Das sortierte Feld A[1... n] für i von 2 bis n tue x A[i]; j i; solange j > 1 und x < A[j 1] tue A[j] A[j 1]; j j 1; Ende A[j] x; Ende } wird n-mal ausgeführt wird (n 1)-mal ausgeführt } Bis zu (i 1) Durchläufe } wird (n 1)-mal ausgeführt
85 Die Laufzeit von Straight Insertion Sort Straight Insertion Sort Eingabe: Ein Array A[1...n] von Elementen in Z Ausgabe: Das sortierte Feld A[1... n] für i von 2 bis n tue x A[i]; j i; solange j > 1 und x < A[j 1] tue A[j] A[j 1]; j j 1; Ende A[j] x; Ende } wird n-mal ausgeführt wird (n 1)-mal ausgeführt } Bis zu (i 1) Durchläufe } wird (n 1)-mal ausgeführt
86 Die Laufzeit von Straight Insertion Sort Straight Insertion Sort Eingabe: Ein Array A[1...n] von Elementen in Z Ausgabe: Das sortierte Feld A[1... n] für i von 2 bis n tue x A[i]; j i; solange j > 1 und x < A[j 1] tue A[j] A[j 1]; j j 1; Ende A[j] x; Ende } wird n-mal ausgeführt wird (n 1)-mal ausgeführt } Bis zu (i 1) Durchläufe } wird (n 1)-mal ausgeführt
87 Die Laufzeit von Straight Insertion Sort Straight Insertion Sort Eingabe: Ein Array A[1...n] von Elementen in Z Ausgabe: Das sortierte Feld A[1... n] für i von 2 bis n tue x A[i]; j i; solange j > 1 und x < A[j 1] tue A[j] A[j 1]; j j 1; Ende A[j] x; Ende } wird n-mal ausgeführt wird (n 1)-mal ausgeführt } Bis zu (i 1) Durchläufe } wird (n 1)-mal ausgeführt
88 Die Laufzeit von Straight Insertion Sort Die Anweisungen der äußeren Schleife ergeben somit n + 3(n 1) Elementaroperationen Die Zahl der Operationen, die während der Durchläufe der inneren Schleife ausgeführt werden, hängt von der Anzahl der Durchläufe ab. Im Maximum sind es in der Runde für i = i genau i 1 Durchläufe. k i sei die Anzahl der Durchläufe der inneren Schleife für i = i. Da die innere Schleife auf jeden Fall den letzten Test der Schleifenbedingung benötigt, ergibt sich die Gesamtzahl der Elementaroperationen als n + 3 (n 1) + (n 1) + 3 n k i. i=2
89 Die Laufzeit von Straight Insertion Sort Die Anweisungen der äußeren Schleife ergeben somit n + 3(n 1) Elementaroperationen Die Zahl der Operationen, die während der Durchläufe der inneren Schleife ausgeführt werden, hängt von der Anzahl der Durchläufe ab. Im Maximum sind es in der Runde für i = i genau i 1 Durchläufe. k i sei die Anzahl der Durchläufe der inneren Schleife für i = i. Da die innere Schleife auf jeden Fall den letzten Test der Schleifenbedingung benötigt, ergibt sich die Gesamtzahl der Elementaroperationen als n + 3 (n 1) + (n 1) + 3 n k i. i=2
90 Die Laufzeit von Straight Insertion Sort Bei näherer Betrachtung der Anzahl der Durchläufe der inneren Schleife für i = i, stellt man fest, das jedes Element in A[1,...i 1] mit A[j] > A[i] einen Durchlauf erzwingt, d.h. (Übungsaufgabe) Notation k i = {j j < i und A[i] < A[j]}. Für eine Menge X sei X die Anzahl der Elemente in X. Wir schreiben X =, wenn X unendlich viele Elemente enthält.
91 Die Laufzeit von Straight Insertion Sort Bei näherer Betrachtung der Anzahl der Durchläufe der inneren Schleife für i = i, stellt man fest, das jedes Element in A[1,...i 1] mit A[j] > A[i] einen Durchlauf erzwingt, d.h. (Übungsaufgabe) Notation k i = {j j < i und A[i] < A[j]}. Für eine Menge X sei X die Anzahl der Elemente in X. Wir schreiben X =, wenn X unendlich viele Elemente enthält.
92 Die Laufzeit von Straight Insertion Sort Der Worst Case (schlechtester Fall) k i = i 1 für alle i. Beispiel: x = (6, 5, 4, 3, 2, 1) Damit gilt n k i = i=2 n n 1 (i 1) = i = i=2 i=1 und die Gesamtzahl der Operationen ist n + 4 (n 1) + 3 n (n 1) 2 n (n 1) 2 = ( ) n 2 = 3 2 n n 4.
93 Die Laufzeit von Straight Insertion Sort Der Best Case (bester Fall) k i = 0 für alle i. Beispiel: x = (1, 2, 3, 4, 5, 6) Gesamtzahl der Operationen: n + 4 (n 1) = 5n 4. Worst Case (zur Erinnerung) 3 2 n n 4
94 Die Laufzeit von Straight Insertion Sort Der Best Case (bester Fall) k i = 0 für alle i. Beispiel: x = (1, 2, 3, 4, 5, 6) Gesamtzahl der Operationen: n + 4 (n 1) = 5n 4. Worst Case (zur Erinnerung) 3 2 n n 4
95 Die Laufzeit von Straight Insertion Sort Der Best Case (bester Fall) k i = 0 für alle i. Beispiel: x = (1, 2, 3, 4, 5, 6) Gesamtzahl der Operationen: n + 4 (n 1) = 5n 4. Worst Case (zur Erinnerung) 3 2 n n 4
96 Laufzeitanalyse Beobachtungen Fazit Selbst Für eine feste Implementierung eines Algorithmus A auf einer festen Maschine und eine feste Eingabegröße n = x kann die Zahl der benötigten Elementaroperationen höchst unterschiedlich sein. Verschiedene Rechenmodelle oder Rechnerarchitekturen führen zu unterschiedlichen Konstanten Der Begriff Laufzeit von Algorithmus A auf Eingaben x der Größe n = x ist nur sehr eingeschränkt nutzbar. Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken Außerdem sollten die konstanten Faktoren nicht berücksichtigt werden. asymptotische Notation (O- und Ω-Notationen)
97 Laufzeitanalyse Beobachtungen Fazit Selbst Für eine feste Implementierung eines Algorithmus A auf einer festen Maschine und eine feste Eingabegröße n = x kann die Zahl der benötigten Elementaroperationen höchst unterschiedlich sein. Verschiedene Rechenmodelle oder Rechnerarchitekturen führen zu unterschiedlichen Konstanten Der Begriff Laufzeit von Algorithmus A auf Eingaben x der Größe n = x ist nur sehr eingeschränkt nutzbar. Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken Außerdem sollten die konstanten Faktoren nicht berücksichtigt werden. asymptotische Notation (O- und Ω-Notationen)
98 Laufzeitanalyse Beobachtungen Fazit Selbst Für eine feste Implementierung eines Algorithmus A auf einer festen Maschine und eine feste Eingabegröße n = x kann die Zahl der benötigten Elementaroperationen höchst unterschiedlich sein. Verschiedene Rechenmodelle oder Rechnerarchitekturen führen zu unterschiedlichen Konstanten Der Begriff Laufzeit von Algorithmus A auf Eingaben x der Größe n = x ist nur sehr eingeschränkt nutzbar. Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken Außerdem sollten die konstanten Faktoren nicht berücksichtigt werden. asymptotische Notation (O- und Ω-Notationen)
99 Laufzeitanalyse Beobachtungen Fazit Selbst Für eine feste Implementierung eines Algorithmus A auf einer festen Maschine und eine feste Eingabegröße n = x kann die Zahl der benötigten Elementaroperationen höchst unterschiedlich sein. Verschiedene Rechenmodelle oder Rechnerarchitekturen führen zu unterschiedlichen Konstanten Der Begriff Laufzeit von Algorithmus A auf Eingaben x der Größe n = x ist nur sehr eingeschränkt nutzbar. Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken Außerdem sollten die konstanten Faktoren nicht berücksichtigt werden. asymptotische Notation (O- und Ω-Notationen)
100 Laufzeitanalyse Beobachtungen Fazit Selbst Für eine feste Implementierung eines Algorithmus A auf einer festen Maschine und eine feste Eingabegröße n = x kann die Zahl der benötigten Elementaroperationen höchst unterschiedlich sein. Verschiedene Rechenmodelle oder Rechnerarchitekturen führen zu unterschiedlichen Konstanten Der Begriff Laufzeit von Algorithmus A auf Eingaben x der Größe n = x ist nur sehr eingeschränkt nutzbar. Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken Außerdem sollten die konstanten Faktoren nicht berücksichtigt werden. asymptotische Notation (O- und Ω-Notationen)
101 Laufzeitanalyse Beobachtungen Fazit Selbst Für eine feste Implementierung eines Algorithmus A auf einer festen Maschine und eine feste Eingabegröße n = x kann die Zahl der benötigten Elementaroperationen höchst unterschiedlich sein. Verschiedene Rechenmodelle oder Rechnerarchitekturen führen zu unterschiedlichen Konstanten Der Begriff Laufzeit von Algorithmus A auf Eingaben x der Größe n = x ist nur sehr eingeschränkt nutzbar. Deutlich sinnvoller sind die Angaben von oberen und unteren Schranken Außerdem sollten die konstanten Faktoren nicht berücksichtigt werden. asymptotische Notation (O- und Ω-Notationen)
102 Weiter geht es mit Asymptotischen Notationen
Übung zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft
MehrAlgorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315
Algorithmen und Datenstrukturen Christian Komusiewicz Ernst-Abbe-Platz 2, R3315 christian.komusiewicz@uni-jena.de Friedrich-Schiller-Universität Jena Institut für Informatik http://users.fmi.uni-jena.de/
MehrAlgorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik
Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU
Mehr2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.
2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen VO 708.031 Um was geht es? Datenstrukturen Algorithmen Algorithmus Versuch einer Erklärung: Ein Algorithmus nimmt bestimmte Daten als Input und transformiert diese nach festen
MehrAlle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
MehrModul Algorithmik, T-Katalog
Modul Algorithmik, T-Katalog Sommersemester 2017 Steffen Lange 1/1, Folie 1 2017 Prof. Steffen Lange - HDa/FbI - Algorithmik Organisatorisches u Vorlesung Folien im Netz u Übung eine Übung alle 14 Tage
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
MehrKapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin
Kapitel 1 Einleitung 1.1. Begriff des Algorithmus Eine der ältesten Beschreibungstechniken für Abläufe: Benannt nach dem Mathematiker Al-Khwarizmi (ca. 780...840), der am Hof der Kalifen von Bagdad wirkte.
MehrAlgorithmen und Datenstrukturen
Lehrstuhl für Informatik I Algorithmen und Datenstrukturen Wintersemester 2013/14 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmiertutorium: Alexander Wolff (E29) Krzysztof Fleszar (E13)
MehrObjektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III
Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Text: Hinnerk van Bruinehsen - Grafiken: Jens Fischer powered by SDS.mint SoSe 2011 1 Teil
MehrSS10 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel
SS10 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel Martin Dietzfelbinger April 2010 Hörer: Informatikstudierende im 2. Semester. Andere Interessenten sehr willkommen! Material: Eigene Notizen!
MehrDer Lese-Schreib-Kopf kann auch angehalten werden (H). Die Verarbeitung ist dann beendet.
Die Turingmaschine besteht aus der Steuereinheit, die verschiedene Zustände annimmt dem Band, welches unendlich ausgedehnt ist, aber nur auf einem endlichem Bereich mit Zeichen aus einem Alphabet beschrieben
MehrHier ist ein einfaches Turingprogramm. Außer dem Leerzeichen ist das Band nur mit. 1 belegt.
Die Turingmaschine besteht aus der Steuereinheit, die verschiedene Zustände annimmt dem Band, welches unendlich ausgedehnt ist, aber nur auf einem endlichem Bereich mit Zeichen aus einem Alphabet beschrieben
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmierübungen: Alexander Wolff (E29) Jan Haunert (E27) Markus Ankenbrand Titus Dose Alexej
MehrAlgorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik Was ist ein Algorithmus? Ein Algorithmus ist eine eindeutige Handlungsvorschrift, [bestehend] aus endlich vielen, wohldefinierten
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin Maike.Buchin@rub.de Raum NA 1/70 Sprechzeiten:
MehrKostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)
Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrAlgorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 2, Donnerstag 30.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 2, Donnerstag 30. Oktober 2014 (Laufzeitanalyse MinSort / HeapSort, Induktion) Junior-Prof.
MehrZeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1
Zeitkomplexität (1) Proseminar Theoretische Informatik Proseminar Theoretische Informatik: Lisa Dohrmann 1 Warum Komplexitätsbetrachtung? Ein im Prinzip entscheidbares und berechenbares Problem kann in
Mehr5. Übungsblatt zu Algorithmen I im SoSe 2016
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Dennis Hofheinz Lukas Barth, Lisa Kohl 5. Übungsblatt zu Algorithmen I im SoSe 2016 https://crypto.iti.kit.edu/index.php?id=algo-sose16
MehrDatenstrukturen, Algorithmen und Programmierung 2
Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2009 14. April 2009 Petra Mutzel Kurzvorstellung
MehrGrundlagen: Algorithmen und Datenstrukturen
Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und
MehrAlgorithmentheorie 1. Vorlesung
Algorithmentheorie 1. Vorlesung Martin Dietzfelbinger 6. April 2006 FG KTuEA, TU Ilmenau AT 06.04.2006 Methode, Material Vorlesung Vorlesungsskript (Netz, Copyshop) Folien (im Netz) Vorlesung nachbereiten!
MehrGrundlagen der Algorithmen und Datenstrukturen
Grundlagen der Algorithmen und Datenstrukturen Christian Scheideler + Helmut Seidl SS 2009 01.04.09 Kapitel 0 1 Vorlesung: Organisatorisches Di 12:00 13:30 MI HS 1 Do 12:00 12:45 MI HS 1 Übungen: 34 Alternativen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
MehrAlgorithmen und Datenstrukturen Sommersemester 2007
Algorithmen und Datenstrukturen Sommersemester 2007 Steffen Reith reith@informatik.fh-wiesbaden.de Fachhochschule Wiesbaden 4. April 2007 Steffen Reith Algorithmen und Datenstrukturen 4. April 2007 1 /
MehrKapitel 3 Zur Korrektheit und Effizienz von Algorithmen
Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
MehrKombinatorik. Dr. Lucia Draque Penso. Universität Ulm. Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 1 / 26
Kombinatorik Dr. Lucia Draque Penso Universität Ulm Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 1 / 26 Erste Vorlesung Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 2 / 26 Formales Vorlesung:
Mehr3.3 Laufzeit von Programmen
3.3 Laufzeit von Programmen Die Laufzeit eines Programmes T(n) messen wir als die Zahl der Befehle, die für die Eingabe n abgearbeitet werden Betrachten wir unser Programm zur Berechnung von Zweierpotenzen,
MehrInformatikgrundlagen (WS 2016/2017)
Informatikgrundlagen (WS 2016/2017) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
Mehr( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen
MehrÜbersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.
Übersicht Datenstrukturen und Vorlesung 1: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet
MehrVorlesung Diskrete Strukturen Die natürlichen Zahlen
Vorlesung Diskrete Strukturen Die natürlichen Zahlen Bernhard Ganter WS 2009/10 Alles ist Zahl? Wenn in der modernen Mathematik alles auf Mengen aufgebaut ist, woher kommen dann die Zahlen? Sind Zahlen
MehrTheoretische Informatik: Berechenbarkeit und Formale Sprachen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen Prof. Dr. F. Otto Fachbereich Elektrotechnik/Informatik, Universität Kassel 34109 Kassel, Germany E-mail: otto@theory.informatik.uni-kassel.de
MehrTheoretische Informatik: Berechenbarkeit und Formale Sprachen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen Prof. Dr. F. Otto Fachbereich Elektrotechnik/Informatik, Universität Kassel 34109 Kassel, Germany E-mail: otto@theory.informatik.uni-kassel.de
Mehr3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen
3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm 1 Organisation 2 Einführung Ziele und Inhalt
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt
MehrADS. 1. Vorlesung. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
ADS 1. Vorlesung Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm 6.10.2016 ORGANISATORISCHES Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm Der Dozent 2 Prof. Dr. Wolfgang Schramm
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 25. November 2014 INSTITUT FÜR THEORETISCHE 0 KIT 25.11.2014 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der
MehrGrundlagen: Algorithmen und Datenstrukturen
Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 011 Übungsblatt 30. Mai 011 Grundlagen: Algorithmen und Datenstrukturen
MehrStand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften
MehrBerechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme
Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität 29. November 2007 Turing-mächtige
MehrTheoretische Informatik
Theoretische Informatik Sommersemester 2004 Christoph Kreitz Theoretische Informatik, Raum 1.18, Telephon 3060 kreitz@cs.uni-potsdam.de http://www.cs.uni-potsdam.de/ti/kreitz 1. Themen und Lernziele 2.
Mehr8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrTheoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!
Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit Sommersemester 2012 Prof. Dr. Nicole Schweikardt AG Theorie komplexer Systeme Goethe-Universität Frankfurt am Main Herzlich willkommen!
MehrTechnische Universität München
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrVorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion
Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Saskia Klaus 07.10.016 1 Motivation In den ersten beiden Vorträgen des Vorkurses haben wir gesehen, wie man aus schon bekannten Wahrheiten
Mehr2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
MehrKomplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen
lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 20. November 2014 INSTITUT FÜR THEORETISCHE 0 KIT 20.11.2014 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 D&A: 1. Einführung robert.legenstein@igi.tugraz.at 1 Organisatorisches VO (708.031) & UE (708.032) bei beiden extra anmelden, zwei Zeugnisse Vortragende: VO:
MehrAlgorithmen und Datenstrukturen I Grundlagen
Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift
MehrAlgorithmen und Datenstrukturen Tutorium I
Algorithmen und Datenstrukturen Tutorium I 20. - 25. 04. 2016 AlgoDat - Tutorium I 1 1 Organisatorisches Kontakt 2 Landau-Notation Definiton von O Logarithmen Gesetze & Ableitung Satz von l Hôpital 3 Algorithmen
Mehr10. Übungsblatt zu Algorithmen I im SS 2010
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php
Mehr2. Algorithmenbegriff
2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen
Mehr2. Effizienz von Algorithmen
Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Tanya Braun (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge Bachelor
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind
MehrAlgorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor
Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor Organisatorisches: Vorlesung 4 SWS, Zentralübung 2 SWS: 6 Credit Points Mi 9:45 11:15 Raum 1200 (Vorlesung) Do 8:00
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
MehrAlgorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser. 1 Organisation
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Organisation 2 Einführung Ziele und Inhalt
Mehr1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen
Gliederung 1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen 1/1, Folie 1 2009 Prof. Steffen Lange - HDa/FbI - Effiziente
MehrAlgorithmen und Datenstrukturen Effizienz und Funktionenklassen
Algorithmen und Datenstrukturen Effizienz und Funktionenklassen Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren,
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016
MehrAnalysis für Informatiker
Analysis für Informatiker Wintersemester 2017/2018 Carsten.Schneider@risc.jku.at 1 Bemerkung: Dies ist kein Skript, welches den gesamten Inhalt der Vorlesung abdeckt. Es soll den Studierenden aber während
Mehr4. Sortieren 4.1 Vorbemerkungen
. Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen
MehrInhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.
1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften
MehrÜbung Algorithmen I
Übung Algorithmen I 18.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Sortieren Kleine Wiederholung Visualisierungen Adaptives
MehrEinführung in die Informatik Turing Machines
Einführung in die Informatik Turing Machines Eine abstrakte Maschine zur Präzisierung des Algorithmenbegriffs Wolfram Burgard Cyrill Stachniss 1/14 Motivation und Einleitung Bisher haben wir verschiedene
MehrTheoretische Informatik: Berechenbarkeit und Formale Sprachen
Theoretische Informatik: Berechenbarkeit und Formale Sprachen Prof. Dr. F. Otto Fachbereich Elektrotechnik/Informatik, Universität Kassel 34109 Kassel, Germany E-mail: otto@theory.informatik.uni-kassel.de
MehrAlgorithmen & Datenstrukturen
Algorithmen & Datenstrukturen Prof. Dr. Gerd Stumme Universität Kassel FB Elektrotechnik/Informatik FG Wissensverarbeitung Sommersemester 2009 Ziele der Veranstaltung 1 Kennenlernen grundlegender Algorithmen
MehrIdeen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn 26. Oktober 2015 Programme und Algorithmen Programmiersprache = Kunstsprache mit genau definierter Syntax (was ist ein zulässiger
MehrHerzlich willkommen!!!
Theoretische Informatik 2 Sommersemester 2013 Prof. Dr. Georg Schnitger AG Theoretische Informatik Johann Wolfgang Goethe-Universität Frankfurt am Main Herzlich willkommen!!! 1 / 19 Kapitel 1: Einführung
MehrInformatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik
Informatik Teil 1 Wintersemester 2011/2012 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen Inhalt 1. Algorithmen -
MehrDatenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange
Datenstrukturen Sommersemester 2010 Steffen Lange 1/1, Folie 1 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen Organisatorisches Vorlesung wöchentlich; zwei Blöcke Folien im Netz (/* bitte zur Vorlesung
MehrTechnische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 23. November 2017 INSTITUT FÜR THEORETISCHE 0 23.11.2017 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität
MehrInformatik I Komplexität von Algorithmen
Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz
MehrBabeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf
MehrKomplexität von Algorithmen SS 2011
Komplexität von Algorithmen SS 2011 Volker Strehl Informatik 8 4. Mai 2011 Organisatorisches Vorlesungstermine Mittwoch, 08:30 10:00 im H4 Freitag, 10:15 11:45 Uhr im H14 (Werkstoffwissenschaften) Organisatorisches
MehrInformatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik
Informatik 1 Teil 1 - Wintersemester 2012/2013 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen 0. Rechner und Programmierung
MehrKapitel 2: Sortier- und Selektionsverfahren Gliederung
Gliederung 1. Laufzeit von Algorithmen 2. Sortier- und Selektionsverfahren 3. Paradigmen des Algorithmenentwurfs 4. Ausgewählte Datenstrukturen 5. Algorithmische Geometrie 6. Randomisierte Algorithmen
Mehr8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
MehrInformatikgrundlagen (WS 2015/2016)
Informatikgrundlagen (WS 2015/2016) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrString - Matching. Kapitel Definition
Kapitel 1 String - Matching 1.1 Definition String - Matching ( übersetzt in etwa Zeichenkettenanpassung ) ist die Suche eines Musters ( Pattern ) in einem Text. Es findet beispielsweise Anwendung bei der
MehrRandomisierte Algorithmen 2. Erste Beispiele
Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest
MehrAlgorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik Was ist ein Algorithmus? Ein Algorithmus ist eine eindeutige Handlungsvorschrift, [bestehend] aus endlich vielen, wohldefinierten
MehrInduktive Beweise und rekursive Definitionen
Induktive Beweise und rekursive Definitionen Vorlesung Logik in der Informatik, HU Berlin 1. Übungsstunde Beweis durch vollständige Induktion über N Aufgabe 1 Zeige, dass für alle n N gilt: n 2 i = 2 n+1
MehrIdeen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man
Mehr