Einfache Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Einfache Datenstrukturen"

Transkript

1 Kapitel 2 Einfache Datenstrukturen Bis vor einigen Jahren hat es für das Telefonieren ausgereicht, neben dem Telefon ein Telefonbuch zur Hand zu haben. Das im wesentlichen auftretende Problem, daß man einen Namen und eine grobe Adresse, nicht aber die Telefonnummer des Anzurufenden hatte, konnte damit effizient gelöst werden. Seitdem aber auch Telefonnummern übermittelt und sichtbar gemacht werden, stellt sich bisweilen das Problem, daß man zu einer Telefonnummer den zugehörigen Namen finden möchte. Dazu taugt das Telefonbuch nur wenig. Mit anderen Worten: auf ein und derselben Datenmenge hängt die Effizienz von Operationen, die man auf den Daten ausüben will, sehr stark von der Art und Weise ab, in der die Daten aufbereitet sind bzw. zur Verfügung gestellt werden. Wir werden uns in diesem Kapitel mit einfachen Datenstrukturen befassen. 2. Speichern und Streichen von Daten an festgelegten Stellen In vielen Fällen reicht es aus lediglich zuzulassen, daß eine Datenmenge nur an festgelegten Stellen durch Einfügen neuer Daten bzw. Löschen von vorhandenen Daten verändert werden dürfen. Als Beispiele für diese Datenstrukturen dienen uns Warteschlangen und Tellerstapel. 2.. Stacks (last-in-first-out: LIFO) Die Konzeption des Stacks beinhaltet sie folgenden Eigenschaften: Daten können nur oben eingefügt werden (mit der Operation push). Ein Datum kann nur oben gelesen werden (mit pop). Mit dem Lesen des Datums wird gleichzeitig der oberste Eintrag im Stack gelöscht. Realisierung eines Stacks durch ein Array S : S S 2... S n und Zeiger top auf das oberste Element 8

2 KAPITEL 2. EINFACHE DATENSTRUKTUREN 9 push(s, top, x) top := top S(top) := x pop(s, top, x) x := S(top) top := top + push(s, top, x) liest das Datum x in den Stack S ein. pop(s, top, x) liest das Datum, das im Stack ganz oben liegt, in die Variable x ein und setzt den Zeiger eine Position nach unten. Auf die Stelle im Stack, in der der Inhalt von x stand, kann nun nicht mehr zugegriffen werden: sie ist gelöscht. Bemerkung 2.. Bei der Realisierung ist es notwendig, Abfragen auf leer und auf Überlauf zu implementieren, damit man nicht aus einem leeren Stack liest oder in einen schon vollen Stack Daten einliest. Lesen und Schreiben in Stacks benötigen konstante Zeit (also unabhängig von der jeweiligen Größe). Wir drücken diesen Sachverhalt durch die Notation O() aus. Beispiel 2.2. Wir wollen schnell erkennen, ob in einem Text (etwa einem Programmteil) die Klammerregeln eingehalten werden, d.h. die Anzahl der öffnenden Klammern muß gleich der Anzahl der schließenden Klammern sein und zu keinem Zeitpunkt werden mehr Klammern geschlossen als geöffnet worden sind. Dazu gehen wir den Text linear durch und legen die öffnenden Klammern auf einen Stack. Wenn wir auf eine schließende Klammer treffen, entfernen wir eine Klammer von dem Stack. Der Text hält die Klammerregeln genau dann ein, wenn wir zu jeder schließenden Klammer stets ein Element im Stack finden und der Stack am Ende leer ist Queues (first-in-first-out : FIFO) Queues stellen Datenstrukturen dar, die Daten in Form einer Warteschlange verwalten. Daten werden am Ende eingefügt (mit schreiben) und am Anfang ausgelesen (mit lesen) Typisches Beispiel: Kunden vor Kasse Um eine speichereffiziente Verwaltung der Daten zu ermöglichen, ist einen Realisierung durch ein zirkuläres Feld Q... Q n und Zeigern Anfang (head) und Ende (tail) sinnvoll. Mit diesen legt man die Stelle fest, an der ausgelesen, bzw. eingelesen werden darf. Folgende Situationen können eintreten: Anfang = Ende = Queue leer oder voll Anfang < Ende = Felder der Queue: Q Anfang,..., Q Ende - Anfang > Ende = Felder der Queue: Q Anfang... Q n, Q,..., Q Ende -

3 KAPITEL 2. EINFACHE DATENSTRUKTUREN 20 Q n Q n Q Q 2 Abbildung 2.: Eine Queue als zirkuläre Liste lesen(q, Anf ang, Ende, x) x := Q(Anfang) Anfang := (Anfang + )mod n schreiben(q, Anf ang, Ende, x) Q(Ende) := x Ende := (Ende + )mod n Abfrage auf leer bzw. Überlauf Lesen und Schreiben in Queues und benötigen ebenfalls nur konstante Zeit. Natürlich sind auch Kombinationen von Stacks und Queues denkbar. In den sogenannten Doppelschlangen sind Einfüge- und Löschoperationen sowohl am Ende als auch am Anfng zugelassen. 2.2 Speichern und Streichen von Daten an beliebiger Stelle Die Ablage von Daten in einem Array bringt den Vorteil mit sich, daß wir auf das i- te Datum direkt über ihre Adresse i zugreifen können. Sobald wir aber zulassen, daß Daten nicht nur am Anfang oder Ende eingefügt bzw. entnommen werden dürfen, wird der Aufwand für das Einfügen/Löschen deutlich größer, da die verbleibenden Daten verschoben werden müssen Einfach-verkettete Listen Statt die Daten so in einem zusammenhängenden Speicherbereich abzulegen, daß man den Speicherplatz des i-ten Datums durch eine Adreßberechnung leicht bestimmen kann, speichert man hier ein Datum mit einem Verweis auf das jeweils nächste Datum ab. Die Daten können also beliebig über den Speicher verstreut sein; insbesondere ist es nicht mehr erforderlich, vorab einen Bereich hinreichender Größe zur Aufnahme aller Listenelemente zu reservieren. Der belegte Speicherplatz paßt sich vielmehr dynamisch der jeweiligen aktuellen Größe der Liste an.

4 KAPITEL 2. EINFACHE DATENSTRUKTUREN 2 Realisierung: als Folge von Knoten (Listenelementen) Jeder Knoten enthält eine Datum-Komponente (zur Aufnahme des Datums) und einen Zeiger auf den jeweils nächsten Knoten. Kennzeichnung des Listenendes durch Definition des letzten Zeigers als NIL Kennzeichnung des Listenanfangs durch einen Zeiger auf den ersten Knoten (z.b. Kopf oder Anfang ) Eine einfach verkettete Liste ist gegeben durch den Zeiger auf den ersten Knoten. Eine Liste, die durch einen Zeiger Anfang gegeben ist, nennt man leer, wenn Anfang = NIL. Kopf Datum Next Datum Next Datum Next 2 n 2 n Abbildung 2.2: Einfach-verkettete Liste Doppelt-verkettete Listen Im Vergleich zu einfach-verketteten Listen hat man hier in jedem Knoten noch einen weiteren Zeiger, der auf den jeweils vorhergehenden Knoten weist (zum Rückwärtshangeln ). Dadurch wird das Einfügen und Entfernen von Listenelementen vereinfacht. Listenanfang, bzw. Listenende werden wiederum durch Zeiger Anfang, bzw. Zeiger Ende markiert. Eine doppelt-verkettete Liste ist gegeben durch den Anfangs- und/oder Endezeiger Operationen auf Listen Test auf leere Liste Aufbau einer Liste der Länge n : Füge n Listenelemente in die leere Liste ein. Entfernen von Listenelementen: Gegeben ist ein Zeiger auf das k-te Listenelement. Lösche Element k +, indem der Zeiger des k-ten Listenelements auf das k + 2-te Listenelement verbogen wird. Einfügen von Elementen: Gegeben ist wieder ein Zeiger auf das k-te Listenelement und ein weiterer Zeiger auf das einzufügende Listenelement. Füge es zwischen dem k und k + -ten Listenelement ein, indem der Zeiger des einzufügenden Elements auf das k + -te Element und danach der Zeiger des k-ten Element auf das einzufügende Element verbogen wird.

5 KAPITEL 2. EINFACHE DATENSTRUKTUREN 22 Durchsuchen einer einfach-verketteten Liste: Gesucht wird ein Datum x in der durch den Kopf-Zeiger gegebenen Liste. Gehe die Liste durch, bis ein Knoten mit Datum-Komponente x gefunden wurde und liefere einen Zeiger auf diesen Knoten zurück Eigenschaften verketteter Listen Die Laufzeiten der oben beschriebenen Operationen mit Listen sind: Test auf leer : O() Aufbau einer Liste der Länge n : O(n) Einfügen und Löschen eines Elements mit Zeiger: O() Durchsuchen einer einfach-verketteten Liste: O(n) im worst-case Bemerkung 2.3. Was passiert, wenn wir ein Element direkt vor dem k-ten Element einfügen wollen? Verfahre wie oben und vertausche die Inhalt von Element k und dem neuen Element. Wie sieht es aus, wenn wir das k-te Element löschen wollen? Anwendungsbeispiel für einfach-verkettete Listen Gegeben sei ein azyklischer, gerichteter Graph (Netzplan) mit n Knoten und m Kanten Abbildung 2.3: Beispiel eines gerichteten Graphen Wir stellen die Kanten durch Nachfolgerlisten, in denen zu jedem Knoten sie Liste seiner Nachfolger abgelegt ist. 2.3 Bäume (geordnete Wurzelbäume) Bäume lassen sich rekursiv wie folgt definieren. Ein Baum besteht aus einer endlichen Menge von Knoten, so daß gilt: Es existiert ein ausgezeichneter Knoten r (Wurzel, root) Die restlichen Knoten sind partitioniert in Mengen T,..., T k, die selbst wieder Bäume sind (Unterbäume) r zeigt auf die Wurzeln r,..., r k der Unterbäume

6 KAPITEL 2. EINFACHE DATENSTRUKTUREN NIL Abbildung 2.4: Darstellung über des gerichteten Graphen über Nachfolgerlisten Bemerkung 2.4. In der Informatik werden Bäume stets so dargestellt, daß die Wurzel oben und die Blätter unten liegen. Wurzel Blatt Abbildung 2.5: Veranschaulichung eines Baumes Definition 2.5. Sei T ein Baum mit Wurzel r und Unterbäumen T,..., T k. Ferner sei r i = W urzel(t i ), i =, k a) r i ist i-ter Sohn von r, r ist Vater der r,... r k, b) r j ist Bruder von r i, c) Entsprechend: Nachfolger, Vorgänger, d) Ein Knoten ohne Nachfolger heißt Blatt, e) Knoten von T, die weder Wurzel noch Blatt sind, heißen innere Knoten, f) Tiefe(v, T ) = Länge des Weges (in # Kanten) von Knoten v zur Wurzel r, g) Höhe (v, T ) = Länge des längsten Weges von v zu einem Blatt, h) Höhe (T ) = Höhe (Wurzel, T ) Mögliche Realisierung von Bäumen (a) Verkettete Listen mit variabler Zeigerzahl Nachteil: variable Zeigeranzahl (b) Verkettete Listen mit 3 Datentypen Wir benutzen eine verkettete Liste aus Elementen, die aus drei Datentypen besteht. Ist Indikator = 0, so enthält Datum die zu speichernde Größe, ist Indikator =, so enthält Datum einen Zeiger auf eine Liste mit Unterbaum.

7 KAPITEL 2. EINFACHE DATENSTRUKTUREN 24 Daten Anzahl der Söhne Pointer zu Sohn Abbildung 2.6: Baum als verkette Liste mit variabler Zeigerzahl Indikator Datum Zeiger Abbildung 2.7: verkettete Liste mit 3 Datentypen Abbildung 2.8: Darstellung als verkettete Liste mit 3 Einträgen

8 KAPITEL 2. EINFACHE DATENSTRUKTUREN 25 Wir werden jedoch überwiegend Bäume mit spezieller Struktur betrachten (etwa indem wir die Anzahl der Söhne beschränken), für die die Speicherung kanonisch sein wird. Definition 2.6. Ein Baum T heißt binär, falls jeder Knoten höchstens 2 Söhne hat. Binäre Bäume können z.b. durch 2 Felder Leftson i und Rightson i dargestellt werden. Dazu ggf. Informationen über: Inhalt der Knoten, Väter, # Nachfolger in zusätzlichen Feldern, z.b. R L Lemma 2.7. Ein binärer Baum der Höhe h hat höchstens 2 h+ Knoten und 2 h Blätter. Beweis: Induktion über h. Die Aussage ist richtig für h = 0. Sei nun T ein Baum der Höhe h. Dann hat die Wurzel höchstens zwei Söhne r und r 2, die Wurzeln von Unterbäumen T und T 2 sind. T und T 2 haben eine Höhe von höchstens h. Per Induktion haben dann T und T 2 jeweils höchstens 2 h Knoten und 2 h Blätter. Damit hat T höchstens 2 (2 h ) + = 2 h+ Knoten und 2 h Blätter. Definition 2.8. Ein binärer Baum T der Höhe h heißt voll, wenn er 2 h+ Knoten hat. Wir werden gelegentlich die Knoten eines vollen binären Baums sequentiell darstellen, indem wir beginnend mit der Wurzel alle Knoten auf einem Tiefenniveau von links nach rechts durchnumerieren Abbildung 2.9: Ein voller Baum mit 7 Knoten Definition 2.9. Ein binärer Baum T mit n Knoten heißt vollständig, wenn seine Knoten den ersten n Knoten eines sequentiell dargestellten vollen binären Baums entsprechen.

9 KAPITEL 2. EINFACHE DATENSTRUKTUREN Abbildung 2.0: Ein vollständiger Baum mit 6 Knoten Lemma 2.0. Sei T ein vollständiger und binärer Baum mit T = n. Dann gilt: Höhe (T ) = log(n + ). Beweis: Sei h die Höhe von T. Die Anzahl n der Knoten von T liegt zwischen der Knotenzahl der vollen Bäume mit den Höhen h und h. Somit: 2 h < n 2 h+ h < log(n + ) h +. Da h N, folgt h < log(n + ) h + und somit h log(n + ) h. Vollständige binäre Bäume haben eine kompakte sequentielle Darstellung der Relationen Vater, linker Sohn und rechter Sohn (ohne Zeiger): Vater (i) = Leftson (i) = Rightson (i) = { i/2 : für i > : für i = (Wurzel) { 2i : für 2i n : für 2i > n { 2i + : für 2i + n : für 2i + > n Durchmusterung von Bäumen Oft müssen die Knoten eines Baumes systematisch durchsucht werden, etwa um die in den Knoten enthaltenen Einträge auszugeben, sie aufzusummieren oder sie zu mitteln. Das bedeutet, daß wir die Knoten in einer bestimmten Reihenfolge durchlaufen wollen. Die drei gebräuchlichsten Reihenfolgen, in denen sämtliche Knoten eines Baumes durchlaufen werden, sind die Präordnung, die Postordnung und die symmetrische Durchmusterung, wobei die leetztere nur für Binärbäume definiert ist. Diese Reihenfolgen lassen sich über rekursive (d.h. sich selbst aufrufende) Algorithmen definieren: Sei T ein Baum mit Wurzel r und Söhnen r,..., r k Präordnung () Durchmustere die Wurzel (2) Durchmustere in Präordnung nacheinander T,..., T k

10 KAPITEL 2. EINFACHE DATENSTRUKTUREN Postordnung () Durchmustere in Postordnung nacheinander die T,..., T k (2) Durchmustere die Wurzel Symmetrische Durchmusterung von binären Bäumen () Durchmustere den linken Teilbaum der Wurzel (falls ex.) (2) Durchmustere die Wurzel (3) Durchmustere den rechten Teilbaum (falls ex.) jeweils in symmetrischer Ordnung. Nach dem Durchsuchen identifizieren wir die Knoten mit ihrer Numerierung Präordnung Postordnung symmetr. Ordnung Abbildung 2.: Ergebnisse der Durchmusterungen eines Baumes Eigenschaften der Durchmusterungen Formal korrekt müssten wir zwischen einem Knoten v und seiner Nummer N um(v) unterscheiden. Da wir aber Knoten mit ihrer durch die Durchmusterung vergebenen Numerierung identifizieren, stehen im folgenden (etwas verwirrend, aber kurz und daher gebräuchlich) v oder r sowohl für Knoten als auch für natürliche Zahlen v, r N. Präordnung: r + T r. Sei r Wurzel des Teilbaums T r. Dann gilt v T r r v Folgerung 2.. Ist T r bekannt, so kann in O() Schritten entschieden werden, ob v Nachfolger von r ist. Postordnung: Sei r Wurzel des Teilbaums T r. Dann gilt v T r r T r + v r. Damit gilt die Folgerung 2. für die Postordnung analog.

11 KAPITEL 2. EINFACHE DATENSTRUKTUREN 28 Symmetrische Ordnung: Die Knoten im linken Teilbaum von r tragen kleinere Nummern als r, die im rechten größere. Folgerung 2.2. Wir können u.a. in O(Höhe(T)) entscheiden, ob ein Knoten mit der Nummer p vorkommt. (Vgl. Suchbäume) Zur Veranschaulichung rekursiver Algorithmen und ihrer nichtrekursiven Varianten formulieren wir einen Algorithmus zur symmetrischen Durchmusterung in der Pseudo-Programmiersprache Algorithmus zur symmetrische Durchmusterung () begin { Hauptprogramm } (2) count := (3) SymmOrd(Wurzel) (4) end (5) procedure SymmOrd(v) (6) if Leftson (v) then SymmOrd(Leftson(v)) (7) Number (v) := count (8) count := count + (9) if Rightson (v) then SymmOrd(Rightson(v)) (0) end Rekursive Algorithmen werden üblicherweise mit Hilfe von Stacks realisiert. Jedem Aufruf wird ein Block des Kellers zugewiesen, der die Informationen enthält: ) Werte der aktuellen Parameter 2) Rücksprungadresse 3) lokale Variablen Nichtrekursive Version der symmetrischen Durchmusterung () begin (2) count := (3) v := root (4) top := 0 (5) left: while leftson (v) then (6) push (Stack, top, v) (7) v := leftson (v) (8) endwhile (9) Center: Number (v) := count (0) count := count + () if rightson (v) then (2) v := rightson (v)

12 KAPITEL 2. EINFACHE DATENSTRUKTUREN 29 (3) goto left (4) endif (7) if top 0 then (6) Pop (Stack, top, v) (7) goto center (8) endif (9) end Diskurs: Prozeduren und Rekursionen Das obige Besipiel illustriert, daß rekursive Formulierungen von Algorithmen häufig einfacher zu verstehen sind. Hinzu kommt, daß auch Aussagen über Eigenschaften wie Korrektheit und Laufzeitverhalten bei einer rekursiven Formulierung leichter zu zeigen sind als bei nichtrekursiven Ansätzen. Am obigen Beispiel haben wir auch gesehen, wie wir Prozeduren und rekursive Aufrufe mit Hilfe von Stacks in ein sequentielles Programm überführen können. Da zur Verwaltung eines Prozeduraufrufs im wesentlichen nur die Parameter und die lokalen Variablen im Stack abgelegt werden müssen, können wir annehmen, daß der Verwaltungsaufwand nicht größer ist als der Aufwand für die Ausführung der Prozedur selbst (da die Parameter und lokalen Variablen mindestens einmal benutzt werden müssten). Formal werden wir den Aufwand für die Ausführung der Rekursion und ihrer Verwaltung dem Prozeduraufruf anschreiben. Im weiteren Verlauf der Vorlesung werden wir sehen, wie wir mit diesem Ansatz die Laufzeiten rekursiver Programme abschätzen Eine Anwendung von binären Bäumen: Stichwortsuche Gegeben ein Lexikon mit n Stichworten. Frage: Ist ein gegebener Begriff im Lexikon enthalten? Zur Beantwortung sind zwei verschiedene Ansätze denkbar:. Man könnte eine verkettete Liste benutzen, in der die Stichwörter alphabetisch sortiert sind. jede Abfrage O(n) im worst-case. 2. Verwende binären Baum, der als Suchbaum organisiert ist: ein Stichwort, das in einem Knoten v abgespeichert ist, ist alphabetisch größer als alle Wörter im linken Unterbaum alphabetisch kleiner als alle Wörter im rechten Unterbaum Vorteil: Für den Fall, daß das gesuchte Stichwort nicht im Wurzelknoten steht, weiß man bei Suchbäumen immer, in welchem Teilbaum man weitersuchen muß und erspart sich damit jeweils das Durchsuchen eines gesamten Teilbaums. Im Extremfall erhält man hier wieder eine lineare Liste. Extremfall: lineare Liste mit Suchzeit O(n) Dies kann verhindert werden durch die Verwendung von sogenannten balancierten Bäumen. Ohne an dieser Stelle auf eine formale Definition einzugehen, werden wir versuchen zu erreichen, daß in jedem Knoten der linke und rechte Teilbaum etwa gleiche Größe hat. Dies führt zu einer Suchzeit von O(log n).

13 KAPITEL 2. EINFACHE DATENSTRUKTUREN 30 a b c d j Abbildung 2.2: Suchbaum als lineare Liste g d i b f h j a c e Abbildung 2.3: balancierter Suchbaum

14 KAPITEL 2. EINFACHE DATENSTRUKTUREN Heaps Es seien Daten gegeben, auf denen eine lineare Ordnung gegeben ist (Wörter eines Alphabets, natürliche Zahlen usw.). Wir suchen eine Datenstruktur, die es erlaubt, effizient neue Daten einzufügen und das jeweilige Maximum zu bestimmen. Für das Sortierproblem, das im nächsten Kapitel behandelt werden wird, sollte auch das Löschen des jeweiligen Maximums effizient möglich sein. Implementierung als Einfügen Maximum bestimmen Stack oder Queue O() O(n) sortierte verkettete Liste O(n) O() Definition 2.3. Ein (Max-) Heap ist ein vollständiger binärer Baum, in dem für jeden Knoten gilt, daß der in ihm abgelegte Wert mindestens so groß ist, wie die in seinen Söhnen abgelegten Werte. Ein Min-Heap wird analog definiert. Wir benutzen eine sequentielle Darstellung als Feld: Daten(),..., Daten(n). Dabei geht die Struktur des Baumes nicht verloren (kompakte sequentielle Darstellung der Relationen Vater, Söhne, s. Kapitel 2.3) Einfügen eines neuen Datums in einen Heap Idee: Füge einen neuen Knoten zum Heap hinzu, so daß wieder ein vollständiger binärer Baum entsteht (also Blatt einfügen) und speichere das neue Datum in diesem Knoten Dieser Baum ist i.a. kein Heap mehr. Wende die Prozedur insert an, um wieder einen Heap zu erhalten: procedure insert (Daten,n) { n ist die Größe des binären Baums Daten nach Einfügen } j := n i := n 2 item := Daten(n) while i > 0 und Daten(i) < item Daten(j) := Daten(i) { Sohn übernimmt Daten vom Vater } j := i { gehe zum Vater } i := i 2 {betrachte dessen Vater } enddwhile { j ist die Stelle, an die das neue Datum paßt } Daten(j) := item end Lemma 2.4. (i) Das Einfügen eines Datums in einen Heap der Größe n benötigt O(log n) Schritte.

15 KAPITEL 2. EINFACHE DATENSTRUKTUREN 32 (ii) Der Aufbau eines Heaps mit n Elementen benötigt O(n log n) Schritte (iii) Das Maximum in einem Heap kann in O() Schritten gefunden werden. Beweis: (i) Das neue Element wandert höchstens Höhe (T ) = log(n+) = O(log n) Positionen nach oben mit O() Operationen pro Austausch. (ii) Wir verwenden die Prozedur Insert, um die Knoten nacheinander in einen anfänglich leeren Heap einzufügen. Da jede einzelne Einfüge-Operation höchstens O(log n) Schritte benötigt, folgt die Behauptung. (iii) klar, da das Maximum in der Wurzel abgelegt ist. Bemerkung 2.5. Die Eingabe in der Reihenfolge, 2, 3,..., n zeigt, daß die Laufzeit dieses Verfahrens auch Θ(n log n) beträgt. Dieses Laufzeitverhalten läßt sich dadurch erklären, daß in einem vollständigen binären Baum fast alle Knoten tief unten im Baum liegen. So sind bereits die Hälfte aller Knoten Blätter: Lemma 2.6. Ein vollständiger binärer Baum mit n Knoten hat n 2 Blätter. Beweis: Per Induktion: ein vollständiger binärer Baum besteht aus einer Wurzel, einigen Tiefenniveaus mit jeweils gerader Anzahl von Knoten und den restlichen Blättern. Ist somit n gerade, so hat er eine ungerade Anzahl von Blättern auf dem untersten Niveau. Damit gibt es genau einen inneren Knoten v, der nur einen linken und keinen rechten Knoten hat. Fügen wir einen neuen Knoten hinzu, so wird er rechter Sohn von v. Dann hat sich die Anzahl der Blätter erhöht und es ist auch n+ 2 = n +. Ist n ungerade, so wird ein neues linkes Blatt an einen Knoten 2 angefügt, der vorher selbst ein Blatt war und nun innerer Knoten wird. Damit bleibt die Anzahl der Bläter konstant und es gilt n+ 2 = n Reparieren in einem Heap Gegeben sei ein vollständiger binärer Baum mit n Knoten {k,, k n } in sequentieller Darstellung. Weiter sei k i ein Knoten mit der Eigenschaft, daß die Teilbäume unter seinen Söhnen bereits Heaps sind. Erzeuge daraus einen vollständigen binären Baum mit der Eigenschaft, daß der Teilbaum unter k i einen Heap bildet. Algorithmus: { versickere k i im Bereich k i bis k n } Solange k i einen linken Sohn k j hat, wiederhole: falls k i einen rechten Sohn hat, so sei k j der größere Sohn von k i ; falls k i < k j, so vertausche k i mit k j und setze i:=j, sonst halte an { Teilbaum ist schon Heap }.

16 KAPITEL 2. EINFACHE DATENSTRUKTUREN 33 Lemma 2.7. Das Reparieren eines Heaps an der Stelle i benötigt O(Höhe(i)) Schritte Löschen des Maximums in einem Heap Idee: Lösche den Wert des (Wurzel-) Knotens (das Maximum) Knoten ist jetzt überflüssig Speichere den Inhalt des Knotens n im Knoten. Lösche Knoten n. Repariere den Baum an der Stelle. Lemma 2.8. Das Löschen des Maximums in einem Heap benötigt O(log n) Schritte Aufbau eines Heaps in linearer Zeit Das obige Verfahren des iterativen Einfügens in einen anfangs leeren Heap benötigt O(n log n) Schritte. Die Tatsache, daß die meisten Knoten tief unten im Baum liegen, machen wir uns bei der folgenden Vorgehensweise zu Nutze. Sie erlaubt den Aufbau eines Heaps in linearer Zeit. Idee: Speichere in einem ersten Schritt die Daten in einem vollständigen binären Baum Die Teilbäume unter den Blättern sind bereits Heaps. Beginnend mit dem rechtesten inneren Knoten rückwärts bis zur Wurzel, repariere den Baum an der jeweiligen Stelle. Lemma 2.9. Der Aufbau eines Heaps mit n Elementen benötigt O(n) Schritte. Beweis: (i) Da wir den binären Baum rückwärts gehend reparieren, ist er am Schluß Heap-geordnet. (ii) Sei 2 h < n 2 h+ mit h = Höhe(T ). Für k = 0,..., h ist die Anzahl der Knoten der Höhe k höchstens 2 h k. Repariert wird an allen inneren Knoten i mit Höhe(i). Nach Lemma 2.7 beträgt die Laufzeit jeweils O(Höhe(i)). Somit beträgt die Gesamtlaufzeit höchstens (s. Lemma A.):

17 KAPITEL 2. EINFACHE DATENSTRUKTUREN 34 h 2 h k k = 2 h k=0 n n n h k=0 h k=0 h k=0 k=0 k 2 k k 2 k ( 3 4 )k ( 3 4 )k = n ( 3) 4 = O(n). Somit hat man mit Heaps eine effiziente Datenstruktur gefunden, mit der im Vergleich zum Stack oder zur sortierten Liste die Laufzeiten für die Prozeduren Einfügen, Maximum bestimmen kleiner sind und für die Prozedur Aufbau gleich bleiben.

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

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

Mehr

(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

Logische Datenstrukturen

Logische Datenstrukturen Lineare Listen Stapel, Warteschlangen Binärbäume Seite 1 Lineare Liste Begriffe first Funktion: sequentielle Verkettung von Datensätzen Ordnungsprinzip: Schlüssel Begriffe: first - Anker, Wurzel; Adresse

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

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

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

ContainerDatenstrukturen. Große Übung 4

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

Mehr

Vorlesung 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

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

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO Wiederholung Datenstrukturen und Algorithmen VO 708.031 Suchen in linearen Feldern Ohne Vorsortierung: Sequentielle Suche Speicherung nach Zugriffswahrscheinlichkeit Selbstanordnende Felder Mit Vorsortierung:

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

Vorlesung Datenstrukturen

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

Mehr

Datenstrukturen & 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

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

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

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 Bruder-Bäume, B-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei Wörterbuchoperationen

Mehr

Algorithmen und Datenstrukturen Heapsort

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

Mehr

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

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

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

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

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

NAME, VORNAME: Studiennummer: Matrikel:

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

Mehr

6. Sich selbst organisierende Datenstrukturen

6. Sich selbst organisierende Datenstrukturen 6. Sich selbst organisierende Datenstrukturen 6.1 Motivation einfach, wenig Verwaltungsoverhead effizient im amortisierten Sinn EADS 6.1 Motivation 201/598 6.2 Sich selbst organisierende lineare Listen

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei

Mehr

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) AVL-Bäume: Ausgabe aller Elemente in O(n) Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) Frage: Kann man Einfügen, Löschen und Suchen in O(1) Zeit? 1 Hashing einfache Methode

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge

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. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

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

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

Mehr

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

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

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

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

Mehr

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

8 Elementare Datenstrukturen

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

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Sortierte Folgen Maike Buchin 30.5., 1.6., 13.6.2017 Sortierte Folgen Häufiges Szenario: in einer Menge von Objekten mit Schlüsseln (aus geordnetem Universum) sollen Elemente

Mehr

Vorlesung Datenstrukturen

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

Mehr

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

Ü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

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

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

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

7 Weitere Baumstrukturen und Heapstrukturen

7 Weitere Baumstrukturen und Heapstrukturen 7 Weitere Baumstrukturen und Heapstrukturen Man kann kurze Suchzeiten in Baumstrukturen erreichen durch Rebalancierung bei Einfügungen und Löschungen (AVL Bäume, gewichtsbalancierte Bäume, Bruderbäume,

Mehr

Informatik II, SS 2016

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

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

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

7. Sortieren Lernziele. 7. Sortieren

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

Mehr

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete. Worst-case Zeit für Search: Θ(n). In der Praxis jedoch sehr gut. Unter gewissen

Mehr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr 3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:

Mehr

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

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

Mehr

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

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

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

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

Motivation Binäre Suchbäume

Motivation Binäre Suchbäume Kap..: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Zusätzliche Lernraumbetreuung Morteza Monemizadeh: Jeden Montag von :00 Uhr-:00 Uhr in

Mehr

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Kurs 1663 Datenstrukturen Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom 15.08.98 Seite 1 Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. August 1998 Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur

Mehr

Kürzeste Wege Algorithmen und Datenstrukturen

Kürzeste Wege Algorithmen und Datenstrukturen Kürzeste Wege Algorithmen und Datenstrukturen Institut für Informatik Universität zu Köln SS 2009 Teile 1 und 2 Inhaltsverzeichnis 1 Kürzeste Wege 2 1.1 Voraussetzungen................................

Mehr

Algorithmen und Datenstrukturen

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

Mehr

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

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

Mehr

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

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

Mehrwegbäume Motivation

Mehrwegbäume Motivation Mehrwegbäume Motivation Wir haben gute Strukturen (AVL-Bäume) kennen gelernt, die die Anzahl der Operationen begrenzen Was ist, wenn der Baum zu groß für den Hauptspeicher ist? Externe Datenspeicherung

Mehr

C- Kurs 09 Dynamische Datenstrukturen

C- Kurs 09 Dynamische Datenstrukturen C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für

Mehr

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: 1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem

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

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y Die AVL-Eigenschaft soll bei Einfügungen und Streichungen erhalten bleiben. Dafür gibt es zwei mögliche Operationen: -1-2 Rotation Abbildung 3.1: Rotation nach rechts (analog links) -2 +1 z ±1 T 4 Doppelrotation

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 6 Suchbäume Version vom 25. November 2016 1 / 75 Vorlesung 10 22. November 2016 2

Mehr

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum. Hochschule der Medien Prof Uwe Schulz 1 Februar 2007 Stuttgart Klausur Informatik 2, EDV-Nr 40303/42022 Seite 1 von 2 Name: Matr Nr: Teil 1: Keine Hilfsmittel Bearbeitungszeit: 20 Minuten Teil 1 Teil 2

Mehr

Informatik II, SS 2014

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

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO INF.02031UF (2-4)-Bäume robert.legenstein@igi.tugraz.at 1 7. Bäume Bäume als Datenstruktur Binärbäume Balancierte Bäume (2-4)-Bäume Anwendung: Mischbare Warteschlangen

Mehr

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

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

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 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 2. April

Mehr

Übungen zu Programmierung I - Blatt 8

Übungen zu Programmierung I - Blatt 8 Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail

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

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...) Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...) Inhalt: Einleitung, Begriffe Baumtypen und deren Kodierung Binäre Bäume Mehrwegbäume Prüfer

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

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

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

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

Mehr

Datenstrukturen & Algorithmen 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

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen. Linken von Bäumen: Zwei Bäume desselben Wurzel-Rangs werden unter Einhaltung der Heap-Bedingung verbunden. Sind k 1 und k 2 die Wurzeln der zwei zu linkenden Bäume, so wird ein neuer Baum aufgebaut, dessen

Mehr

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

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

Mehr

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

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

WS 2013/14. Diskrete Strukturen

WS 2013/14. Diskrete Strukturen WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws1314

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

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

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016

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

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009 Kap. 4.7 Skiplisten Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 14./15. VO DAP2 SS 2008 9./16. Juni 2009 1 2. Übungstest Termin: Di 16. Juni 2009 im AudiMax,

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

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

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit

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

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

Dynamische Mengen. Realisierungen durch Bäume

Dynamische Mengen. Realisierungen durch Bäume Dynamische Mengen Eine dynamische Menge ist eine Datenstruktur, die eine Menge von Objekten verwaltet. Jedes Objekt x trägt einen eindeutigen Schlüssel key[x]. Die Datenstruktur soll mindestens die folgenden

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

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

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

Mehr

Übung zur Vorlesung Algorithmische Geometrie

Übung zur Vorlesung Algorithmische Geometrie Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)

Mehr