Datenstrukturen 1. Sommersemester Basierend auf Folien von Prof. Georg Schnitger, Prof. Ulrich Meyer, Dr. Iganz Rutter 1 / 73

Größe: px
Ab Seite anzeigen:

Download "Datenstrukturen 1. Sommersemester Basierend auf Folien von Prof. Georg Schnitger, Prof. Ulrich Meyer, Dr. Iganz Rutter 1 / 73"

Transkript

1 Datenstrukturen 1 Sommersemester Basierend auf Folien von Prof. Georg Schnitger, Prof. Ulrich Meyer, Dr. Iganz Rutter 1 / 73

2 Datenstrukturen 1 Sommersemester 2017 Herzlich willkommen! 1 Basierend auf Folien von Prof. Georg Schnitger, Prof. Ulrich Meyer, Dr. Iganz Rutter 1 / 73

3 Wer ist wer? Wir: Martin Hoefer (Vorlesungen) R 115 RMS 11 15, mhoefer@cs.uni-frankfurt.de Einführung 2 / 73

4 Wer ist wer? Wir: Martin Hoefer (Vorlesungen) R 115 RMS 11 15, mhoefer@cs.uni-frankfurt.de Niklas Hahn (Übungskoordination) R106 RMS 11 15, ds17-support@cs.uni-frankfurt.de Einführung 2 / 73

5 Wer ist wer? Wir: Martin Hoefer (Vorlesungen) R 115 RMS 11 15, mhoefer@cs.uni-frankfurt.de Niklas Hahn (Übungskoordination) R106 RMS 11 15, ds17-support@cs.uni-frankfurt.de Pirmin Braun, Ngoc Minh Do, Stefan Franke, Sebastian Kriege, Helen Naumann, Martin Parnet, Conrad Schecker, Tim Schön, Joshua Sole (Tutoren) Einführung 2 / 73

6 Wer ist wer? Wir: Martin Hoefer (Vorlesungen) R 115 RMS 11 15, mhoefer@cs.uni-frankfurt.de Niklas Hahn (Übungskoordination) R106 RMS 11 15, ds17-support@cs.uni-frankfurt.de Pirmin Braun, Ngoc Minh Do, Stefan Franke, Sebastian Kriege, Helen Naumann, Martin Parnet, Conrad Schecker, Tim Schön, Joshua Sole (Tutoren) Wer sind Sie? Einführung 2 / 73

7 Worum geht s? Einführung 3 / 73

8 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf einer Menge von Objekten). Implementiere den abstrakten Datentyp durch eine Datenstruktur. Einführung Inhaltsangabe 4 / 73

9 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf einer Menge von Objekten). Implementiere den abstrakten Datentyp durch eine Datenstruktur. Ein Beispiel für häufig auftretende Operationen: das Einfügen und Entfernen von Schlüsseln nach ihrem Alter. Wenn der jüngste Schlüssel zu entfernen ist: Wähle die Datenstruktur Einführung Inhaltsangabe 4 / 73

10 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf einer Menge von Objekten). Implementiere den abstrakten Datentyp durch eine Datenstruktur. Ein Beispiel für häufig auftretende Operationen: das Einfügen und Entfernen von Schlüsseln nach ihrem Alter. Wenn der jüngste Schlüssel zu entfernen ist: Wähle die Datenstruktur Keller (engl. Stack ). Einführung Inhaltsangabe 4 / 73

11 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf einer Menge von Objekten). Implementiere den abstrakten Datentyp durch eine Datenstruktur. Ein Beispiel für häufig auftretende Operationen: das Einfügen und Entfernen von Schlüsseln nach ihrem Alter. Wenn der jüngste Schlüssel zu entfernen ist: Wähle die Datenstruktur Keller (engl. Stack ). Wenn der älteste Schlüssel zu entfernen ist: Wähle die Datenstruktur Einführung Inhaltsangabe 4 / 73

12 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf einer Menge von Objekten). Implementiere den abstrakten Datentyp durch eine Datenstruktur. Ein Beispiel für häufig auftretende Operationen: das Einfügen und Entfernen von Schlüsseln nach ihrem Alter. Wenn der jüngste Schlüssel zu entfernen ist: Wähle die Datenstruktur Keller (engl. Stack ). Wenn der älteste Schlüssel zu entfernen ist: Wähle die Datenstruktur Schlange (engl. Queue ). Einführung Inhaltsangabe 4 / 73

13 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf einer Menge von Objekten). Implementiere den abstrakten Datentyp durch eine Datenstruktur. Ein Beispiel für häufig auftretende Operationen: das Einfügen und Entfernen von Schlüsseln nach ihrem Alter. Wenn der jüngste Schlüssel zu entfernen ist: Wähle die Datenstruktur Keller (engl. Stack ). Wenn der älteste Schlüssel zu entfernen ist: Wähle die Datenstruktur Schlange (engl. Queue ). Wenn Schlüssel Prioritäten besitzen und der Schlüssel mit höchster Priorität zu entfernen ist: Wähle die Datenstruktur Einführung Inhaltsangabe 4 / 73

14 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf einer Menge von Objekten). Implementiere den abstrakten Datentyp durch eine Datenstruktur. Ein Beispiel für häufig auftretende Operationen: das Einfügen und Entfernen von Schlüsseln nach ihrem Alter. Wenn der jüngste Schlüssel zu entfernen ist: Wähle die Datenstruktur Keller (engl. Stack ). Wenn der älteste Schlüssel zu entfernen ist: Wähle die Datenstruktur Schlange (engl. Queue ). Wenn Schlüssel Prioritäten besitzen und der Schlüssel mit höchster Priorität zu entfernen ist: Wähle die Datenstruktur Heap. Einführung Inhaltsangabe 4 / 73

15 Worum geht s? - Gegeben ist ein abstrakter Datentyp. - Entwerfe eine möglichst effiziente Datenstruktur. Welche abstrakten Datentypen? Einführung Inhaltsangabe 5 / 73

16 Worum geht s? - Gegeben ist ein abstrakter Datentyp. - Entwerfe eine möglichst effiziente Datenstruktur. Welche abstrakten Datentypen? Keller: Einfügen und Entfernen des jüngsten Schlüssels. Warteschlangen: Einfügen und Entfernen des ältesten Schlüssels. Prioritätswarteschlangen: Einfügen und Entfernen des wichtigsten Schlüssels. Wörterbücher: Einfügen, Entfernen (eines beliebigen Schlüssels) und Suche. Einführung Inhaltsangabe 5 / 73

17 Worum geht s? - Gegeben ist ein abstrakter Datentyp. - Entwerfe eine möglichst effiziente Datenstruktur. Welche abstrakten Datentypen? Keller: Einfügen und Entfernen des jüngsten Schlüssels. Warteschlangen: Einfügen und Entfernen des ältesten Schlüssels. Prioritätswarteschlangen: Einfügen und Entfernen des wichtigsten Schlüssels. Wörterbücher: Einfügen, Entfernen (eines beliebigen Schlüssels) und Suche. Was heißt Effizienz? Einführung Inhaltsangabe 5 / 73

18 Worum geht s? - Gegeben ist ein abstrakter Datentyp. - Entwerfe eine möglichst effiziente Datenstruktur. Welche abstrakten Datentypen? Keller: Einfügen und Entfernen des jüngsten Schlüssels. Warteschlangen: Einfügen und Entfernen des ältesten Schlüssels. Prioritätswarteschlangen: Einfügen und Entfernen des wichtigsten Schlüssels. Wörterbücher: Einfügen, Entfernen (eines beliebigen Schlüssels) und Suche. Was heißt Effizienz? Minimiere Laufzeit und Speicherplatzverbrauch der einzelnen Operationen. Einführung Inhaltsangabe 5 / 73

19 Worum geht s? - Gegeben ist ein abstrakter Datentyp. - Entwerfe eine möglichst effiziente Datenstruktur. Welche abstrakten Datentypen? Keller: Einfügen und Entfernen des jüngsten Schlüssels. Warteschlangen: Einfügen und Entfernen des ältesten Schlüssels. Prioritätswarteschlangen: Einfügen und Entfernen des wichtigsten Schlüssels. Wörterbücher: Einfügen, Entfernen (eines beliebigen Schlüssels) und Suche. Was heißt Effizienz? Minimiere Laufzeit und Speicherplatzverbrauch der einzelnen Operationen. Wie skalieren die Ressourcen mit wachsender Eingabelänge? Asymptotische Analyse von Laufzeit und Speicherplatzverbrauch Einführung Inhaltsangabe 5 / 73

20 Worauf wird aufgebaut? (1) Diskrete Modellierung (bzw. Vorkurs): Mengen, Relationen, Worte und Tupel Vollständige Induktion und allgemeine Beweismethoden. Siehe hierzu auch die Seite des Vorkurs Informatik mit Folien zu Beweistechniken, Induktion und Rekursion und Asymptotik und Laufzeitanalyse. (2) Grundlagen der Programmierung 1: Kenntnis der elementaren Datenstrukturen ist hilfreich, aber nicht notwendig. (3) Mathematik 1 (bzw. Vorkurs): - Logarithmen, - Grenzwerte und - asymptotische Notation. Einführung Vorwissen 6 / 73

21 Webseite der Veranstaltung Konsultieren Sie regelmäßig die Webseite Organisatorische Details zum Übungsbetrieb und zur Notengebung werden beschrieben. Unter Aktuelles finden Sie zum Beispiel: Anmerkungen zum Übungsbetrieb (wie melde ich mich an?) Gegebenenfalls Anmerkungen zu aktuellen Übungsaufgaben. Einführung Webseite 7 / 73

22 Webseite der Veranstaltung Konsultieren Sie regelmäßig die Webseite Organisatorische Details zum Übungsbetrieb und zur Notengebung werden beschrieben. Unter Aktuelles finden Sie zum Beispiel: Anmerkungen zum Übungsbetrieb (wie melde ich mich an?) Gegebenenfalls Anmerkungen zu aktuellen Übungsaufgaben. Nicht angemeldet? Sonstige organisatorische Fragen/Probleme? Mail an oder Im Logbuch finden Sie Informationen, Beamer-Folien, Videos, weitere Referenzen zu den einzelnen Vorlesungsstunden. Einführung Webseite 7 / 73

23 Literatur (1/2) - Skript und Folien zur Vorlesung finden Sie auf der Webseite der Veranstaltung. - Kapitel 3-5, und 18 in T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, second edition, M. T. Goodrich, R. Tamassia, D. M. Mount, Data Structures and Algorithms in C++, M. Dietzfelbinger, K. Mehlhorn, P. Sanders, Algorithmen und Datenstrukturen, die Grundwerkzeuge, Springer Vieweg, R. Sedgewick, Algorithmen in C++, Kapitel 1-7 im Grundlagenteil. - Kapitel 1-3 in J. Kleinberg, E. Tardos, Algorithm Design (GL-1 Textbuch), Pearson New International Edition, Für mathematische Grundlagen: N. Schweikardt, Diskrete Modellierung, eine Einführung in grundlegende Begriffe und Methoden der Theoretischen Informatik, (Kapitel 2,5) D. Grieser, Mathematisches Problemlösen und Beweisen, eine Entdeckungsreise in die Mathematik, Springer Vieweg Einführung Literatur 8 / 73

24 Literatur (2/2) Sämtliche Textbücher befinden sich auch in der Bibliothek im Semesterapparat der Veranstaltung Datenstrukturen. Die Bibliothek befindet sich im 1. Stock in der Robert-Mayer Strasse Einführung Literatur 9 / 73

25 Organisatorisches Einführung Organisatorisches 10 / 73

26 Klausur Hauptklausur: Donnerstag, 03. August 2017, ab 9:00 Uhr im H VI. Zweitklausur: Montag, 09. Oktober 2017, ab 9:00 Uhr im H VI. Die in den Übungen erreichten Punkte werden mit einem Maximalgewicht von 10% zu den Klausurpunkten hinzugezählt: Werden in der Klausur x% und in den Übungen y% erzielt, dann ist z = x + (y/10) die Gesamtpunktzahl. Die Note hängt nur von der Gesamtpunktzahl z ab. Die Veranstaltung ist bestanden, wenn z 50. Einführung Organisatorisches 11 / 73

27 Übungsbetrieb Übungsblätter werden im 2-Wochen Rhythmus auf die Webseite gestellt: Übungskalender auf der Webseite! Lösungen (zusammengetackert, mit vollem Namen, Matrikelnummer, und Nummer der Übungsgruppe versehen) sind nach 2-wöchiger Bearbeitungszeit abzugeben: Entweder im H VI vor Beginn der Vorlesung oder in den Briefkasten einwerfen zwischen Büros 114 und 115, Robert-Mayer-Str Einführung Organisatorisches 12 / 73

28 Übungsbetrieb Übungsblätter werden im 2-Wochen Rhythmus auf die Webseite gestellt: Übungskalender auf der Webseite! Lösungen (zusammengetackert, mit vollem Namen, Matrikelnummer, und Nummer der Übungsgruppe versehen) sind nach 2-wöchiger Bearbeitungszeit abzugeben: Entweder im H VI vor Beginn der Vorlesung oder in den Briefkasten einwerfen zwischen Büros 114 und 115, Robert-Mayer-Str Übungsgruppen treffen sich ab nächste Woche Dienstag, 25.4., um das umfangreiche Präsenzblatt zu besprechen. Erstes Übungsblatt erscheint heute, Abgabe am Einführung Organisatorisches 12 / 73

29 Übungsbetrieb Übungsblätter werden im 2-Wochen Rhythmus auf die Webseite gestellt: Übungskalender auf der Webseite! Lösungen (zusammengetackert, mit vollem Namen, Matrikelnummer, und Nummer der Übungsgruppe versehen) sind nach 2-wöchiger Bearbeitungszeit abzugeben: Entweder im H VI vor Beginn der Vorlesung oder in den Briefkasten einwerfen zwischen Büros 114 und 115, Robert-Mayer-Str Übungsgruppen treffen sich ab nächste Woche Dienstag, 25.4., um das umfangreiche Präsenzblatt zu besprechen. Erstes Übungsblatt erscheint heute, Abgabe am Übungsaufgaben sollten mit Anderen besprochen werden, aber Lösungen müssen eigenständig aufgeschrieben werden! 1. Verstoß: Nicht-Anrechnung aller Punkte des Blatts für ALLE Beteiligten. 2. Verstoß: ALLE Übungspunkte gestrichen. Einführung Organisatorisches 12 / 73

30 Bevor es losgeht... Vor- und Nachbereitung der Vorlesungen Unbedingt am Übungsbetrieb teilnehmen und Aufgaben bearbeiten! Von den Teilnehmern, die 50% der Übungspunkte erreichen, bestehen nahezu 100% auch die Klausur! Teamarbeit vs. Einzelkämpfer Studieren lernen der richtige Umgang mit den Freiheiten Einführung Organisatorisches 13 / 73

31 Bevor es losgeht... Vor- und Nachbereitung der Vorlesungen Unbedingt am Übungsbetrieb teilnehmen und Aufgaben bearbeiten! Von den Teilnehmern, die 50% der Übungspunkte erreichen, bestehen nahezu 100% auch die Klausur! Teamarbeit vs. Einzelkämpfer Studieren lernen der richtige Umgang mit den Freiheiten Meine Sprechstunde: Montags 14:00 16:00 Uhr. Oder versuchen Sie es auf gut Glück (Raum 115). Einführung Organisatorisches 13 / 73

32 Bevor es losgeht... Vor- und Nachbereitung der Vorlesungen Unbedingt am Übungsbetrieb teilnehmen und Aufgaben bearbeiten! Von den Teilnehmern, die 50% der Übungspunkte erreichen, bestehen nahezu 100% auch die Klausur! Teamarbeit vs. Einzelkämpfer Studieren lernen der richtige Umgang mit den Freiheiten Meine Sprechstunde: Montags 14:00 16:00 Uhr. Oder versuchen Sie es auf gut Glück (Raum 115). Helfen Sie uns durch ihre Fragen, Kommentare und Antworten! Die Veranstaltung kann nur durch Interaktion interessant werden. Einführung Organisatorisches 13 / 73

33 Weitere Links und nützliche Informationen Im treffen Sie ihre KommilitonInnen. Ingo-Wegener Lernzentrum Frau Düffel hilft mit Rat in allen Lebenslagen, nicht nur bei Fragen zu Datenstrukturen. Informationen nur für Erstsemester: Einführung Organisatorisches 14 / 73

34 Mathematische Grundlagen Mathematische Grundlagen 15 / 73

35 Vollständige Induktion Ziel: Zeige die Aussage A(n) für alle natürlichen Zahlen n n 0. Mathematische Grundlagen Vollständige Induktion 16 / 73

36 Vollständige Induktion Ziel: Zeige die Aussage A(n) für alle natürlichen Zahlen n n 0. Die Methode der vollständigen Induktion 1. Zeige im INDUKTIONSANFANG die Aussage A(n 0 ) und Mathematische Grundlagen Vollständige Induktion 16 / 73

37 Vollständige Induktion Ziel: Zeige die Aussage A(n) für alle natürlichen Zahlen n n 0. Die Methode der vollständigen Induktion 1. Zeige im INDUKTIONSANFANG die Aussage A(n 0 ) und 2. im INDUKTIONSSCHRITT die Implikation (A(n 0 ) A(n 0 + 1) A(n)) A(n + 1) für jede Zahl n mit n n 0. A(n 0 ) A(n 0 + 1) A(n) heißt Induktionsannahme. Mathematische Grundlagen Vollständige Induktion 16 / 73

38 Vollständige Induktion Ziel: Zeige die Aussage A(n) für alle natürlichen Zahlen n n 0. Die Methode der vollständigen Induktion 1. Zeige im INDUKTIONSANFANG die Aussage A(n 0 ) und 2. im INDUKTIONSSCHRITT die Implikation (A(n 0 ) A(n 0 + 1) A(n)) A(n + 1) für jede Zahl n mit n n 0. A(n 0 ) A(n 0 + 1) A(n) heißt Induktionsannahme. Häufig nimmt man nur die Aussage A(n) in der Induktionsannahme an. Beachte aber das folgende Beispiel der Fibonacci-Zahlen. Mathematische Grundlagen Vollständige Induktion 16 / 73

39 Die Summe der ersten n Zahlen n i = n = i=1 Mathematische Grundlagen Vollständige Induktion 17 / 73

40 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2. Mathematische Grundlagen Vollständige Induktion 17 / 73

41 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Mathematische Grundlagen Vollständige Induktion 17 / 73

42 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2. Vollständige Induktion nach n: Induktionsanfang für n = 1: Mathematische Grundlagen Vollständige Induktion 17 / 73

43 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2. Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 i=1 i = 1 Mathematische Grundlagen Vollständige Induktion 17 / 73

44 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2. Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

45 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2. Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

46 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 i=1 Induktionsschritt von n auf n + 1:. i = 1 und 1 (1+1) 2 = 1. Mathematische Grundlagen Vollständige Induktion 17 / 73

47 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2. Mathematische Grundlagen Vollständige Induktion 17 / 73

48 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 i=1 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i =. i = 1 und 1 (1+1) 2 = 1. Mathematische Grundlagen Vollständige Induktion 17 / 73

49 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n i=1 i + (n + 1) =. Mathematische Grundlagen Vollständige Induktion 17 / 73

50 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = 2. Mathematische Grundlagen Vollständige Induktion 17 / 73

51 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

52 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

53 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) 2 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

54 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

55 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis:. Mathematische Grundlagen Vollständige Induktion 17 / 73

56 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten:. Mathematische Grundlagen Vollständige Induktion 17 / 73

57 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n: Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte.. Mathematische Grundlagen Vollständige Induktion 17 / 73

58 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte. Wir müssen die Gitterpunkte unterhalb der Hauptdiagonale und auf der Hauptdiagonale zählen. Mathematische Grundlagen Vollständige Induktion 17 / 73

59 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte. Wir müssen die Gitterpunkte unterhalb der Hauptdiagonale und auf der Hauptdiagonale zählen. Die Hauptdiagonale besitzt n Gitterpunkte Mathematische Grundlagen Vollständige Induktion 17 / 73

60 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte. Wir müssen die Gitterpunkte unterhalb der Hauptdiagonale und auf der Hauptdiagonale zählen. Die Hauptdiagonale besitzt n Gitterpunkte und unterhalb der Hauptdiagonale befindet sich die Hälfte der verbleibenden n 2 n Gitterpunkte. Mathematische Grundlagen Vollständige Induktion 17 / 73

61 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte. Wir müssen die Gitterpunkte unterhalb der Hauptdiagonale und auf der Hauptdiagonale zählen. Die Hauptdiagonale besitzt n Gitterpunkte und unterhalb der Hauptdiagonale befindet sich die Hälfte der verbleibenden n 2 n Gitterpunkte. Also folgt n i=1 i = Mathematische Grundlagen Vollständige Induktion 17 / 73

62 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte. Wir müssen die Gitterpunkte unterhalb der Hauptdiagonale und auf der Hauptdiagonale zählen. Die Hauptdiagonale besitzt n Gitterpunkte und unterhalb der Hauptdiagonale befindet sich die Hälfte der verbleibenden n 2 n Gitterpunkte. Also folgt n i=1 i = n + Mathematische Grundlagen Vollständige Induktion 17 / 73

63 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte. Wir müssen die Gitterpunkte unterhalb der Hauptdiagonale und auf der Hauptdiagonale zählen. Die Hauptdiagonale besitzt n Gitterpunkte und unterhalb der Hauptdiagonale befindet sich die Hälfte der verbleibenden n 2 n Gitterpunkte. Also folgt n i=1 i = n + n2 n 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

64 Die Summe der ersten n Zahlen n i = n = i=1 n (n + 1) 2 Vollständige Induktion nach n:. Induktionsanfang für n = 1: 1 1 (1+1) i=1 i = 1 und = 1. 2 Induktionsschritt von n auf n + 1: Wir nehmen an, dass n i=1 i = n (n+1) gilt. 2 n+1 i=1 i = n n (n+1) i=1 i + (n + 1) = + (n + 1) = n (n+1)+2 (n+1) = 2 2 (n+2) (n+1) = (n+1) (n+2) und das war zu zeigen. 2 2 Ein direkter Beweis: Betrachte ein Gitter mit n Zeilen und n Spalten: n 2 Gitterpunkte. Wir müssen die Gitterpunkte unterhalb der Hauptdiagonale und auf der Hauptdiagonale zählen. Die Hauptdiagonale besitzt n Gitterpunkte und unterhalb der Hauptdiagonale befindet sich die Hälfte der verbleibenden n 2 n Gitterpunkte. Also folgt n i=1 i = n + n2 n = n (n+1). 2 2 Mathematische Grundlagen Vollständige Induktion 17 / 73

65 Karnickel (1/3) Ein Bauer züchtet Kaninchen. Jedes weibliche Kaninchen bringt im Alter von zwei Monaten ein weibliches Kaninchen zur Welt und danach jeden Monat ein weiteres. Wie groß ist die Anzahl fib(n) der weiblichen Kaninchen am Ende des n-ten Monats, wenn der Bauer mit einem neu geborenen weiblichen Kaninchen im ersten Monat startet? Mathematische Grundlagen Vollständige Induktion 18 / 73

66 Karnickel (1/3) Ein Bauer züchtet Kaninchen. Jedes weibliche Kaninchen bringt im Alter von zwei Monaten ein weibliches Kaninchen zur Welt und danach jeden Monat ein weiteres. Wie groß ist die Anzahl fib(n) der weiblichen Kaninchen am Ende des n-ten Monats, wenn der Bauer mit einem neu geborenen weiblichen Kaninchen im ersten Monat startet? Antwort: fib(n) ist rekursiv wie folgt definiert: Rekursionsanfang: fib(1) := Mathematische Grundlagen Vollständige Induktion 18 / 73

67 Karnickel (1/3) Ein Bauer züchtet Kaninchen. Jedes weibliche Kaninchen bringt im Alter von zwei Monaten ein weibliches Kaninchen zur Welt und danach jeden Monat ein weiteres. Wie groß ist die Anzahl fib(n) der weiblichen Kaninchen am Ende des n-ten Monats, wenn der Bauer mit einem neu geborenen weiblichen Kaninchen im ersten Monat startet? Antwort: fib(n) ist rekursiv wie folgt definiert: Rekursionsanfang: fib(1) := 1 und fib(2) := Mathematische Grundlagen Vollständige Induktion 18 / 73

68 Karnickel (1/3) Ein Bauer züchtet Kaninchen. Jedes weibliche Kaninchen bringt im Alter von zwei Monaten ein weibliches Kaninchen zur Welt und danach jeden Monat ein weiteres. Wie groß ist die Anzahl fib(n) der weiblichen Kaninchen am Ende des n-ten Monats, wenn der Bauer mit einem neu geborenen weiblichen Kaninchen im ersten Monat startet? Antwort: fib(n) ist rekursiv wie folgt definiert: Rekursionsanfang: fib(1) := 1 und fib(2) := 1, Rekursionsschritt: fib(n + 1) := Mathematische Grundlagen Vollständige Induktion 18 / 73

69 Karnickel (1/3) Ein Bauer züchtet Kaninchen. Jedes weibliche Kaninchen bringt im Alter von zwei Monaten ein weibliches Kaninchen zur Welt und danach jeden Monat ein weiteres. Wie groß ist die Anzahl fib(n) der weiblichen Kaninchen am Ende des n-ten Monats, wenn der Bauer mit einem neu geborenen weiblichen Kaninchen im ersten Monat startet? Antwort: fib(n) ist rekursiv wie folgt definiert: Rekursionsanfang: fib(1) := 1 und fib(2) := 1, Rekursionsschritt: fib(n + 1) := fib(n) + Mathematische Grundlagen Vollständige Induktion 18 / 73

70 Karnickel (1/3) Ein Bauer züchtet Kaninchen. Jedes weibliche Kaninchen bringt im Alter von zwei Monaten ein weibliches Kaninchen zur Welt und danach jeden Monat ein weiteres. Wie groß ist die Anzahl fib(n) der weiblichen Kaninchen am Ende des n-ten Monats, wenn der Bauer mit einem neu geborenen weiblichen Kaninchen im ersten Monat startet? Antwort: fib(n) ist rekursiv wie folgt definiert: Rekursionsanfang: fib(1) := 1 und fib(2) := 1, Rekursionsschritt: fib(n + 1) := fib(n) + fib(n 1) für alle n N mit n 2. Die Funktion fib wird Fibonacci-Folge a genannt, die Zahl fib(n) heißt n-te Fibonacci-Zahl. a Zu Ehren von Leonardo Fibonacci (13. Jh.), einem italienischen Mathematiker Mathematische Grundlagen Vollständige Induktion 18 / 73

71 Karnickel (2/3) Zur Erinnerung: Es ist fib(1) := 1 und fib(2) := 1 und fib(n + 1) := fib(n) + fib(n 1) f.a. n N mit n 2. Somit gilt: n fib(n) Mathematische Grundlagen Vollständige Induktion 19 / 73

72 Karnickel (2/3) Zur Erinnerung: Es ist fib(1) := 1 und fib(2) := 1 und fib(n + 1) := fib(n) + fib(n 1) f.a. n N mit n 2. Somit gilt: n fib(n) Wie stark wächst die Folge fib(n)? Zeige, fib(n) 2 n mit der erweiterten Induktionsannahme und n 0 = 1. Zeige 2 n/2 fib(n) gilt für n 6 mit der erweiterten Induktionsannahme und n 0 = 6. Mathematische Grundlagen Vollständige Induktion 19 / 73

73 Karnickel (3/3) Es gibt auch einen expliziten Ausdruck für die n-te Fibonacci-Zahl. F.a. n N >0 gilt nämlich: (( fib(n) = ) n ( ) n ) 5. 2 Man zeigt die Bemerkung durch vollständige Induktion nach n. Die zentrale Beobachtung: Sowohl wie auch erfüllen die quadratische Gleichung x 2 = x + 1. Mathematische Grundlagen Vollständige Induktion 20 / 73

74 Analyse rekursiver Programme Mathematische Grundlagen Rekursionsbäume 21 / 73

75 Rekursive Programme und ihre Rekursionsbäume Sei x eine Eingabe für ein rekursives Programm R( p) (mit den Parametern p). Wir führen einen Rekursionsbaum nach den folgenden Regeln ein. 1. Beschrifte die Wurzel von B mit den Parametern p des Erstaufrufs. Innerhalb von R( p) keine rekursiven Aufrufe getätigt Wurzel wird zu Blatt. Sonst: Wurzel erhält Kind für jeden rekursiven Aufruf innerhalb von R( p). Kind wird mit Parametern des rekursiven Aufrufs beschriftet. Mathematische Grundlagen Rekursionsbäume 22 / 73

76 Rekursive Programme und ihre Rekursionsbäume Sei x eine Eingabe für ein rekursives Programm R( p) (mit den Parametern p). Wir führen einen Rekursionsbaum nach den folgenden Regeln ein. 1. Beschrifte die Wurzel von B mit den Parametern p des Erstaufrufs. Innerhalb von R( p) keine rekursiven Aufrufe getätigt Wurzel wird zu Blatt. Sonst: Wurzel erhält Kind für jeden rekursiven Aufruf innerhalb von R( p). Kind wird mit Parametern des rekursiven Aufrufs beschriftet. 2. Behandle Knoten v von B, beschriftet mit Parametern q, genau wie Wurzel. Innerhalb von R( q) keine rekursiven Aufrufe getätigt v wird zu Blatt. Sonst: Knoten v erhält Kind für jeden rekursiven Aufruf in R( q). Kind wird mit Parametern des rekursiven Aufrufs beschriftet. Mathematische Grundlagen Rekursionsbäume 22 / 73

77 Rekursive Programme und ihre Rekursionsbäume Sei x eine Eingabe für ein rekursives Programm R( p) (mit den Parametern p). Wir führen einen Rekursionsbaum nach den folgenden Regeln ein. 1. Beschrifte die Wurzel von B mit den Parametern p des Erstaufrufs. Innerhalb von R( p) keine rekursiven Aufrufe getätigt Wurzel wird zu Blatt. Sonst: Wurzel erhält Kind für jeden rekursiven Aufruf innerhalb von R( p). Kind wird mit Parametern des rekursiven Aufrufs beschriftet. 2. Behandle Knoten v von B, beschriftet mit Parametern q, genau wie Wurzel. Innerhalb von R( q) keine rekursiven Aufrufe getätigt v wird zu Blatt. Sonst: Knoten v erhält Kind für jeden rekursiven Aufruf in R( q). Kind wird mit Parametern des rekursiven Aufrufs beschriftet. Was erzählt uns der Rekursionsbaum? Zum Beispiel ist die Anzahl der Knoten von B gleich der Anzahl aller rekursiven Aufrufe für Eingabe x (und Parameter p). Mathematische Grundlagen Rekursionsbäume 22 / 73

78 Eine Berechnung der Fibonacci-Zahlen auf die grausame Art Mathematische Grundlagen Rekursionsbäume 23 / 73

79 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Mathematische Grundlagen Rekursionsbäume 24 / 73

80 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = Mathematische Grundlagen Rekursionsbäume 24 / 73

81 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = Mathematische Grundlagen Rekursionsbäume 24 / 73

82 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = Mathematische Grundlagen Rekursionsbäume 24 / 73

83 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + Mathematische Grundlagen Rekursionsbäume 24 / 73

84 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + g(n 1) + Mathematische Grundlagen Rekursionsbäume 24 / 73

85 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + g(n 1) + g(n 2) + Mathematische Grundlagen Rekursionsbäume 24 / 73

86 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + g(n 1) + g(n 2) + 2 = Mathematische Grundlagen Rekursionsbäume 24 / 73

87 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + g(n 1) + g(n 2) + 2 = 5 + g(n 1) + g(n 2) Mathematische Grundlagen Rekursionsbäume 24 / 73

88 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + g(n 1) + g(n 2) + 2 = 5 + g(n 1) + g(n 2) Um Himmels willen, für n 6 ist g(n) Mathematische Grundlagen Rekursionsbäume 24 / 73

89 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + g(n 1) + g(n 2) + 2 = 5 + g(n 1) + g(n 2) Um Himmels willen, für n 6 ist g(n) fib(n) Mathematische Grundlagen Rekursionsbäume 24 / 73

90 Eine rekursive Berechnung der Fibonacci-Zahlen Algo(n): 1. Falls n = 1, dann return Algo(1) := Falls n = 2, dann return Algo(2) := Falls n 3, dann return Algo(n) := Algo(n 1) + Algo(n 2). Zähle jede Addition, jeden Vergleich, und jede Ergebnis-Rückgabe als einen Schritt. Für die Anzahl g(n) benötigter Schritte gilt: g(1) = 2, g(2) = 3 und g(n) = 3 + g(n 1) + g(n 2) + 2 = 5 + g(n 1) + g(n 2) Um Himmels willen, für n 6 ist g(n) fib(n) 2 n/2, die Laufzeit ist exponentiell Das geht doch viel, viel schneller, oder!?! Mathematische Grundlagen Rekursionsbäume 24 / 73

91 Der Rekursionsbaum (1/2) Die Rekursionsbäume B n für Algo(n) sind rekursiv definiert: - Rekursionsanfang: Die Bäume B 1 und B 2 bestehen nur aus einem einzigen Knoten der jeweils mit 1, bzw. 2 markiert ist. Mathematische Grundlagen Rekursionsbäume 25 / 73

92 Der Rekursionsbaum (1/2) Die Rekursionsbäume B n für Algo(n) sind rekursiv definiert: - Rekursionsanfang: Die Bäume B 1 und B 2 bestehen nur aus einem einzigen Knoten der jeweils mit 1, bzw. 2 markiert ist. - Rekursionsschritt: Die Wurzel r von B n ist mit n markiert, die Wurzel von B n 2 ist linkes Kind von r und die Wurzel von B n 1 rechtes Kind von r. n n 2 n 1 B n 2 n 3 n 2 B n 3 B n 2 Abbildung : Die rekursive Definition des Baums B n Mathematische Grundlagen Rekursionsbäume 25 / 73

93 Der Rekursionsbaum (2/2) Abbildung : Die Fibonacci-Bäume B 1, B 2, B 3, B 4, B 5 und B Die Wurzel von B n berechnet die n-te Fibonacci-Zahl. 2. Die Fibonacci-Zahl fib(4) wird 2-mal in B 6 berechnet, fib(3) wird 3-mal berechnet. Mathematische Grundlagen Rekursionsbäume 26 / 73

94 Der Rekursionsbaum (2/2) Abbildung : Die Fibonacci-Bäume B 1, B 2, B 3, B 4, B 5 und B Die Wurzel von B n berechnet die n-te Fibonacci-Zahl. 2. Die Fibonacci-Zahl fib(4) wird 2-mal in B 6 berechnet, fib(3) wird 3-mal berechnet. WARUM? Und Mathematische wie berechnet Grundlagen man B pfeilschnell? Rekursionsbäume 26 / 73

95 Binärsuche Mathematische Grundlagen Rekursionsbäume 27 / 73

96 Binärsuche Ein Array von n Zahlen und eine Zahl A = (A[1],..., A[n]) ist gegeben: Wir möchten wissen, ob und wenn ja wo die Zahl x in A vorkommt. x Mathematische Grundlagen Rekursionsbäume 28 / 73

97 Binärsuche Ein Array von n Zahlen und eine Zahl A = (A[1],..., A[n]) ist gegeben: Wir möchten wissen, ob und wenn ja wo die Zahl x in A vorkommt. x Wenn A nicht sortiert ist, dann wird die lineare Suche bis zu n Zellen des Arrays inspizieren. Wenn das Array aber aufsteigend sortiert ist, dann können wir Binärsuche anwenden. Mathematische Grundlagen Rekursionsbäume 28 / 73

98 Binärsuche: Das Programm void Binärsuche( int unten, int oben){ if (oben < unten) std::cout «x «wurde nicht gefunden. «std::endl; Mathematische Grundlagen Rekursionsbäume 29 / 73

99 Binärsuche: Das Programm void Binärsuche( int unten, int oben){ if (oben < unten) std::cout «x «wurde nicht gefunden. «std::endl; int mitte = (unten+oben)/2; if (A[mitte] == x) std::cout «x «wurde in Position «mitte «gefunden. «std::endl; Mathematische Grundlagen Rekursionsbäume 29 / 73

100 Binärsuche: Das Programm void Binärsuche( int unten, int oben){ if (oben < unten) std::cout «x «wurde nicht gefunden. «std::endl; int mitte = (unten+oben)/2; if (A[mitte] == x) std::cout «x «wurde in Position «mitte «gefunden. «std::endl; else { if (x < A[mitte]) Binärsuche(unten, mitte-1); else Binärsuche(mitte+1,oben);}} Wir sagen, dass Zelle im ersten Aufruf inspiziert wird. A[mitte] Mathematische Grundlagen Rekursionsbäume 29 / 73

101 Binärsuche: Korrektheit Wir zeigen durch vollständige Induktion nach n = oben unten + 1, dass Binärsuche(unten,oben) korrekt ist. (a) INDUKTIONSANFANG für n = 0: Mathematische Grundlagen Rekursionsbäume 30 / 73

102 Binärsuche: Korrektheit Wir zeigen durch vollständige Induktion nach n = oben unten + 1, dass Binärsuche(unten,oben) korrekt ist. (a) INDUKTIONSANFANG für n = 0: Es ist n = oben unten + 1 = 0 oben < unten. Binärsuche(unten, oben) bricht mit der Antwort x wurde nicht gefunden ab. Mathematische Grundlagen Rekursionsbäume 30 / 73

103 Binärsuche: Korrektheit Wir zeigen durch vollständige Induktion nach n = oben unten + 1, dass Binärsuche(unten,oben) korrekt ist. (a) INDUKTIONSANFANG für n = 0: Es ist n = oben unten + 1 = 0 oben < unten. Binärsuche(unten, oben) bricht mit der Antwort x wurde nicht gefunden ab. (b) INDUKTIONSSCHRITT n n + 1: Es ist oben unten + 1 = n + 1. Mathematische Grundlagen Rekursionsbäume 30 / 73

104 Binärsuche: Korrektheit Wir zeigen durch vollständige Induktion nach n = oben unten + 1, dass Binärsuche(unten,oben) korrekt ist. (a) INDUKTIONSANFANG für n = 0: Es ist n = oben unten + 1 = 0 oben < unten. Binärsuche(unten, oben) bricht mit der Antwort x wurde nicht gefunden ab. (b) INDUKTIONSSCHRITT n n + 1: Es ist oben unten + 1 = n + 1. Wenn A(mitte) = x, dann Mathematische Grundlagen Rekursionsbäume 30 / 73

105 Binärsuche: Korrektheit Wir zeigen durch vollständige Induktion nach n = oben unten + 1, dass Binärsuche(unten,oben) korrekt ist. (a) INDUKTIONSANFANG für n = 0: Es ist n = oben unten + 1 = 0 oben < unten. Binärsuche(unten, oben) bricht mit der Antwort x wurde nicht gefunden ab. (b) INDUKTIONSSCHRITT n n + 1: Es ist oben unten + 1 = n + 1. Wenn A(mitte) = x, dann wird mit Erfolgsmeldung abgebrochen. Ansonsten, wenn x < A[mitte], Mathematische Grundlagen Rekursionsbäume 30 / 73

106 Binärsuche: Korrektheit Wir zeigen durch vollständige Induktion nach n = oben unten + 1, dass Binärsuche(unten,oben) korrekt ist. (a) INDUKTIONSANFANG für n = 0: Es ist n = oben unten + 1 = 0 oben < unten. Binärsuche(unten, oben) bricht mit der Antwort x wurde nicht gefunden ab. (b) INDUKTIONSSCHRITT n n + 1: Es ist oben unten + 1 = n + 1. Wenn A(mitte) = x, dann wird mit Erfolgsmeldung abgebrochen. Ansonsten, wenn x < A[mitte], sucht Binärsuche richtigerweise in der linken Hälfte und sonst in der rechten Hälfte. Die rekursive Suche in der linken bzw. rechten Hälfte verläuft aber nach Induktionsannahme korrekt. Mathematische Grundlagen Rekursionsbäume 30 / 73

107 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := Mathematische Grundlagen Rekursionsbäume 31 / 73

108 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := Mathematische Grundlagen Rekursionsbäume 31 / 73

109 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := T ( n 1 2 ) + 1. Mathematische Grundlagen Rekursionsbäume 31 / 73

110 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := T ( n 1 2 ) Wir haben n = 2 k 1 gefordert. Beachte, dass n 1 2 = 2k 2 2 = 2 k 1 1 gilt. 2. Wir zeigen T (2 k 1) = Mathematische Grundlagen Rekursionsbäume 31 / 73

111 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := T ( n 1 2 ) Wir haben n = 2 k 1 gefordert. Beachte, dass n 1 2 = 2k 2 2 = 2 k 1 1 gilt. 2. Wir zeigen T (2 k 1) = k mit vollständiger Induktion nach k. (a) INDUKTIONSANFANG: T (2 0 1) = T (0) = 0. Mathematische Grundlagen Rekursionsbäume 31 / 73

112 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := T ( n 1 2 ) Wir haben n = 2 k 1 gefordert. Beachte, dass n 1 2 = 2k 2 2 = 2 k 1 1 gilt. 2. Wir zeigen T (2 k 1) = k mit vollständiger Induktion nach k. (a) INDUKTIONSANFANG: T (2 0 1) = T (0) = 0. (b) INDUKTIONSSCHRITT: T (2 k+1 1) = Mathematische Grundlagen Rekursionsbäume 31 / 73

113 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := T ( n 1 2 ) Wir haben n = 2 k 1 gefordert. Beachte, dass n 1 2 = 2k 2 2 = 2 k 1 1 gilt. 2. Wir zeigen T (2 k 1) = k mit vollständiger Induktion nach k. (a) INDUKTIONSANFANG: T (2 0 1) = T (0) = 0. (b) INDUKTIONSSCHRITT: T (2 k+1 1) = T (2 k 1) + 1 Mathematische Grundlagen Rekursionsbäume 31 / 73

114 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := T ( n 1 2 ) Wir haben n = 2 k 1 gefordert. Beachte, dass n 1 2 = 2k 2 2 = 2 k 1 1 gilt. 2. Wir zeigen T (2 k 1) = k mit vollständiger Induktion nach k. (a) INDUKTIONSANFANG: T (2 0 1) = T (0) = 0. (b) INDUKTIONSSCHRITT: T (2 k+1 1) = T (2 k 1) + 1 Induktionsannahme = k + 1. Mathematische Grundlagen Rekursionsbäume 31 / 73

115 Binärsuche: Die Laufzeit Wie groß ist T (n) := maximale Anzahl inspizierter Zellen für ein Array mit n Zellen, für n = 2 k 1? Hier ist eine rekursive Definition von T (n): - Rekursionsanfang: T (0) := 0. - Rekursionsschritt: T (n) := T ( n 1 2 ) Wir haben n = 2 k 1 gefordert. Beachte, dass n 1 2 = 2k 2 2 = 2 k 1 1 gilt. 2. Wir zeigen T (2 k 1) = k mit vollständiger Induktion nach k. (a) INDUKTIONSANFANG: T (2 0 1) = T (0) = 0. (b) INDUKTIONSSCHRITT: T (2 k+1 1) = T (2 k 1) + 1 Induktionsannahme = k + 1. Binärsuche muss höchstens k Zahlen inspizieren gegenüber 2 k 1 Zahlen für die lineare Suche: Die lineare Suche ist exponentiell langsamer als Binärsuche. Mathematische Grundlagen Rekursionsbäume 31 / 73

116 Binärsuche: Der Rekursionsbaum Wie sieht der Rekursionsbaum B für ein Array A und einen Schlüssel y aus, der nicht in A vorkommt? Mathematische Grundlagen Rekursionsbäume 32 / 73

117 Binärsuche: Der Rekursionsbaum Wie sieht der Rekursionsbaum B für ein Array A und einen Schlüssel y aus, der nicht in A vorkommt? 1. Der Rekursionsbaum B besitzt den Aus-Grad Eins: Ein Knoten von B ist entweder ein Blatt oder verursacht genau einen rekursiven Aufruf. Mathematische Grundlagen Rekursionsbäume 32 / 73

118 Binärsuche: Der Rekursionsbaum Wie sieht der Rekursionsbaum B für ein Array A und einen Schlüssel y aus, der nicht in A vorkommt? 1. Der Rekursionsbaum B besitzt den Aus-Grad Eins: Ein Knoten von B ist entweder ein Blatt oder verursacht genau einen rekursiven Aufruf. 2. Das Array A besitze genau n = 2 k 1 Schlüssel. Wir wissen: Im schlimmsten Fall werden genau k Zellen inspiziert. y kommt nicht in A vor: Der schlimmste Fall tritt ein. Mathematische Grundlagen Rekursionsbäume 32 / 73

119 Binärsuche: Der Rekursionsbaum Wie sieht der Rekursionsbaum B für ein Array A und einen Schlüssel y aus, der nicht in A vorkommt? 1. Der Rekursionsbaum B besitzt den Aus-Grad Eins: Ein Knoten von B ist entweder ein Blatt oder verursacht genau einen rekursiven Aufruf. 2. Das Array A besitze genau n = 2 k 1 Schlüssel. Wir wissen: Im schlimmsten Fall werden genau k Zellen inspiziert. y kommt nicht in A vor: Der schlimmste Fall tritt ein. In jedem rekursiven Aufruf wird nur eine Zelle des Arrays inspiziert: Der Rekursionsbaum B ist also ein Weg der Länge k. Mathematische Grundlagen Rekursionsbäume 32 / 73

120 Binärsuche: Der Rekursionsbaum Wie sieht der Rekursionsbaum B für ein Array A und einen Schlüssel y aus, der nicht in A vorkommt? 1. Der Rekursionsbaum B besitzt den Aus-Grad Eins: Ein Knoten von B ist entweder ein Blatt oder verursacht genau einen rekursiven Aufruf. 2. Das Array A besitze genau n = 2 k 1 Schlüssel. Wir wissen: Im schlimmsten Fall werden genau k Zellen inspiziert. y kommt nicht in A vor: Der schlimmste Fall tritt ein. In jedem rekursiven Aufruf wird nur eine Zelle des Arrays inspiziert: Der Rekursionsbaum B ist also ein Weg der Länge k. Binärsuche ist schnell, weil stets höchstens ein rekursiver Aufruf getätigt wird und weil die Länge des Array-Abschnitts in dem gesucht wird, mindestens halbiert wird. Mathematische Grundlagen Rekursionsbäume 32 / 73

121 Unser Freund, der Logarithmus Mathematische Grundlagen Rechnen mit Logarithmen 33 / 73

122 Rechnen mit Logarithmen Seien a > 1 und x > 0 reelle Zahlen. log a (x) ist der Logarithmus von x zur Basis a und stimmt mit z genau dann überein, wenn Mathematische Grundlagen Rechnen mit Logarithmen 34 / 73

123 Rechnen mit Logarithmen Seien a > 1 und x > 0 reelle Zahlen. log a (x) ist der Logarithmus von x zur Basis a und stimmt mit z genau dann überein, wenn a z = x. Mathematische Grundlagen Rechnen mit Logarithmen 34 / 73

Datenstrukturen 1. Herzlich willkommen!

Datenstrukturen 1. Herzlich willkommen! Datenstrukturen 1 Sommersemester 2017 Herzlich willkommen! 1 Basierend auf Folien von Prof. Georg Schnitger, Prof. Ulrich Meyer, Dr. Iganz Rutter 1 / 73 Wer ist wer? Wir: Martin Hoefer (Vorlesungen) R

Mehr

Datenstrukturen. Sommersemester Herzlich willkommen!!!!!

Datenstrukturen. Sommersemester Herzlich willkommen!!!!! Datenstrukturen Sommersemester 2015 Herzlich willkommen!!!!! 1 / 77 Worum geht s? Einführung 2 / 77 Abstrakte Datentypen und Datenstrukturen Ein abstrakten Datentyp ist eine Sammlung von Operationen (auf

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Datenstrukturen Mariano Zelke Datenstrukturen 2/21 Herausforderungen für Google: Systematisches Durchsuchen von Milliarden von Websites Pflegen eines invertierten

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

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

Viel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-)

Viel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-) Datenstrukturen (DS) Sommersemester 2015 Prof. Dr. Georg Schnitger Dipl-Inf. Bert Besser Hannes Seiwert, M.Sc. Institut für Informatik AG Theoretische Informatik Übung 0 Ausgabe: 14.04.2015 Abgabe: - Wenn

Mehr

Vorsemesterkurs Informatik. Sommersemester 2013

Vorsemesterkurs Informatik. Sommersemester 2013 Vorsemesterkurs Informatik Sommersemester 2013 Stand der Folien: 3. April 2013 Personen Organisation: Ronja Düffel (Ingo Wegener-Lernzentrum) Vorlesung: Teil 1: Conrad Rau und Dr. David Sabel (Lehrstuhl

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Marc Bux, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft RUD

Mehr

Skript zur Vorlesung Datenstrukturen. Prof. Dr. Georg Schnitger

Skript zur Vorlesung Datenstrukturen. Prof. Dr. Georg Schnitger Skript zur Vorlesung Datenstrukturen Prof. Dr. Georg Schnitger SS 2015 Hinweise auf Fehler und Anregungen zum Skript bitte an besser@thi.informatik.uni-frankfurt.de oder seiwert@thi.informatik.uni-frankfurt.de

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

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

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

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

5.5 Prioritätswarteschlangen

5.5 Prioritätswarteschlangen 5.5 Prioritätswarteschlangen LIFO- und FIFO-Warteschlangen entfernen Werte aus der Warteschlange in Abhängigkeit davon, wann sie in diese eingefügt wurden Prioritätswartschlangen interpretieren die Werte

Mehr

Abschnitt 7: Komplexität von imperativen Programmen

Abschnitt 7: Komplexität von imperativen Programmen Abschnitt 7: Komplexität von imperativen Programmen 7. Komplexität von imperativen Programmen 7 Komplexität von imperativen Programmen Einf. Progr. (WS 08/09) 399 Ressourcenbedarf von Algorithmen Algorithmen

Mehr

Herzlich willkommen!!!

Herzlich willkommen!!! Theoretische Informatik 2 Sommersemester 2015 Prof. Dr. Georg Schnitger AG Theoretische Informatik Goethe-Universität Frankfurt am Main Herzlich willkommen!!! 1 / 19 Kapitel 1: Einführung Einführung 2

Mehr

Skript zur Vorlesung Datenstrukturen. Prof. Dr. Georg Schnitger

Skript zur Vorlesung Datenstrukturen. Prof. Dr. Georg Schnitger Skript zur Vorlesung Datenstrukturen Prof. Dr. Georg Schnitger SS 2015 Hinweise auf Fehler und Anregungen zum Skript bitte an besser@thi.informatik.uni-frankfurt.de oder seiwert@thi.informatik.uni-frankfurt.de

Mehr

Bäume und Wälder. Bäume und Wälder 1 / 37

Bäume und Wälder. Bäume und Wälder 1 / 37 Bäume und Wälder Bäume und Wälder 1 / 37 Bäume Ein (ungerichteter) Baum ist ein ungerichteter Graph G = (V, E), der zusammenhängend ist und keine Kreise enthält. Diese Graphen sind Bäume: Diese aber nicht:

Mehr

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27 Datenstrukturen: Mathematische Grundlagen 26. Juli 2015 1 / 27 Asymptotik Die Groß-Oh Notation: f = O(g) Es gibt eine positive Konstante c > 0 und eine natürliche Zahl n 0 N, so dass f (n) c g(n) für alle

Mehr

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2015 Marc Bux, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Ulf Leser RUD 26, 0 115 Mittwoch 11 13 Uhr Ulf Leser RUD 26,

Mehr

Informatik 1 (WS 2018/2019)

Informatik 1 (WS 2018/2019) Informatik 1 (WS 2018/2019) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen: HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Die Landau-Notation (Wiederholung und Vertiefung) 2. Vorbereitung Aufgabenblatt 1, Aufgabe 1

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 119 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 120 Das Suchproblem Gegeben

Mehr

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge

Mehr

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 2, Donnerstag 31.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 2, Donnerstag 31. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 2, Donnerstag 31. Oktober 2013 (Laufzeitanalyse MinSort / HeapSort, Induktion) Junior-Prof.

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

Mehr

Lösungsvorschlag Serie 2 Rekursion

Lösungsvorschlag Serie 2 Rekursion (/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.

Mehr

Informatik II: Algorithmen und Datenstrukturen SS 2013

Informatik II: Algorithmen und Datenstrukturen SS 2013 Informatik II: Algorithmen und Datenstrukturen SS 2013 Vorlesung 1a, Dienstag, 16. April 2013 (Organisatorisches, Programmierumgebung, Sortieren) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen

Mehr

Induktion und Rekursion

Induktion und Rekursion Induktion und Rekursion Induktion und Rekursion Vorkurs Informatik Theoretischer Teil WS 013/14. Oktober 013 Vorkurs Informatik WS 013/14 1/1 Vollständige Induktion Vorkurs Informatik WS 013/14 /1 Ziel

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

Algorithmen I - Tutorium 28 Nr. 1

Algorithmen I - Tutorium 28 Nr. 1 Algorithmen I - Tutorium 28 Nr. 1 04.05.2017: Spaß mit O-Kalkül, Schleifeninvarianten, Laufzeit Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn

Mehr

Ein Axiom ist eine Aussage, die als wahr gefordert wird. Zum Beispiel fordert man in der Zahlentheorie das Distributivgesetz

Ein Axiom ist eine Aussage, die als wahr gefordert wird. Zum Beispiel fordert man in der Zahlentheorie das Distributivgesetz Beweise: Warum? Eine formale Aussage, wie z.b. ein mathematischer Satz, besteht aus Voraussetzungen und einer Behauptung. Wie stellt man sicher, dass die Behauptung immer dann wahr ist, wenn alle Voraussetzungen

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

Asymptotik und Laufzeitanalyse

Asymptotik und Laufzeitanalyse und Vorkurs Informatik SoSe13 08. April 2013 und Algorithmen = Rechenvorschriften Wir fragen uns: Ist der Algorithmus effizient? welcher Algorithmus löst das Problem schneller? wie lange braucht der Algorithmus

Mehr

Übersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4)

Übersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4) Datenstrukturen und Algorithmen Vorlesung 3: (K4) 1 e für rekursive Algorithmen Prof. Dr. Erika Ábrahám 2 Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/

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

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Kurs 1663 Datenstrukturen Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom 15.08.98 Seite 1 Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. August 1998 Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen und Algorithmen 2. Klausur SS 2001 UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 1 (29.4.2014) Organisation, Übungen, Sortieren I Algorithmen und Komplexität Allgemeines Thema der Vorlesung Letztes Semester haben Sie (die

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2015/16 2. Vorlesung Sortieren mit anderen Mitteln Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-11 Teile und herrsche Idee: teile den Kartenstapel

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum

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

Übungen zu Algorithmentechnik WS 09/10

Übungen zu Algorithmentechnik WS 09/10 Übungen zu Algorithmentechnik WS 09/10 1. Kurzsitzung Thomas Pajor 22. Oktober 2009 1/ 25 Eure Übungsleiter Tanja Hartmann t.hartmann@kit.edu Raum 306, Gebäude 50.34 Thomas Pajor pajor@kit.edu Raum 322,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 2. Vorlesung Sortieren mit anderen Mitteln Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-1 Teile und herrsche Idee: teile den Kartenstapel

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.

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

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

Übung zur Vorlesung Diskrete Strukturen I

Übung zur Vorlesung Diskrete Strukturen I Technische Universität München WS 00/0 Institut für Informatik Aufgabenblatt 10 Prof. Dr. J. Csirik 7. Januar 00 randt & Stein Übung zur Vorlesung Diskrete Strukturen I Abgabetermin: Tutorübungen am 16.

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

A1.1 Organisatorisches

A1.1 Organisatorisches Algorithmen und Datenstrukturen 28. Februar 2018 A1. Organisatorisches Algorithmen und Datenstrukturen A1. Organisatorisches A1.1 Organisatorisches Marcel Lüthi and Gabriele Röger Universität Basel A1.2

Mehr

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen A1. Organisatorisches Marcel Lüthi and Gabriele Röger Universität Basel 28. Februar 2018 Organisatorisches Personen: Dozenten Marcel Lüthi Gabriele Röger Dozenten Dr. Marcel

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität Minimaler Spannbaum Gegeben: Zus. hängender,

Mehr

Algorithmische Spieltheorie

Algorithmische Spieltheorie Algorithmische Spieltheorie Martin Hoefer Sommer 2017 1 / 8 Worum gehts? Dynamische Systeme mit rationalen Nutzern und Interaktion, z.b. Rationales Verhalten, Anreize und Stabilität bei Ressourcennutzung

Mehr

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik Humboldt-Universität zu Berlin Berlin, den 15.06.2015 Institut für Informatik Prof. Dr. Ulf Leser Übungen zur Vorlesung M. Bux, B. Grußien, J. Sürmeli, S. Wandelt Algorithmen und Datenstrukturen Übungsblatt

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

Induktion und Rekursion

Induktion und Rekursion Induktion und Rekursion Induktion und Rekursion Sommersemester 2018 Ronja Düffel 16. März 2018 Induktion und Rekursion > Mathematische Beweistechniken > Vollständige Induktion Der kleine Gauß Induktion

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

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

... sind (wohldefinierte, endliche) Folgen von Anweisungen, die aus einer Eingabe eine Ausgabe produzieren. Algorithmus.

... sind (wohldefinierte, endliche) Folgen von Anweisungen, die aus einer Eingabe eine Ausgabe produzieren. Algorithmus. 3-4 Algorithmen...... sind (wohldefinierte, endliche) Folgen von Anweisungen, die aus einer Eingabe eine Ausgabe produzieren. Algorithmus Eingabe Ausgabe Beispiele: Kochrezepte Algorithmen zur Verknüpfung

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

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

VL-04: Rekursionsgleichungen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

VL-04: Rekursionsgleichungen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger VL-04: Rekursionsgleichungen (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger SS 2017, RWTH DSAL/SS 2017 VL-04: Rekursionsgleichungen 1/37 Organisatorisches Vorlesung: Gerhard Woeginger (Zimmer

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

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an. 2.5 Suchen Eine Menge S will nach einem Element durchsucht werden. Die Menge S ist statisch und S = n. S ist Teilmenge eines Universums auf dem eine lineare Ordnung definiert ist und soll so gespeichert

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 2008 8. April 2008 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 011 Übungsblatt 30. Mai 011 Grundlagen: Algorithmen und Datenstrukturen

Mehr

Zunächst ein paar einfache "Rechen"-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt:

Zunächst ein paar einfache Rechen-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt: Der Groß-O-Kalkül Zunächst ein paar einfache "Rechen"-Regeln: G. Zachmann Informatik 1 - WS 05/06 Komplexität 22 Additionsregel Lemma, Teil 1: Für beliebige Funktionen f und g gilt: Zu beweisen: nur das

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1 Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Lehrstuhl für Informatik I Algorithmen und Datenstrukturen Wintersemester 2015/16 Organisatorisches Vorlesung: Übungsbetreuung: Übungen: Alexander Wolff (E29) Krzysztof Fleszar (E16) Anna Aumann Johannes

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

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 Jeremias Weihmann Sommersemester 2014 Übungsblatt 2 28. April 2014 Grundlagen: Algorithmen und

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

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem & Grundlagen Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem & Frank Heitmann heitmann@informatik.uni-hamburg.de 25. November 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen I Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Algorithmus..................................... 2 Problem

Mehr