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 Einfach verkettete Listen Mariano Zelke Datenstrukturen 2/32 Eine Zeiger-Implementierung von einfach verketteten Listen, also Listen mit Vorwärtszeigern. //Deklarationsdatei liste.h für einfach verkettete Listen. enum boolean {False, True}; class liste{ private: typedef struct Element { int data; Element *next; }; Element *head, *current; //Kann auch anderer Datentyp sein public: liste( ) // Konstruktor { head = new Element; current = head; head->next = 0; }

3 Public: Die weiteren Operationen void insert(int data); // Ein neues Element mit Wert data // wird nach dem gegenwärtigen Element eingefügt. Der Wert von // current ist unverändert. void remove( ); // Das dem gegenwärtigen Element folgende // Element wird entfernt. Der Wert von current ist unverändert. void next( ); // Das nächste Element wird aufgesucht. Dazu // wird current um eine Position nach rechts bewegt. void movetofront( ); // current erhält den Wert head. boolean end( ); // Zeigt current auf das letzte Element? boolean empty( ); // Ist die Liste leer? int read( ); // Gib das Feld data des nächsten Elements aus. void write(int wert); // Überschreibe das Feld data des // nächsten Elements mit der Zahl wert. void search(int wert); // Suche rechts von der gegenwärtigen // Zelle nach der ersten Zelle z mit Datenfeld wert. Der Zeiger // current wird auf den Vorgänger von z zeigen. } Mariano Zelke Datenstrukturen 3/32

4 Auswirkung von public/private Ein Programm, dass eine Liste a aus der Klasse liste benutzt, darf nur über die public-operationen auf a zugreifen. Insbesondere ist kein direkter Zugriff erlaubt auf die Zeiger *head und *current. Falsch: a.current = a.head; stattdessen: a.movetofront(); Falsch: a.current = a.current->next; stattdessen: a.next(); Falsch: if(a.head->next == null) stattdessen: if(a.empty())... Auch auf die Felder data und *next jedes Elementes kann nicht direkt zugegriffen werden Falsch: a.current->next->data = 10;stattdessen: a.write(10); Falsch: a.current->next = a.current->next->next; stattdessen: a.remove(); Falsch: if(a.current->next == null) stattdessen: a.end();... Die Klasse liste ist ein abstrakter Datentyp, der für die Benutzung ausschließlich die public-operationen bereit stellt und sonst nichts. Mariano Zelke Datenstrukturen 4/32

5 Was ist ein Baum? Mariano Zelke Datenstrukturen 5/32 Ein Baum T wird durch eine Knotenmenge V und eine Kantenmenge E V V dargestellt. Eine gerichtete Kante (i, j) führt von i nach j. Wann ist T ein Baum? T muss genau einen Knoten r besitzen, in den keine Kante hineinführt. r heißt die Wurzel von T. In jeden Knoten darf höchstens eine Kante hineinführen, und jeder Knoten muss von der Wurzel aus erreichbar sein. Eine disjunkte Vereinigung von Bäumen heißt Wald.

6 Zentrale Begriffe Mariano Zelke Datenstrukturen 6/32 Wenn (v, w) eine Kante ist, dann nennen wir v den Vater von w und sagen, dass w ein Kind von v ist. Die anderen Kinder von v heißen Geschwister von w. Ausgangsgrad (v) ist die Anzahl der Kinder von v. Einen Knoten b mit Ausgangsgrad (b) = 0 bezeichnen wir als Blatt. T heißt k-när, falls der Ausgangsgrad aller Knoten höchstens k ist. Für k = 2 sprechen wir von binären Bäumen. Ein Weg von v nach w ist eine Folge (v 0,..., v m ) von Knoten mit v 0 = v, v m = w und (v i, v i+1 ) E für alle i (0 i < m). v ist ein Vorfahre von w und w ein Nachfahre von v. Die Länge des Weges ist m, die Anzahl der Kanten des Weges. Tiefe(v) ist die Länge des (eindeutigen) Weges von r nach v. Höhe(v) ist die Länge des längsten Weges von v zu einem Blatt. T heißt geordnet, falls für jeden Knoten eine Reihenfolge der Kinder vorliegt.

7 Operationen auf Bäumen (als Datenstrukturen) (1) Wurzel: Bestimme die Wurzel von T. (2) Vater(v): Bestimme den Vater des Knoten v in T. Wenn v = r, dann ist der Null-Zeiger auszugeben. (3) Kinder(v): Bestimme die Kinder von v. Wenn v ein Blatt ist, dann ist der Null-Zeiger als Antwort zu geben. (4) Für binäre geordnete Bäume: (4a) LKind(v): Bestimme das linke Kind von v. (4b) RKind(v): Bestimme das rechte Kind von v. (4c) Sollte das entsprechende Kind nicht existieren, ist der Null-Zeiger als Antwort zu geben. (5) Tiefe(v): Bestimme die Tiefe von v. (6) Höhe(v): Bestimme die Höhe von v. (7) Baum(v, T 1,..., T m ): Erzeuge einen geordneten Baum mit Wurzel v und Teilbäumen T 1,..., T m. (8) Suche(x): Bestimme alle Knoten mit Wert x. (Nur sinnvoll, wenn Knoten einen Wert speichern.) Mariano Zelke Datenstrukturen 7/32

8 Implementierung mittels Vater-Array Mariano Zelke Datenstrukturen 8/32 Annahme: Jeder Knoten besitzt eine Zahl aus {1,..., n} als Namen und zu jedem i {1,..., n} gibt es genau einen Knoten mit Namen i. Ein Integer-Array Parent speichert für jeden Knoten v den Namen des Vaters von v: Parent[v] = Name des Vaters von v. Wenn v = r, dann setze Parent[v] = r. The good and the bad schnelle Vater-Bestimmung (Zeit = O(1)). schnelle Bestimmung der Tiefe von v (Zeit = O(Tiefe(v))). minimaler Speicherplatzverbrauch: Bäume mit n Knoten benötigen Speicherplatz n für die Bestimmung der Kinder muss der gesamte Baum durchsucht werden

9 Beispiel für Vater-Array Mariano Zelke Datenstrukturen 9/ Knotennr Vater

10 Die Adjazenzlisten-Implementierung Mariano Zelke Datenstrukturen 10/32 Für Bäume mit n Knoten benutze ein Kopf-Array Head mit den Zellen 1,..., n: Head[i] ist ein Zeiger auf die Liste der Kinder von i Head

11 Stärken und Schwächen Mariano Zelke Datenstrukturen 11/32 Die Kinderbestimmung gelingt schnellstmöglich, in Zeit O(Anzahl der Kinder). Höhe (v) wird auch angemessen unterstützt mit der Laufzeit O(Anzahl der Knoten im Teilbaum mit Wurzel v). Warum? Für die Bestimmung des Vaters muss möglicherweise der gesamte Baum durchsucht werden! Auch die Bestimmung der Tiefe ist schwierig, da der Vater nicht bekannt ist. Speicherplatzverbrauch: Für Bäume mit n Knoten benötigen wir 2n 1 Zeiger: einen Zeiger für jede der n Zellen von Head und einen Zeiger für jede der n 1 Kanten und 2n 1 Zellen: n Zellen für das Array Head und n 1 Zellen für die n 1 Kanten. Zu großer Speicherplatz. Aber: die Adjazenzlisten-Darstellung kann auch für Graphen benutzt werden.

12 Mariano Zelke Datenstrukturen 12/32 Die Binärbaum-Implementierung Ein Knoten wird durch die Struktur dargestellt. typedef struct Knoten { int wert; Knoten *links, *rechts; }; Wenn der Zeiger z auf die Struktur des Knoten v zeigt, dann ist z wert der Wert von v und z links (bzw. z rechts) zeigt auf die Struktur des linken (bzw. rechten) Kindes von v. Der Zeiger wurzel zeige auf die Struktur der Wurzel des Baums. Im Vergleich zur Adjazenzlisten-Darstellung: Ähnliches Laufzeitverhalten bei den Operationen aber bessere Speichereffizienz: 2n Zeiger (zwei Zeiger pro Knoten) und n Zellen (eine Zelle pro Knoten).

13 Beispiel Binärbaum-Implementierung Mariano Zelke Datenstrukturen 13/32 wurzel wert: 5 *links *rechts *links wert: 4 *rechts *links wert: 6 *rechts *links wert: 2 *rechts *links wert: 7 *rechts *links wert: 8 *rechts *links wert: 1 *rechts *links wert: 3 *rechts *links wert: 9 *rechts *links wert: 10 *rechts

14 Die Kind-Geschwister-Implementierung Ein Knoten wird durch die Struktur dargestellt. typedef struct Knoten { int wert; Knoten *LKind, *RGeschwister; }; Wenn der Zeiger z auf die Struktur des Knoten v zeigt, dann ist z wert der Wert von v und z LKind (bzw. z RGeschwister) zeigt auf die Struktur des am weitesten links stehenden Kindes (bzw. des rechten Geschwisterknotens) von v. Der Zeiger wurzel zeige wieder auf die Struktur der Wurzel des Baums. Im Vergleich zur Binärbaum-Darstellung: Ähnliches Laufzeitverhalten und ähnliche Speichereffizienz, aber die Darstellung ist für alle Bäume und nicht nur Binärbäume anwendbar! Mariano Zelke Datenstrukturen 14/32

15 Mariano Zelke Datenstrukturen 15/32 Beispiel Kind-Geschwister-Implementierung wert: 5 *RGeschwister *LKind wurzel wert: 4 *RGeschwister *LKind wert: 6 *RGeschwister *LKind wert: 2 *RGeschwister *LKind wert: 7 *RGeschwister *LKind wert: 8 *RGeschwister *LKind wert: 1 *RGeschwister *LKind wert: 3 *RGeschwister *LKind wert: 9 *RGeschwister *LKind wert: 10 *RGeschwister *LKind

16 Suche in Bäumen: Postorder, Preorder und Inorder Mariano Zelke Datenstrukturen 16/32 Sei T ein geordneter Baum mit Wurzel r und Teilbäumen T 1,..., T m. Postorder: Durchlaufe rekursiv die Teilbäume T 1,..., T m nacheinander. Danach wird die Wurzel r besucht. Preorder: besuche zuerst r und danach durchlaufe rekursiv die Teilbäume T 1,..., T m. Inorder: Durchlaufe zuerst T 1 rekursiv, besuche dann die Wurzel r und durchlaufe letztlich die Teilbäume T 2,..., T m rekursiv. void preorder (Knoten *p){ Knoten *q; if (p!= null) { cout << p->wert; for(q = p->lkind; q!= null; q = q->rgeschwister) preorder(q); } }

17 Welcher Knoten wird direkt nach v besucht? Mariano Zelke Datenstrukturen 17/32 Postorder: das linkeste Blatt im rechten Nachbarbaum. Wenn v keinen rechten Geschwisterknoten besitzt, dann wird der Vater von v als nächster besucht. Preorder: das linkeste Kind von v. Wenn v ein Blatt ist, dann das erste nicht-besuchte Kind des tiefsten, nicht vollständig durchsuchten Vorfahren von v Inorder:...? Wenn wir zusätzliche Zeiger gemäß einer dieser Reihenfolgen einsetzen, dann können wir Rekursion vermeiden: besuche die Knoten gemäß der neuen Zeiger (zusätzlicher Verwaltungsaufwand). Die Datenstrukturen heißen dann postorder-, preorder-, inorder-gefädelte Bäume

18 Eine nicht-rekursive Preorder-Implementierung Mariano Zelke Datenstrukturen 18/32 Der Teilbaum mit Wurzel v ist in Preorder-Reihenfolge zu durchlaufen. (1) Wir fügen einen Zeiger auf die Struktur von v in einen anfänglich leeren Stack ein. (2) Solange der Stack nicht leer ist, wiederhole: (a) Entferne das erste Stack-Element w mit Hilfe der Pop-Operation. Besuche w. (b) Füge die Kinder von w in umgekehrter Reihenfolge in den Stack ein. / Durch die Umkehrung der Reihenfolge werden die Bäume später in ihrer natürlichen Reihenfolge abgearbeitet. / Die Laufzeit ist linear in der Knotenzahl n. Jeder Knoten wird genau einmal in den Stack eingefügt. Insgesamt werden also höchstens O(n) Stackoperationen durchgeführt. Stackoperationen dominieren aber die Laufzeit.

19 Laufzeit Mariano Zelke Datenstrukturen 19/32 Für einen Baum mit n Knoten, der in Kind-Geschwister-Darstellung, Adjazenzlisten- oder Binärbaum-Darstellung vorliegt, können die Reihenfolgen Postorder, Preorder bzw. Inorder in Zeit O(n) berechnet werden.

20 Mariano Zelke Datenstrukturen 20/32 Graphen (Link) (a) Ein ungerichteter Graph G = (V, E) besteht aus einer endlichen Menge V von Knoten (engl.: vertices) und einer Teilmenge E { {u, v} u, v V, u v } von Kanten (engl.: edges). Die Endpunkte u, v einer ungerichteten Kante {u, v} sind gleichberechtigt. u und v heißen dann Nachbarn. Wir sagen auch: u und v sind adjazent. (b) Für die Kantenmenge E eines gerichteten Graphen G = (V, E) gilt E {(u, v) u, v V, u v}. Der Knoten u ist Anfangspunkt und der Knoten v Endpunkt der Kante (u, v). v heißt auch ein direkter Nachfolger von u und u ein direkter Vorgänger von v.

21 Warum Graphen? Mariano Zelke Datenstrukturen 21/32 Graphen modellieren das World Wide Web: Die Knoten entsprechen Webseiten, die (gerichteten) Kanten entsprechen Hyperlinks. Rechnernetzwerke: Die Knoten entsprechen Rechnern, die (gerichteten und/oder ungerichteten) Kanten entsprechen Direktverbindungen zwischen Rechnern. Das Schienennetz der Deutschen Bahn: Die Knoten entsprechen Bahnhöfen, die (ungerichteten) Kanten entsprechen Direktverbindungen zwischen Bahnhöfen. Bei der Erstellung von Reiseplänen müssen kürzeste (gewichtete) Wege zwischen einem Start- und einem Zielbahnhof bestimmt werden. Schaltungen: die Knoten entsprechen Gattern, die (gerichteten) Kanten entsprechen Leiterbahnen zwischen Gattern....

22 Das Königsberger Brückenproblem Mariano Zelke Datenstrukturen 22/

23 Das Königsberger Brückenproblem Mariano Zelke Datenstrukturen 23/32 Gibt es einen Rundweg durch Königsberg, der alle Brücken über den Pregel genau einmal überquert? Enthält dieser Graph einen Weg, der alle Kanten genau einmal 1 enthält und zum Startpunkt zurückkehrt? a b c d e 4 2 f g 3

24 Mariano Zelke Datenstrukturen 24/32 Euler-Kreis Ein Euler-Kreis beginnt in einem Knoten v, durchläuft alle Kanten genau einmal und kehrt dann zu v zurück. Enthält dieser Graph einen Euler-Kreis? Nein, denn dazu müsste jeder Knoten eine gerade Anzahl von Nachbarn haben. 1 a b c d e 4 2 f g 3

25 Mariano Zelke Datenstrukturen 25/32 Euler-Kreis Ein Euler-Kreis beginnt in einem Knoten v, durchläuft alle Kanten genau einmal und kehrt dann zu v zurück. Enthält dieser Graph einen Euler-Kreis? Nein, denn dazu müsste jeder Knoten eine gerade Anzahl von Nachbarn haben. 1 a b c 2 f 3 Die Existenz von Euler-Kreisen ist auch für gerichtete Graphen interessant. d e 4 g

26 Wichtige Begriffe Mariano Zelke Datenstrukturen 26/32 Sei G = (V, E) ein gerichteter oder ungerichteter Graph. Eine Folge (v 0, v 1,..., v m ) heißt ein Weg in G, falls für jedes i (0 i < m) gilt (v i, v i+1 ) E (für gerichtete Graphen) bzw. {vi, v i+1 } E (für ungerichtete Graphen). Die Weglänge ist m, die Anzahl der Kanten. Ein Weg heißt einfach, wenn kein Knoten zweimal auftritt. Ein Weg heißt ein Kreis, wenn v 0 = v m und (v 0,..., v m 1 ) ein einfacher Weg ist. G heißt azyklisch, wenn G keine Kreise hat. Ein ungerichteter Graph heißt zusammenhängend, wenn je zwei Knoten durch einen Weg miteinander verbunden sind.

27 Topologisches Sortieren Mariano Zelke Datenstrukturen 27/32 Es sind n Aufgaben a 0,..., a n 1 auszuführen. Allerdings gibt es eine Menge P von p Prioritäten zwischen den einzelnen Aufgaben. Die Priorität (i, j) impliziert, dass Aufgabe a i vor Aufgabe a j ausgeführt werden muss. Das Ziel ist die Erstellung einer Reihenfolge, in der alle Aufgaben ausgeführt werden können, bzw. festzustellen, dass eine solche Reihenfolge nicht existiert. Eine graphentheoretische Formulierung: Wähle V = {0,..., n 1} als Knotenmenge. Wir verabreden, dass Knoten i der Aufgabe a i entspricht. Wir setzen genau dann eine Kante von i nach j ein, wenn (i, j) eine Priorität ist. Wie ist das Ziel zu formulieren? Bestimme eine Reihenfolge v 1,..., v i,..., v n der Knoten, so dass es keine Kante (v i, v j ) mit j < i gibt.

28 Die Idee Mariano Zelke Datenstrukturen 28/32 Eine Aufgabe a j kann als erste Aufgabe ausgeführt werden, wenn es keine Priorität der Form (i, j) in P gibt. Ein Knoten v von G heißt eine Quelle, wenn Eingangsgrad(v) = 0 ist, wenn v also kein Endpunkt einer Kante ist. Also bestimme eine Quelle v, führe v aus und entferne v zusammen mit allen von v ausgehenden Kanten. Wiederhole dieses Verfahren, solange G noch Knoten besitzt: bestimme eine Quelle v, führe v aus und entferne v zusammen mit allen von v ausgehenden Kanten. Welche Datenstrukturen sollten wir verwenden?

29 Ein erster Versuch Mariano Zelke Datenstrukturen 29/32 Wir verketten alle p Kanten in einer Liste Priorität und benutzen ein Integer-Array Reihenfolge sowie zwei boolesche Arrays Erster und Fertig mit jeweils n Zellen. Setze Zähler = 0. Für alle i setze Fertig[i] = falsch. Wiederhole n Mal: (0) Durchlaufe das Array Erster. Setze Erster[i] = wahr genau dann, wenn Fertig[i] = falsch. (1) Durchlaufe die Liste Priorität. Wenn Kante (i, j) angetroffen wird, setze Erster[j] = falsch. (2) Bestimme das kleinste j mit Erster[j] = wahr. Danach setze (a) Fertig[j] = wahr, (b) Reihenfolge[Zähler++] = j (Aufgabe j wird ausgeführt) (c) und durchlaufe die Prioritätsliste: entferne jede Kante (j, k), da a j eine Ausführung von Aufgabe a k nicht mehr behindert.

30 Eine Laufzeitanalyse Mariano Zelke Datenstrukturen 30/32 Was kostet besonders viel Laufzeit? In jeder Iteration muss die Liste Priorität vollständig durchlaufen werden: Zeit = O(p). Weiterhin muss das Array Erster jeweils initialisiert werden: Zeit = O(n). Die Laufzeit pro Iteration ist dann durch O(p + n) beschränkt. Die Gesamtlaufzeit ist O(n (p + n)), da wir n Iterationen haben. Was können wir verbessern? Wir müssen nur die in j beginnenden Kanten entfernen. Warum kompliziert nach der ersten ausführbaren Aufgabe suchen? Eine vor a j nicht in Betracht kommende Aufgabe a k wird nur interessant, wenn (j, k) eine Priorität ist.

31 Der zweite Versuch Mariano Zelke Datenstrukturen 31/32 Stelle die Prioritäten durch eine Adjazenzliste mit dem Kopf-Array Priorität dar. Benutze ein Array Eingangsgrad mit Eingangsgrad[v] = k, falls v Endpunkt von k Kanten ist. Benutze eine Queue Schlange. (1) Initialisiere die Adjazenzliste Priorität durch Einlesen aller Prioritäten. (Zeit = O(n + p)). (2) Initialisiere das Array Eingangsgrad. (Zeit = O(n + p)). (3) Alle Knoten v mit Eingangsgrad[v] = 0 werden in Schlange gestopft. (Zeit = O(n)). (4) Setze Zähler = 0; Wiederhole solange, bis Schlange leer ist: (a) Entferne einen Knoten i aus Schlange. (b) Setze Reihenfolge[Zähler++] = i. (c) Durchlaufe die Liste Priorität[i] und reduziere den Eingangsgrad für jeden Nachfolger j von i um 1. Wenn jetzt Eingangsgrad[j] = 0, dann stopfe j in Schlange: Aufgabe a j ist jetzt ausführbar.

32 Die Analyse Mariano Zelke Datenstrukturen 32/32 Die Initialisierungen laufen in O(n + p) Schritten ab. Ein Knoten wird nur einmal in die Schlange eingefügt. Also beschäftigen sich höchstens O(n) Schritte mit der Schlange. Eine Kante (i, k) wird, mit Ausnahme der Initialisierungen, nur dann inspiziert, wenn i aus der Schlange entfernt wird. Jede Kante wird nur einmal angefasst und höchstens O(p) Schritte behandeln Kanten. Das Problem des topologischen Sortierens wird für einen Graphen mit n Knoten und p Kanten in Zeit O(n + p) gelöst. Schneller geht s nicht.

Datenstrukturen. Herzlich willkommen! Sommersemester Isolde Adler

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

Mehr

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

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

Graphen und Bäume. A.1 Graphen

Graphen und Bäume. A.1 Graphen Algorithmen und Datenstrukturen 96 A Graphen und Bäume A.1 Graphen Ein gerichteter Graph (auch Digraph) G ist ein Paar (V, E), wobei V eine endliche Menge und E eine Relation auf V ist, d.h. E V V. V heißt

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

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

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

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

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

(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

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. 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

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz http://www.inf.uni-konstanz.de/algo/lehre/ss08/info2 Sommersemester 2008 Sven Kosub

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

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

Kapitel 12: Induktive

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

Mehr

Informatik II 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

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

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

Kapitel 5: Graphen und Graphalgorithmen

Kapitel 5: Graphen und Graphalgorithmen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 5: Graphen und Graphalgorithmen Skript zur Vorlesung Algorithmen und Datenstrukturen

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

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

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

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Kapitel 7 Fortgeschrittene Datenstrukturen Motivation: Lineare Liste: Suchen eines Elements ist schnell O(log n) Einfügen eines Elements ist langsam

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester

Mehr

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

Mehr

Verkettete Datenstrukturen: Bäume

Verkettete Datenstrukturen: Bäume Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller

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

Algorithmische Graphentheorie

Algorithmische Graphentheorie Algorithmische Graphentheorie Vorlesung 4: Suchstrategien Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 14. April 2017 HALBORDNUNG TOPOLOGISCHE ORDNUNG TOPOLOGISCHES

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

13. Dynamische Datenstrukturen

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

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

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

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

3. Die Datenstruktur Graph

3. Die Datenstruktur Graph 3. Die Datenstruktur Graph 3.1 Einleitung: Das Königsberger Brückenproblem Das Königsberger Brückenproblem ist eine mathematische Fragestellung des frühen 18. Jahrhunderts, die anhand von sieben Brücken

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

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

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

Mehr

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

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

Mehr

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V9/11

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V9/11 Modul: Programmierung B-PRG Grundlagen der Programmierung Teil V9/ Graphen und Bäume Professur für Graphische Datenverarbeitung Institut für Informatik Fachbereich Informatik und Mathematik (2) Rückblick:

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Graphen und Bäume Prof. Dr. Nikolaus Wulff Weitere Datentypen Als wichtige abstrakte Datentypen (ADT) kennen wir bis lang die Liste, den Stapel und die Warteschlange. Diese

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 8. Vorlesung Martin Middendorf und Peter F. Stadler Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Gefädelte

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

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester

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

Informatik II Prüfungsvorbereitungskurs

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

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455 Wiederholung Traversierung eines Graphen via Tiefendurchlaufs

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

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

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/ 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

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

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 16 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 45 Graphen TU Ilmenau Seite 2 / 45 Graphen 1 2 3 4 5 6 7 8

Mehr

Übung Algorithmen und Datenstrukturen

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

Mehr

Informatik Abitur Bayern 2017 / II - Lösung

Informatik Abitur Bayern 2017 / II - Lösung Informatik Abitur Bayern 2017 / II - Lösung Autoren: Wolf (1) Wagner (2) Scharnagl (3-5) 1a 5 1b Diese Methode vergleicht den Namen des Interpreten eines jeden Elements der Liste mit dem gegebenen Namen.

Mehr

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Dipl-Math. Wolfgang Kinzner 2.4.2012 Kapitel 1: Grundlagen der algorithmischen Graphgentheorie

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

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

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

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

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl

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

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

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Stefan Thater & Michaela Regneri FR.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 011 Heute Ein wenig Graph-Theorie (in aller Kürze) Datenstrukturen

Mehr

Graphenalgorithmen I

Graphenalgorithmen I Graphenalgorithmen I Vortrag im Seminar Hallo Welt! für Fortgeschrittene 7. Juni 211 Graphenalgorithmen I 1/33 Motivation Problem Wie komme ich am schnellsten ins Kanapee? Problem Wie kommt ein Datenpaket

Mehr

Motivation Kap. 6: Graphen

Motivation Kap. 6: Graphen Motivation Kap. 6: Graphen Warum soll ich heute hier bleiben? Graphen sind wichtig und machen Spaß! Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Was gibt es

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

Graphen. Leonhard Euler ( )

Graphen. Leonhard Euler ( ) Graphen Leonhard Euler (1707-1783) 2 Graph Ein Graph besteht aus Knoten (nodes, vertices) die durch Kanten (edges) miteinander verbunden sind. 3 Nachbarschaftsbeziehungen Zwei Knoten heissen adjazent (adjacent),

Mehr

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1. 4.4 Implementierung von Bäumen 4.4.1 Implementierung vollständiger Bäume mit Feldern 1 3 2 7 9 3 4 8 5 17 12 10 6 7 8 13 11 18 9 10 Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

Mehr

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

Mehr

11. Elementare Datenstrukturen

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

Mehr

12. Dynamische Datenstrukturen

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

Mehr

Geordnete Binärbäume

Geordnete Binärbäume Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung

Mehr

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS Kap. 5: Graphen Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 17. VO DAP2 SS 2009 23. Juni 2008 1 Motivation Warum soll ich heute hier bleiben? Graphen sind wichtig und

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Relationen und DAGs, starker Zusammenhang

Relationen und DAGs, starker Zusammenhang Relationen und DAGs, starker Zusammenhang Anmerkung: Sei D = (V, E). Dann ist A V V eine Relation auf V. Sei andererseits R S S eine Relation auf S. Dann definiert D = (S, R) einen DAG. D.h. DAGs sind

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 18. März

Mehr

Programmierkurs Python

Programmierkurs Python Programmierkurs Python Stefan Thater Michaela Regneri 2010-0-29 Heute Ein wenig Graph-Theorie (in aller Kürze) Datenstrukturen für Graphen Tiefen- und Breitensuche Nächste Woche: mehr Algorithmen 2 Was

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

Algorithmen und Datenstrukturen 2-1. Seminar -

Algorithmen und Datenstrukturen 2-1. Seminar - Algorithmen und Datenstrukturen 2-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 1. Übungsserie: 3 Aufgaben, insgesamt 30 28 Punkte A1 Spannbäume (10 8

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

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

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

Mehr

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

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

Mehr

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

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

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

Mehr

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

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Graphen AG Softech FB Informatik TU Kaiserslautern Literaturhinweis: Kapitel 4.5 aus R. Sedgewick, K. Wayne: Einführung in die Programmierung

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 2 Agenda

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 13. Übung minimale Spannbäume, topologische Sortierung, AVL-Bäume Clemens Lang Übungen zu AuD 4. Februar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 15: Graphen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

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

3. Übungsblatt zu Algorithmen I im SoSe 2017

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

Mehr

Bemerkung: Der vollständige Graph K n hat n(n 1)

Bemerkung: Der vollständige Graph K n hat n(n 1) Bemerkung: Der vollständige Graph K n hat n(n 1) 2 Kanten. Bew: Abzählen! Definition 111. Graphen mit n paarweise zyklisch verbundenen Kanten heißen Kreise (vom Grad n) und werden mit C n bezeichnet. Beispiel

Mehr

3 Dynamische Datenstrukturen

3 Dynamische Datenstrukturen 3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 11: Graphen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2010/2011 1/59 Graphische Darstellung von Zusammenhängen schon

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