Algorithmen und Datenstrukturen 3. Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 3. Vorlesung"

Transkript

1 Algorithmen und Datenstrukturen 3. Vorlesung Martin Dietzfelbinger 18. April 2005 Stacks Queues Listen... Datentypen und Datenstrukturen FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Spezifikation des Datentyps Stack über U 1. Signatur: Sorten: Keys Stacks Boolean Operationen: empty: Stacks push: Stacks Keys Stacks pop: Stacks Stacks top: Stacks Keys isempty: Stacks Boolean Mathematisches Modell Sorten: Keys: (nichtleere) Menge U (Parameter) Stacks: U < = Seq(U) wo Seq(U) = {(a 1,...,a n ) n N,a 1,...,a n U} Boolean: {true, false} Operationen: FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

2 empty(()) = () push((a 1,...,a n ),x) := (x,a 1,...,a n ) { (a2,...,a n ), falls n 1 pop((a 1,...,a n )) := undefiniert, falls n = 0 { a1, falls n 1 top((a 1,...,a n )) := undefiniert, falls n = 0 { false, falls n 1 isempty((a 1,...,a n )) := true, falls n = 0 Implementierungsmöglichkeiten Array A[1..m] of Keys und Pegelvariable p: int (einfach) verkettete lineare Liste FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Listenimplementierung Siehe GdP 1, 8. Vorlesung, Organisationsform 1 s: 1 2 a a (Das Symbol steht fur " den Nullzeiger. ) empty: Kreiere leere Liste. push(x): Füge neues Listenelement mit Eintrag x ein. pop: Entferne erstes Listenelement (falls vorhanden) top: Gib Inhalt des ersten Listenelements aus (falls vorhanden) isempty: Falls Liste leer: Ausgabe true, sonst false Einzige Fehlermöglichkeit: Speicher-Überlauf. a n Korrektheit der Listenimplementierung Behauptung: Die Listenimplementierung erzeugt genau dieselbe Ausgabefolge wie das mathematische Modell, solange weder im mathematischen Modell ein Fehler (top oder pop auf leerem Stack) auftritt noch ein Laufzeitfehler Speicherüberlauf auftritt. Beweis: Man zeigt per Induktion über i, dass nach Ausführen der Operation Op i folgendes gilt: Die Einträge in der Liste sind genau die Einträge in s i die Liste ist eine präzise Darstellung von s i. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

3 Zeitaufwand bei Listenimplementierung Behauptung: Bei der Listenimplementierung hat jede einzelne Operation Kosten O(1). Das ist klar. Kosteneinheit allerdings: Allokation eines Listenelements Systemaufruf ( malloc in C) um einiges teurer als Arrayzugriff. Vorteile der Arrayimplementierung: Sequentieller Zugriff im Speicher. Listenimplementierung benötigt zusätzlichen Speicherplatz für Zeiger. Arrayimplementierung ohne Platzprobleme? Verdoppelungsstrategie In push(x): Bei Überlaufen des Arrays A nicht einen Laufzeitfehler (oder eine exception) generieren, sondern ein neues, doppelt so großes Array AA allokieren. Variable m: int enthält aktuelle Größe m des Arrays. Einträge aus A nach AA kopieren. AA in A umbenennen. Kosten: c m, wo m = aktuelle Zahl der Einträge. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Kostenanalyse bei Verdoppelungsstrategie: Operationenfolge Op 0 = empty, Op 1,..., Op N Arraygröße am Anfang: m 0. Jede Operation hat Kosten O(1), außer wenn die Arraygröße von m 0 2 i 1 auf m 0 2 i wächst. Hier entstehen Kosten Θ(m 0 2 i 1 ). k := Anzahl der push-operationen in Op 1,..., Op N Zahl der Einträge immer k, also bei Verdopplung m 0 2 i 1 m 0 2 i : m 0 2 i 1 < k. Sei L maximal mit m 0 2 L 1 < k. Gesamtkosten für die Verdopplungen also: O(m 0 2 i 1 ) 1 i L = O ( m 0 ( L 1 ) ) = O ( m 0 2 L) = O(k). Gesamtkosten: N O(1) + O(k) = O(N + k) = O(N). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

4 Satz Wenn ein Stack mit Arrays und der Verdoppelungsstrategie implementiert wird, betragen die Gesamtkosten für N Operationen O(N). Bemerkung: Bei der Verdoppelungsstrategie gilt weiter: Der gesamte Platzbedarf ist O(k), wenn k die maximale je erreichte Stackhöhe ist. Selbst wenn der Speicher nie bereinigt wird, tritt ein Speicherüberlauf erst ein, wenn die Zahl der Stackeinträge zu einem bestimmten Zeitpunkt mehr Speicher beansprucht als 1 4 des gesamten zur Verfügung stehenden Speichers. Queues Warteschlangen FIFO-Listen First-In-First-Out Idee (siehe GdP-Vorlesung): isempty: false first: 3 enqueue(9) dequeue FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Signatur: Übung Mathematisches Modell: Übung Implementierung mittels einfach verketteter linearer Listen: Übung Implementierung mittels Arrays, zirkulär benutzt: A[0..m 1] m 2 m head: tail: i j head: tail: i j FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

5 empty: Erzeuge Array A[0..m 1] of Keys und 2 Variable head,tail: int ; head 0; tail 0; isempty: if head = tail then return true else return false ; first: if head = tail then Fehler (z.b. QEmptyException) else return A[head] ; dequeue: if head = tail then Fehler (z.b. QEmptyException) else head (head + 1) mod m ; enqueue(x): tt (tail + 1) mod m; if tt = head then Fehler (z.b. OverflowException) else tail tt ; A[tail] x ; FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Alternative zu Overflow-Exception: Erzeugen eines neuen Arrays AA der Größe 2m; Umkopieren der Einträge A[head], A[(head + 1 mod m)],..., A[tail] in AA[0], AA[1],..., AA[m 1]; head 0; tail m 1; Satz Wenn eine Queue mit Arrays und der Verdoppelungsstrategie implementiert wird, sind die Gesamtkosten für N Operationen O(N). Bemerkung: Bei der Verdoppelungsstrategie gilt weiter: Der gesamte Platzbedarf ist O(k), wenn k die maximale je erreichte Länge der Queue ist. Umbenennen von AA in A. Dann: Anhängen von x. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

6 Einfachste Datenstrukturen für (endliche) Mengen Modelliere: Endliche Mengen über U. Intuitive Aufgabe: Speichere S U, S endlich, mit Operationen Initialisierung: S ; Suche: x S?; Hinzufügen: S S {x}; Löschen: S S {x}. 1. Signatur: Datentyp Dynamische Menge Sorten: Keys Sets Boolean Operationen: empty: Sets insert: Sets Keys Sets delete: Sets Keys Sets member: Sets Keys Boolean Statt member findet man auch oft den Namen lookup FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Datentyp Dynamische Menge 2. Mathematisches Modell: Modellierung einer Menge als endliche Menge von Objekten: Sorten: Keys: (nichtleere) Menge U (Parameter) Sets: P < (U) = {S U S endlich} Boolean: {true, false} Datentyp Dynamische Menge Operationen: empty(()) = insert(s, x) := S {x} delete(s, x) := S {x} { true, falls x S member(s, x) := false, falls x / S FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

7 Beachte: Datentyp Dynamische Menge Ganz nebenbei wird das Verhalten des Datentyps bei den Sonderfällen bei insert(s, x) ist x schon in S bei delete(s, x) ist x nicht in S ohne Möglichkeit von Missverständnissen spezifiziert. Implementierungsmöglichkeiten (A) Einfach verkettete Liste oder Array mit Wiederholung : {1,2,5,7,11} darstellbar als list: bzw h 11 7 * * * m * * * * pegel: h FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Operationen: empty: erzeuge leere Liste / leeres Array A[1..m] member(x): durchsuche Liste / Array nach (erstem Auftreten von) x insert(x): füge x vorne in Liste ein bzw. füge x an Pegelposition in Array ein delete(x): suche und entferne alle Vorkommen von x in Liste bzw. Array Wie vermeidet man das Entstehen von Lücken im Array? Wenn A[j] zu entfernen ist: A[j] A[pegel]; pegel--; Operationen mit Zeitbedarf h = gegenwärtige Pegelhöhe/Listenlänge empty: erzeuge leere Liste / leeres Array A[1..m] O(1) member(x): durchsuche Liste / Array nach (erstem Auftreten von) x O(h) insert(x): füge x vorne in Liste ein bzw. füge x an Pegelposition in Array ein O(1) delete(x): suche und entferne alle Vorkommen von x in Liste bzw. Array O(h) Nachteil: Wenn sehr oft schon vorhandene Elemente eingefügt werden, kann der Umfang der Liste viel größer als S werden, mit entsprechenden Auswirkungen auf Platzbedarf und Zeitaufwand. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

8 (B) Einfach verkettete Liste oder Array ohne Wiederholung: Mögliche Darstellung der Menge {1, 2, 3, 5, 7, 8, 11}: list: bzw (B) Einfach verkettete Liste oder Array ohne Wiederholung: Vorteil: Platz für S U ist genau S Array-/Listeneinträge. Nachteil: Bei insert, delete, member jeweils lineare Suche nötig. Rechenaufwand in allen Fällen Θ( S ) h * * * m * * * * pegel: h Variable pegel enthält stets S FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD (C) Einfach verkettete Liste oder Array aufsteigend sortiert nur möglich bei angeordnetem Universum (U,<): Darstellung der Menge {1, 2, 3, 5, 7, 8, 11}: list: bzw Einfach verkettete Liste aufsteigend sortiert: Vorteil: Kann Suche nach x abbrechen, sobald ein Listen-/Arrayeintrag x erreicht wird. Mittlere Anzahl von Vergleichen bei Suche nach einem der Einträge a 1 < < a n : wenn für jedes i gilt: Pr(x = a i ) = 1 n 1 * * * pegel: h Variable pegel enthält stets S h m * * * * ( n) 1 n = n FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

9 Mittlere Anzahl von Vergleichen bei Suche nach einem x / {a 1,...,a n } (1 Vergleich für Entscheidung zwischen <,=,>): wenn gilt: für jedes i ist Pr(a i 1 < x < a i ) = 1 n+1 und Pr(x < a 1 ) = Pr(a n < x) = 1 n+1 : ( n + n) 1 n + 1 < n Dies gilt ebenfalls für die Einfüge- und die Lösch-Operation. Array, aufsteigend sortiert: Nachteil: insert, delete: Verschieben vieler Elemente nötig, um die Ordnung zu erhalten und dabei das Entstehen von Lücken zu vermeiden. Zeitaufwand: Θ( S ) Vorteil: member: Kann binäre Suche benutzen. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Binäre Suche, rekursiv Aufgabe: Suche Objekt x in Teilarray A[a..b] Idee: 0. Falls b < a, ist x nicht im Teilarray 1. Falls a = b, ist x in A[a..b], falls x = A[a], sonst nicht 2. Falls a < b, berechne m = (a+b)/2 (Mitte des Teilarrays) 3 Fälle: x = A[m]: gefunden x < A[m]: Wende Binäre Suche auf A[a..m 1] an x > A[m]: Wende Binäre Suche auf A[m + 1..b] an Suche nach x in A[1..h]: Binäre Suche in A[1..h] Gegeben: Array A[1..M], x: Keys; Prozedur RecBinSearch Eingabe: a,b: int; ( 1 a M + 1, 0 b M ) (1) if b < a then return false; (2) if a = b then return (x = A[a]); (3) m (a+b) div 2 ; (4) if x = A[m] then return true; (5) if x < A[m] then return RecBinSearch(a,m-1); (6) if x > A[m] then return RecBinSearch(m+1,b). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

10 Gegeben: Array A[1..M], x: Keys; Algorithmus Binäre Suche (rekursiv) Eingabe: Array A[1..M], x: Keys; h, 1 h M, mit A[1] < < A[h]; (1) return RecBinSearch(1, h) Korrektheit von Prozedur RecBinSearch: Proposition Das Teilarray A[a..b] von A[1..M] sei strikt aufsteigend sortiert, und es gelte 1 a M + 1,0 b M. Dann gilt: Der Aufruf RecBinSearch(a,b) liefert das Resultat true, falls x in A[a..b] vorkommt, false, falls nicht. Beweis: ( ) Die Aussage stimmt, falls a > b (Zeile (1)) Für den Fall a b benutzen wir verallgemeinerte Induktion. Behauptung: (I.B.) Wenn b a = i, dann liefert der Aufruf RecBinSearch(a, b) mit 1 a, b M das korrekte Resultat. Basis: i = 0. Dann ist a = b, und die Ausgabe ist korrekt (Zeile (2)). FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Ind.-Vor.: Die (I.B.) gilt für alle Aufrufe RecBinSearch(c, d) mit d c < i. Ind.-Schritt: Sei i > 0. Dann ist a < b. Es wird m = (a + b)/2 berechnet. Beobachte: a m < b. Fall 1: x = A[m]. Ausgabe korrekt (Zeile (4)) Fall 2: x < A[m]. Beobachte: Wenn x in A[a..b] vorkommt, dann nicht in A[m..b], denn A[a..b] ist aufsteigend sortiert. Es genügt also, x im restlichen Teil von A[a..b] zu suchen. Wir folgern: Der rekursive Aufruf RecBinSearch(a, m 1) in Zeile (5) liefert das korrekte Resultat. (Beachte: m 1 0.) Wieso? Falls m 1 < a: ( ). Falls m 1 a, ist (m 1) a < b a = i, also können wir die (I.B.) für (a, m 1) anwenden. Diese sagt: Aufruf RecBinSearch(a,m 1) liefert true, falls x in A[a..m 1] vorkommt, false sonst. Fall 3: x > A[m] Überlege analog zu Fall 2, benutze Induktionsvoraussetzung. Satz Rekursive Binäre Suche auf einem strikt aufsteigend geordneten Array A[1..h] liefert das korrekte Ergebnis. Beweis: Direkt aus der Proposition. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

11 Laufzeit von Prozedur RecBinSearch: T RBS (n) seien die worst-case Kosten für einen Aufruf Rec- BinSearch(a,b) mit n = b a + 1 (maximiert über alle möglichen Arrays A[a..b] und Indexpaare (a,b)) Jeder Aufruf von RecBinSearch verursacht Kosten C für eine Konstante C, wenn man die Kosten der hiervon ausgelösten rekursiven Aufrufe nicht zählt. Gesucht also, für alle n: r(n) = maximale Anzahl der Aufrufe, inklusive des ersten Aufrufs, wenn b a + 1 = n. Klar: Wenn n 1, ist r(n) = 1. Für n 2: Die rekursiven Aufrufe beziehen sich auf Teilarrays der Länge (n 1)/2 (links) oder (n 1)/2 (rechts). Dies liefert folgende Rekursionsformel: r(n) 1 + max{r( (n 1)/2 ),r( (n 1)/2 )}. Behauptung: r(n) 1 + log n, für n 1. Beweis: Verallgemeinerte Induktion. Korrekt für n = 1, weil log 1 = 0. Nun sei n 2. Nach Rekursionsformel: r(n) 1 + max{r( (n 1)/2 ),r( (n 1)/2 )}. Falls n = 2, heißt das r(2) 1 + max{r(0),r(1)} = 2 = 1 + log 2. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD Falls n 3, ist (n 1)/2 (n 1)/2 1, also (nach Induktionsvoraussetzung) r(n) 1 + max{1 + log( (n 1)/2 ),1 + log( (n 1)/2 )}. Weil (n 1)/2 n/2, folgt dann r(n) log(n/2) = 1 + log n; das ist die Induktionsbehauptung. Beispiel: Arraygröße erfordert etwa 23 rekursive Aufrufe für eine Suche. Mehrere Mengen: Datentyp DynSets Intuitive Aufgabe: Speichere mehrere Mengen S 1,...,S r U, so dass für jede die Operationen des Datentyps DynSet ausführbar sind und zudem Vereinigung, Durchschnitt, Differenz, Symmetrische Differenz Signatur: Wie DynSet, und zusätzlich: union : Sets Sets Sets intersection : Sets Sets Sets diff : Sets Sets Sets symdiff : Sets Sets Sets FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

12 Mathematisches Modell: Wie DynSet, und zusätzlich: union(s 1,S 2 ) := S 1 S 2 intersection(s 1,S 2 ) := S 1 S 2 diff (S 1,S 2 ) := S 1 S 2 symdiff (S 1,S 2 ) := (S 1 S 2 ) (S 2 S 1 ) Implementierung des Datentyps DynSets: Im Prinzip dieselben Möglichkeiten wie bei DynSet. einfach: ungeordnete Strukturen (Array/Liste) ohne Wiederholung. Implementierungen der vier Operationen: Für jedes Element von S 1 durchsuche Darstellung von S 2. Rechenzeit: Θ(n 1 n 2 ), wo S 1 = n 1, S 2 = n 2. FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD clever: aufsteigend sortierte Arrays/Listen. Implementierungen der vier Operationen: Rechenzeit: Θ(n 1 + n 2 ), wo S 1 = n 1, S 2 = n oo oo oo oo oo oo Mischen (wie merge bei Mergesort) FG KTuEA, TU Ilmenau AuD FG KTuEA, TU Ilmenau AuD

13 FG KTuEA, TU Ilmenau AuD

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

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

Algorithmen und Datenstrukturen SS09. Foliensatz 7. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 7 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 15 Mengenoperationen TU Ilmenau Seite 2 / 15 Mengenoperationen

Mehr

NAME, VORNAME: Studiennummer: Matrikel:

NAME, VORNAME: Studiennummer: Matrikel: TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.

Mehr

8 Elementare Datenstrukturen

8 Elementare Datenstrukturen Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

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

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

Abstrakte Datentypen und Datenstrukturen

Abstrakte Datentypen und Datenstrukturen Abstrakte Datentypen und Datenstrukturen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP2 SS 2009 21. April 2009 1 Praktikum zu DAP 2 Beginn: Mittwoch

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

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

1 Abstrakte Datentypen

1 Abstrakte Datentypen 1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

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

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dipl.-Ing. C. Mattern Klausur Algorithmen und Datenstrukturen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2014 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Datenstrukturen und Algorithmen. Vorlesung 8

Datenstrukturen und Algorithmen. Vorlesung 8 Datenstrukturen und Algorithmen Vorlesung 8 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap Schriftliche Prüfung Informationen

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 10.5.17 Sascha Witt sascha.witt@kit.edu (Mit Folien von Lukas Barth, Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Listen Skip List Hotlist Amortisierte

Mehr

Übungsklausur Algorithmen I

Übungsklausur Algorithmen I Jun.-Prof. Hofheinz, Jun.-Prof. Meyerhenke (ITI, KIT) 08.06.2015 Übungsklausur Algorithmen I Aufgabe 1. (Algorithm Engineering) Nennen Sie zwei Konzepte, die Algorithm Engineering im Gegensatz zu theoretischer

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Feld. Feld als sequentielle Liste

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Feld. Feld als sequentielle Liste Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 204 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Einführung 2 Grundlagen von Algorithmen

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume)

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume) Fachrichtung 6.2 Informatik Universität des Saarlandes Tutorenteam der Vorlesung Programmierung 1 Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen,

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

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 6 (6.5.2016) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

Mehr

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen. Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

ContainerDatenstrukturen. Große Übung 4

ContainerDatenstrukturen. Große Übung 4 ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne

Mehr

markiert, 0: unmarkiert.)

markiert, 0: unmarkiert.) 4.2 Fibonacci-Heaps Fibonacci-Heaps (F-Heaps) implementieren adressierbare Priority Queues (siehe Anfang von Kap. 4). Wie bei Binomialheaps besteht der Heap aus heapgeordneten Bäumen, jedoch mit gelockerten

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

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

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Frank Heitmann heitmann@informatik.uni-hamburg.de 4. November 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 11. Übung Verkettete Listen, Sortieren Insertionsort, Mergesort, Radixsort, Quicksort Clemens Lang Übungen zu AuD 19. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen

Mehr

5. Übungsblatt zu Algorithmen I im SoSe 2016

5. Übungsblatt zu Algorithmen I im SoSe 2016 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Dennis Hofheinz Lukas Barth, Lisa Kohl 5. Übungsblatt zu Algorithmen I im SoSe 2016 https://crypto.iti.kit.edu/index.php?id=algo-sose16

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

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

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste

Mehr

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch verschiedene Datenstrukturen: lineare Datenstrukturen: Array,

Mehr

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

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

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als

Mehr

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008 Informatik I. Kapitel Rainer Schrader Elementare Zentrum für Angewandte Informatik Köln 8. Mai 008 / / bisher haben wir nur Arrays verwendet, Gliederung Einführung abstrakte Datentypen Listen Stacks und

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Wie beim letzten Mal - bitte besucht: http://pingo.upb.de/549170 Ihr seid gleich wieder gefragt... Übung Algorithmen I 4.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann,

Mehr

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 9 (28.5.2014) Hashtabellen III Algorithmen und Komplexität Offene Adressierung : Zusammenfassung Offene Adressierung: Alle Schlüssel/Werte

Mehr

Übung: Algorithmen und Datenstrukturen SS 2007

Übung: Algorithmen und Datenstrukturen SS 2007 Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung

Mehr

Übungsklausur Algorithmen I

Übungsklausur Algorithmen I Universität Karlsruhe, Institut für Theoretische Informatik Prof. Dr. P. Sanders 26.5.2010 svorschlag Übungsklausur Algorithmen I Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe:

Mehr

Mathematische Grundlagen Kurz & Gut 1. 1 Frei nach Folien von Alex Schickedanz und David Veith

Mathematische Grundlagen Kurz & Gut 1. 1 Frei nach Folien von Alex Schickedanz und David Veith Mathematische Grundlagen Kurz & Gut 1 1 Frei nach Folien von Alex Schickedanz und David Veith Mathematische Grundlagen Kurz & Gut 1 Hinweise Hier werden Grundlagen der Datenstrukturen-Vorlesung rekapituliert.

Mehr

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 10, Donnerstag 8. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 10, Donnerstag 8. Januar 2015 (Verkettete Listen, Binäre Suchbäume) Junior-Prof. Dr.

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

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen Gliederung 5. Compiler 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1) für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Asymptotische Komplexität): Ordnen Sie die folgenden Funktionen nach

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Jörn Fischer j.fischer@hs-mannheim.de Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken

Mehr

Programmieren I. Kapitel 13. Listen

Programmieren I. Kapitel 13. Listen Programmieren I Kapitel 13. Listen Kapitel 13: Listen Ziel: eigene Datenstrukturen erstellen können und eine wichtige vordefinierte Datenstruktur( familie) kennenlernen zusammengehörige Elemente zusammenfassen

Mehr

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung Organisatorisches Algorithmen und Datenstrukturen Kapitel 3: Divide & Conquer Frank Heitmann heitmann@informatik.uni-hamburg.de 1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G-021. 2 Studie zum

Mehr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

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

Algorithmen & Datenstrukturen Midterm Test 2

Algorithmen & Datenstrukturen Midterm Test 2 Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

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

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.

Mehr

Einfache Datenstrukturen

Einfache Datenstrukturen Kapitel 2 Einfache Datenstrukturen Bis vor einigen Jahren hat es für das Telefonieren ausgereicht, neben dem Telefon ein Telefonbuch zur Hand zu haben. Das im wesentlichen auftretende Problem, daß man

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dr. Michael Brinkmeier Technische Universität Ilmenau Fakultät Informatik und Automatisierung Fachgebiet Automaten und Formale Sprachen 4.7.2007 Dr. Michael Brinkmeier (TU

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 11. Vorlesung Elementare Datenstrukturen: Stapel + Schlange + Liste Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-4 Zur Erinnerung Datenstruktur:

Mehr

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

Mehr

Datenstrukturen. Herzlich willkommen! Sommersemester Isolde Adler

Datenstrukturen. Herzlich willkommen! Sommersemester Isolde Adler Datenstrukturen Sommersemester 2010 Isolde Adler Herzlich willkommen! Organisatorisches nach der Vorlesung: Aufgabenblatt 2 Webseite der Verantaltung: http://pholia.tdi.informatik.uni-frankfurt.de/lehre/ss2010/ds/

Mehr

Informatik B Sommersemester Musterlösung zur Klausur vom

Informatik B Sommersemester Musterlösung zur Klausur vom Informatik B Sommersemester 007 Musterlösung zur Klausur vom 0.07.007 Aufgabe : Graphen und Graphalgorithmen + + + () Punkte Für eine beliebige positive, ganze Zahl n definieren wir einen Graphen G n =

Mehr

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil π Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig Oct

Mehr

Teil VII. Hashverfahren

Teil VII. Hashverfahren Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:

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

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl:

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl: Heapsort Bemerkung: Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern mit logarithmischem Aufwand durch Verwendung einer besonderen

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 5

Algorithmen und Datenstrukturen 1 Kapitel 5 Algorithmen und Datenstrukturen 1 Kapitel 5 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 5: Effizienz von Algorithmen 5.1 Vorüberlegungen Nicht

Mehr

Übung 4: Die generische Klasse AvlBaum in Java 1

Übung 4: Die generische Klasse AvlBaum in Java 1 Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (

Mehr