Datenstrukturen. Mariano Zelke. Sommersemester 2012

Größe: px
Ab Seite anzeigen:

Download "Datenstrukturen. Mariano Zelke. Sommersemester 2012"

Transkript

1 Datenstrukturen Mariano Zelke Sommersemester 2012

2 Prioritätswarteschlangen Mariano Zelke Datenstrukturen 2/28 Der abstrakte Datentyp Prioritätswarteschlange : Füge Elemente (mit Prioritäten) ein und entferne jeweils das Element höchster Priorität. Eine Schlange ist eine sehr spezielle Prioritätswarteschlange: Die Priorität eines Elements ist der negative Zeitpunkt der Einfügung. Der abstrakte Datentyp Prioritätswarteschlange umfasst dann die Operationen void insert(x,priorität), int delete max(), void change priority(wo,priorität ), wähle Priorität als neue Priorität und void remove(wo), entferne das durch wo beschriebene Element. Wir müssen eine geeignete Datenstruktur entwerfen.

3 Der Heap Mariano Zelke Datenstrukturen 3/28 Ein Heap ist ein Binärbaum mit Heap-Struktur, der Prioritäten gemäß einer Heap-Ordnung abspeichert. Ein geordneter Binärbaum T der Tiefe t hat Heap-Struktur, wenn: (a) jeder Knoten der Tiefe höchstens t 2 genau 2 Kinder hat, (b) wenn ein Knoten v der Tiefe t 1 weniger als 2 Kinder hat, dann haben alle Knoten der Tiefe t 1, die rechts von v liegen, kein Kind wenn v genau ein Kind hat, dann ist es ein linkes Kind. (Daraus folgt, dass nur höchstens ein Knoten genau ein Kind haben kann.) Ein Binärbaum mit Heap-Struktur ist ein fast vollständiger binärer Baum: Alle Knoten links von v haben zwei Kinder, alle Knoten rechts von v haben keine Kinder.

4 Beispiele Heap-Struktur Mariano Zelke Datenstrukturen 4/28 Dieser Baum hat Heap-Struktur: genauso wie dieser: und dieser: Dieser Baum hat keine Heap- Struktur: dieser auch nicht:

5 Heap-Ordnung Mariano Zelke Datenstrukturen 5/28 Ein geordneter binärer Baum T mit Heap-Struktur speichere für jeden Knoten v die Priorität p(v) von v. T hat Heap-Ordnung, falls für jeden Knoten v und für jedes Kind w von v gilt p(v) p(w) Die höchste Priorität wird stets an der Wurzel gespeichert. Für die Operation delete max() muss nur die Priorität der Wurzel überschrieben werden. Wie sollte man einen Baum mit Heap-Struktur implementieren? Wir arbeiten mit einem Array.

6 Mariano Zelke Datenstrukturen 6/28 Die Datenstruktur Heap (Link) Das Array H ist ein Heap für T, wenn T Heap-Struktur und Heap-Ordnung hat. Zusätzlich muss gelten H[1] = p(r) für die Wurzel r von T und wenn H[i] die Priorität des Knotens v speichert, dann gilt H[2 i] = p(v L ) für das linke Kind v L von v und H[2 i + 1] = p(v R ) für das rechte Kind v R. Beispiel dargestellt als Array besitzt den Heap: (9,4,7,3,1) Der folgende Baum verletzt die Heap-Struktur: Sein Heap (9,4,7,3,,1) enthält ein Loch.

7 Die Funktion Insert Mariano Zelke Datenstrukturen 7/28 Wie navigiert man in einem Heap H? Wenn Knoten v in Position i gespeichert ist, dann ist das linke Kind v L in Position 2 i, das rechte Kind in Position 2 i + 1 und der Vater von v in Position i/2 gespeichert. Wenn wir die Priorität p einfügen wollen, liegt es nahe, p auf der ersten freien Position abzulegen. Wir erhöhen also den Zähler n für die Anzahl der Elemente im Heap um eins: n = n + 1, und speichern danach die neue Priorität ab: H[n] = p Der neue Baum hat Heap-Struktur, aber die Heap-Ordnung ist möglicherweise verletzt. Wie kann die Heap-Ordnung kostengünstig repariert werden?

8 Wir fügen die Priorität 11 ein Mariano Zelke Datenstrukturen 8/ Nach dem Anhängen von 11 ist die Heap-Ordnung verletzt. Darum rutscht die 11 nach oben: Und ein weiterer Vertauschungsschritt repariert die Heap-Ordnung:

9 Die Repair up Prozedur Mariano Zelke Datenstrukturen 9/28 Die Klasse heap enthalte die Funktion repair up. void heap::repair up (int wo){ int p = H[wo]; while ((wo > 1) && (H[wo/2] < p)){ H[wo] = H[wo/2]; wo = wo/2; } H[wo] = p; } Wir verschieben die Priorität solange nach oben, bis entweder die Priorität des Vaters mindestens so groß ist oder bis wir die Wurzel erreicht haben. Wie groß ist der Aufwand? Höchstens proportional zur Tiefe des Baums!

10 Die Funktion Delete max() Mariano Zelke Datenstrukturen 10/28 H repräsentiere einen Heap mit n Prioritäten. Für delete max: gib die Priorität H[1] zurück Überschreibe die Wurzel mit H[n] und verringere n um 1. Durch das Überschreiben mit H(n) ist das entstandene Loch an der Wurzel verschwunden: Die Heap-Struktur ist wiederhergestellt. Allerdings ist die Heap-Ordnung möglicherweise verletzt und muss repariert werden. Die Prozedur repair up versagt: sie ist nur anwendbar, wenn die falsch stehende Priorität größer als die Vater-Priorität ist.

11 Ein Beispiel Nach Entfernen des Maximums fehlt die Wurzel. Wir setzen das letzte Heap-Element an die Wurzel: Damit ist die Heap-Ordnung verletzt. Darum vertauschen wir die Wurzel mit dem größten Kind Repariere die Heap-Ordnung nach unten. Heap-Ordnung immer noch verletzt. Vertausche weiter mit 5 dem größten Kind, bis 3 4 wieder Heap-Ordnung 1 2 erreicht. Mariano Zelke Datenstrukturen 11/28

12 Mariano Zelke Datenstrukturen 12/28 Die Prozedur Repair down Die Klasse heap enthalte die Funktion repair down. void heap::repair down (int wo){ int kind; int p = H[wo]; while (wo <= n/2){ kind = 2 * wo; if ((kind < n) && (H[kind] < H[kind + 1])) kind ++; if (p >= H [kind]) break; H[wo] = H[kind]; wo = kind; } H[wo] = p; } Animation Die Priorität p wird mit der Priorität des größten Kinds verglichen und möglicherweise vertauscht. Die Prozedur endet, wenn wo die richtige Position ist, bzw. wenn wo ein Blatt bezeichnet. Wie groß ist der Aufwand? Höchstens proportional zur Tiefe.

13 Change priority und Remove Mariano Zelke Datenstrukturen 13/28 void change priority (int wo, int p): Wir aktualisieren die Priorität, setzen also H [wo] = p. Aber wir verletzen damit möglicherweise die Heap-Ordnung! Wenn die Priorität angewachsen ist, dann rufe repair up auf. Ansonsten hat sich die Priorität verringert und repair down ist aufzurufen. void remove(int wo): Stelle die Heap-Struktur durch wieder her durch H[wo] = H[n]; n = n 1; und repariere Heap-Ordnung wie bei change priority. Alle vier Operationen insert, delete max, change priority und remove benötigen Zeit höchstens proportional zur Tiefe des Heaps.

14 Die Tiefe eines Heaps mit n Knoten Mariano Zelke Datenstrukturen 14/28 Der Binärbaum T besitze Heap-Struktur. Wenn T die Tiefe t besitzt, dann hat T mindestens t = 2 t Knoten aber nicht mehr als t t = 2 t+1 1 Knoten. Also folgt 2 Tiefe(T ) n < 2 Tiefe(T )+1. Tiefe (T ) = log 2 n und alle vier Operationen werden somit in logarithmischer Zeit unterstützt!

15 Heapsort Mariano Zelke Datenstrukturen 15/28 Ein Array (A[1],..., A[n]) ist zu sortieren. Dazu benutzen wir den Heap h, der anfangs leer ist. for (i = 1; i <= n ; i++) h.insert(a[i]); for (i = n; i >= 1 ; i--) A[i] = h.delete max(); //Das Array A ist jetzt aufsteigend sortiert. Zuerst wird n Mal eingefügt und dann n Mal das Maximum entfernt. Sowohl die anfängliche Einfügephase wie auch die letztliche Entfernungsphase benötigen Zeit höchstens O(n log 2 n). Heapsort ist eines der schnellsten Sortierverfahren. Die anfängliche Einfügephase kann sogar noch weiter beschleunigt werden!

16 Wie kann der Heap schneller geladen werden? Mariano Zelke Datenstrukturen 16/28 Führe statt vielen kleinen Reparaturen eine große Reparatur durch. Lade den Heap ohne Reparaturen Beginne die Reparatur mit den Blättern. Jedes Blatt ist schon ein Heap und eine Reparatur ist nicht notwendig. Wenn t die Tiefe des Heaps ist, dann kümmern wir uns als nächstes um die Knoten v der Tiefe t 1: Sei Tv der Teilbaum mit Wurzel v. Tv ist nur dann kein Heap, wenn die Heap-Ordnung im Knoten v verletzt ist: Repariere mit repair down, gestartet in v. Höchstens ein Vertauschungsschritt wird benötigt. Wenn v ein Knoten der Tiefe t j ist, dann muss höchstens die Heap-Ordnung im Knoten v repariert werden. Höchstens j Vertauschungsschritte genügen. Es gibt nur wenige teure Reparaturschritte!

17 Analyse Mariano Zelke Datenstrukturen 17/28 Es gibt 2 t j Knoten der Tiefe t j (für j 1). Für jeden dieser Knoten sind höchstens j Vertauschungsschritte durchzuführen, für alle Knoten ist dies also durch beschränkt. Behauptung: t j 2 t j = 2 t+1 t 2. j=1 Wir geben einen induktiven Beweis: t+1 t j 2 t+1 j = 2 j 2 t j + t + 1 j=1 j=1 t j=1 j 2 t j = 2 (2 t+1 t 2) + t + 1 = 2 t+2 (t + 1) 2. Da 2 t n gilt, ist 2 t+1 t 2 2n log n 2 Der Heap kann in linearer Zeit geladen werden.

18 Die Klasse heap Mariano Zelke Datenstrukturen 18/28 class heap{ private: int *H; // H ist der Heap. int n; // n bezeichnet die Größe des Heaps. void repair up (int wo); void repair down (int wo); public: heap (int max) { H = new int[max]; n=0; } //Konstruktor void insert (int priority); int delete max( ); void change priority (int wo, int p); void remove(int wo); void heapsort(); void build heap(); void write (int i) { n++; H[n] = i; } };

19 Prioritätswarteschlangen: Zusammenfassung Mariano Zelke Datenstrukturen 19/28 (a) Ein Heap mit n Prioritäten unterstützt jede der Operationen insert, delete max, change priority und remove in Zeit O(log 2 n). Für die Operationen change priority und remove muss die Position der zu ändernden Priorität bekannt sein. (b) build heap baut einen Heap mit n Prioritäten in Zeit O(n). (c) heapsort sortiert n Zahlen in Zeit O(n log 2 n).

20 Das Single-Source-Shortest-Path-Problem Mariano Zelke Datenstrukturen 20/28 Ein gerichteter Graph G = (V, E) und eine Längen-Zuweisung länge: E R 0 an die Kanten des Graphen ist gegeben. Bestimme kürzeste Wege von einem ausgezeichneten Startknoten s V zu allen Knoten von G. Die Länge eines Weges ist die Summe seiner Kantengewichte. Mit Hilfe der Breitensuche können wir kürzeste-wege Probleme lösen, falls länge(e) = 1 für jede Kante e E gilt. Für allgemeine nicht-negative Längen brauchen wir eine ausgeklügeltere Idee. Kantengewichte sind nicht-negativ: Die kürzeste, mit s verbundene Kante (s, v) ist ein kürzester Weg von s nach v. Dijkstras Algorithmus setzt diese Beobachtung wiederholt ein.

21 Dijkstras Algorithmus Mariano Zelke Datenstrukturen 21/28 (1) Setze S = {s} und für alle Knoten v V \ {s} setze { länge (s, v) wenn (s, v) E distanz[v] = sonst. /* distanz[v] ist die Länge des bisher festgestellten kürzesten Weges von s nach v. */ (2) Solange S V wiederhole (a) wähle einen Knoten w V \ S mit kleinstem Distanz-Wert. /* distanz[w] ist die tatsächliche Länge eines kürzesten Weges von s nach w. */ (b) Füge w in S ein. (c) Aktualisiere die Distanz-Werte der Nachfolger von w: Setze für jeden Nachfolger u V \ S von w distanz[u] = min(distanz[u], distanz[w]+länge(w,u));

22 Beispiel Dijkstras Algorithmus Mariano Zelke Datenstrukturen 22/ s

23 Beispiel Dijkstras Algorithmus Mariano Zelke Datenstrukturen 22/28 S V \S 3 distanz[4]=3 distanz[2]= s distanz[5]=0 distanz[3]= distanz[0]= distanz[1]=

24 Beispiel Dijkstras Algorithmus Mariano Zelke Datenstrukturen 22/28 S V \S 3 distanz[4]=3 distanz[2]= s distanz[5]=0 distanz[3]= distanz[0]= distanz[1]=32

25 Beispiel Dijkstras Algorithmus Mariano Zelke Datenstrukturen 22/28 distanz[4]=3 distanz[2]= s distanz[5]=0 distanz[3]= distanz[0]= distanz[1]=32

26 Mariano Zelke Datenstrukturen 23/28 Datenstrukturen für Dijkstras Algorithmus In der Vorlesung Algorithmentheorie wird gezeigt, dass Dijkstras Algorithmus korrekt ist und das Kürzeste-Wege-Problem effizient löst. Darstellung des Graphen G: Wir implementieren G als Adjazenzliste, da wir dann sofortigen Zugriff auf die Nachfolger u von w im Aktualisierungschritt (2c) haben. Implementierung der Menge V \ S: Knoten sind gemäß ihrem anfänglichen Distanzwert einzufügen. Ein Knoten w mit kleinstem Distanzwert ist zu bestimmen und zu entfernen. Wähle einen Min-Heap, um die entsprechende Prioritätswarteschlange zu implementieren: Ersetze die Funktion delete max() durch die Funktion delete min(). (Und passe repair up und repair down entsprechend an.) Implementiere den Aktualisierungschritt (2c) durch change priority(wo,neue Distanz). Woher kennen wir die Position wo?

27 Mariano Zelke Datenstrukturen 24/28 Minimale Spannbäume (Link) Sei G = (V, E) ein ungerichteter, zusammenhängender Graph. Jede Kante e E erhält eine positiv, reellwertige Länge länge(e). Ein Baum T = (V, E ) heißt ein Spannbaum für G, falls V = V und E E. Die Länge eines Spannbaums ist die Summe der Längen seiner Kanten. Ein minimaler Spannbaum ist ein Spannbaum minimaler Länge. Je zwei Knoten von G bleiben auch in einem Spannbaum T miteinander verbunden, denn ein Baum ist zusammenhängend. Wenn wir aber irgendeine Kante aus T entfernen, dann zerstören wir den Zusammenhang. Wir suchen nach einem zusammenhängenden Teilgraph in G, der minimale Länge hat.

28 Der Algorithmus von Prim: Die Idee Mariano Zelke Datenstrukturen 25/28 Angenommen wir wissen, dass ein Baum B in einem minimalen Spannbaum enthalten ist. Wir möchten eine kreuzende Kante zu B hinzufügen: e soll also einen Knoten in B mit einem Knoten außerhalb von B verbinden. Der Algorithmus von Prim wählt eine kürzeste kreuzende Kante. In der Vorlesung Algorithmentheorie wird gezeigt, dass auch B {e} in einem minimalen Spannbaum enthalten ist: Der Algorithmus berechnet also einen minimalen Spannbaum. Worauf müssen wir bei der Implementierung achten? Eine kürzeste kreuzende Kante muss schnell gefunden werden. Wenn der Baum B um einen neuen Knoten u anwächst, dann erhalten wir neue kreuzende Kanten, nämlich in u endende Kanten.

29 Der Algorithmus von Prim Mariano Zelke Datenstrukturen 26/28 (1) Setze S = {0}. /* B ist stets ein Baum mit Knotenmenge S. Zu Anfang besteht B nur aus dem Knoten 0. */ (2) Solange S V, wiederhole: (a) Bestimme eine kürzeste kreuzende Kante e = {u, v}. (b) Füge e zu B hinzu. (c) Wenn u S, dann füge v zu S hinzu. Ansonsten füge u zu S hinzu. /* Beachte, dass wir neue kreuzende Kanten erhalten, nämlich alle Kanten die den neu hinzugefügten Knoten als einen Endpunkt und einen Knoten aus V \ S als den anderen Endpunkt besitzen. */

30 Beispiel Prims Algorithmus Mariano Zelke Datenstrukturen 27/28 Dortmund Oldenburg Hamburg Rostock Bremen Berlin 7 16 Frankfurt/M. Karlsruhe Hannover Leipzig 8 Nürnberg Dresden München

31 Beispiel Prims Algorithmus Mariano Zelke Datenstrukturen 27/28 S V \S Dortmund Oldenburg Hamburg Rostock Bremen Berlin 7 16 Frankfurt/M. Karlsruhe Hannover Leipzig 8 Nürnberg Dresden München

32 Beispiel Prims Algorithmus Mariano Zelke Datenstrukturen 27/28 S V \S Dortmund Oldenburg Hamburg Rostock Bremen Berlin 7 16 Frankfurt/M. Karlsruhe Hannover Leipzig 8 Nürnberg Dresden München

33 Beispiel Prims Algorithmus Mariano Zelke Datenstrukturen 27/28 S V \S Dortmund Oldenburg Hamburg Rostock Bremen Berlin 7 16 Frankfurt/M. Karlsruhe Hannover Leipzig 8 Nürnberg Dresden München

34 Mariano Zelke Datenstrukturen 27/28 Beispiel Prims Algorithmus Oldenburg Bremen Hamburg 9 2 Rostock 16 Berlin Dortmund 7 Hannover 6 Leipzig 8 Frankfurt/M Dresden Nürnberg Karlsruhe 3 München

35 Die Datenstrukturen für Prims Algorithmus Mariano Zelke Datenstrukturen 28/28 Für jeden Knoten u V \ S bestimmen wir die Länge l(u) einer kürzesten Kante, die u mit einem Knoten in S verbindet. Wir verwalten die Knoten in V \ S mit einer Prioritätswarteschlange und definieren l(u) als die Priorität des Knotens u. Initialisiere einen Min-Heap, indem jeder Nachbar u von Startknoten 0 mit Priorität länge({0, u}) einfügt wird, bzw. mit Priorität, wenn u kein Nachbar ist. Wir bestimmen also eine kürzeste kreuzende Kante, wenn wir einen Knoten in u V \ S mit niedrigster Priorität bestimmen. Beachte, dass sich nur die Prioritäten der Nachbarn von u ändern. Implementiere G durch eine Adjazenzliste, da wir stets nur auf die Nachbarn eines Knoten zugreifen müssen.

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

Mehr

5.5 Prioritätswarteschlangen

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

Mehr

Graphalgorithmen. 9. November / 54

Graphalgorithmen. 9. November / 54 Graphalgorithmen 9. November 2017 1 / 54 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

Mehr

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Keller, Schlangen und Listen Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Listen Listen unterstützen die Operationen Lookup, Insert, Remove. + Listen passen sich der Größe der zu speichernden

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

Informatik II, SS 2014

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

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile

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

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Grundlagen der Algorithmen und Datenstrukturen Kapitel 6 Christian Scheideler + Helmut Seidl SS 2009 25.05.09 Kapitel 6 1 Priority Queue M: Menge von Elementen Jedes Element e identifiziert über key(e).

Mehr

Copyright, Page 1 of 7 Heapsort

Copyright, Page 1 of 7 Heapsort www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl

Mehr

Sortieren II / HeapSort Heaps

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

Mehr

Keller, Schlangen und Listen. Kapitel 3: Elementare Datenstrukturen Einfach verkettete Listen 1 / 99

Keller, Schlangen und Listen. Kapitel 3: Elementare Datenstrukturen Einfach verkettete Listen 1 / 99 Keller, Schlangen und Listen Kapitel 3: Elementare Datenstrukturen Einfach verkettete Listen 1 / 99 Einfach verkettete Listen Eine Zeiger-Implementierung von einfach-verketteten Listen, also Listen mit

Mehr

Algorithmen und Datenstrukturen

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

Mehr

9. Natürliche Suchbäume

9. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr

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

Algorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-5. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-16 Heaps 1 Heaps Binäre Heaps Erhalten der Heap-Eigenschaft Erzeugen eines

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Kapitel 3: Elementare Datenstrukturen Mariano Zelke Datenstrukturen 2/18 Einfach verkettete Listen Mariano Zelke Datenstrukturen 3/18 Eine Zeiger-Implementierung

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:

Mehr

Datenstrukturen (SoSe 12) Klausur (Modulabschlussprüfung)

Datenstrukturen (SoSe 12) Klausur (Modulabschlussprüfung) Goethe-Universität Frankfurt am Main 27. Juli 2012 Institut für Informatik Theorie komplexer Systeme Dr. Mariano Zelke Datenstrukturen (SoSe 12) Klausur (Modulabschlussprüfung) Name: Vorname: Studiengang:

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen Heapsort Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

3.2 Generischer minimaler Spannbaum-Algorithmus

3.2 Generischer minimaler Spannbaum-Algorithmus 3.2 Generischer minimaler Spannbaum-Algorithmus Initialisiere Wald F von Bäumen, jeder Baum ist ein singulärer Knoten (jedes v V bildet einen Baum) while Wald F mehr als einen Baum enthält do wähle einen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen

Mehr

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

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

Mehr

Keller, Schlangen und Listen. 19. Juni / 113

Keller, Schlangen und Listen. 19. Juni / 113 Keller, Schlangen und Listen 19. Juni 2017 1 / 113 Einfach verkettete Listen Eine Zeiger-Implementierung von einfach-verketteten Listen, also Listen mit Vorwärtszeigern. //Deklarationsdatei liste.h fuer

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Prioritätswarteschlangen Maike Buchin 18. und 23.5.2017 Prioritätswarteschlange Häufiges Szenario: dynamische Menge von Objekten mit Prioritäten, z.b. Aufgaben, Prozesse, in der

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

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

Mehr

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt: 3. Minimale Spannbäume Sei G = (V, E) ein einfacher ungerichteter Graph, der o.b.d.a. zusammenhängend ist. Sei weiter w : E R eine Gewichtsfunktion auf den Kanten von G. Wir setzen E E: w(e ) = e E w(e),

Mehr

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27

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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

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

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1.

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1. Kap. 3 Sortieren 3.1.5 HeapSort ff 3.1.6 Priority Queues Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 7.

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

Keller, Schlangen und Listen. Kapitel 3: Elementare Datenstrukturen Einfach verkettete Listen 1 / 103

Keller, Schlangen und Listen. Kapitel 3: Elementare Datenstrukturen Einfach verkettete Listen 1 / 103 Keller, Schlangen und Listen Kapitel 3: Elementare Datenstrukturen Einfach verkettete Listen 1 / 103 Einfach verkettete Listen Eine Zeiger-Implementierung von einfach-verketteten Listen, also Listen mit

Mehr

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47 Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford

Mehr

9 Minimum Spanning Trees

9 Minimum Spanning Trees Im Folgenden wollen wir uns genauer mit dem Minimum Spanning Tree -Problem auseinandersetzen. 9.1 MST-Problem Gegeben ein ungerichteter Graph G = (V,E) und eine Gewichtsfunktion w w : E R Man berechne

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

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 00

Mehr

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

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

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 208 (Algorithmen & Datenstrukturen) Vorlesung 4 (..208) Graphenalgorithmen III Algorithmen und Komplexität Bäume Gegeben: Zusammenhängender, ungerichteter Graph G = V, E Baum: Zusammenhängender,

Mehr

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

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

Mehr

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

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

Mehr

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

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine

Mehr

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 1/1 Datenstrukturen und Algorithmen Vorlesung 14: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/

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

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Einfach verkettete Listen Mariano Zelke Datenstrukturen 2/32 Eine Zeiger-Implementierung von einfach verketteten Listen, also Listen mit Vorwärtszeigern.

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Lernmodul 7 Algorithmus von Dijkstra

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

Mehr

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

Datenstrukturen & Algorithmen

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

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Manipulation von Mengen

Manipulation von Mengen Manipulation von Mengen Thomas Röfer Vorrangwarteschlange Linksbaum Heap HeapSort Union-Find-Strukturen Allgemeiner Rahmen für Mengenmanipulationen Rückblick Hashing Streuspeicherverfahren Hashfunktion

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Problemstellung Algorithmus von Prim

Mehr

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer

Mehr

Algorithmen und Datenstrukturen 13

Algorithmen und Datenstrukturen 13 19. Juli 2012 1 Besprechung Blatt 12 Fragen 2 Bäume AVL-Bäume 3 Graphen Allgemein Matrixdarstellung 4 Graphalgorithmen Dijkstra Prim Kruskal Fragen Fragen zu Blatt 12? AVL-Bäume AVL-Bäume ein AVL-Baum

Mehr

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

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

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

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus 2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus {0, 1,..., B 1} d in Zeit O(d(n + B)) sortiert werden, indem sie zuerst gemäß dem letzten

Mehr

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown Kap. Sortieren..5 HeapSort ff..6 Priority Queues Professor Dr. Vorlesung am Do 7.5. entfällt wegen FVV um Uhr Lehrstuhl für Algorithm Engineering, LS Fakultät für nformatik, TU Dortmund 7. VO DAP SS 009

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

Algorithmen I - Tutorium 28 Nr. 11

Algorithmen I - Tutorium 28 Nr. 11 Algorithmen I - Tutorium 28 Nr. 11 13.07.2017: Spaß mit Schnitten, Kreisen und minimalen Spannbäumen Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR.

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

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

Mehr

1 Kürzeste Pfade in Graphen

1 Kürzeste Pfade in Graphen Praktikum Algorithmen-Entwurf (Teil 3) 03.11.2011 1 1 Kürzeste Pfade in Graphen Es sei ein gerichteter Graph G = (V, E) mit V = n Knoten, E = m Kanten und Kantengewichten c : E R gegeben. Ein Pfad in G

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

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 22.04.2014 Überlagern von Kartenebenen Beispiel: Gegeben zwei verschiedene Kartenebenen,

Mehr

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen SS07 Datenstrukturen und Algorithmen SS0 Datum:.6.200 Michael Belfrage mbe@student.ethz.ch belfrage.net/eth Programm von Heute Minimaler Spannbaum (MST) Challenge der Woche Fibonacci Heap Minimaler Spannbaum

Mehr

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Informatik II: Algorithmen & Datenstrukturen Montag, 29. August, 2014, 14:00 17:00 Name:...........................................................

Mehr

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1 Allgemeines. Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition.. (a) Ein Graph G =(V, E) heißt kreisfrei, wenn er keinen Kreis besitzt. Beispiel: Ein kreisfreier Graph: FG KTuEA, TU Ilmenau

Mehr

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder:

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder: 4.2 Fibonacci-Heaps 4.2.1 Aufbau Knoten v hat folgende Felder: Vaterzeiger p(v) Zeiger auf linkes Geschwister: prev(v) Zeiger auf rechtes Geschwister: next(v) Kindzeiger: child(v) Schlüssel: key: aus U

Mehr

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure 7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht

Mehr

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps // Mengen Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps n Ziel: ufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: n eines Elements n eines Elements

Mehr

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume) WS 2016/17 Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_16

Mehr

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig Janosch Maier 3. August 2011 Inhaltsverzeichnis 1 Sortieren 3 1.1 Externes Sortieren..........................

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

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 13 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne

Mehr

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n). 2.6 Vergleichsbasierte Sortierverfahren Alle bisher betrachteten Sortierverfahren sind vergleichsbasiert, d.h. sie greifen auf Schlüssel k, k (außer in Zuweisungen) nur in Vergleichsoperationen der Form

Mehr

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt U N S A R I V E R S A V I E I T A S N I S S Grundzüge von Algorithmen und Datenstrukturen, WS /6: Lösungshinweise zum 3. Übungsblatt Christian Hoffmann, Fabian Bendun Aufgabe 3. (a) Sei j i + = n die Größe

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

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Kontrollfragen Graphen Graphenalgorithmen 2

Mehr

Karlsruher Institut für Technologie. Klausur Algorithmen I

Karlsruher Institut für Technologie. Klausur Algorithmen I Klausur-ID: Vorname: Matrikelnummer: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 11. April 2018 Klausur Algorithmen I Aufgabe 1. Kleinaufgaben 15 Punkte

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

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012 Algorithmen und Datenstrukturen Tafelübung 14 Jens Wetzl 8. Februar 2012 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer

Mehr

Datenstrukturen. einfach verkettete Liste

Datenstrukturen. einfach verkettete Liste einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten

Mehr

Das EM-Modell. Vorlesung 3: Lubys Algorithmus. Graphenalgorithmen und lineare Algebra Hand in Hand

Das EM-Modell. Vorlesung 3: Lubys Algorithmus. Graphenalgorithmen und lineare Algebra Hand in Hand Vorlesung 3: Lubys Algorithmus Das EM-Modell 85 Nachsatz: Halbringnotation! Auch Bücher enthalten Fehler...! A op 1.op 2 v: Abkürzung für Matrix-Vektor-Multiplikation! Vereinbarung für Reihenfolge: A +.*

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr