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

Größe: px
Ab Seite anzeigen:

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

Transkript

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

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

3 Listen Listen unterstützen die Operationen Lookup, Insert, Remove. + Listen passen sich der Größe der zu speichernden Datenmenge dynamisch an. - Achtung: Lookup wird durch die lineare Suche implementiert und benötigt eine Laufzeit proportional zur Länge der Liste! Fürchterlich?!? Gleiches gilt für die Insert-Operation (wenn die Schlüssel sortiert abgespeichert werden) wie auch für die Remove-Operation. Elementare Datenstrukturen Keller, Schlangen und Listen 2 / 14

4 Listen Listen unterstützen die Operationen Lookup, Insert, Remove. + Listen passen sich der Größe der zu speichernden Datenmenge dynamisch an. - Achtung: Lookup wird durch die lineare Suche implementiert und benötigt eine Laufzeit proportional zur Länge der Liste! Fürchterlich?!? Gleiches gilt für die Insert-Operation (wenn die Schlüssel sortiert abgespeichert werden) wie auch für die Remove-Operation. Die Adjazenzliste für Graphen ist eine wichtige Anwendung. Viele Graph-Algorithmen (wie etwa Tiefen- oder Breitensuche) müssen alle Nachbarn besuchen: Die Abspeicherung der Nachbarn in einer Liste ist optimal! Elementare Datenstrukturen Keller, Schlangen und Listen 2 / 14

5 Keller und Schlangen Keller unterstützen die Operationen Insert und Remove (des jüngsten Schlüssels). + Beide Operationen gelingen in Konstantzeit! + Eine wichtige Anwendung ist Elementare Datenstrukturen Keller, Schlangen und Listen 3 / 14

6 Keller und Schlangen Keller unterstützen die Operationen Insert und Remove (des jüngsten Schlüssels). + Beide Operationen gelingen in Konstantzeit! + Eine wichtige Anwendung ist die Implementierung der Rekursion. Elementare Datenstrukturen Keller, Schlangen und Listen 3 / 14

7 Keller und Schlangen Keller unterstützen die Operationen Insert und Remove (des jüngsten Schlüssels). + Beide Operationen gelingen in Konstantzeit! + Eine wichtige Anwendung ist die Implementierung der Rekursion. Schlangen modellieren Warteschlangen und unterstützen die Operationen Insert und Remove (des ältesten Schlüssels). + Beide Operationen gelingen in Konstantzeit! Elementare Datenstrukturen Keller, Schlangen und Listen 3 / 14

8 Keller und Schlangen Keller unterstützen die Operationen Insert und Remove (des jüngsten Schlüssels). + Beide Operationen gelingen in Konstantzeit! + Eine wichtige Anwendung ist die Implementierung der Rekursion. Schlangen modellieren Warteschlangen und unterstützen die Operationen Insert und Remove (des ältesten Schlüssels). + Beide Operationen gelingen in Konstantzeit! + Breitensuche wird mit Schlangen implementiert. Elementare Datenstrukturen Keller, Schlangen und Listen 3 / 14

9 Prioritätswarteschlangen Elementare Datenstrukturen Prioritätswarteschlangen 4 / 14

10 Insert und Delete_Max Prioritätswarteschlangen unterstützen Warteschlangen mit Prioritäten, nämlich die Operationen Insert und Delete_Max. + Ein Heap implementiert beide Operationen in logarithmischer Zeit. - Lookup ist Elementare Datenstrukturen Prioritätswarteschlangen 5 / 14

11 Insert und Delete_Max Prioritätswarteschlangen unterstützen Warteschlangen mit Prioritäten, nämlich die Operationen Insert und Delete_Max. + Ein Heap implementiert beide Operationen in logarithmischer Zeit. - Lookup ist extrem langsam! + Eine wichtige Anwendung von Prioritätswarteschlangen ist Elementare Datenstrukturen Prioritätswarteschlangen 5 / 14

12 Insert und Delete_Max Prioritätswarteschlangen unterstützen Warteschlangen mit Prioritäten, nämlich die Operationen Insert und Delete_Max. + Ein Heap implementiert beide Operationen in logarithmischer Zeit. - Lookup ist extrem langsam! + Eine wichtige Anwendung von Prioritätswarteschlangen ist Dijkstra s Algorithmus für das Single- Source-Shortest-Path Problem. Elementare Datenstrukturen Prioritätswarteschlangen 5 / 14

13 Heaps: Nutzen und Fluch der Heapordnung Ein Heap wird durch Heapstruktur und Heapordnung definiert. Was bedeuten diese Begriffe? Elementare Datenstrukturen Prioritätswarteschlangen 6 / 14

14 Heaps: Nutzen und Fluch der Heapordnung Ein Heap wird durch Heapstruktur und Heapordnung definiert. Was bedeuten diese Begriffe? Die Funktionen Repair_up und Repair_down stellen die Heapordnung wieder her. Was genau tun diese Funktionen? Elementare Datenstrukturen Prioritätswarteschlangen 6 / 14

15 Heaps: Nutzen und Fluch der Heapordnung Ein Heap wird durch Heapstruktur und Heapordnung definiert. Was bedeuten diese Begriffe? Die Funktionen Repair_up und Repair_down stellen die Heapordnung wieder her. Was genau tun diese Funktionen? Ein Heap implementiert eine Prioritätswarteschlange durch ein Array: Wie navigiert man im Heap-Array? Wo findet man den Vater, wo die Kinder, wo die Wurzel? Elementare Datenstrukturen Prioritätswarteschlangen 6 / 14

16 Heaps: Nutzen und Fluch der Heapordnung Ein Heap wird durch Heapstruktur und Heapordnung definiert. Was bedeuten diese Begriffe? Die Funktionen Repair_up und Repair_down stellen die Heapordnung wieder her. Was genau tun diese Funktionen? Ein Heap implementiert eine Prioritätswarteschlange durch ein Array: Wie navigiert man im Heap-Array? Wo findet man den Vater, wo die Kinder, wo die Wurzel? Warum ist die Lookup-Operation so schwierig für Heaps, warum sind Insert und Delete_Max einfach? Elementare Datenstrukturen Prioritätswarteschlangen 6 / 14

17 Bäume Bäume 7 / 14

18 Die wichtigen Begriffe 1 Wie definiert man ungerichtete Bäume und wie gerichtete Bäume und wozu benutzt man eigentlich Bäume? Zur Veranschaulichung (Rekursionsbäume, Verzeichnisbäume, Vorfahrenbäume,...) Zur Implementierung von Wörterbüchern, für die Kompilierung,.... Bäume 8 / 14

19 Die wichtigen Begriffe 1 Wie definiert man ungerichtete Bäume und wie gerichtete Bäume und wozu benutzt man eigentlich Bäume? Zur Veranschaulichung (Rekursionsbäume, Verzeichnisbäume, Vorfahrenbäume,...) Zur Implementierung von Wörterbüchern, für die Kompilierung, Was ist die Tiefe und was ist die Höhe eines Baums? Und wie berechnet man Tiefe und Höhe? Bäume 8 / 14

20 Die wichtigen Begriffe 1 Wie definiert man ungerichtete Bäume und wie gerichtete Bäume und wozu benutzt man eigentlich Bäume? Zur Veranschaulichung (Rekursionsbäume, Verzeichnisbäume, Vorfahrenbäume,...) Zur Implementierung von Wörterbüchern, für die Kompilierung, Was ist die Tiefe und was ist die Höhe eines Baums? Und wie berechnet man Tiefe und Höhe? 3 Was ist ein Präorder-, Inorder oder Postorder-Durchlauf? Und wie führt man diese Durchläufe aus? Bäume 8 / 14

21 Die wichtigen Begriffe 1 Wie definiert man ungerichtete Bäume und wie gerichtete Bäume und wozu benutzt man eigentlich Bäume? Zur Veranschaulichung (Rekursionsbäume, Verzeichnisbäume, Vorfahrenbäume,...) Zur Implementierung von Wörterbüchern, für die Kompilierung, Was ist die Tiefe und was ist die Höhe eines Baums? Und wie berechnet man Tiefe und Höhe? 3 Was ist ein Präorder-, Inorder oder Postorder-Durchlauf? Und wie führt man diese Durchläufe aus? 4 Wie implementiert man Bäume? Man verwendet ein Vater-Array, die Kind-Geschwister- oder, falls anwendbar, die Binärbaum-Darstellung. Was sind die Vor- und Nachteile der einzelnen Implementierungen? Bäume 8 / 14

22 Präorder void praeorder (Knoten *p) Bäume 9 / 14

23 Präorder void praeorder (Knoten *p) { Knoten *q; Bäume 9 / 14

24 Präorder void praeorder (Knoten *p) { Knoten *q; if (p!= null) Bäume 9 / 14

25 Präorder void praeorder (Knoten *p) { Knoten *q; if (p!= null) { cout «p wert; Bäume 9 / 14

26 Präorder void praeorder (Knoten *p) { Knoten *q; if (p!= null) { cout «p wert; for (q=p LKind; q!= null; q=q RGeschwister) Bäume 9 / 14

27 Präorder void praeorder (Knoten *p) { Knoten *q; if (p!= null) { cout «p wert; for (q=p LKind; q!= null; q=q RGeschwister) praeorder(q); }} Und wie implementiert man Präorder nicht-rekursiv? Wie implementiert man Postorder? Bäume 9 / 14

28 Welcher Knoten wird direkt nach v besucht? Präorder: Bäume 10 / 14

29 Welcher Knoten wird direkt nach v besucht? Präorder: Das linkeste Kind von v, wenn v kein Blatt ist. Bäume 10 / 14

30 Welcher Knoten wird direkt nach v besucht? Präorder: Das linkeste Kind von v, wenn v kein Blatt ist. Wenn v ein Blatt ist, dann das Bäume 10 / 14

31 Welcher Knoten wird direkt nach v besucht? Präorder: Das linkeste Kind von v, wenn v kein Blatt ist. Wenn v ein Blatt ist, dann das erste nicht-besuchte Kind des tiefsten, nicht vollständig durchsuchten Vorfahren von v. Postorder: Bäume 10 / 14

32 Welcher Knoten wird direkt nach v besucht? Präorder: Das linkeste Kind von v, wenn v kein Blatt ist. Wenn v ein Blatt ist, dann das erste nicht-besuchte Kind des tiefsten, nicht vollständig durchsuchten Vorfahren von v. Postorder: Das linkeste Blatt im Baum des rechten Geschwisterknotens. Bäume 10 / 14

33 Welcher Knoten wird direkt nach v besucht? Präorder: Das linkeste Kind von v, wenn v kein Blatt ist. Wenn v ein Blatt ist, dann das erste nicht-besuchte Kind des tiefsten, nicht vollständig durchsuchten Vorfahren von v. Postorder: Das linkeste Blatt im Baum des rechten Geschwisterknotens. Wenn v keinen rechten Geschwisterknoten besitzt, dann wird Bäume 10 / 14

34 Welcher Knoten wird direkt nach v besucht? Präorder: Das linkeste Kind von v, wenn v kein Blatt ist. Wenn v ein Blatt ist, dann das erste nicht-besuchte Kind des tiefsten, nicht vollständig durchsuchten Vorfahren von v. Postorder: Das linkeste Blatt im Baum des rechten Geschwisterknotens. Wenn v keinen rechten Geschwisterknoten besitzt, dann wird der Vater von v als nächster besucht. Bäume 10 / 14

35 Graphen Graphen 11 / 14

36 Die wichtigen Begriffe und Methoden Ungerichtete und gerichtete Graphen modellieren Verkehrsnetze, Netzwerke, Schaltungen, den Webgraphen... Für viele Anwendungen ist die Graphdarstellung durch Adjazenzlisten maßgeschneidert. Warum? Graphen 12 / 14

37 Die wichtigen Begriffe und Methoden Ungerichtete und gerichtete Graphen modellieren Verkehrsnetze, Netzwerke, Schaltungen, den Webgraphen... Für viele Anwendungen ist die Graphdarstellung durch Adjazenzlisten maßgeschneidert. Warum? Begriffe wie Zusammenhangskomponenten, Wege, Distanz zwischen Knoten und azyklische Graphen sind zentral. Wie berechnet man Zusammenhangskomponenten, wie stellt man fest, ob ein Graph azyklisch ist, und wie führt man eine topologische Sortierung durch? Graphen 12 / 14

38 Die wichtigen Begriffe und Methoden Ungerichtete und gerichtete Graphen modellieren Verkehrsnetze, Netzwerke, Schaltungen, den Webgraphen... Für viele Anwendungen ist die Graphdarstellung durch Adjazenzlisten maßgeschneidert. Warum? Begriffe wie Zusammenhangskomponenten, Wege, Distanz zwischen Knoten und azyklische Graphen sind zentral. Wie berechnet man Zusammenhangskomponenten, wie stellt man fest, ob ein Graph azyklisch ist, und wie führt man eine topologische Sortierung durch? Tiefen- und Breitensuche sind wichtige Methoden. Und wie funktionieren diese Algorithmen? Graphen 12 / 14

39 Tiefen- und Breitensuche Welche Kantentypen erzeugt Tiefensuche für ungerichtete Graphen und welche Kantentypen für gerichtete Graphen? Warum interessiert man sich denn überhaupt für Kantentypen und was kann man mit Tiefensuche so alles anstellen? Graphen 13 / 14

40 Tiefen- und Breitensuche Welche Kantentypen erzeugt Tiefensuche für ungerichtete Graphen und welche Kantentypen für gerichtete Graphen? Warum interessiert man sich denn überhaupt für Kantentypen und was kann man mit Tiefensuche so alles anstellen? Wie wird der Wald der Tiefensuche berechnet? Wann ist eine Kante eine Baum-, Vorwärts-, Rückwärts- oder Querkante? Graphen 13 / 14

41 Tiefen- und Breitensuche Welche Kantentypen erzeugt Tiefensuche für ungerichtete Graphen und welche Kantentypen für gerichtete Graphen? Warum interessiert man sich denn überhaupt für Kantentypen und was kann man mit Tiefensuche so alles anstellen? Wie wird der Wald der Tiefensuche berechnet? Wann ist eine Kante eine Baum-, Vorwärts-, Rückwärts- oder Querkante? Wie wird der Baum der Breitensuche berechnet? Warum ist dieser Baum denn wichtig? Graphen 13 / 14

42 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Graphen 14 / 14

43 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; Graphen 14 / 14

44 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) Graphen 14 / 14

45 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Graphen 14 / 14

46 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } Graphen 14 / 14

47 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Graphen 14 / 14

48 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und Graphen 14 / 14

49 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und e = (u, v) ist keine Baumkante. Graphen 14 / 14

50 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und e = (u, v) ist keine Baumkante. - e = (u, v) ist eine Rückwärtskante Graphen 14 / 14

51 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und e = (u, v) ist keine Baumkante. - e = (u, v) ist eine Rückwärtskante Anfang [u] > Anfang [v] und Graphen 14 / 14

52 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und e = (u, v) ist keine Baumkante. - e = (u, v) ist eine Rückwärtskante Anfang [u] > Anfang [v] und Ende [u] < Ende [v]. Graphen 14 / 14

53 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und e = (u, v) ist keine Baumkante. - e = (u, v) ist eine Rückwärtskante Anfang [u] > Anfang [v] und Ende [u] < Ende [v]. - e = (u, v) ist eine Querkante Graphen 14 / 14

54 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und e = (u, v) ist keine Baumkante. - e = (u, v) ist eine Rückwärtskante Anfang [u] > Anfang [v] und Ende [u] < Ende [v]. - e = (u, v) ist eine Querkante Anfang [u] > Anfang [v] und Graphen 14 / 14

55 Eine automatische Erkennung der Kantentypen Wir benutzen zwei integer-arrays Anfang und Ende als Uhren, um den Zeitpunkt des Beginns und des Endes des Besuchs festzuhalten. Anfangnr=Endenr=0; void tsuche(int v) {Knoten *p; Anfang[v] = ++Anfangnr; for (p = A[v]; p!= 0; p = p->next) if (!Anfang[p->name]) tsuche(p->name); Ende[v] = ++Endenr; } - e = (u, v) ist eine Vorwärtskante Anfang [u] < Anfang [v] und e = (u, v) ist keine Baumkante. - e = (u, v) ist eine Rückwärtskante Anfang [u] > Anfang [v] und Ende [u] < Ende [v]. - e = (u, v) ist eine Querkante Anfang [u] > Anfang [v] und Ende [u] > Ende [v]. Graphen 14 / 14

Datenstrukturen. Mariano Zelke. Sommersemester 2012

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

Mehr

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Prioritätswarteschlangen Mariano Zelke Datenstrukturen 2/28 Der abstrakte Datentyp Prioritätswarteschlange : Füge Elemente (mit Prioritäten) ein und entferne

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

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

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

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

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Algorithmen und Datenstrukturen Suchbaum

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

Mehr

Klausur Informatik B April Teil I: Informatik 3

Klausur Informatik B April Teil I: Informatik 3 Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

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

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

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

13. Binäre Suchbäume

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

Mehr

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

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

Mehr

In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. 1. Bäume Grundlagen...

In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. 1. Bäume Grundlagen... Bäume und Graphen In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. Inhalt 1. Bäume... 1.1. Grundlagen... 1.. Repräsentation von Binärbäumen... 9 1..1.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 22. Vorlesung Tiefensuche und Topologische Sortierung Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Vorlesungsumfrage Nutzen Sie die Vorlesungsbefragung

Mehr

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

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.6 AVL-Bäume 4.8 Rot-Schwarz-Bäume Idee: Verwende Farben, um den Baum vertikal zu

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

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

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

Mehr

Algorithmen & Datenstrukturen 1. Klausur

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

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach B? B A Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 5. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Wdhlg.: Dijkstra-Algorithmus I Bestimmung der

Mehr

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen . Graphen viele praktische (Optimierungs-)Probleme sind als graphentheoretische Probleme formulierbar z.b. in Produktionsplanung, Personaleinsatzplanung,.... Grundlagen gerichteter, ungerichteter und gewichteter

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

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

MafI I: Logik & Diskrete Mathematik (F. Hoffmann) Lösungen zum 14. und letzten Aufgabenblatt zur Vorlesung MafI I: Logik & Diskrete Mathematik (F. Hoffmann) 1. Ungerichtete Graphen (a) Beschreiben Sie einen Algorithmus, der algorithmisch feststellt, ob

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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

Mehr

Teil II: Prioritätslisten (Priority Queues)

Teil II: Prioritätslisten (Priority Queues) Teil II: Prioritätslisten (Priority Queues)! Definition und Anwendungen! Binäre Heaps! Index-Heaps mit change- und remove-operation! Binomiale Heaps mit merge-operation Prof. Dr. O. Bittel, HTWG Konstanz

Mehr

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

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

Mehr

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

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

Mehr

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2013/14 Prof. Dr. Sándor Fekete 1 4.6 AVL-Bäume 2 4.8 Rot-Schwarz-Bäume Rudolf Bayer Idee: Verwende Farben, um den

Mehr

Vorlesung 4 BETWEENNESS CENTRALITY

Vorlesung 4 BETWEENNESS CENTRALITY Vorlesung 4 BETWEENNESS CENTRALITY 101 Aufgabe! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/

Mehr

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

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

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

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

8 Diskrete Optimierung

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

Mehr

4. Kreis- und Wegeprobleme Abstände in Graphen

4. Kreis- und Wegeprobleme Abstände in Graphen 4. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 4.4. Es sei G = (V,E) ein Graph. Der Abstand d(v,w) zweier Knoten v,w V ist die minimale Länge eines Weges von v nach w. Falls

Mehr

Fully dynamic algorithms for the single source shortest path problem.

Fully dynamic algorithms for the single source shortest path problem. Fully dynamic algorithms for the single source shortest path problem. Michael Baur Wintersemester 2001/2002 Zusammenfassung Im folgenden Paper werde ich Algorithmen für das dynamische Kürzeste-Wege-Problem

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

Binärbäume. Prof. Dr. E. Ehses, 2014 1

Binärbäume. Prof. Dr. E. Ehses, 2014 1 Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

Kap. 4.2: Binäre Suchbäume

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

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University

Mehr

2. Übungsblatt zu Algorithmen II im WS 2016/2017

2. Übungsblatt zu Algorithmen II im WS 2016/2017 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Dr. Christian Schulz, Dr. Simon Gog Michael Axtmann. Übungsblatt zu Algorithmen II im WS 016/017 Aufgabe

Mehr

Wörterbucher. Das Wörterbuch 1 / 71

Wörterbucher. Das Wörterbuch 1 / 71 Wörterbucher Das Wörterbuch 1 / 71 Der abstrakte Datentyp Wörterbuch Ein Wörterbuch für eine gegebene Menge S besteht aus den folgenden Operationen: insert(x): Füge x zu S hinzu, d.h. setze S = S {x}.

Mehr

Vorrangswarteschlangen

Vorrangswarteschlangen Vorrangswarteschlangen Elementare Implementierungen Binäre Heaps Index-Heaps Binomial Queues M.O.Franz; Dezember 2007 Algorithmen und Datenstrukturen - Vorrangswarteschlangen 2-1 Vorrangswarteschlangen

Mehr

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

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

Mehr

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

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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Algorithmen und Datenstrukturen (WS 2007/08) 63

Algorithmen und Datenstrukturen (WS 2007/08) 63 Kapitel 6 Graphen Beziehungen zwischen Objekten werden sehr oft durch binäre Relationen modelliert. Wir beschäftigen uns in diesem Kapitel mit speziellen binären Relationen, die nicht nur nur besonders

Mehr

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

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

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

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

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

Mehr

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

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

Mehr

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time Universität Konstanz Mathematisch-naturwissenschaftliche Sektion Fachbereich Mathematik und Statistik Wintersemester 2001/02 Mikkel Thorup: Undirected Single-Source Shortest Paths with Positive Integer

Mehr

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri

Informatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri Informatik II PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

Mehr

10 Graphenalgorithmen in Java

10 Graphenalgorithmen in Java 10.1 Implementierung eines gewichteten Graphen 10.2 Implementierung der Breitensuche 10.3 Implementierung der Tiefensuche 10 147 Teil X Graphalgorithmen in Java Überblick Implementierung eines gewichteten

Mehr

Algorithmen und Datenstrukturen Graphen - Einführung

Algorithmen und Datenstrukturen Graphen - Einführung Algorithmen und Datenstrukturen Graphen - Einführung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Definition / Eigenschaften Anwendungen Repräsentation

Mehr

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten Gliederung Zusammenhang von Graphen Stark Zusammenhängend K-fach Zusammenhängend Brücken Definition Algorithmus zum Finden von Brücken Anwendung Zusammenhangskomponente Definition Wichtige Aussagen und

Mehr

Algorithmen und Datenstrukturen 2

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

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,

Mehr

Customization (Zuschneiden)

Customization (Zuschneiden) Customization (Zuschneiden) Anpassen der (Graph)Datenstruktur an die Anwendung. I Ziel: schnell, kompakt. I benutze Entwurfsprinzip: make the common case fast I Listen vermeiden Mögliches Problem: Software-Engineering-Alptraum

Mehr

Die k kürzesten Wege in gerichteten Graphen

Die k kürzesten Wege in gerichteten Graphen Die k kürzesten Wege in gerichteten Graphen Marc Benkert Wintersemester 001/00 1 Einführung 1.1 Problemstellung In einem gerichteten, gewichteten Graphen G = (V, E) sollen die k kürzesten Wege zu zwei

Mehr

Routing Algorithmen. Begriffe, Definitionen

Routing Algorithmen. Begriffe, Definitionen Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 Graphen) T. Lauer 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

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

Mehr

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09 Felix Brandt, Jan Johannsen Vorlesung im Wintersemester 2008/09 Übersicht Übersicht Definition Ein Matching in G = (V, E) ist eine Menge M E mit e 1 e 2 = für e 1, e 2 M, e 1 e 2 Ein Matching M ist perfekt,

Mehr

Beispiel zu Datenstrukturen

Beispiel zu Datenstrukturen zu Datenstrukturen Passend zum Kurs 01661 Version Juni 2008 Dieter Hoffmann Dipl.-Inform. Diese Kurshilfe zum Kurs Datenstrukuren I (Kursnummer 01661) bei Prof. Dr. Güting (Lehrgebiet Praktische Informatik

Mehr

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Suchbäume mit inneren Knoten verschiedener Knotengrade. Was bisher geschah rekursive Datenstrukturen: lineare Datenstrukturen: Liste, Stack, Queue hierarchische Datenstrukturen: Bäume allgemeine Bäume Binäre Bäume Unäre Bäume = Listen Tiefe eines Knotens in

Mehr

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

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

Mehr

DATENSTRUKTUREN UND ALGORITHMEN

DATENSTRUKTUREN UND ALGORITHMEN DATENSTRUKTUREN UND ALGORITHMEN 2 Ist die Datenstruktur so wichtig??? Wahl der Datenstruktur wichtiger Schritt beim Entwurf und der Implementierung von Algorithmen Dünn besetzte Graphen und Matrizen bilden

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

Algorithmen - Eine Einführung

Algorithmen - Eine Einführung Algorithmen - Eine Einführung von Prof. Dr. Thomas H. Cormen Prof. Dr. Charles E. Leiserson Prof. Dr. Ronald Rivest Prof. Dr. Clifford Stein 2., korrigierte Auflage Oldenbourg Verlag München Wien Inhaltsverzeichnis

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Algorithmen und Datenstrukturen 2-2. Seminar -

Algorithmen und Datenstrukturen 2-2. Seminar - Algorithmen und Datenstrukturen 2-2. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 2. Übungsserie: 3 Aufgaben, insgesamt 30 Punkte A4 Flußnetzwerk, Restgraphen

Mehr

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales

Mehr

Erinnerung VL

Erinnerung VL Erinnerung VL 06.06.06 Sortierte Folgen: eierlegende Wollmilchsau Suchbäume: binäre und (a, b)-bäume (a, b)-bäume: remove, insert etwas kompliziert (balancieren), aber in logarithmischer Zeit möglich Heute:

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Bäume 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Inhalt Grundbegriffe: Baum, Binärbaum Binäre Suchbäume (Definition) Typische Aufgaben Suchaufwand Löschen allgemein, Methode Schlüsseltransfer

Mehr

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume Fachbereich IV, Informatik Softwarepraktikum C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume Wintersemester 2004/2005 Dokumentation Algorithmen zur Lösung von MST - Problemen Nicolas

Mehr

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10 Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien

Mehr

EndTermTest PROGALGO WS1516 A

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

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Klausur Informatik B. Teil 1: Informatik 3 Juli 2005

Klausur Informatik B. Teil 1: Informatik 3 Juli 2005 Klausur Informatik B Teil 1: Informatik 3 Juli 2005 ACHTUNG Die vorliegende wurde im Juli 2005 geschrieben. Sie umfaßt lediglich den Informatik-3-Teil der Informatik-B-Klausur und ist für eine Bearbeitungszeit

Mehr

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

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

Mehr

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

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

Mehr