SS10 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel

Größe: px
Ab Seite anzeigen:

Download "SS10 Algorithmen und Datenstrukturen Vorbemerkungen und 1. Kapitel"

Transkript

1 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! Folienkopien, Übungsblätter auf der folgenden Webseite: Zugang auch über die Fachgebietsseite. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel 0+1 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Zur Arbeitsweise: Der Stoff ist zu kompliziert und zu umfangreich, um durch reines Zuhören verstanden zu werden. Regelmäßig Vorlesung nacharbeiten. Semesterbegleitend! Begleitend Bücher ansehen. Übungsblätter drucken, lesen, zur Übung mitbringen, vorher Lösung ausdenken, Lösungsweg aufschreiben, an Lösungen mitarbeiten, Lösungen vortragen. Regelmäßig Übungen nacharbeiten. Semesterbegleitend! Bei Verständnisproblemen frühzeitig fragen! Prüfungsstoff: Vorlesung + Übungsaufgaben. Prüfung: Klausur (90 Minuten). 90 Punkte. 15 Bonuspunkte über Zwischenklausur (31.05., 30 Minuten). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel 0+1 3

2 Übung Dr. Lucia Draque Penso Mittwoch 9:00 10:30 Sr HU 117 Beginn: Donnerstag 9:00 10:30 Sr HU 013 Beginn: Freitag 13:00 14:30 Sr K 2035 Beginn: Übungsblätter (im Netz) Übung vor- und nachbereiten! Grundlagen, Voraussetzungen Prof. Günter Schäfer, Algorithmen und Programmierung für Informatiker, WS 2009/10 Wird vorausgesetzt! G. Saake, K. U. Sattler. Algorithmen und Datenstrukturen - Eine Einführung mit Java. dpunkt.verlag, 3. Auflage, Prof. D. Rautenbach: Grundlagen und diskrete Strukturen, Vorlesung, WS 2009/10 Wird vorausgesetzt! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Literatur R. H. Güting, S. Dieker, Datenstrukturen und Algorithmen, 2. Auflage, Teubner T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag, 4. Auflage, T. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms, Second Edition, MIT Press (Auch auf deutsch erhältlich.) K. Mehlhorn, P. Sanders, Algorithms and Data Structures: The Basic Toolbox, Springer-Verlag, 2008 R. Sedgewick, Algorithms, Addison-Wesley, 2002 (auch C-, C++, Java-Versionen, auch auf deutsch bei Pearson) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel 0+1 7

3 Listen, Stacks, Queues Datenstrukturen! Kapitel 1 Einführung und Grundlagen Einfache Suchbäume Balancierte Suchbäume Hashtabellen implementieren Wörterbücher Heaps implementieren Vorrangswarteschlangen (Priority Queues) Union-Find-Strukturen Datenstrukturen für Graphen FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Graph: 1 2 Spezifikation des Verhaltens von Datenstrukturen (vereinfacht): 6 3 (Abstrakte) Datentypen 5 4 Digraph / gerichteter Graph: 1 2 Syntax: Signatur Semantik: Mathematisches Modell (Axiomatisch: Logische Strukturen ) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

4 Algorithmen! Aufgabe: Für jede beliebige gegebene Folge a 1,a 2,...,a n von natürlichen / ganzen / reellen Zahlen von Objekten aus einem total geordneten Bereich (U, <) Z.B.: Zahlentupel, Strings (Zeichenreihen), mit Namen versehene Datensätze, usw. sortiere a 1,a 2,...,a n in aufsteigende Reihenfolge. Vorher: (5, 2, 9, 3, 6, 5, 8) Nachher: (2, 3, 5, 5, 6, 8, 9) Sortieren durch Einfügen (Insertion Sort) Eingabe (a 1,...,a n ) in Array (Feld) A[1..n] Idee: Für i =2, 3,...,n: Suche die Stelle in der sortierten Version von a 1,...,a i 1, an die a i gehört, und füge a i dort ein. Pseudocode: Algorithmus Straight Insertion Sort (1) for i from 2 to n do (2) x A[i].key ; (3) j i-1 ; (4) while j 1 and x < A[j].key do (5) A[j+1] A[j] ; (6) j j-1 ; (7) A[j+1] x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Was ist ein Algorithmus? Erklärung: Ein Algorithmus A ist eine durch einen endlichen Text gegebene Verarbeitungsvorschrift, die zu jeder gegebenen Eingabe x aus einer Menge I (Menge der möglichen Eingaben) eindeutig eine Reihe von auszuführenden Schritten vorschreibt. Wenn nach endlich vielen Schritten diese Ausführung anhält, wird ein Ergebnis A(x) ausgegeben. Mögliche Formen: Umgangssprache, Pseudocode, Programm in Programmiersprache, Programm für formales Maschinenmodell, Programm in Maschinensprache. Allgemeine Merkmale eines Algorithmus Endlicher Text Ein Algorithmus für eine große (oft: unendliche!) Menge von Eingaben x (Beachte: Zeitliche Trennung der Formulierung des Algorithmus/der Programmierung und der Anwendung auf eine Eingabe.) Eindeutig vorgeschriebene Abfolge von Schritten, wenn Eingabe x vorliegt Wenn Verarbeitung anhält: Ausgabe ablesbar Nicht verlangt: Terminierung auf allen x I. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

5 Erweiterungen des Algorithmusbegriffs Online-Algorithmen: Die Eingabe wird nicht am Anfang der Berechnung, sondern nach und nach zur Verfügung gestellt Häufige Situation bei Datenstrukturen Standard bei Betriebssystemen, Systemprogrammen, Anwendungsprogrammen mit Benutzerdialog usw. Randomisierung: Algorithmus führt Zufallsexperimente durch Verteilte Algorithmen : Mehrere Rechner arbeiten zusammen, kommunizieren, zeitliche Abfolge nicht vorhersagbar in dieser Vorlesung nicht oder nur am Rande diskutiert Algorithmen in dieser Vorlesung: Darstellung von Algorithmen, Bausteine für Algorithmen (besonders Iteration, Rekursion) Analyse 1: Korrektheit von Algorithmen, Induktionsbeweise für iterative und rekursive Verfahren Analyse 2: Laufzeitbegriff, O-Notation, Laufzeitanalyse Algorithmen zur Implementierung von Datentypen Balancierte Suchbäume, einfache Hashverfahren Sortierverfahren (Quicksort, Heapsort, Mergesort, CountingSort), Medianbestimmung FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Grundbegriffe der Graphentheorie Grundlegende Algorithmen für Graphen: Breitensuche, Tiefensuche, Zusammenhangskomponenten, Entdecken von Kreisen, minimale Spannbäume Algorithmus Straight Insertion Sort (Pseudocode) (1) for i from 2 to n do (2) x A[i] ; (3) j i-1 ; (4) while j 1 and x.key < A[j].key do (5) A[j+1] A[j] ; (6) j j-1 ; (7) A[j+1] x. Fragen: (a) Ist dieser Algorithmus korrekt? (b) Wie lange braucht der Algorithmus, um die Berechnung zu beenden? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

6 (a) Korrektheitsbeweise Damit die Frage nach einem Beweis der Korrektheit sinnvoll ist, müssen wir die zu lösende Aufgabe spezifizieren. Bemerkung: Aus einer vagen Problemstellung eine präzise Spezifikation des zu lösenden Problems zu gewinnen ist ein in der Praxis extrem wichtiger Schritt, dessen Bedeutung oft unterschätzt wird. Berechnungsprobleme Erklärung: Ein Berechnungsproblem P besteht aus (i) einer Menge I von möglichen Eingaben ( Inputs, Instanzen ) (I kann unendlich sein!) (ii) einer Menge O von möglichen Ausgaben (iii) einer Funktion f : I O Ein Algorithmus A löst P, wenn A genau die Eingaben aus I verarbeitet und zu Eingabe x I Ausgabe A(x) =f(x) liefert. Spezialfall O = {1, 0} = {true, false} = {Ja, Nein} (Entscheidungsproblem) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Varianten Zu einer Eingabe x I gibt es mehrere legale Ergebnisse. Formal: In (iii) haben wir statt einer Funktion f eine Relation R I Omit: x I y O: R(x, y). A löst P, wenn A genau die Eingaben aus I verarbeitet und R(x, A(x)) für jedes x I gilt. Beispiel: Beim Sortieren von Datensätzen (k, d k ), wobei ein Schlüssel k wiederholt vorkommen darf, ist jede sortierte Anordnung eine legale Lösung. Online-Situation: Eingabe wird in Raten geliefert, Zwischenausgaben werden verlangt. Spezifikation des Sortierproblems Parameter: Der Grundbereich, aus dem die zu sortierenden Objekte stammen, ist ein Parameter der Spezifikation. (U, <): eine total geordnete Menge (endlich oder unendlich). Siehe Mathematik-Vorlesung) Beispiele: Zahlenmengen {1,...,n}, N, Q, Q; Mengen von Strings. D: Eine Menge (von Datensätzen ). Jeder Datensatz a hat einen Sortierschlüssel : key: D U. I = O = Seq(D) =D < = n 0 Dn = {(a 1...,a n ) n N,a 1,...,a n D}, FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

7 die Menge aller endlichen Folgen von Datensätzen. Beispiel: U = N, D = N {a,...,z} key : D (i, b) i U Ein möglicher Input: x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z)). Das Ergebnis beim Sortieren sollte z. B. sein: y = ((3, q), (4, u), (5, z), (5, a), (5, p), (6, q), (9, a)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel x =(a 1,...,a n ) I und y =(b 1,...,b m ) Ostehen in der Relation R genau dann wenn n = m und es gibt eine Permutation π von {1,...,n} mit b i = a π(i), 1 i n, und key(b 1 ) key(b 2 ) key(b n ). Beispiel: Für x = ((5, p), (3, q), (9, a), (6, q), (5, a), (4, u), (5, z)) und y = ((3, q), (4, u), (5, z), (5, a), (5, p), (6, q), (9, a)) ( ) wäre π = passend Alternative Formulierung für die Spezifikation einer Lösung des Sortierproblems: O = {π π Permutation einer Menge {1,...,n},n N} Definition: x =(a 1,...,a n ) wird durch π sortiert, wenn key(a π(1) ) key(a π(2) ) key(a π(n) ) gilt. x =(a 1,...,a n ) und π stehen in der Relation R, wenn x durch π sortiert wird. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

8 Löst Straight Insertion Sort das Sortierproblem? Gilt für jede Eingabe (a 1,...,a n ) in A[1..n], dass nachher dieselben Elemente im Array stehen, aber nach Schlüsseln aufsteigend sortiert? Korrektheitsbeweis an Beispiel: Durch vollständige Induktion über i =1, 2,..., n zeigt man die folgende Behauptung: (IB i ) Nach Durchlauf Nummer i (in i) der äußeren Schleife stehen in A[1..i] dieselben Elemente wie vorher, aber aufsteigend sortiert. I.A.: i =1: Nach Durchlauf für i =1 ist vor Beginn. Anfangs ist das Teilarray A[1..1] (nur ein Eintrag) sortiert. I.V.: (IB i 1 ) gilt, d. h.a[1..i 1] ist sortiert, und Schleifendurchlauf i beginnt. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Ind.-Schritt: Betrachte Schleifendurchlauf i. Die innere Schleife (2) (7) transportiert x = A[i] (via x) an die Position j unmittelbar rechts von dem Eintrag in A[1..i 1] mit dem größten Schlüssel, der key(x) ist. Oder an Position 1, wenn key(a[i]) kleiner als alle Schlüssel in A[1..i 1] ist. Die Einträge A[j],...,A[i 1] werden um eine Position nach rechts verschoben, um für A[i] Platz zu machen. Ind.-Beh. (IB i ) erfüllt. Methoden für Korrektheitsbeweise Diskrete Mathematik Vollständige Induktion Schleifen Wesentlich: Formulierung der Induktionsbehauptung. Schleifeninvariante. Andere Formen der Induktion Rekursive Prozeduren Also gilt (IB n ), also ist nach Abschluss des Ablaufs das Array sortiert. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

9 Kosten, Aufwand, Eingabe x abläuft. (b) Laufzeitanalysen Rechenzeit, wenn Algorithmus A auf Eingabegröße: n = x = size(x). (Bedeutung ist abhängig von Problem P.) I n = {x I size(x) =n} Größenklasse Beim Sortierproblem: size((a 1,...,a n )) = n. Kosten für Elementaroperationen: Addition, Vergleich, Test, Sprung, Zuweisung, Auswertung eines Attributs, Zeiger-/Indexauswertung Abhängig von Programmiersprache, Compiler, Prozessor, Hauptspeichertyp, Cachestruktur,... Unabhängig vom konkreten Input x. Wir schreiben: O(1) für: nicht größer als eine (von x unabhängige) Konstante c (z.b. c op,für eine Operation op) Gesamtlaufzeit: Nicht größer als die Summe aller Konstanten für die Einzeloperationen. Entscheidend: Wie oft wird jede Operation ausgeführt? FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Beispiel: Straight Insertion Sort (1) (3) und (7): Wird (n 1)-mal ausgeführt. Es gibt aber n Schleifenende-Tests Kosten n O(1) = O(n) (4) (6) für i: Entscheidend: Anzahl der Tests in (4). Der Test j 1 wird zwischen 1-mal und i-mal durchgeführt, der Test x.key < A[j].key zwischen 1-mal und (i 1)-mal, inputabhängig. Setze k i =#{l l<iund key(a i ) < key(a l )}. Kosten für (4) (6) bei a i : (k i +1) O(1) = O(k i ). Notation: #A oder A : Kardinalität von A. Kosten insgesamt: O(n)+(k 2 +1) O(1)+(k 3 +1) O(1) + +(k n +1) O(1) = = O(n + k i ). 2 i n Typisch: Charakteristische Operationen sind entscheidend, Hier: Vergleiche zwischen Elementen (Zeile (4)), Anzahl k i +1. Oder: Zuweisungen von Elementen (Zeilen (5) und (7)), Anzahl k i +1. Definition: F x = 2 i n k i = #{(l, i) 1 l < i n, key(a l ) > key(a i )} FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

10 Anzahl der Fehlstände in x =(a 1,...,a n ) Z. B. gibt es in (4, 7, 5, 3) vier Fehlstände. Worst case (Schlechtester Fall): k i = i 1, für alle i, d. h. x ist absteigend sortiert. Beispiel: x = ((11, a), (9, q), (8, p), (7, a), (5, z), (4, u), (2, q)). Wegen F x = n(n 1) 2 i n (i 1) = 2 < n2 2 : Gesamtaufwand für S.I.S.: O(n + n 2 )=O(n 2 ). Best case (Bester Fall): k i =0,für alle i. Beispiel: x = ((2, q), (4, u), (5, z), (7, a), (8, p), (9, q), (11, a)), Aufwand pro Durchlauf durch Schleife (2) (7): O(1) Gesamtaufwand für S.I.S.: n O(1) = O(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße n = size(x) = x kann der Berechnungsaufwand höchst unterschiedlich sein. Begriff Laufzeit von Algorithmus A auf Eingaben x vom Umfang n = size(x) ist meist sinnlos. Sinnvoll: Obere Schranken O-Notation. Und: Untere Schranken Ω-Notation. Konstante Faktoren ignorieren! Average case (Mittlerer Fall): Vereinfachung: Für alle i j: key(a i ) < key(a j ) oder key(a i ) > key(a j ). Unter der Annahme, dass jede Anordnung der Schlüssel (a 1,...,a n ) mit derselben Wahrscheinlichkeit 1/n! auftritt (Beispiel bei Schlüsseln 2, 3, 7: (2, 3, 7), (2, 7, 3), (3, 2, 7), (3, 7, 2), (7, 2, 3), (7, 3, 2): je 1 6 ) bilde Mittelwert/Erwartungswert für F x = 2 i n k i. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

11 Kann Erwartungswert berechnen: E(F x )= 1 2 (n) 2 = 1 4n(n 1) (Grund: In jeder Anordnung (a 1,...,a n) der Schlüssel kann man Einträge an Positionen l und i vertauschen. Einmal liefert das Paar (l, i) einen Fehlstand, einmal nicht. Daher führt jedes der ( ) n 2 Paare (l, i) mit Wahrscheinlichkeit genau 1 2 zu einem Fehlstand, trägt also 1 2 zur erwarteten Anzahl der Fehlstände bei.) Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, unter der Gleichverteilungsannahme: O(n 2 ), aber auch Ω(n 2 ) Zusammengefasst: Θ(n 2 ). Kosten Rechenzeiten Gegeben: Algorithmus A für Inputmenge I. Beispiel: Algorithmus Straight Insertion Sort (Pseudocode) (1) for i from 2 to n do (2) x A[i] ; (3) j i-1 ; (4) while j 1 and x.key < A[j].key do (5) A[j+1] A[j] ; (6) j j-1 ; (7) A[j+1] x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Kosten Rechenzeiten Jede Elementaroperation op ist mit einer Konstanten c op bewertet. Idee: op benötigt höchstens Zeit c op (Takte oder μs) Die Konstanten c op werden nie explizit genannt; vereinfachend oft: c op =1( 1 RAM-Schritt ). Grund: Analyse des Algorithmus anhand von Pseudocode o.ä. Technische Besonderheiten von konkreten Rechnern (Cachearchitekturen, Mehrkernprozessoren, Coprozessoren,... ), Implementierungen, Compileroptimierungen zu berücksichtigen wäre viel zu komplex! Kosten Rechenzeiten k op (x) sei die Anzahl der Ausführungen der Elementaroperation op bei der Ausführung von A auf x. Dann: t A (x) := oder im Fall c op =1: t A (x) := op Operation op Operation k op (x) c op. k op (x) =#(ausgeführte Op.). Wir nennen t A (x) die Kosten von A auf x. Ungefähres Maß für die Rechenzeit! Oft Rechenzeit statt Kosten. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

12 Größenordnungen von Funktionen Notation: N = {0, 1, 2, 3,...} N + = {n N n>0} = {1, 2, 3,...} R + 0 = {x R x 0} R + = {x R x>0} Uns interessieren meistens (als Rechenaufwand oder Abschätzungen hierfür) nur Funktionen, die schließlich positiv oder nichtnegativ sind. Abkürzung: F + := {f f : N R, n 0 n n 0 : f(n) > 0}. F + 0 := {f f : N R, n 0 n n 0 : f(n) 0}. O-Notation Informal: g ist von der Ordnung f (Notation O(f)), wenn: n 0 Für genügend große n ist 0 g(n) c f(n), für c>0 konstant. g 2 f f FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Formal: Definition Sei f F +. O-Notation O(f) := { g F 0 + n 0 N c >0 n n 0 : g(n) c f(n)} g O(f) heißt, dass g asymptotisch (für genügend große n) und unter Vernachlässigung konstanter Faktoren höchstens so schnell wächst wie f. Beispiele: O-Notation (a) Wenn g(n) =2n + 7 log n und f(n) =n, dann ist g O(f). (b) Wenn g(n) =2n + 7 log n und f(n) =n 2, dann ist g O(f). (c) Wenn g(n) =4n 3 13n 2 +10und f(n) =n 3 log n, dann ist g O(f). (d) Wenn g(n) = 3+2 sin(n) und f(n) = 1, dann ist g O(f). (e) Wenn g(n) =2n für gerade n und g(n) =2/n für ungerade n, und f(n) =n, dann ist g O(f). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

13 O(f(n))-Notation Schreib- und Sprechweisen: (i) g(n) =O(f(n)) als Abkürzung für g O(f). (ii) g(n) ist O(f(n)). Sprich: g(n) ist Groß-Oh von f(n) Warnung: Das = bedeutet nicht Gleichheit, ist nicht symmetrisch. Intuition: O(f(n)) steht für ein beliebiges Element von O(f). (Eine anonyme Funktion g F 0 +, von der man nur weiß, dass sie für genügend große n durch c f(n) beschränkt ist.) Damit z. B. auch sinnvoll: 3n 3 +2n 2 5n +4=3n 3 + O(n 2 ). Beispiele: (a) 2n + 7 log n = O(n). O(f(n))-Notation (b) Jede Funktion g mit 2n log n g(n) 4n 2 / log n für alle n 10 erfüllt g(n) =O(n 2 ). (c) 2n 2 30n +3=O(n 2 ). (d) 4 2 n +3 n 2 =4 2 n + O(n 2 )=O(2 n ). (e) 4n 2 log n +2n(log n) 3 =4n 2 log n + O(n 2 )=O(n 3 ). (e ) 4n 2 log n +2n(log n) 3 = O(n 2 log n). (f) sin(n) =O(1). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Konvention: Möglichst kleine und möglichst einfache Funktionen innerhalb des O(...)-Terms. 17n 2 /(log n) 3 +13n 3/2 = O(n 2 /(log n) 3 ) (klein) oder 17n 2 /(log n) 3 +13n 3/2 = O(n 2 ) (besonders einfach) o-notation g(n) wächst asymptotisch streng langsamer als f(n). f g FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

14 Definition Für f F + : o(f) := o-notation { g F + 0 lim n g(n) } f(n) =0 Ω-Notation g(n) ist asymptotisch und bis auf einen konstanten Faktor durch f(n) nach unten beschränkt. f Schreibe g(n) =o(f(n)) für g o(f). (Sprich: g(n) ist klein-oh von f(n).) Beispiele: (a) n/ log n = o(n). (b) 5n 2 log n +7n 2.1 = o(n 5/2 ). (c) n 10 = o(2 n ). n 0 g f /2 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Definition Sei f F +. Ω-Notation Ω(f) := {g F + n 0 N d >0 n n 0 : g(n) d f(n)} Schreibe g(n) =Ω(f(n)) für g Ω(f). (Sprich: g(n) ist Groß-Omega von f(n).) Beispiele: (a) 0.3n log n 20n =Ω(nlog n). (b) 1 10 n2 20n +1=Ω(n 2 ). (c) n 10 log n =Ω(n 10 ). Manchmal benutzt: Für f F + : ω(f) := {g F + g(n) lim n f(n) = } g(n) wächst asymptotisch echt schneller als f. Schreibe g(n) =ω(f(n)) für g ω(f). (Sprich: g(n) ist klein-omega von f(n).) Klar: Für f,g F + gilt: g ω(f) f o(g). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

15 Θ-Notation g(n) ist asymptotisch und bis auf konstante Faktoren von derselben Größenordnung wie f(n). g 2 f f Θ-Notation Für f F + definiere: Θ(f) := O(f) Ω(f), d.h. Θ(f) = {g F + n 0 N c, d > 0 n n 0 : d f(n) g(n) c f(n)} Beobachtung: g Θ(f) O(g) =O(f). Schreibe g(n) =Θ(f(n)) für g Θ(f). (Sprich: g(n) ist Theta von f(n).) f /2 n 0 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Rechenregeln Lemma 1 (Grenzwertregel) Falls f F +,g F 0 + und lim n g(n) f(n) = c für ein c 0, so ist g(n) =Θ(f(n)). Spezialfälle: c =0: Voraussetzung bedeutet: g(n) =o(f(n)). Also: g(n) =o(f(n)) g(n) =Θ(f(n)) g(n) c>0: lim n f(n) = c impliziert: Es gibt n 0, so dass für n n 0 gilt: c/2 < g(n) f(n) < 2c. Also: g(n) =Θ(f(n)). Rechenregeln Folgerung aus der Grenzwertregel: Wenn g ein Polynom ist: g(n) =a k n k + a k 1 n k a 1 n + a 0 für a k,...,a 1,a 0 R, wobei a k > 0, und f(n) =n k, dann lim n g(n) ( f(n) = lim a k + a k 1 n n + + a 1 n k 1 + a ) 0 n k = a k, damit: a k n k + a k 1 n k a 1 n + a 0 =Θ(n k ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

16 Rechenregeln Lemma 2 (Transitivität) Es seien f,g F +. Dann gilt für jedes h F 0 + : Wenn g(n) =O(f(n)) und h(n) =O(g(n)), dann folgt h(n) =O(f(n)). D.h.: Wenn g O(f), dann ist O(g) O(f). Kurz: h(n) =O(g(n)) = O(f(n)). Achtung: In der O(f(n))-Notation bedeutet = keine Gleichheit, die Relation ist nicht symmetrisch. Rechenregeln Lemma 3 ( Konstante Faktoren weglassen ) Ist g(n) =O(d f(n)) und d>0 beliebig, dann gilt g(n) =O(f(n)). D.h.: Wenn d>0, dann ist O(d f) =O(f). Beispiele: Nicht g(n) =O(3n log 2.8 n), sondern g(n) =O(n log n); nicht g(n) =O(n/3), sondern g(n) =O(n); nicht g(n) =O(2.5), sondern g(n) =O(1). Analog bei o( ), Ω( ), ω( ), Θ( ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Rechenregeln Lemma 4 (Linearität und Maximumsregel) Ist g 1 (n) =O(f 1 (n)) und g 2 (n) =O(f 2 (n)), so folgt g 1 (n)+g 2 (n) = O(f 1 (n)+f 2 (n)) = O(max{f 1 (n),f 2 (n)}). Beispiele: 10n log n +5n 2 = O(n log n)+o(n 2 )=O(n 2 ). 10n log n +5n 2 =Θ(nlog n)+θ(n 2 )=Θ(n 2 ). 10n log n +5n 2 =Ω(nlog n)+ω(n 2 )=Ω(n 2 ). Anwendung: Hintereinanderausführung von Algorithmen: Rechenzeiten addieren sich, auch in der O-Abschätzung. Analog bei o( ), Ω( ), ω( ), Θ( ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

17 Rechenregeln Lemma 5 (Weglassen von Termen kleinerer Ordnung ) Ist f F + und g(n) = o(f(n)), und ist h(n) =O(f(n)+g(n)), so ist h(n) =O(f(n)). Analog bei o( ), Ω( ), ω( ), Θ( ). Fazit: In Summen suche den dominierenden Term ; lasse die anderen weg. Rechenregeln Lemma 6 (Multiplikationsregel) Ist g 1 (n) =O(f 1 (n)) und g 2 (n) =O(f 2 (n)), so folgt g 1 (n)g 2 (n) =O(f 1 (n)f 2 (n)). Analog bei o( ), Ω( ), ω( ), Θ( ). Bei o( ) genügt sogar: g 1 (n) =O(f 1 (n)) und g 2 (n) =o(f 2 (n)). Anwendung: Sei g 1 (n) =O(f 1 (n)) und g 2 (n) =O(f 2 (n)). Wird eine Schleife g 1 (n)-mal ausgeführt, wobei die Kosten für die einmalige Ausführung höchstens g 2 (n) betragen, dann sind die Gesamtkosten O(f 1 (n)f 2 (n)). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Rechenregeln O-Notation in Summen Beispiel: Unterschiedliche Kosten für Schleifenrumpf bei verschiedenen Durchläufen. n Durchläufe, Kosten beim i-ten Durchlauf: O(n 2 i ). Maximum: O(n 2 n ). Multiplikationsregel liefert: O(n (n 2 n )) = O(n 2 2 n ). Aber: n 1 +2 n =2 n+1 2=O(2 n ). Vermutung: Gesamtkosten sind nur O(n 2 n ). Rechenregeln Lemma 7 (O-Notation in Summen) Sei g : N N R + 0. Für jedes n N sei a n,1,...,a n,t(n) Zahlenfolge mit c >0 n 0 n n 0 1 i t(n) :0 a n,i c g(n, i). ( a n,i ist uniform durch ein Vielfaches von g(n, i) beschränkt ; man schreibt kurz: a n,i = O(g(n, i))) Dann gilt (die Variable ist n): a n,i = O g(n, i) 1 i t(n) 1 i t(n) FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

18 Achtung! Wenn es für jedes n n 0 ein c n gibt mit 1 i t(n) :0 a n,i c n g(n, i), (a n,i nicht-uniform beschränkt), dann kann man nicht folgern, dass ist. 1 i t(n) a n,i = O 1 i t(n) g(n, i) O-Notation bei Kosten Beispiel Straight Insertion Sort, Eingabe x: Mit Multiplikationsregel: Der i-te Durchlauf durch die äußere Schleife hat Kosten Θ(1)+ k i Θ(1) = Θ(1 + k i ), wobei k i =#{l <i key(a l ) > key(a i )} (abhängig von x!). Mit Summationsregel: Der gesamte Ablauf hat Kosten t S.I.S (x) =Θ(n + k i )=Θ(n + F x ). 2 i n F x : Anzahl der Fehlstände l<i, key(a l ) > key(a i ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Kosten Rechenzeiten Oft: Detaillierte Aussagen für einzelne Inputs gar nicht erwünscht. Vergröberung: Größenklassen Eingabegröße: n = x = size(x). I n = {x I size(x) =n} Größenklasse Beim Sortierproblem z. B.: size((a 1,...,a n )) = n Worst-case-Kosten worst-case-kosten oder Kosten im schlechtesten Fall: Sei A Algorithmus für Inputs aus I. I n = {x I size(x) =n} worst-case-kosten: T A (n) = max{t A (x) x I n } Wenn man betonen will, dass es um die worst-case Kosten geht: T A,worst (n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

19 Worst-case-Kosten Beispiel S.I.S.: Für den Input x =(n, n 1,...,1) gilt n + F x = n + Für jeden Input gilt 2 i n n + F x n + 2 i n (i 1) = n + (i 1) = n + Also: T S.I.S.,worst (n) =Θ(n + n 2 )=Θ(n 2 ). n(n 1). 2 n(n 1). 2 Best-case-Kosten best-case-kosten oder Kosten im besten Fall: T A,best (n) = min{t A (x) x I n } Beispiel S.I.S.: Für den Input (1, 2,...,n) gilt n + T x = n +0=n; für jeden Input gilt n + 2 i n k i n. Also: T S.I.S.,best (n) =O(n), sogar =Θ(n). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Average-case Kosten average-case-kosten oder durchschnittliche Kosten: Gegeben sei, für jedes n N, eine Wahrscheinlichkeitsverteilung Pr n auf I n. D.h.: Für jedes x I n ist eine Wahrscheinlichkeit Pr n (x) festgelegt. (Empirisch, oder per Festlegung.) T A,av (n) = E(t A )= x I n Pr n (x) t A (x). (Erwartungswert, berechnet mit Pr n ; Mittelwert ) Average-case Kosten Beispiel S.I.S.: Wahrscheinlichkeitsannahme (Standard für das Sortierproblem): Alle Schlüssel n der Eingabe verschieden, jede Anordnung der Eingabeobjekte hat dieselbe Wahrscheinlichkeit 1/n!. Jedes Paar von Positionen (l, i) ist mit W. 1 2 ein Fehlstand. E(F x )= 1 2 (n) 2 = 1 4n(n 1) Aufwand von Straight Insertion Sort im mittleren Fall, auf Inputs der Länge n, unter der genannten Gleichverteilungsannahme: T S.I.S,av (n) =Θ(n n(n 1))=Θ(n2 ). FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

20 Analyse von Kosten Fazit Fazit: Selbst für feste Implementierung eines Algorithmus A auf fester Maschine und feste Eingabegröße n = size(x) = x kann der Berechnungsaufwand auf verschiedenen Inputs sehr unterschiedlich sein. Begriff Die Laufzeit von Algorithmus A auf Eingaben x vom Umfang n = size(x) ist meist sinnlos. Sinnvoll: Schlechtester und bester Fall, durchschnittlicher Fall. Analyse von Kosten Fazit In allen drei Situationen (worst c., best c., average c.): Obere Schranken O-Notation. Untere Schranken Ω-Notation. Asymptotisches Verhalten, präzise: Θ-Notation. Konstante Faktoren ignorieren! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Ignorieren konstanter Faktoren Beispiel: Alternativer Sortieralgorithmus: Mergesort. (1. Sem.) Rechenzeit/Kosten: Θ(n log n). Mergesort wird für genügend große Inputs schneller sein als Straight Insertion Sort, auch wenn wir die Konstanten nicht kennen. Ein Vergleich: 10n log n versus n 2 / n log n versus n*n, bis n= x 10*n*log n n*n/5 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

21 Ein Vergleich: 10n log n versus n 2 /5 Ein Vergleich: 10n log n versus n 2 /5 1.8e+06 n log n versus n*n, bis n=3000 2e+07 n log n versus n*n, bis n= e e e e+07 1e e e x 10*n*log n n*n/ x 10*n*log n n*n/5 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Ein Vergleich: 10n log n versus n 2 /5 Wachstumsordnungen 1e+11 8e+10 6e+10 4e+10 2e+10 0 n log n versus n*n, bis n= e+06 x 10*n*log n n*n/5 Einfach : Funktionen mit unterschiedlich schnellem Wachstum bilden Hierarchie. Beispiele (s. Übung): f 1 (n) = log log n, f 2 (n) = log n, f 3 (n) =(logn) 2, f 4 (n) = n, f 5 (n) = n log n, f 6(n) =n, f 7 (n) =n log n, f 8 (n) =n(log n) 2, f 9 (n) =n 3/2, f 10 (n) =n 2, f 11 (n) =n 3, f 12 (n) =2 n, f 13 (n) =n 5 2 n, f 14 (n) =e n, f 15 (n) =3 n f 16 (n) =(n/e) n, f 17 (n) =n!, f 18 (n) =n n. f i+1 (n) in folgendem Sinn: lim =, für 1 i 17. n f i (n) Bem.: In dieser Vorlesung: log x bedeutet log 2 x. FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

22 Vergleich einiger Wachstumsordnungen Zeit für eine (Elementar-)Operation: 10 ns. t A (n) log n 33ns 66ns 0.1μs 0.1μs 0.2μs 0.2μs 0.2μs 0.3μs n 32ns 0.1μs 0.3μs 1μs 3.1μs 10μs 31μs 0.1ms n 100ns 1μs 10μs 0.1ms 1ms 10ms 0.1s 1s n log n 0.3μs 6.6μs 0.1ms 1.3ms 16ms 0.2s 2.3s 27s n 3/2 0.3μs 10μs 0.3ms 10ms 0.3s 10s 5.2m 2.7h n 2 1μs 0.1ms 10ms 1s 1.7m 2.8h 11d 3.2y n 3 10μs 10ms 10s 2.8h 115d 317y y 1.1 n 26ns 0.1ms y 2 n 10μs y n! 36ms y n n 1.7m y n Hilft ein schnellerer Rechner? Wie wächst die maximal behandelbare Eingabegröße, wenn der Rechner um den Faktor 10 schneller wird? t A (n) Max alt Max NEU log n n n 10 n n 100n n n 10n log n n log n n 10n log n+log 10 n 3/2 n 4.64n n 2 n 3.16n n 3 n 2.15n n k n 10 1/k n c n n n + log c 10 n! um von n auf n +1zu kommen, n n braucht man einen um den Faktor n schnelleren Rechner FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel Hilft ein schnellerer Rechner? Angetrieben durch die höheren Rechengeschwindigkeiten und die noch rascher wachsenden Speicherkapazitäten wächst in vielen Bereichen die Menge der zu bewältigenden Daten noch schneller als die Rechnergeschwindigkeit. Beispiele: Indizes der Internet-Suchmaschinen. Routenplaner, Fahrplan-, Ticketsysteme der Bahn. Computergraphik (Szenen aus zig Milliarden von Elementen!) Effizienz der benutzten Algorithmen ist wichtiger denn je! FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen SS10 Kapitel

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Uebersicht Administratives Einleitung Ein einführendes Beispiel Matthias Zwicker Universität Bern Frühling 2010 2 Administratives Dozent Prof. Zwicker, zwicker@iam.unibe.ch

Mehr

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Kapitel 6 Komplexität von Algorithmen 1 6.1 Beurteilung von Algorithmen I.d.R. existieren viele Algorithmen, um dieselbe Funktion zu realisieren. Welche Algorithmen sind die besseren? Betrachtung nicht-funktionaler

Mehr

Laufzeit und Komplexität

Laufzeit und Komplexität Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen

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

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

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

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

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

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen... Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mathematische Grundlagen: Das Handwerkszeug Mariano Zelke Datenstrukturen 2/26 Formeln: n - i = n (n+1) 2 und - i=1 k i=0 a i = ak+1 1 a 1, falls a 1 Rechnen

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J Greedy-Strategie Definition Paradigma Greedy Der Greedy-Ansatz verwendet die Strategie 1 Top-down Auswahl: Bestimme in jedem Schritt eine lokal optimale Lösung, so dass man eine global optimale Lösung

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2015/16 12. Vorlesung Hashing Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Übungen Begründen Sie grundsätzlich alle Behauptungen außer die Aufgabe

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Algorithmik - Kompaktkurs

Algorithmik - Kompaktkurs Algorithmik - Kompaktkurs Sommersemester 2012 Steffen Lange 0/1, Folie 1 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Organisatorisches Vorlesung Folien im Netz (/* bitte zur Vorlesung mitbringen */)

Mehr

SOI 2013. Die Schweizer Informatikolympiade

SOI 2013. Die Schweizer Informatikolympiade SOI Die Schweizer Informatikolympiade Lösung SOI Wie schreibe ich eine gute Lösung? Bevor wir die Aufgaben präsentieren, möchten wir dir einige Tipps geben, wie eine gute Lösung für die theoretischen

Mehr

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für

Mehr

Kapitel 4. Grundlagen der Analyse von Algorithmen. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Kapitel 4. Grundlagen der Analyse von Algorithmen. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen Kapitel 4 Grundlagen der Analyse von Algorithmen 1 4.1 Kostenfunktion zu Beurteilung von Algorithmen Die Angabe der Laufzeit (und etwas weniger wichtig des Speicherplatzes) liefert das wichtigste Maß für

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung

Mehr

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS) Dominating Set 59 Literatur Dominating Set Grundlagen 60 Dominating Set (DS) M. V. Marathe, H. Breu, H.B. Hunt III, S. S. Ravi, and D. J. Rosenkrantz: Simple Heuristics for Unit Disk Graphs. Networks 25,

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011 Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie viele negative Zahlen (ohne 0) lassen sich im 4-Bit-Zweierkomplement darstellen?

Mehr

Numerische Verfahren und Grundlagen der Analysis

Numerische Verfahren und Grundlagen der Analysis Numerische Verfahren und Grundlagen der Analysis Rasa Steuding Hochschule RheinMain Wiesbaden Wintersemester 2011/12 R. Steuding (HS-RM) NumAna Wintersemester 2011/12 1 / 16 4. Groß-O R. Steuding (HS-RM)

Mehr

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr. Institut für Telematik Universität zu Lübeck Programmieren Kapitel 0: Organisatorisches Wintersemester 2008/2009 Prof. Dr. Christian Werner 1-2 Überblick Ziele Inhaltsüberblick Ablauf der Veranstaltung

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - 2) Algorithmenanalyse Prof. Dr. Anja Schanzenberger FH Augsburg, Fakultät für Informatik Kontakt: anja.schanzenberger@hs-augsburg.de

Mehr

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik Einheit 1 Mathematische Methodik 1. Problemlösen 2. Beweistechniken 3. Wichtige Grundbegriffe Methodik des Problemlösens Klärung der Voraussetzungen Welche Begriffe sind zum Verständnis

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Algorithmen und Datenstrukturen Einführung

Algorithmen und Datenstrukturen Einführung Algorithmen und Datenstrukturen Einführung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Einführung in die Begriffe Algorithmus Datenstruktur

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Foliensatz 4 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 50 Grundlegende Datentypen TU Ilmenau Seite 2 / 50 Atomare Datentypen

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Algorithmen und Berechnungskomplexität I

Algorithmen und Berechnungskomplexität I Institut für Informatik I Wintersemester 2010/11 Organisatorisches Vorlesung Montags 11:15-12:45 Uhr (AVZ III / HS 1) Mittwochs 11:15-12:45 Uhr (AVZ III / HS 1) Dozent Professor für theoretische Informatik

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein.

Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein. Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein. 3 1384788374932954500363985493554603584759389 mod 28374618732464817362847326847331872341234 Wieso kann ein

Mehr

DAP2-Klausur 07.08.2004

DAP2-Klausur 07.08.2004 DAP2-Klausur 07.08.2004 Vorname : Familienname: Ich studiere (Bitte markieren): Informatik/Inform. Lehramt/Inf.technik/Physik/ Mathe/Statistik/Sonstiges: Bitte beachten: Auf jedem Blatt Matrikelnummer

Mehr

Die Komplexitätsklassen P und NP

Die Komplexitätsklassen P und NP Die Komplexitätsklassen P und NP Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 3. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und

Mehr

Fragen für die Klausuren

Fragen für die Klausuren Fragen für die Klausuren Vom Quellcode zum ausführbaren Programm Was ist ein Quellcode? Ist der Quellcode von einem Programm auf unterschiedlichen Rechner gleich? Nennen Sie drei Programmiersprachen. Was

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

Suchen in Listen und Hashtabellen

Suchen in Listen und Hashtabellen Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren

Mehr

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?

Mehr

Schulinternes Curriculum im Fach Informatik

Schulinternes Curriculum im Fach Informatik Schulinternes Curriculum im Fach Informatik Unterricht in EF : 1. Geschichte der elektronischen Datenverarbeitung (3 Stunden) 2. Einführung in die Nutzung von Informatiksystemen und in grundlegende Begriffe

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Approximationsalgorithmen

Approximationsalgorithmen Ausarbeitung zum Thema Approximationsalgorithmen im Rahmen des Fachseminars 24. Juli 2009 Robert Bahmann robert.bahmann@gmail.com FH Wiesbaden Erstellt von: Robert Bahmann Zuletzt berarbeitet von: Robert

Mehr

Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise

Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise Coma I Einleitung 1 Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen Literaturhinweise 2 Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Studiengang Bachelor of Computer Science Modulprüfung Praktische Informatik 1 Wintersemester 2010 / 2011 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und

Mehr

Informatik für Ingenieure

Informatik für Ingenieure Informatik für Ingenieure Eine Einführung Von Prof. Dr. rer. nat. Wolfgang Merzenich Universität-Gesamthochschule Siegen und Prof. Dr.-Ing. Hans Christoph Zeidler Universität der Bundeswehr Hamburg B.

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

MATHEMATISCHE ANALYSE VON ALGORITHMEN

MATHEMATISCHE ANALYSE VON ALGORITHMEN MATHEMATISCHE ANALYSE VON ALGORITHMEN Michael Drmota Institut für Diskrete Mathematik und Geometrie, TU Wien michael.drmota@tuwien.ac.at www.dmg.tuwien.ac.at/drmota/ Ringvorlesung SS 2008, TU Wien Algorithmus

Mehr

Informatik II Greedy-Algorithmen

Informatik II Greedy-Algorithmen 7/7/06 lausthal Erinnerung: Dynamische Programmierung Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur:

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

Modulbeschreibung Fakultät Gebäudetechnik und Informatik gültig ab WS 2010/11. Niveaustufe: Bachelor

Modulbeschreibung Fakultät Gebäudetechnik und Informatik gültig ab WS 2010/11. Niveaustufe: Bachelor Modul-Nr.: BA-VI-1030 Modulname: Programmierung Grundlagen (PRG) Niveaustufe: Bachelor Empfohlenes Semester: 1./2. Studiensemester : Grundkonzepte der Programmierung (GKP) Objektorientierte Programmmierung

Mehr

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle.

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle. Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik Seminar Entscheidungsverfahren für logische Theorien Tobias Hebel Koblenz, am 18.02.2005 Inhaltsverzeichnis 1 Einleitung... 3 2 Grundlagen...

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Vorlesung Analysis I / Lehramt

Vorlesung Analysis I / Lehramt Vorlesung Analysis I / Lehramt TU Dortmund, Wintersemester 2012/ 13 Winfried Kaballo Die Vorlesung Analysis I für Lehramtsstudiengänge im Wintersemester 2012/13 an der TU Dortmund basiert auf meinem Buch

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

Schulinternes Curriculum für Informatik (Q2) Stand April 2015

Schulinternes Curriculum für Informatik (Q2) Stand April 2015 Schulinternes Curriculum für Informatik (Q2) Stand April 2015 Unterrichtsvorhaben Q2-I Thema: Modellierung und Implementierung von Anwendungen mit dynamischen, nichtlinearen Datenstrukturen Modellieren

Mehr

DLP. Adolphe Kankeu Tamghe papibobo@informatik.uni-bremen.de ALZAGK SEMINAR. Bremen, den 18. Januar 2011. Fachbereich Mathematik und Informatik 1 / 27

DLP. Adolphe Kankeu Tamghe papibobo@informatik.uni-bremen.de ALZAGK SEMINAR. Bremen, den 18. Januar 2011. Fachbereich Mathematik und Informatik 1 / 27 DLP Adolphe Kankeu Tamghe papibobo@informatik.uni-bremen.de Fachbereich Mathematik und Informatik ALZAGK SEMINAR Bremen, den 18. Januar 2011 1 / 27 Inhaltsverzeichnis 1 Der diskrete Logarithmus Definition

Mehr

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984)

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) NP-Vollständigkeit Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) 0 Übersicht: Einleitung Einteilung in Klassen Die Klassen P und NP

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Künstliche Intelligenz Maschinelles Lernen

Künstliche Intelligenz Maschinelles Lernen Künstliche Intelligenz Maschinelles Lernen Stephan Schwiebert Sommersemester 2009 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Maschinelles Lernen Überwachtes Lernen

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof Dr Hans-Dietrich Hecker Wintersemester 2003/04 Inhaltsverzeichnis 1 Einführung 9 11 Über schnelle und langsame Algorithmen 13 12 Die Klassen P und NP 14 13 Effiziente

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

Mehr

Schulinterner Lehrplan für das Fach Informatik der Sekundarstufe II an der Bettine von Arnim Gesamtschule

Schulinterner Lehrplan für das Fach Informatik der Sekundarstufe II an der Bettine von Arnim Gesamtschule des Zweckverbandes Langenfeld / Hilden - Sekundarstufen I und II - B.V.A-Gesamtschule Hildener Str. 3 40764 Langenfeld 02173 / 9956-0 Fax 02173 / 9956-99 Email: mail@bva-gesamtschule.de Web: www.bva-gesamtschule.de

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Steffen Börm Stand 17. Juli 014, 9 Uhr 30 Alle Rechte beim Autor. Inhaltsverzeichnis 1 Einleitung 5 Algorithmen und ihre Eigenschaften 7.1 Beispiel: Suchen in Arrays...........................

Mehr