Kompaktübersicht Bäume

Größe: px
Ab Seite anzeigen:

Download "Kompaktübersicht Bäume"

Transkript

1 Kompaktübersicht Bäume Diese Übersicht entstand im Wintersemester 2003/04 parallel zur Vorlesung Grundzüge der Informatik III an der Technischen Universität Darmstadt (TUD) und soll die behandelten Aspekte zum Thema Bäume kompakt zusammenfassen. Die in der Vorlesung verwendeten Materialen welche auch die Grundlage dieser Zusammenfassung darstellen waren: TUD Skript von H. Waldschmidt, K. Guntermann: Grundzüge der Informatik III - Nichtnumerische Algorithmen und Datenstrukturen (3. verbesserte Auage; Stand September 2003), die begleitenden Folien zur Vorlesung im WS2003/04 von Prof. A. Buchmann, PhD, sowie die ebenfalls verwendeten Folien des WS2001/02 (Dr. Felix Gärtner). Für Korrekturen bin ich jederzeit dankbar und wünsche viel Erfolg beim Einstieg in das Thema! - Andreas Schwarzkopf Inhaltsverzeichnis 1 Zusammenfassung zu Bäumen Bäume allgemein gerichtete Bäume - auch: orientierte Bäume Baumdenition weitere Denitionen (Knoten) weitere Denitionen (Bäume) geordnete Bäume Binärbäume - binary trees spezielle Binärbäume Strikte Binärbäume Ausgeglichene Binärbäume Fast vollständige Binärbäume Vollständige Binärbäume Erweiterte Binärbäume Traversierung von (Binär-)Bäumen 5 3 Implementieren von Bäumen Feldbäume Sequentielle Verfahren Dynamische Struktur Fädelung 6 5 Binäre Suchbäume Positionssuche in binären Suchbäumen Balancierte binäre Suchbäume Höhenbalancierte binäre Suchbäume AVL - Bäume (Adelson-Velskii und Landis 1962) Höhe von AVL Bäumen: Fibonacci-Bäume: Gewichtsbalancierte binäre Suchbäume Optimale binäre Suchbäume 9 8 Sortieren mit Bäumen Tree Sort Tournament sort Standard Tournament Sort (Auswahlverfahren) Tournament Sort with replacement (Auswahlverfahren mit Ersetzen) Wege Mischen Heapsort Proxmap Sort

2 9 Mehrwegbäume m-wege Suchbäume Denition m-wege Suchbäume B-Baum Denition B-Baum Klasse τ(k, h) eines B-Baums Höhe und Schlüsselanzahl eines B-Baums der Klasse τ(k, h) Einfügen in einen B-Baum der Klasse τ(k, h) Löschen in einem B-Baum der Klasse τ(k, h) B-Baum mit Mehrfachüberlauf (international: B Bäume) B -Baum (international B + tree) Denition B + Baum der Klasse τ(k, k, h ) Höhe und Schlüsselanzahl eines B + -Baums der Klasse τ(k, k, h ) Operationen in einem B-Baum der Klasse τ(k, k, h ) Präx B + -Baum Vergleich B-Baum und B + -Baum Baum Binäre B-Bäume Symmetrische binäre B-Bäume, SBB-Baum Digitale Suchbäume m-ärer Trie Trie Optimierung Binäre Digitale Suchbäume PATRICIA-Baum Binärer Radix Baum

3 1 Zusammenfassung zu Bäumen 1.1 Bäume allgemein - Bäume sind eine wichtige Teilmenge der Graphen - sie sind zusammenhängend, azyklisch und einfach (ungerichtet, keine Mehrfachkanten) - es gibt einen ausgezeichneten Knoten: die Wurzel - Darstellung: zu jedem Baum existiert ein isomorpher Graph, auch Mengendarstellung möglich - i.a. zeichnet man die Wurzel oben und die weiteren Knoten auf tiefer liegende Ebenen 1.2 gerichtete Bäume - auch: orientierte Bäume - Kanten sind einfach aber gerichtet - Wurzel bestimmt auch die Orientierung der Kanten - implizite Orientierung: Kanten von Wurzel weggerichtet - explizite Orientierung: Kanten zeigen zur Wurzel hin 1.3 Baumdenition - Baumstruktur wird rekursiv deniert - Denition: Ein orientierter Wurzelbaum ist eine endiche Menge B von Elementen die entweder leer ist, oder für die gilt: in B existiert ein ausgezeichnetes Element w ohne Vorgänger: die Wurzel die Elemente von B \ {w} lassen sich disjunkt in B 1... B m zerlegen, so daÿ jedes B i wieder ein orientierter Wurzelbaum ist. - kurz: {} und {w} sind Bäume - wenn B 1... B m Bäume sind, so ist B = {w} B 1 B 2... B m ebenfalls ein Baum - B 1... B m heiÿen Unterbäume von B 1.4 weitere Denitionen (Knoten) - Ist w die Wurzel eines (Teil-)Baumes B (i), so sind alle übrigen Knoten (B \ {w}) Nachfahren von w - Ist in einem Teilbaum das Wurzelelement A und sind B, C, D... die direkten Nachfolger, so sagt man: A ist der Elternknoten (äquivalent: Vater, Vorgänger) B, C, D... sind die Kinder (äquivalent: Kindknoten, Sohn, Nachfolger) Knoten mit gleichem Elternknoten (B, C, D...) werden oft als Geschwister bezeichnet - die Stufe (oder Ebene) eines Knotens ist die Länge des Pfades von der Wurzel zu ihm entspricht also dem Zählen der Kanten bis zum Knoten (Stufe der Wurzel) = 0, (Stufe des Knotens v) = (Stufe des Vaters von v) der Grad eines Knotens (auch Ordnung ) bezeichnet die Anzahl der Nachfolger - Knoten v mit Grad(v) = 0 heiÿen Blatt, alle anderen innere Knoten 1.5 weitere Denitionen (Bäume) - die Höhe des Baumes ist die maximale Stufe + 1, also die Anzahl der Ebenen - das Gewicht eines Baumes ist die Anzahl seiner Blätter - der Grad eines Baumes (auch Ordnung ) wird durch den Knoten mit maximalem Grad bestimmt - der Grad des Baumes wird häug auch als fan-out (engl. Anzahl ausgehender Kanten) bezeichnet - Bäume sind ähnlich: Sie besitzen die gleiche Struktur (sehen vom Aufbau her gleich aus) - Bäume sind äquivalent: Sie sind ähnlich und enthalten die gleiche Information - als natürlichen Baum bezeichnet man einen Baum, der durch iteratives Einfügen von Elementen entsteht, also natürlich (= ohne Reorganisation) wächst - eine spezielle, meist unerwünschte Form natürlicher Bäume ist der entartete Baum: Höhe des Baumes ist gleich der Anzahl seiner Knoten 1.6 geordnete Bäume - ist die Reihenfolge der Nachfolger relevant handelt es sich um einen geordneten Baum - die Unterbäume eines Knotens bilden eine geordnete Menge - Nachfolger lassen sich nummerieren: erstes Kind, zweites Kind,... 3

4 1.7 Binärbäume - binary trees - binäre Bäume sind geordnete Bäume mit Grad 2 - Denition: Ein Binärbaum ist eine endliche Menge B von Elementen die entweder leer ist, oder für die gilt: in B existiert ein ausgezeichnetes Element w ohne Vorgänger: die Wurzel die Elemente von B \ {w} lassen sich disjunkt in die Binärbäume B 1 (linker Unterbaum) und B 2 (rechter Unterbaum) zerlegen - jeder Binärbaum auÿer dem leeren Baum ist also geordnet, aber nicht jeder geordnete Baum ist auch binär - die maximale Anzahl an Knoten in einem Binärbaum der Höhe h beträgt 2 h 1 - die maximale Anzahl an Knoten auf Stufe i h beträgt 2 i 1.8 spezielle Binärbäume Strikte Binärbäume - jeder innere Knoten hat Grad 2 - d.h.: entweder zwei oder keinen Nachfolger Ausgeglichene Binärbäume - ein fast ausgeglichener Binärbaum mit k+1 Stufen ist bis Stufe k vollständig - jeder Knoten, dessen Stufe kleiner k ist, hat Grad Fast vollständige Binärbäume - ein fast vollständiger Binärbaum mit k+1 Stufen ist bis Stufe k vollständig - jeder innere Knoten, der einen rechten Nachfahren auf Stufe k+1 hat, besitzt einen vollständigen linken Teilbaum mit Blättern auf Stufe k+1 - damit ist jeder vollständige Binärbaum auch strikt, aber nicht umgekehrt - jeder fast vollständige Binärbaum ist ausgeglichen, aber nicht umgekehrt Vollständige Binärbäume - ein vollständiger Binärbaum hat für seine Höhe die volle Anzahl an Knoten, das heiÿt: - jeder Knoten der letzten Stufe k ist ein Blatt und jeder Knoten auf Stufe i < k hat zwei Nachfolger - jeder vollständige Binärbaum ist strikt, aber nicht umgekehrt Erweiterte Binärbäume - wird an jeden freien Platz ein besonderer (externer) Knoten angehängt, spricht man von einem erweiterten Binärbaum - der entstehende Baum hat nur noch die externen Knoten als Blätter - hatte der Binärbaum n Knoten, erhält er n+1 externe Knoten dazu - die externe Pfadlänge ist die Summe der Längen aller Pfade von der Wurzel zu den Blättern (= externen Knoten) - die interne Pfadlänge ist die Summe der Längen aller Pfade von der Wurzel zu den inneren Knoten - es gilt: Extern = Intern + 2n - gewichtete Binärbäume sind erweiterte Binärbäume deren externen Knoten S i Gewichte q i zugeordnet werden. - die gewichtete Externe Pfadlänge ist deniert als Ext w = i=1 n+1 Stufe(S i) q i 4

5 2 Traversierung von (Binär-)Bäumen Unter Traversierung versteht man das Durchlaufen eines Baumes. Die Traversierung ergibt eine lineare Ordnung der Knoten. Beim Abarbeiten der Informationen eines Binärbaumes gibt es an jedem Knotens nur drei Möglichkeiten: - Verarbeitung der Information der Wurzel: W - Verarbeitung des linken Teilbaumes: L - Verarbeitung des rechten Teilbaumes: R Da für gewöhnlich der linke Teilbaum vor dem rechten Teilbaum traversiert wird, ergeben sich automatisch die folgenden Permutationen: - W L R: Vorordnung (preorder) - L W R: Zwischenordnung (inorder) - L R W: Nachordnung (postorder) 3 Implementieren von Bäumen Es gibt 2 Ansätze Bäume zu implementieren: statisch oder dynamisch Die gängigen statischen Verfahren sind einerseits der sogenannte Feldbaum und andererseits das rein sequentielle Verfahren. Beide werden in der Regel mit einem Array implementiert. Die Variante per dynamischer Struktur wird als Listenstruktur verwaltet. Die statischen Verfahren zeigen eine hohe Ezienz bei der Traversierung, die dynamische Variante bietet demgegenüber eine ezientere Speicherbelegung und höhere Flexibilität. 3.1 Feldbäume Feldbäume werden meist als Array implementiert. Beispiel: Für einen Binärbaum erfolgt die Verwaltung als eine Art Tabelle, deren Zeilen nummeriert sind und drei Spalten umfassen: Die eigentliche Nutzlast, die Zeilennummer des linken Kindes und die Zeilennummer des rechten Kindes. Als Einstieg in die Struktur benötigt man eine Variable, die die Zeilennummer der Wurzel speichert, sowie zur Arbeit mit der Struktur eine Variable, welche die erste freie Zeile referenziert. Jede freie Zeile enthält als Nutzlast die nächste freie Zeile. 3.2 Sequentielle Verfahren 3.3 Dynamische Struktur Am exibelsten lassen sich Bäume mit Listen verwalten. Eine Listenimplementation eines Binärbaumes könnte zum Beispiel folgenden Aufbau haben: Es gibt einen Zeiger root, der den Wurzelknoten referenziert. Jeder Knoten ist ein Objekt mit einer Nutzlast, einem linken und einem rechten Zeiger auf einen anderen Knoten. Die Zeiger entsprechen den Kanten des Baums. Existiert kein Nachfolger, ist der entsprechende Zeiger null. Blätter sind also Knoten deren Zeiger beide Nullpointer sind. Erfolgt die Traversierung bei Listenstrukturen iterativ, muss ein Kellerspeicher (Stack) implementiert werden. Das Prinzip hinter den sequentiellen Verfahren ist das Einsparen der Verweise auf die Kindknoten durch physisch eindeutige Lagerung der Informationen. Zum Beispiel kann man die Knoten Ebene für Ebene abspeichern, jeweils von links nach rechts - wie unschwer zu erkennen ist, bietet sich diese Möglichkeit eher für dicht besetzte Bäume an, da nicht vorhandene Knoten im Array mitgespeichert werden müssen, also trotzdem Platz benötigen... 5

6 4 Fädelung Die Idee der Fädelung: Man erweitert die Struktur der Knoten um weitere Pointer (Fädelungszeiger). Diese haben die Aufgabe das nächste Element zu referenzieren, welches verarbeitet werden soll. Je nachdem welche Traversierung man bevorzugt, kann man die Fädelung entsprechend vornehmen. Es ist ebenfalls möglich von links nach rechts oder von rechts nach links zu fädeln - je nachdem in welcher Reihenfolge die Knoten besucht werden sollen. Analysiert man einen nach diesem Schema gefädelten Binärbaum auf Listenbasis stellt man fest, daÿ ein Groÿteil der Zeiger ungenutzt ist: Jedes Blatt hat zwei Nullpointer - einen für den rechten und einen für den linken (nicht vorhandenen) Sohn. Die Fadenzeiger der inneren Knoten sind bei Vorordnung parallel zu den vorhandenen Strukturzeigern - also redundant. Es gelingt also einen solchen Baum ohne Einführung neuer Zeiger zu fädeln. Man muss lediglich beachten, daÿ jeder Knoten nun eine Information über den Typ seiner Zeiger mitführen muss, da nun nicht mehr eindeutig erkennbar ist, welche Zeiger Fädelungspointer sind! Wir erweitern nun die Struktur um je einen boolschen Wert pro Zeiger, der angibt ob es sich um einen Fadenzeiger handelt. Es entsteht ein rechts-links-gefädelter Binärbaum in Vorordnung, wenn wir den linken Verweis der Blätter zur Linksfädelung und den rechten zur Rechtsfädelung nutzen. 5 Binäre Suchbäume - jeder Knoten N enthält Daten und einen zugehörigen Schlüssel k N (der Sortierschlüssel) - die Schlüsselwerte sind eindeutig und aus einer geordneten Menge - für jeden Knoten N mit linkem Nachfolger L und rechtem Nachfolger R gilt: k L < k N < k R - natürliche binäre Suchbäume entstehen durch iteratives Einfügen von Elementen - Einsparung der Reorganisationskosten kontra entartete Fälle... - bei n Schlüsseln gibt es n! ( Permutationen ) von denen viele ähnlich sind 2n - es gibt für n Knoten 1 n+1 unterschiedliche natürliche Suchbäume n - Basisoperationen: Einfügen, Suchen, Löschen - Einfügen und Suchen sind relativ einfach zu implementieren, man biegt sozusagen einfach links oder rechts ab, je nachdem was der Vergleich mit dem Schlüssel ergab - Löschen ist etwas komplizierter, da man Fälle unterscheiden muss: Knoten ist ein Blatt: Er kann einfach gelöscht werden Knoten hat einen rechten oder linken Nachfolger: Verweis des Vorgängers auf den einzigen Nachfolger setzen Knoten hat Grad 2: Nimm entweder kleinstes Element des rechten oder gröÿtes Element des linken Teilbaums (es handelt sich dabei um ein Blatt). Ersetze den zu löschenden Knoten durch dieses Element. Nun gilt wieder: Elemente des linken Teilbaums sind kleiner, Elemente des rechten Teilbaumes sind gröÿer. - Maximale mittlere Zugriskosten ergeben sich bei entarteten Suchbäumen und liegen in O(n) - Minimale mittlere Zugriskosten sind bei ausgeglichenen Suchbäumen zu erwarten und liegen durch das Divide and Conquer Prinzip der binären Suche (im Idealfall wird der Suchraum in jedem Schritt halbiert) in O(log 2 n) 6

7 5.1 Positionssuche in binären Suchbäumen - Beobachtung für direkt indizierte Zugrie: Sequentielle Datenstrukturen besser... O(1) - Beispiel sortiertes Array: Element an 3-ter Stelle ist im Array auch dort mit einem Abruf bereit - beim Abstieg in binären Suchbäumen unklar, ob Element im linken oder rechten Teilbaum zu nden ist - die geordnete Ausgabe eines Binärbaumes erfolgt durch inorder Traversierung (LWR) - um den Aufwand bei der indizierten Elementsuche zu minimieren wird neue Denition notwendig: - Denition: unter dem Rang eines Knotens versteht man die Anzahl der Knoten im linken Unterbaum jeder Knoten speichert nun seinen aktuellen Rang - man kann von jedem Knoten lokal entscheiden wieviele Knoten sich weiter links in der Struktur benden - das kann beim Abstieg im Baum dazu verwendet werden um einen bestimmten Knoten schnell zu nden: Algorithmus zum Finden des k-ten Elements einer sortierten Datenmenge im Binärbaum: 1. INITIALISIERUNG: setze Aktueller Knoten AK = Wurzel setze i = k 2. WENN i = Rang(AK) DANN Knoten gefunden; fertig 3. WENN i < Rang(AK) DANN AK = linkes Kind, weiter bei WENN i > Rang(AK) DANN i = i - Rang(AK) AK = rechtes Kind, weiter bei 2. Betrachtet man einem Teilbaum so erkennt man, dass der Rang eines Wurzelknotens immer seiner Position der Ausgabe in Zwischenordnung (inorder, LWR) entspricht. 6 Balancierte binäre Suchbäume 6.1 Höhenbalancierte binäre Suchbäume - Problem: Natürliche Binärbäume können degenerieren (entarten) - Beispiel: 1 Mio. Elemente; entarteter ausgeglichener Binärbaum Mittlerer Fall entartet: n/ Schritte Mittlerer Fall ausgeglichen: log 2 n-1 19 Schritte - Abhilfe: Pfadlängendierenz durch Reorganisationsalgorithmen beschränken - höhenbalancierte Bäume: Beschränken der Höhendierenz der Unterbäume - Überlegung: globale Reorganisation relativ teuer ( Ω(n)) - fast ausgeglichene Bäume sind einfacher zu reorganisieren - Denition: B L (x) und B R (x) sind linker und rechter Unterbaum des Knotens x, h(b) die Höhe eines Baumes B ein k-balancierter Binärbaum ist entweder leer oder es gilt für jeden Knoten x: h (B L (x)) h (B R (x)) k - die Balance kann bzw. muss lokal an allen Knoten gemessen werden - der maximaler Höhenunterschied an beliebigen Knoten x deniert also die Balance des Baumes - Vorteil der Lokalität: Knoten der das Kriterium verletzt ( k) kann lokal in O(log 2 (n)) korrigiert werden - Denition auch auf andere Arten möglich, z.b. ausgeglichen bezüglich der Gewichte der Unterbäume 7

8 6.1.1 AVL - Bäume (Adelson-Velskii und Landis 1962) - Denition: Ein AVL-Baum ist ein 1-balancierter Binärbaum - demnach lautet das AVL Kriterium: h (B L (x)) h (B R (x)) 1 - Folgerung 1: an jedem Knoten x gilt: linker und rechter Teilbaum sind auch AVL-Bäume - Folgerung 2: es handelt sich nur um einen speziellen binären Suchbaum: Änderungen betreen also die vorhandenen Algorithmen nur dort, wo die Invarianz der AVL Bedingung gefährdet ist - Implemetierung: Jeder Knoten x speichert seinen Balancierungsfaktor BF(x) = h (B L (x)) h (B R (x)) - nach Änderung in einem Unterbaum erfolgt Neuberechnung des BF - -1, 0, 1 erfüllen das Kriterium, ansonsten Reorganisation notwendig - Reorganisation erfolgt durch Rotationen an den betroenen Knoten - prüft man die verschiedenen Fälle beim Einfügen in AVL Bäume an Beispielen nach ergibt sich: AVL Kriterium kann nur auf dem Pfad von der Wurzel zur Einfügeposition verletzt werden dabei entstehen an den betroenen Wegknoten Balancierungen mit ± 2 der Weg vom nächsten ±2 Knoten zur Einfügeposition ist eine doppelte rechts/links - Kombination je nach Art genügt eine einfache oder doppele Rotation um AVL Kriterium wiederherzustellen: Rechts-Rechts Linksrotation Links-Links Rechtsrotation Rechts-Links Doppelrotation rechts-links Links-Rechts Doppelrotation links-rechts diese Rotationen genügen um immer wieder das AVL Kriterium herzustellen - Einfügen benötigt maximal eine der eben genannten Rotationen - Löschen ist komplizierter, auf dem Weg zur Wurzel sind ggf. mehrere Rotationen erforderlich. - Lösung: Löschen wird auf das Löschen von Randknoten zurückgeführt, der Balancefaktor muss rekursiv an allen Knoten auf dem Pfad zur Wurzel hin neu berechnet und angepasst werden - Allgemein nach Löschen prüfen: Hat sich die Höhe des betrachteten AVL Unterbaumes geändert? falls ja: Rebalancierung rekursiv auf Elternknoten anwenden Höhe von AVL Bäumen: - Ziel war: relativ ausgeglichener Baum - durch das AVL Kriterium ist Degeneration nicht möglich - Überlegung zu worst-case AVL Baum führt zu Fibonacci-Bäumen - Satz über die Höhe der AVL-Bäume (siehe Fibonacci Bäume): Für die Höhe h(b) eines AVL Baumes B mit n Knoten gilt: [log 2 n] + 1 h(b) 1.44log 2 (n + 1) - da die Höhe auch die Pfadlänge beschränkt ist der Aufwand zum Einfügen eines Elements in O(log 2 n) Fibonacci-Bäume: - Ergeben sich nach folgender Vorschrift: B 0 ist der leere Fibonacci-Baum der Höhe 0 B 1 ist der Fibonacci-Baum aus einem einzigen Knoten mit Höhe 1 B h ist ein Fibonacci-Baum der Höhe h, der aus einem neuen Knoten x mit den Unterbäumen B h 1 und B h 2 besteht - für die Höhe eines Fibonacci-Baumes gilt also h(b h ) = h - per Induktion lässt sich zeigen, dass jeder Fibonacci-Baum ein AVL Baum ist - es handelt sich sozusagen um den worst-case AVL-Baum... - Zusammenhang zu den Fibonacci Zahlen F 1, F 2, F 3, F 4, F 5, F 6, F 7, F 8,... = 1, 1, 2, 3, 5, 8, 13, : Die Anzahl der Knoten n h im Fibonacci-Baum B h ist gleich der (h+2)-ten Fibonacci Zahl minus 1 Gewicht(B h ) = n h = F h+2 1 8

9 - die Anzahl der Knoten wächst exponentiell zur Höhe - umgekehrt wächst die Höhe logarithmisch bei steigender Knotenzahl - für einen Binärbaum der Höhe h benötigt man ca. 2 h Knoten - für einen Fibonacci-Baum der Höhe h benötigt man ca 1, h Knoten (Basis bekannt als goldener Schnitt) - aus n Knoten kann also entweder ein ausgeglichenen Binärbaum der Höhe log 2 (n) oder ein Fibonacci Baum (= worst-case AVL Baum) der Höhe log 1, (n) gebaut werden. - der Quotient h(bonacci) / h(ausgeglichen) ergibt sich aus log 1, (n) / log 2 (n) log 1, (n) log 2 (n) = log b (n) log b (1, ) log b (n) log b (2) = log b (n) log b (1, ) log b(2) log b (n) = log b (2) = 1, log b (1, ) - Fazit: ein natürlich entstandener AVL-Suchbaum ist schlimmstenfalls ein Fibonacci-Baum und damit ca. 44% höher als ein ausgeglichener Binärbaum 6.2 Gewichtsbalancierte binäre Suchbäume - analog zu höhenbalancierten Bäumen: Maÿ für Ausgeglichenheit ist die Gewichtsdierenz - soweit keine andere Gewichtung festgesetzt ist gilt: Gewicht = Anzahl der Knoten im Unterbaum B L ist linker Unterbaum eines binären Suchbaumes B, n(x) die Anzahl der Knoten eines Baumes X Der Wert ρ(b) = n(b L)+1 n(b)+1 ist die sogenannte Wurzelbalance von B Ein Baum heiÿt α-gewichtsbalanciert, wenn für jeden Unterbaum U von B gilt: α ρ(u) 1 - α BB(α) ist die Menge aller α-gewichtsbalancierten Bäume (BB steht für bounded balance) - per Denition α > 0,5 nicht möglich (α 1 - α) - einsichtig: α = 1/2 beschreibt den vollständigen Baum, für α = 0 sind alle Strukturen möglich - α bestimmt sozusagen die Abweichung vom vollständigen Baum - Wurzelbalance < 1 2 bedeutet rechtslastiger Baum - je mehr ein Baum linkslastig (rechtslastig) entartet desto mehr geht die Wurzelbalance gegen 1 (0) - beim Einfügen und Löschen müssen die Wurzelbalancen entlang des Pfades bis zur Wurzel aktualisiert werden - Ggf. muss der Baum reorganisiert werden 7 Optimale binäre Suchbäume - optimal bedeutet geringe Zugriszeit bei gegebener Zugriswahrscheinlichkeit - Erweiterung des Modells: zu jedem Schlüssel k 1 < k 2 <... < k n existieren Zugriswahrscheinlichkeiten p 1, p 2,..., p n es gilt n i=1 p i = 1 X ist die Menge der Schlüssel, P die Menge der zugehörigen Wahrscheinlichkeiten - optimale binäre Suchbäume optimieren (=minimieren) den Zusammenhang von Zugriswahrscheinlichkeit und Suchtiefe - man deniert die mittlere Suchdauer T abhängig von P n T (P ) = p i (Stufe(k i ) + 1) i=1 (N.B.: Summe über alle Knoten, Wahrscheinlichkeit Tiefe) 9

10 - erfolglose Suche muss mitberücksichtigt werden; dazu wird der Suchbaum erweitert - Erinnerung: Als erweiterter Suchbaum erhält er n+1 externe Knoten zu seinen n alten Knoten hinzu - Erfolgreiche Suche endet im inneren Knoten mit Schlüssel k i - Erfolglose Suche endet in den externen Knoten - der Suchbereich ist X = {x 1, x 2, x 3,..., x n } {y 0, y 1, y 2,..., y n } - es gilt weiterhin: y 0 < x 1 < y 1 < x 2 < y 2 <... y n 1 < x n < y n - die externen Knoten mit y i symbolisieren die Intervalle zwischen den vorhandenen Werten - ist x der gesuchte Wert gilt: x < k 1 Suche endet im Knoten mit y 0 k i < x < k i+1 Suche im Knoten mit y i für 0 i < n x > k n Suche endet im Knoten mit y n - Beobachtung: Ein optimaler binärer Suchbaum hat optimale linke und rechte Unterbäume - die eziente Konstruktion eines optimalen Suchbaumes erfolgt also von den Blättern zu Wurzel rekursiv - endgültige Denition: Ein allgemeiner sortierter Suchbaum heiÿt optimal, wenn zu vorgegebener Wahrscheinlichkeitsverteilung P die mittlere Suchdauer T (P) minimal ist. - Hilfsmittel: Unterteilung von X in Teilbereiche X ij mit X ij = {x i+1,..., x j } {y i,..., y j } - Wahrscheinlichkeit, daÿ ein Element y X ij ist: W ij = p(x ij ) - Mittlere Suchdauer im Teilsuchbaum für den Suchbereich X ij : T ij = W ij + T i,k 1 + T k,j - da die Teilbäume eines optimalen Suchbaumes ebenfalls optimal sein müssen, erhält man: - (Bellmann:) für die optimale mittlere Suchdauer T ij (P ), 0 i < j n gilt: T ij (P ) = W ij + min i<k j ( T i,k 1 (P ) + T k,j (P ) ) mit T ii(p) = 0 - hier nicht näher behandelt: Algorithmus von Bellmann, Algorithmus von Knuth - Bellmann baut den optimalen Baum in O(n 3 ) auf, Knuth modiziert den Bellmann-Algorithmus nach O(n 2 ) 8 Sortieren mit Bäumen 8.1 Tree Sort - Idee: Sortierung durch Konstruktion eines Sortierbaumes und Traversierung in Zwischenordnung - z.b. mit AVL Baum: Höhe beschränkt die Pfadlänge, Aufwand zum Einfügen eines Elements liegt in O(log 2 n) - für die Konstruktion eines AVL Baumes aus n Elementen ergibt sich also O(n log 2 n) Tournament sort Standard Tournament Sort (Auswahlverfahren) - Idee: Prinzip eines Turniers mit KO Verfahren - die zu sortierenden Elemente werden an die Knoten gehängt und im rekursiven Aufstieg die Gewinner eines Direktvergleiches nach oben gezogen - nur der Teilbaum des Gewinners muss neu durchgespielt werden - Auf/Abstieg über k Stufen 2k, k begrenzt durch Höhe Komplexität liegt in O(n log 2 n) - Leider: Hoher Speicherverbrauch (gegen 2n für groÿe n) Tournament Sort with replacement (Auswahlverfahren mit Ersetzen) - Ziel: Korrekte Sortierung per tournament sort, allerdings nur kleine Speicherstruktur nutzbar - Idee: Zerlegung der Gesamtfolge in Teilfolgen, diese per tournament sort verarbeiten und ablegen - das Zusammenmischen vorsortierter Folgen ist linear, liegt also in O(n) Wege Mischen - je 2 aller p Folgen der Länge m werden gemischt, übrig: p/2 Folgen der Länge 2m - Mischen zwar linear, bei vielen Teilfolgen werden die Elemente aber immer wieder aufgegrien - Teilfolgen sollten also so lang wie möglich sein - Änderung des standard tournament sort: - der Gewinner (kleinstes Element) einer Runde wird am Blatt durch einen Nachrücker ersetzt, der in der nächsten Runde mitspielt - Problem: wenn der Nachrücker kleiner ist als der letzte Gewinner! Ergebnis würde falsch sein... - Lösung: Ist der Nachrücker kleiner wird er bzw. sein Blatt markiert und darf nicht mitspielen - sind schlieÿlich alle Blätter markiert, wird eine Runde mit einer neuen Ergebnisteilfolge gestartet 10

11 8.2 Heapsort - Hauptkritikpunkt Tournament Sort: Speicherbedarf, neuer Ansatz 1964 J.W.J William mit Heapsort - Denition Heap: Ein Binärbaum B mit n Knoten ist ein Heap der Gröÿe n, wenn gilt: B ist fast vollständig Die Schlüssel sind in den Knoten so angeordnet, daÿ für jeden Knoten i k i k j gilt, wobei Knoten j der Elternknoten von Knoten i ist. - N.B.: ein Heap ist ein fast vollständiger Binärbaum, aber kein binärer Suchbaum! - Oensichtlich: In einem Heap ist jeder Unterbaum wieder ein Heap - der gröÿte Schlüssel in einem Heap steht denitiv in der Wurzel - Vorgehensweise: - Erstelle aus unsortierter Liste einen fast vollständigen Binärbaum durch iteriertes Einfügen - Stelle auf diesem Baum durch Vertauschen von den Blättern aus die Heapbedingung her; die Struktur des Baumes ändert sich also nicht - jetzt folgt das eigentliche Sortieren: Vertausche Wurzel mit letztem Blatt und markiere dieses Blatt als fertig sortiert, es wird nicht mehr berücksichtigt - stelle die Heapbedingung wider her - diese Reihenfolge wird bis zur vollständigen Sortierung beibehalten: - vom Prinzip her Wurzel aus Heap herausrupfen, Heap wieder herstellen - Vorteile: kann im Prinzip per Array realisiert werden, kein extra Speicherbedarf, statische Struktur - Herstellung des Heapkriteriums in O(log 2 n), Sortiert nach n maligem Entnehmen der Wurzel - Gesamtlaufzeit demnach in O(n log 2 n) 8.3 Proxmap Sort - Sortieren mit Adressenberechnung, Grundidee ähnelt dem Bucket-Sort: - Die Schlüssel werden durch eine Funktion (MapKey-Funktion) einer Adresse zugeordnet und so im ersten Durchgang in die Nähe der endgültigen Position gebracht - Beispiel: Reelle Zahlen in [0, 10] werden per Gauÿfunktion ihres Nachkommaanteils entledigt um ihre Adresse zu erhalten und sammeln sich in 11 Behältern (von 0 bis 10) - Diese Behälter können nun falls mehrere Werte in einen solchen Adressbereich gefallen sind mit einer anderen, einfachen Sortiermethode bearbeitet werden - Worst-Case: Alle Schlüssel landen in einem Bereich, Nachbehandlung mit einfachem Sortierverfahren in O(n 2 ) - Idealfall: Jeder Schlüssel wird in einen eigenen Bereich gemapt - liegt in O(n)! - Verbesserungen: Man wendet einmal die MapKey Funktion an und zählt die HitCounts um sich einen Überblick über die Verteilung der Werte zu verschaen und reserviert Bereiche dynamisch um Kollisionen zu vermeiden - Platzierung der Elemente: Entweder in einem zweiten Array (leichtere Implementierung, etwas schneller) oder im gleichen Array (komplexer zu implementieren, etwas langsamer) - Versuch eine bessere Abbildung zu bekommen ( Problemstellung vergleichbar zum Hashing) - auch für die Verbesserungen gilt im Idealfall O(n), da alle Aufgaben (HitCount Durchlauf, Proxmap und Ergebnisarray erstellen) in O(n) liegen - je nach Qualität der MapKey sind die quadratischen Zeiten der internen Sortierung vernachlässigbar, insbesondere ist ProxMap auch experimentell linear 9 Mehrwegbäume 9.1 m-wege Suchbäume Motivation: Es gibt Fälle in denen eine niedrige Baumhöhe erwünscht ist, zum Beispiel wenn die Datenstruktur auf Festplatte ausgelagert ist und die Zugriszeiten hohe interne Baumoperationen vernachlässigen lassen. Man will mit wenigen Zugrien zum Ziel gelangen. Ein anderes Beispiel ist die Indizierung einer groÿen Grundmenge, die über die ganze Festplatte verteilt ist. (siehe später dazu speziell B -Bäume bzw B + trees). Der Baum ist dann sozusagen ein Überbau, der beim Durchlaufen auf die ungefähr richtige Stelle auf der Platte führen soll. In jedem Fall soll die Breite groÿ und die Höhe klein sein, was ein höheres fan-out erfordert: Jeder Knoten hat mehrere Unterbäume. Der bisher betrachtete Binärbaum ist also ein 2-Wege Baum. Im folgenden untersuchen wir nun allgemeine m-wege Suchbäume. Bemerkung: Der m-wege Baum dient oft als Indizierungshilfe, oft sind die im Baum abgelegten Daten nur die Zeiger auf die extern abgelegten Daten. 11

12 9.2 Denition m-wege Suchbäume Ein m-wege Suchbaum ist ein Suchbaum, in dem alle Knoten n einen Grad(n) m besitzen. B ist entweder ein leerer Baum oder hat folgenden Aufbau: - die Struktur der Knoten: b gibt die Anzahl der Schlüssel im Knoten an K i und D i sind jeweils die Schlüssel und die Daten(referenzen) mit 1 i b P i sind die Unterbäume des Knotens, hier mit 0 i b - innerhalb eines Knotens sind die Schlüsselwerte aufsteigend sortiert: K i K i+1 für 1 i < b - die Schlüsselwerte k x des Unterbaums P i sind kleiner als k i+1 für 1 i < b - die Schlüsselwerte k x des Unterbaums P b sind gröÿer als k b - die Unterbäume P i sind alle ebenfalls m-wege Bäume. Diese grundlegende Denition fordert noch keine Reorganisationsmaÿnahmen, der Baum ist nicht ausgeglichen und kann degenerieren. Für die Anzahl N der Knoten im vollständigen Baum gilt: h 1 N = m 1 = mh 1 m 1 i=0 Die maximale Anzahl von Schlüsseln n max ist: n max = N (m 1) = (mh 1)(m-1) (m-1) = m h 1 Im entarteten Baum gilt N = h. Die Anzahl der Knoten n begrenzt die Höhe im m-wege Suchbaum auf: 9.3 B-Baum log m (n + 1) h n In der Praxis der am häugsten implementierte Baum. Es handelt sich vom Prinzip her um einen ausgeglichenen Mehrwegbaum Denition B-Baum - die Wurzel ist entweder ein Blatt oder hat mindestens 2 Kinder - jeder Knoten auÿer der Wurzel und den Blättern hat mindestens k+1 Kinder - jeder Knoten hat höchstens 2k + 1 Kinder - alle Pfadlängen von der Wurzel zu den Blättern sind gleich lang - jedes Blatt (Ausnahme: Wurzel als Blatt) hat mindestens k und höchstens 2k Einträge Die Struktur eines solchen Knotens ist wie folgt vorgegeben Beim Einfügen wird b erhöht und gibt zu jedem Zeitpunkt die Anzahl der Einträge des Knotens an. Die Tripel (k x, D x, P x ) haben eine feste Länge L k + L D + L P, der freie Platz wird nach und nach belegt. Es gilt: b max = [(Gesamtlänge Platz für b L P 0 ) / (L k + L D + L P )] = 2k Ist 2k also die maximale Anzahl an Einträgen, muss der Knoten nach Denition immer halb voll sein ( k) Klasse τ(k, h) eines B-Baums Man deniert die Klasse eines B-Baumes wie folgt: Ist h die Höhe eines B-Baumes mit h 0 und k die geforderte Mindestanzahl an Einträgen pro Knoten mit k > 0, spricht man von der Klasse τ(k, h) eines Baumes. 12

13 Auf den Punkt gebracht: Der Baum hat h Ebenen und mit Ausnahme der Wurzel an jedem Knoten k Werte, also k+1 Verzweigungen. Beispiel kleinstmöglicher B-Baum der Klasse τ(2,3): Höhe und Schlüsselanzahl eines B-Baums der Klasse τ(k, h) Für die Höhe h eines Baumes der Klasse τ(k, h) gelten aufgrund der minimalen und maximalen Knotenzahlen folgende Schranken: (n + 1) log 2k+1 (n + 1) h log k Die Anzahl n an Schlüsseln im B-Baum ist ebenfalls begrenzt und liegt in: 2(k + 1) h 1 n (2k + 1) h Einfügen in einen B-Baum der Klasse τ(k, h) - man beginnt mit einem leeren Knoten als Wurzel - die ersten 2k Schlüssel werden sortiert in die Wurzel eingefügt - das 2k+1te Element passt nicht mehr hinein: 2k Elemente [1..k, k+1, k+2..2k+1] - es werden 2 neue Knoten angelegt, die Wurzel wird gesplittet: - die ersten k Elemente in den linken, die letzten k Elemente in den rechten Knoten - das mittlere Element k+1 bleibt in der Wurzel - weiteres Einfügen: Man sucht im Abstieg die Position indem man innerhalb eines Knoten nach rechts wandert. - ist der neue Schlüssel < dem aktuellen Schlüssel k i wird in den Unterbaum P i 1 verzweigt - ist der neue Schlüssel > dem letzten Schlüssel k b wird in den Unterbaum P b verzweigt - auf Blatthöhe wird geordnet eingefügt - bei einem Überlauf wird das Blatt gesplittet, das mittlere Element wandert als Separator in den Elternknoten - ist der Elternknoten voll wird weitergesplittet, schlimmstenfalls bis zur Wurzel Löschen in einem B-Baum der Klasse τ(k, h) - Problem: die Mindestanzahl an Schlüsseln darf nicht unterschritten werden - Zunächst Schlüssel zum Löschen im Abstieg suchen - normales Löschen auf Blattebene ohne Verletzung der Mindesanzahl einfach - löschen im B-Baum ohne Unterlauf erfordert zumindest Auüllen durch kleinsten Schlüssel im rechten Unterbaum Baum oder gröÿten Schlüssel im linken Unterbaum - Entsteht ein Unterlauf, dann nur auf Blattebene. Lösung: - Rotieren: Ein Schlüssel aus dem Elternknoten wird heruntergezogen und durch einen Nachbarknoten dort nachgefüllt - Hat der Nachbarknoten genau k Schlüssel (kurz vor Unterlauf) muss gemischt werden Umkehrung des Splittens - dazu wird der Separator des Elternknotens mit den k-1 Elementen des einen und den k Elementen des anderen Teilbaumes zu einem Knoten der Länge 2k gemischt B-Baum mit Mehrfachüberlauf (international: B Bäume) - das einfache Konzept sieht vor: Splitten, wenn ein Knoten voll ist - dabei werden alle Elemente auf zwei neue Knoten verteilt. Deren Belegung ist dann β = 1/2 = 50% - Doppelter Überlauf bedeutet: - ist ein Knoten voll, wird versucht Schlüssel in einen Nachbarknoten zu rotieren - das Splitten wird heraus gezögert. Sind zwei Knoten voll wird dann doch gesplittet: - 2 volle Knoten werden auf 3 Knoten aufgeteilt; deren Belegung ist dann β = 2/3 = 66, 6% - allgemeiner Mehrfachüberlauf sieht nun vor m volle Knoten auf m+1 neue Knoten aufzuteilen - ein Erhöhen des Splitfaktors m erschwert die Implementation und kostet Rotierzeit - dafür erhöht es jedoch den Belegungsfaktor (Splitfaktor 1 β = 1/2, 2 β = 2/3, 3 β = 3/4) - je höher der Belegungsfaktor ist, desto länger wird praktisch eingefügt ohne dass es zum Splitten kommt - allgemein spart Rotieren im Gegensatz zum Splitten Zeit, es gilt allgemein β i = m/(m + 1) - der Fall m = 2 (B-Baum mit doppeltem Überlauf) heiÿt im internationalen Sprachgebrauch B tree 13

14 9.4 B -Baum (international B + tree) Internationale Bezeichnung: B + tree, nicht verwechseln mit B-Baum mit doppeltem Überlauf. Um Miÿverständnisse auszuschlieÿen, wird er im folgenden B + -Baum genannt. In B-Bäumen erfüllt ein Tripel (k x, D x, P x ) im Knoten zwei Aufgaben: Der Schlüssel k x dient als Wegweiser bei der weiteren Suche in die Unterbäume P x oder indiziert die Daten D x. In B + -Bäume werden diese Aufgaben getrennt. Der Baum enthält lediglich die Schlüssel um korrekt absteigen zu können. Vorteile: Die Knoten können bei gleicher Gröÿe mehr Schlüssel aufnehmen, habe ein höheres fan-out. Der Baum wird noch acher und breiter. Man muss zwar nun denitiv bis in die Blätter absteigen, der Abstieg erfolgt aber schneller, da ein extra Vergleich entfällt und der Baum onehin acher ist. Der gesamte Baum bildet einen groÿen Index auf die sortierte Grundmenge Denition B + Baum der Klasse τ(k, k, h ) Es gilt: k, k, h N wobei k > 0, k > 0, h 0 Ein B + Baum der Klasse τ(k, k, h ) ist entweder leer oder ein geordneter Baum der Höhe h für den gilt: 1. Die Pfadlängen von der Wurzel zu allen Blättern sind gleich lang 2. Die Wurzel ist entweder ein Blatt oder hat 2 Kinder 3. Jeder Knoten auÿer der Wurzel und den Blättern hat mindestens k+1 Kinder 4. Jeder innere Knoten hat höchstens 2k+1 Kinder 5. Jeder Blattknoten (auÿer der Wurzel als Blatt) hat mindestens k und höchstens 2k Einträge Auf den Punkt gebracht: Der Baum hat h Ebenen und mit Ausnahme der Wurzel an jedem Knoten k Werte, also k+1 Verzweigungen. Bis hierhin entspricht das dem B-Baum. Neu ist der mittlere Parameter in der Klassendenition: k legt im Prinzip fest wieviele Daten auf der Blattebene in einem Knoten untergebracht werden. Stellt man sich den B + Baum als Index-Baum vor, teilt er ein groÿes Array geordneter Daten in Partitionen auf; wie breit eine solche Partition ist bzw. sein muss, wird durch diesen zweiten Parameter k festgesetzt. Beachte: Da die Schlüssel der inneren Knoten nur als Wegweiser dienen, treten sie nocheinmal in den Blättern auf (siehe Beispiel weiter unten). Die Struktur eines Knotens im B + Baum: Die Struktur eines Blattes im B + Baum: Der Wert b gibt nicht nur an, wieviele Datensätze im Knoten vorhanden sind, sondern auch um welchen Knotentyp es sich handelt (z.b. durch Vorzeichen). Im Falle eines Knotens gilt: k b 2k, im Falle eines Blattes: k b 2k P prev ist der Zeiger auf den links liegenden Blattknoten, P next zeigt auf den rechts liegenden Blattknoten. Für die Gesamtlänge sowie die Schlüsselanzahl k in inneren Knoten gilt: L = L b + L P + 2k(L k + L P ) k = [(L L b L P )/2(L k + L P )] Für die Gesamtlänge sowie die Schlüsselanzahl k in Blättern gilt: L = L b + 2L P + 2k (L k + L D ) k = [(L L b 2L P )/2(L k + L D )] 14

15 Beispiel für einen Klasse τ(3,2,3) Baum: Höhe und Schlüsselanzahl eines B + -Baums der Klasse τ(k, k, h ) Anzahl der Knoten bei minimaler Belegung: B min (k, h ) = 1 für h = 1 = 2(k + 1) h 2 für h 2 Anzahl von Elementen bei minimaler Belegung: n min (k, k, h ) = 1 für h = 1 = 2k (k + 1) h 2 für h 2 Anzahl der Knoten bei maximaler Belegung: B max (k, h ) = (2k + 1) h 1 für h 1 Anzahl von Elementen bei maximaler Belegung: n max (k, k, h ) = 2k (2k + 1) h 1 für h 1 Höhe h des B + Baums: 1 + log 2k+1 (n/2k ) h 2 + log k+1 (n/2k ) für h Operationen in einem B-Baum der Klasse τ(k, k, h ) Die Grundoperationen sind denen des B-Baums sehr ähnlich. Die Suchtiefe beträgt konstant h, da immer bis zu den Blättern gesucht werden muss. Das Einfügen muss beim Splitten der Blätter dafür sorgen, daÿ der gröÿte Schlüsselwert als Wegweiser in den Elternknoten kopiert wird. Das Löschen ist einfacher: Da die Schlüssel im inneren nur als Wegweiser fungieren, können sie beim Löschen stehenbleiben. Gelöscht wird also nur auf Blattebene Präx B + -Baum - als Separator werden kleine Präxe der Schlüssel verwendet - Ideal für Strings variabler Länge - kurze Präxe benötigen wenig Platz, führen zu hohen fan out - Beispiel: erster Knoten enthält die Separatoren A, B, C... Y, Z - in den Unterbäumen lassen sich nun jeweils Strings mit den entsprechenden Anfangsbuchstaben nden Vergleich B-Baum und B + -Baum B-Baum: - Daten werden in allen Knoten gespeichert - Schlüssel sind einfach vorhanden - schneller Einzelzugri, schweres sequentielles Lesen B + -Baum: - Daten nur in den Blättern, hohes fan-out/extreme Breite - Schlüssel sind redundant gespeichert (aber nur geringer Mehraufwand) - leichter sequentieller Zugri, gleichguter Einzelzugri - einfaches Löschen Baum - B-Bäume verwalten durch ihr hohes fan out ezient Daten auf Externspeichern (wenige Zugrie im Abstieg) - bei anderen Anwendungen z.b. Hauptspeicherstrukturen ist aber kleine Knotengröÿe gefragt - die Anzahl der minimalen Knoten eines B-Baumes wird durch die Klasse bestimmt - B-Bäume der Klasse τ(1, h) haben minimale Knotengröÿen und sind allgemein als 2-3 Bäume bekannt - Ergo: Alle Knoten haben einen, maximal zwei Schlüssel und zwei oder drei Unterbäume 15

16 9.6 Binäre B-Bäume Bäume haben besonders nach Höhenänderungen schlechte Speichernutzung - Abhilfe durch die sogenannten binären B-Bäume - Knoten werden als gekettete Listen mit ein oder zwei Elementen implementiert - durch Unterscheidung von Zeigern werden variabel 2/3-elementige Knoten simuliert - man unterscheidet dabei in vertikale (δ) und horizontale (ρ) Zeiger - δ Zeiger gehen in die Tiefe, ρ Zeiger bleiben auf gleicher Ebene - Denition: Ein binärer B-Baum ist ein binärer Suchbaum mit zwei Arten von Verweisen: alle linke Verweise sind δ-verweise rechte Verweise können δ oder ρ-verweise sein es gibt keine zwei aufeinanderfolgenden ρ-verweise die Pfade von der Wurzel zu den Blättern haben gleich viele δ-verweise Beispiel: Die zum binärern B-Baum transformierte Struktur des bereits gezeigten τ(2,3) Baums - die Traversierung in Zwischenordnung (LWR) ergibt die sortierte Folge - Suche wie bei binären Suchbäumen - Einfügen wie bei B-Bäumen immer am Blatt mit entsprechenden Ausgleichsvorgängen - Ggf. δ Zeiger zu ρ Zeigern hochklappen oder (Doppel-) Rotieren 9.7 Symmetrische binäre B-Bäume, SBB-Baum - kann nur der rechte Zeiger ein ρ-zeiger sein, wird der binäre B-Baum schräg - lässt man nun rechte und linke p Verweise zu, entstehen symmetrische binäre Bäume - Denition SBB: Ein SBB ist ein binärer Suchbaum mit zwei Arten von Verweisen: δ und ρ-verweise die Pfade von der Wurzel zu den Blättern haben gleich viele δ-verweise es gibt keine zwei aufeinanderfolgenden ρ-verweise alle inneren Knoten auÿer denen auf der letzten δ-ebene besitzen 2 Söhne 16

17 10 Digitale Suchbäume - die Idee: Schlüssel werden in Fragmente zerlegt und diese in den Knoten gespeichert - jeder Knoten enthält einen Zeiger zum nächsten Schlüsselfragment, sofern dieses vorhanden ist - beim Absteigen im Baum B ergibt sich der Schlüssel durch Zusammensetzen der Fragmente aus den Knoten - Schlüssel mit gleichem Präx laufen zunächst den gleichen Pfad - unser Alphabet mit 26 Zeichen ergibt mit einem Zeichen Fragmentlänge Grad(B) = 26 - allgemein gilt bei einem Alphabet der Mächtigkeit m und für Schlüsselfragmente der Länge n: Grad(B) = m n - haben die Schlüssel eine feste Länge l und die Fragmente eine feste Länge k gilt: Höhe(B) = l/k - sind die Schlüssel von variabler Länge determiniert der Längste Schlüssel die Baumhöhe 10.1 m-ärer Trie - die Knoten eines m-ären Tries, ein Digitalbaum mit Knoten vom Grad m, sind Vektoren mit m Zeigern - jeder Zeiger steht für ein Zeichen des Alphabets - ist ein Zeiger null, gibt es das gesuchte Präx nicht - die Positionen sind geordnet von links (höherwertig) nach rechts (niederwertig) festgelegt - zusätzliche Trennzeichen ermöglichen bei Schlüsseln dynamischer Länge das Erkennen eines Schlüssels, der Präx eines anderen Schlüssels ist - Vorteil: Ezient bei negativer Suche; es wird früh erkannt, daÿ ein Schlüssel nicht vorhanden ist - Nachteil: Meist schlechte Speichernutzung, da nur dünn besetzt - oft Einweg-Verzweigung: Pfad ohne Abzweigung wenn Schlüssel kein Präx mit anderen gemeinsam hat - Einfügen, Löschen und Suchen sind recht intuitiv; die Implementierung ist nicht sehr schwer - die Struktur des Tries ist lediglich von den vorhandenen Schlüsseln abhängig: - iteratives Einfügen erzeugt bei gleichen Schlüsseln egal welche Reihenfolge immer den gleichen Trie Trie Optimierung Erster Ansatzpunkt: Die Einweg-Verzweigungen - Lösung durch variable Länge der Schlüsselfragmente - enthält ein Unterbaum nur einen Schlüssel werden die Fragmente zu einem gröÿeren Stück zusammengesetzt - dieses etwas gröÿere Fragment kann in einem Knoten gespeichert werden - Vorteil: Bessere Speichernutzung - Nachteil: Etwas schwierigere Implementierung: - es müssen nun eventuell kleine Splittungen beim Einfügen und Löschen berücksichtigt werden Zweiter Ansatzpunkt: Das feste, dünn besetzte Knotenformat - Lösung: variabel gestaltete Knotenstruktur - es werden nur noch nicht-null Zeiger gespeichert - aber: die sequentielle Ordnung die dem Zeiger seine Bedeutung gab ist nicht mehr vorhanden - jeder Zeiger muss nun eine Information mitführen die erkennen lässt für welches Schlüsselfragment er steht - dabei steigt jedoch die Anzahl der Vergleiche! 10.2 Binäre Digitale Suchbäume - Spezialfall: das Alphabet ist digital - nur 0 oder 1 - an jedem Knoten kann durch Vegleich des jeweiligen Bits links oder rechts weiterverzweigt werden - kurze Schlüssel sind problematisch wenn die Schlüsselfolge zu kurz ist um einen freien Platz zu nden 17

18 PATRICIA-Baum - Practical Algorithm To Retrieve Information Coded In Alphanumeric - die Schlüssel werden nur in den Blättern abgelegt - in den Knoten wird gespeichert, wieviele Bits beim Vergleich übersprungen werden können - gewährleistet ein Minimum an Vergleichen, es gibt keine Einwegverzweigungen - da die Schlüssel erst in den Blättern liegen, muss auch bei negativen Suchen bis zum Ende gesucht werden Binärer Radix Baum - Abhilfe um negative Suchen zu beschleunigen: Modizieren des PATRICIA Baumes wie folgt: - in den Knoten wird ausser der Information wieviele Bits zu überspringen sind auch noch der jeweilige Teilschlüssel gespeichert - in den Blättern liegen die Restschlüssel - beim Traversieren wird so der Schlüssel wieder stückweise zusammengesetzt - das Knotenformat ist nun entsprechend komplexer, negative Suchen sind jedoch früh erkennbar - diese Modikation des PATRICIA Baums wird Binärer Radix Baum genannt 18

19 Index ähnlich, 1 äquivalent, 1 allgemeines, 1 Array, 3 ausgeglichene Binärbäume, 2 AVL, 5 AVL-Bäume, 5 AVL-Kriterium, 5 AVL-Suchbaum, 6 Balance, 5 balanciert, 5 Balancierung, 5 Balancierungsfaktor, BF, 5 Baumdenition, 1 Binärbäume, 2 binäre Suchbäume, 4 binary trees, 2 degeneriert, 5 Doppelrotation, 5 dynamisch, 3 Ebene, 1 Einfügen, 4, 5 Einfügeposition, 5 Elternknoten, 1 entartet, 1, 5 erweiterte Binärbäume, 2 explizit, 1 externe Pfadlänge, 2 Fädelung, 4 Fädelungszeiger, 4 fast vollständige Binärbäume, 2 Feldbäume, 3 Fibonacci, 6 Fibonacci-Bäume, 6 geordnet, 4 geordnete Bäume, 1 geordnete Menge, 1 gerichtete Bäume, 1 Geschwister, 1 Gewicht, 1 gewichtet, 2 Goldener Schnitt, 6 Grad, 4 Grad eines Baumes, 1 Grad eines Knotens, 1 Höhe, 1 höhenbalanciert, 5 Höhenunterschied, 5 implementieren, 3, 4 implizit, 1 inorder, 3 interne Pfadlänge, 2 k-balanciert, 5 Kindknoten, 1 Knoten, 1 Kriterium, 5 Löschen, 4 linker, rechter Teilbaum, 3 Liste, 3 Lokalität, 5 LWR, 3 Menge, 4 Nachfolger, 1 Nachordnung, 3 natürlich, 1, 4, 5 Ordnung, 1 orientierte Bäume, 1 Permutation, 4 Pfadlängen, 5 Pfadlängendierenz, 5 Pointer, 4 postorder, 3 preorder, 3 referenzieren, 4 Reihenfolge, 1 rekursiv, 1 Reorganisation, 4, 5 Rotation, 5 RWL, 3 Schlüssel, 4 sequentiell, 3 Sortierschlüssel, 4 Speicherbelegung, 3 statisch, 3 strikte Binärbäume, 2 Stufe, 1 Suchbaum, 4 Suchen, 4 Tabelle, 3 Traversierung, 3 Verweise, 3 vollständige Binärbäume, 2 Vorordnung, 3 WLR, 3 worst-case, 6 Wurzel, 1 Zeiger, 4 Zugriskosten, 4 Zwischenordnung, 3 19

ADS 1: Algorithmen und Datenstrukturen

ADS 1: Algorithmen und Datenstrukturen ADS 1: Algorithmen und Datenstrukturen Teil IX Uwe Quasthoff Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 1 Dezember 017 [Letzte Aktualisierung: 04/1/017, 10:56]

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

3 Implementieren von Bäumen 5 3.1 Feldbäume... 5 3.2 Sequentielle Verfahren... 5 3.3 Dynamische Struktur... 6

3 Implementieren von Bäumen 5 3.1 Feldbäume... 5 3.2 Sequentielle Verfahren... 5 3.3 Dynamische Struktur... 6 Kompaktübersicht Bäume Diese Übersicht entstand im Wintersemester 2003/04 parallel zur Vorlesung Grundzüge der Informatik III an der Technischen Universität Darmstadt (TUD) und soll die behandelten Aspekte

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 9. Vorlesung Peter Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Balancierte Binärbäume Der ausgeglichene binäre Suchbaum verursacht

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

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

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

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

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

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für

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

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil VII Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 08.

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

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee AVL-Bäume. Aufgabentyp Fügen Sie in einen anfangs leeren AVL Baum die folgenden Schlüssel ein:... Wenden Sie hierbei konsequent den Einfüge /Balancierungsalgorithmus an und dokumentieren Sie die ausgeführten

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

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

Algorithmen und Datenstrukturen 1-5. Seminar -

Algorithmen und Datenstrukturen 1-5. Seminar - Algorithmen und Datenstrukturen 1-5. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Outline 5.+6. Übungsserie: 5 Aufgaben, insgesamt 40 Punkte A17 Baum-Traversierung

Mehr

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

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

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

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 10. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Suchverfahren für große Datenmengen bisher betrachtete Datenstrukturen

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

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 309 Allgemeines Übersicht 8 Suchstrukturen Allgemeines Binäre Suchbäume AVL-Bäume H. Täubig (TUM) GAD SS 14 310

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

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

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

Algorithmen und Datenstrukturen I AVL-Bäume

Algorithmen und Datenstrukturen I AVL-Bäume Algorithmen und Datenstrukturen I AVL-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 01.12.2017 14:42 Algorithmen und Datenstrukturen I, AVL-Bäume 1/38 Balancierte Bäume in einem zufällig erzeugten Binärbaum

Mehr

Algorithmen und Datenstrukturen 13

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

Mehr

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

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

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/2, Folie 1 2014 Prof. Steffen Lange - HDa/FbI

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Binäre Bäume Zum Speichern und Suchen von Daten werden häufig Baumstrukturen verwendet Abspeichern von n Datenobjekten in einer Baumstruktur Ablegen von Daten ist in O(log(n))

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

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 12. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Schlüsselkomprimierung I Zeichenkomprimierung ermöglicht weit höhere

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

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

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

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

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

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

Mehr

Übung: Algorithmen und Datenstrukturen SS 2007

Übung: Algorithmen und Datenstrukturen SS 2007 Übung: Algorithmen und Datenstrukturen SS 07 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 8 Votierung in der Woche vom 25.06.0729.06.07 Aufgabe 22 AVL-Bäume (a) Geben

Mehr

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

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

Mehr

Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens

Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens h 1 2 j = 2 h 1 j=0 interne Knoten enthalten kann. EADS 86/600 Beweis: Induktionsanfang: 1 ein AVL-Baum der Höhe h = 1 enthält

Mehr

Tutorium Algorithmen & Datenstrukturen

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

Mehr

Kapitel 3: Sortierverfahren Gliederung

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

Mehr

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

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

Abschnitt 18: Effizientes Suchen in Mengen

Abschnitt 18: Effizientes Suchen in Mengen Abschnitt 18: Effizientes Suchen in Mengen 18. Effizientes Suchen in Mengen 18.1 Vollständig ausgeglichene binäre Suchbäume 18.2 AVL-Bäume 18.3 Operationen auf AVL-Bäumen 18.4 Zusammenfassung 18 Effizientes

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

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

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

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

Mehr

Algorithmen und Datenstrukturen Suchbaum

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

Mehr

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

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

Randomisierte Datenstrukturen

Randomisierte Datenstrukturen Seminar über Algorithmen DozentInnen: Helmut Alt, Claudia Klost Randomisierte Datenstrukturen Ralph Schäfermeier 13. 2. 2007 Das Verwalten von Mengen, so dass ein schneller Zugriff auf deren Elemente gewährleistet

Mehr

Algorithmen und Datenstrukturen 12

Algorithmen und Datenstrukturen 12 12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort

Mehr

Kapitel 12: Induktive

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

Mehr

Übung Algorithmen und Datenstrukturen

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

Mehr

Organisationsformen der Speicherstrukturen

Organisationsformen der Speicherstrukturen Organisationsformen der Speicherstrukturen Bäume und Hashing 1 Motivation Ablage von Daten soll einfachen, schnellen und inhaltsbezogenen Zugriff ermöglichen (z.b. Zeige alle Schüler des Lehrers X am heutigen

Mehr

Copyright, Page 1 of 8 AVL-Baum

Copyright, Page 1 of 8 AVL-Baum www.mathematik-netz.de Copyright, Page 1 of 8 AVL-Baum 1. Motivation und Einleitung Das Suchen, Einfügen und entfernen eines Schlüssels in einem zufällige erzeugten binären Suchbaum mit N Schlüsseln ist

Mehr

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik Humboldt-Universität zu Berlin Berlin, den 15.06.2015 Institut für Informatik Prof. Dr. Ulf Leser Übungen zur Vorlesung M. Bux, B. Grußien, J. Sürmeli, S. Wandelt Algorithmen und Datenstrukturen Übungsblatt

Mehr

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente Suchen in linearen Feldern Datenstruturen & Algorithmen VO 708.031 11. Vorlesung, am 11.Dez. 2008 Ohne Vorsortierung Sequentielle Suche Speicherung nach Zugriffswahrscheinlicheiten Selbstanordnende Felder

Mehr

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

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik. 4.3 Bäume Bäume sind eine sehr wichtige Datenstruktur der Informatik. Definition des Baumes Ein Baum besteht aus einer nichtleeren Menge von Knoten und einer Menge von Kanten. Jede Kante verbindet genau

Mehr

Datenbanken. Interne Datenorganisation:

Datenbanken. Interne Datenorganisation: Interne Datenorganisation: Bisher: Konzeptionelle Betrachtungen einer Datenbank aus Sicht der Anwendung: Modellierung, Normalisieren, Sprache zum Einfügen, Ändern, Löschen, Lesen Jetzt: Betrachtung der

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 18 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 09.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

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

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dipl.-Ing. C. Mattern Klausur Algorithmen und Datenstrukturen

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

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

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

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

Kapitel Andere dynamische Datenstrukturen

Kapitel Andere dynamische Datenstrukturen Institute of Operating Systems and Computer Networks Algorithms Group Kapitel 4.8-4.11 Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2017/2018 Vorlesung#13, 12.12.2017

Mehr

Informatik II Prüfungsvorbereitungskurs

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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 - AVL-Bäume: Entfernen) Prof. Dr. Susanne Albers Definition von AVL-Bäumen Definition: Ein binärer Suchbaum heißt AVL-Baum oder höhenbalanziert,

Mehr

B-Bäume. Suchbäume. Suchen, Einfügen, Löschen. Thomas Röfer. Balancierte Bäume (AVL-Bäume) Universität Bremen. Bäume 2

B-Bäume. Suchbäume. Suchen, Einfügen, Löschen. Thomas Röfer. Balancierte Bäume (AVL-Bäume) Universität Bremen. Bäume 2 Bäume 2 Thomas Röfer Suchbäume Suchen, Einfügen, Löschen Balancierte Bäume (AVL-Bäume) B-Bäume Rückblick Bäume 1 Begriffe Durchlaufen von Bäumen Spielprobleme Eigene Züge Gegnerische Züge Eigene Züge Gegnerische

Mehr

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

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

Mehr

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

13. Bäume: effektives Suchen und Sortieren

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

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

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

Algorithms & Data Structures 2

Algorithms & Data Structures 2 Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN

Mehr

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Team A blau Martin Herfurth 11043831 Markus Wagner 11043447 5. Februar 2007 1 1 Untere Schranke für Vergleichsbasierte Algorithmen

Mehr

Suchbäume mit inneren Knoten verschiedener Knotengrade.

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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

t-äre Bäume können - wie Binärbäume - degenerieren, d.h. durch ungünstige Einfügereihenfolge kann ein unausgewogener Baum mit großer Höhe entstehen.

t-äre Bäume können - wie Binärbäume - degenerieren, d.h. durch ungünstige Einfügereihenfolge kann ein unausgewogener Baum mit großer Höhe entstehen. .3 B-Bäume t-äre Bäume können - wie Binärbäume - degenerieren, d.h. durch ungünstige Einfügereihenfolge kann ein unausgewogener Baum mit großer Höhe entstehen. Wird der t-äre Baum zur Verwaltung von Daten

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

Algorithmische Graphentheorie

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

Mehr

Graphen und Bäume. A.1 Graphen

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

Mehr

Sortieren II / HeapSort Heaps

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

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2017/18 Pro f. Dr. Sán do r Fe k e te 1 Binärer Suchbaum Außerdem wichtig: Struktur der Schlüsselwerte! 2 Ordnungsstruktur Linker

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

Lernmodul 7 Algorithmus von Dijkstra

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

Mehr

Teil VII. Hashverfahren

Teil VII. Hashverfahren Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Bäume. 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

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr