Einfache Datenstrukturen
|
|
- Manuela Braun
- vor 6 Jahren
- Abrufe
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. 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. 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,
MehrLogische 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
MehrGrundlagen 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.
Mehr11. 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
MehrBeispiellö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
MehrContainerDatenstrukturen. 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
MehrVorlesung 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
MehrAlgorithmen 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,
MehrWiederholung. 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:
MehrAbstrakter 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
MehrDatenstrukturen 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
MehrVorlesung 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
MehrDatenstrukturen & 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
MehrKapitel 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:
MehrDatenstrukturen. 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
Mehr1. 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
MehrVorlesung 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
MehrAlgorithmen 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
MehrEine 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
MehrAlgorithmen 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
MehrVorlesung 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
MehrAlgorithmen 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
MehrTheoretische 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
MehrNAME, 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.
Mehr6. 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
MehrVorlesung 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
Mehr13. 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
MehrAlgorithmen 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
Mehr1. 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
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
MehrInformatik 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
Mehr13 (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
MehrTechnische 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
MehrCounting - 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
MehrBeispiellö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
MehrBinä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
Mehr8 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.
MehrVorlesung 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
MehrVorlesung 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
MehrTeil 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 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
MehrStud.-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
Mehr13. 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),
Mehr14. 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).
Mehr7 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,
MehrInformatik 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:
Mehr3 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
MehrVorlesung 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)
Mehr7. 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
Mehr12. 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
Mehr3. 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:
MehrHeapsort / 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
Mehr8. 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.
MehrInformatik 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
MehrAlgorithmen 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 /
MehrMotivation 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
MehrKurs 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
MehrKü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................................
MehrAlgorithmen 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
Mehr12 (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
MehrRelationen 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
MehrDatenstrukturen 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
MehrMehrwegbä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
MehrC- 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
Mehra) 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
MehrWiederholung 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
MehrRotation. 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
MehrAlgorithmen 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
MehrPunkte. 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
MehrInformatik 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
MehrDatenstrukturen 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
MehrAlgorithmen 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
MehrDatenstrukturen & 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
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
MehrVerkettete 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
MehrProseminar 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
Mehr3.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)
Mehr15. 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
MehrWiederholung. 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
MehrDatenstrukturen & 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
MehrDies 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
MehrDiskrete 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
Mehr3. Ü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
MehrInformatik 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:
MehrWS 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
MehrDatenstruktur, 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)
MehrSchwerpunkte. 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
MehrAlgorithmen 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
MehrGraphdurchmusterung, 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,
MehrKap. 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,
MehrWas 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,
MehrBä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
Mehr8. 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
MehrDatenstrukturen. 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,
MehrAlgorithmen 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
MehrDynamische 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
MehrALP 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
MehrWiederholung: 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 Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)
Mehr