Algorithmen und Datenstrukturen SS09

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen SS09"

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

Ü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 Ü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

Mehr

Algorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315

Algorithmen 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/

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen 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

Mehr

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. 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

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & 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

Mehr

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle 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

Mehr

Modul Algorithmik, T-Katalog

Modul 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Kapitel 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.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Lehrstuhl für Informatik I Algorithmen und Datenstrukturen Wintersemester 2013/14 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Programmiertutorium: Alexander Wolff (E29) Krzysztof Fleszar (E13)

Mehr

Objektorientierte 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 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

Mehr

SS10 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel

SS10 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!

Mehr

Der Lese-Schreib-Kopf kann auch angehalten werden (H). Die Verarbeitung ist dann beendet.

Der 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

Mehr

Hier ist ein einfaches Turingprogramm. Außer dem Leerzeichen ist das Band nur mit. 1 belegt.

Hier 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen & Komplexität

Algorithmen & 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

Mehr

Vorlesung Datenstrukturen

Vorlesung 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:

Mehr

Kostenmodell. 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) 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen 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 / 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.

Mehr

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

Zeitkomplexitä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

Mehr

5. Übungsblatt zu Algorithmen I im SoSe 2016

5. Ü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

Mehr

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, 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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: 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

Mehr

Algorithmentheorie 1. Vorlesung

Algorithmentheorie 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!

Mehr

Grundlagen der Algorithmen und Datenstrukturen

Grundlagen 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen Sommersemester 2007

Algorithmen 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 /

Mehr

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Kapitel 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

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen 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

Mehr

Kombinatorik. 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 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:

Mehr

3.3 Laufzeit von Programmen

3.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,

Mehr

Informatikgrundlagen (WS 2016/2017)

Informatikgrundlagen (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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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)

( )= 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 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

Mehr

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Vorlesung 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

Mehr

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theoretische 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

Mehr

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theoretische 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

Mehr

3.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 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

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen 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 Ü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

Mehr

ADS. 1. Vorlesung. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

ADS. 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

Mehr

Theoretische Grundlagen der Informatik

Theoretische 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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: 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

Mehr

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand 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

Mehr

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme

Berechenbarkeit 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

Mehr

Theoretische Informatik

Theoretische 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.

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

8.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

Mehr

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!

Theoretische 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!

Mehr

Technische Universität München

Technische 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

Mehr

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion

Vorkurs 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

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

2.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

Mehr

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Komplexitä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

Mehr

Theoretische Grundlagen der Informatik

Theoretische 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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen 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:

Mehr

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen Tutorium I

Algorithmen 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

Mehr

10. Übungsblatt zu Algorithmen I im SS 2010

10. Ü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

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

2. Effizienz von Algorithmen

2. 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]

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Algorithmen 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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: 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

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser. 1 Organisation

Algorithmen 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

Mehr

1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen

1. 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

Mehr

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

Algorithmen 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,

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Analysis für Informatiker

Analysis 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

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. 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

Mehr

Komplexität von Algorithmen

Komplexitä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

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 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 Ü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

Mehr

Einführung in die Informatik Turing Machines

Einfü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

Mehr

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theoretische 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

Mehr

Algorithmen & Datenstrukturen

Algorithmen & Datenstrukturen Algorithmen & Datenstrukturen Prof. Dr. Gerd Stumme Universität Kassel FB Elektrotechnik/Informatik FG Wissensverarbeitung Sommersemester 2009 Ziele der Veranstaltung 1 Kennenlernen grundlegender Algorithmen

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen 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

Mehr

Herzlich willkommen!!!

Herzlich 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

Mehr

Informatik. 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 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 -

Mehr

Datenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange

Datenstrukturen. 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

Mehr

Technische 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 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

Mehr

Theoretische Grundlagen der Informatik

Theoretische 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

Mehr

Informatik I Komplexität von Algorithmen

Informatik 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

Mehr

Babeș-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 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

Mehr

Komplexität von Algorithmen SS 2011

Komplexitä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

Mehr

Informatik 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 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

Mehr

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

Kapitel 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

Mehr

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

8. 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

Mehr

Informatikgrundlagen (WS 2015/2016)

Informatikgrundlagen (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

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 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

Mehr

String - Matching. Kapitel Definition

String - 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

Mehr

Randomisierte Algorithmen 2. Erste Beispiele

Randomisierte 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

Mehr

Algorithmen & Komplexität

Algorithmen & 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

Mehr

Induktive Beweise und rekursive Definitionen

Induktive 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

Mehr

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Ideen 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