3 Implementieren von Bäumen Feldbäume Sequentielle Verfahren Dynamische Struktur... 6

Größe: px
Ab Seite anzeigen:

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

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 Auflage; 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 Baumdefinition weitere Definitionen (Knoten) weitere Definitionen (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 10 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 Definition m-wege Suchbäume B-Baum Definition 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) Definition 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äfix 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 Baumdefinition Baumstruktur wird rekursiv definiert Definition: 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 heien Unterbäume von B 1.4 weitere Definitionen (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) + 1 der Grad eines Knotens (auch Ordnung ) bezeichnet die Anzahl der Nachfolger Knoten v mit Grad(v) = 0 heien Blatt, alle anderen innere Knoten 1.5 weitere Definitionen (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äufig 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 Definition: 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 auer 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 heit: 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 definiert 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 Effizienz bei der Traversierung, die dynamische Variante bietet demgegenüber eine effizientere 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 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 3.3 Dynamische Struktur Am flexibelsten 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. 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 Groteil 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 6

7 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 Zugriffskosten ergeben sich bei entarteten Suchbäumen und liegen in O(n) Minimale mittlere Zugriffskosten 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) 5.1 Positionssuche in binären Suchbäumen Beobachtung für direkt indizierte Zugriffe: 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 finden ist die geordnete Ausgabe eines Binärbaumes erfolgt durch inorder Traversierung (LWR) um den Aufwand bei der indizierten Elementsuche zu minimieren wird neue Definition notwendig: Definition: unter dem Rang eines Knotens versteht man die Anzahl der Knoten im linken Unterbaum + 1 jeder Knoten speichert nun seinen aktuellen Rang man kann von jedem Knoten lokal entscheiden wieviele Knoten sich weiter links in der Struktur befinden das kann beim Abstieg im Baum dazu verwendet werden um einen bestimmten Knoten schnell zu finden: 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ängendifferenz durch Reorganisationsalgorithmen beschränken höhenbalancierte Bäume: Beschränken der Höhendifferenz der Unterbäume 7

8 Überlegung: globale Reorganisation relativ teuer ( Ω(n)) fast ausgeglichene Bäume sind einfacher zu reorganisieren Definition: 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 definiert also die Balance des Baumes Vorteil der Lokalität: Knoten der das Kriterium verletzt ( k) kann lokal in O(log 2 (n)) korrigiert werden Definition auch auf andere Arten möglich, z.b. ausgeglichen bezüglich der Gewichte der Unterbäume AVL - Bäume (Adelson-Velskii und Landis 1962) Definition: 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 betreffen 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 betroffenen 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 betroffenen 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) 8

9 6.1.3 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 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(fibonacci) / 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 Gewichtsdifferenz 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(bl)+1 n(b)+1 ist die sogenannte Wurzelbalance von B Ein Baum heit α-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 Definition α 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 9

10 7 Optimale binäre Suchbäume optimal bedeutet geringe Zugriffszeit bei gegebener Zugriffswahrscheinlichkeit Erweiterung des Modells: zu jedem Schlüssel k 1 < k 2 <... < k n existieren Zugriffswahrscheinlichkeiten 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 Zugriffswahrscheinlichkeit und Suchtiefe man definiert die mittlere Suchdauer T abhängig von P T (P ) = n p i (Stufe(k i ) + 1) i=1 (N.B.: Summe über alle Knoten, Wahrscheinlichkeit Tiefe ) 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 effiziente Konstruktion eines optimalen Suchbaumes erfolgt also von den Blättern zu Wurzel rekursiv endgültige Definition: Ein allgemeiner sortierter Suchbaum heit 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 modifiziert 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) 10

11 8.1.1 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 groe 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 aufgegriffen 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 schlielich alle Blätter markiert, wird eine Runde mit einer neuen Ergebnisteilfolge gestartet 8.2 Heapsort Hauptkritikpunkt Tournament Sort: Speicherbedarf, neuer Ansatz 1964 J.W.J William mit Heapsort Definition 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! Offensichtlich: In einem Heap ist jeder Unterbaum wieder ein Heap der gröte Schlüssel in einem Heap steht definitiv 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 Gaufunktion 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 11

12 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 verschaffen 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 Zugriffszeiten hohe interne Baumoperationen vernachlässigen lassen. Man will mit wenigen Zugriffen zum Ziel gelangen. Ein anderes Beispiel ist die Indizierung einer groen 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. 9.2 Definition 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 Definition fordert noch keine Reorganisationsmanahmen, der Baum ist nicht ausgeglichen und kann degenerieren. Für die Anzahl N der Knoten im vollständigen Baum gilt: Die maximale Anzahl von Schlüsseln n max ist: h 1 N = m 1 = mh 1 m 1 i=0 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: log m (n + 1) h n 12

13 9.3 B-Baum In der Praxis der am häufigsten implementierte Baum. Es handelt sich vom Prinzip her um einen ausgeglichenen Mehrwegbaum Definition B-Baum die Wurzel ist entweder ein Blatt oder hat mindestens 2 Kinder jeder Knoten auer 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 Definition immer halb voll sein ( k) Klasse τ(k, h) eines B-Baums Man definiert 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. 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+1 te 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 13

14 9.3.5 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 Auffü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) heit im internationalen Sprachgebrauch B tree 9.4 B -Baum (international B + tree) Internationale Bezeichnung: B + tree, nicht verwechseln mit B-Baum mit doppeltem Überlauf. Um Miverständnisse auszuschlieen, 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 flacher und breiter. Man muss zwar nun definitiv bis in die Blätter absteigen, der Abstieg erfolgt aber schneller, da ein extra Vergleich entfällt und der Baum onehin flacher ist. Der gesamte Baum bildet einen groen Index auf die sortierte Grundmenge Definition B + Baum der Klasse τ(k, k, h ) Es gilt: k, k, h 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 auer der Wurzel und den Blättern hat mindestens k+1 Kinder 4. Jeder innere Knoten hat höchstens 2k+1 Kinder 5. Jeder Blattknoten (auer 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 Klassendefinition: 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 groes Array geordneter Daten in Partitionen auf; 14

15 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 )] 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 2 15

16 9.4.3 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äfix B + -Baum als Separator werden kleine Präfixe der Schlüssel verwendet Ideal für Strings variabler Länge kurze Präfixe 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 finden Vergleich B-Baum und B + -Baum B-Baum: Daten werden in allen Knoten gespeichert Schlüssel sind einfach vorhanden schneller Einzelzugriff, 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 Zugriff, gleichguter Einzelzugriff einfaches Löschen Baum B-Bäume verwalten durch ihr hohes fan-out effizient Daten auf Externspeichern (wenige Zugriffe 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 9.6 Binäre B-Bäume 2-3 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 Definition: 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 16

17 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 Definition 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 auer denen auf der letzten δ-ebene besitzen 2 Söhne 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äfix laufen zunächst den gleichen Pfad unser Alphabet mit 26 Zeichen ergibt mit einem Zeichen Fragmentlänge Grad(B) = 26 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äfix 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äfix eines anderen Schlüssels ist 17

18 Vorteil: Effizient 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äfix 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 finden 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 Einweg-Verzweigungen 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: Modifizieren 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 Modifikation des PATRICIA Baums wird Binärer Radix Baum genannt 18

19 Index ähnlich, 3 äquivalent, Baum, 16 2-Wege-Mischen, 11 Abbildung, 11 alpha-gewichtsbalanciert, 9 Array, 5 ausgeglichen, 13 ausgeglichene Binärbäume, 4 Ausgleich, 16 Auswahlverfahren, 11 AVL, 8, 10 AVL-Bäume, 8 AVL-Kriterium, 8 AVL-Suchbaum, 9 B + Baum, 12 B* Baum, 12 B-Baum, 13 Balance, 7, 9 balanciert, 7 Balancierung, 8 Balancierungsfaktor, BF, 8 Baumdefinition, 3 BB, 9 Belegungsfaktor, 14 Bellmann, 10 Binärbäume, 4 Binärbaum, 12 binäre Suchbäume, 6, 10 binärer digitaler Suchbaum, 18 Binärer Radix Baum, 18 binary trees, 4 Bit, 18 Bucket Sort, 11 degeneriert, 7 delta Verweis, 16 digital, 17 Digitalbaum, 17 digitale Suchbäume, 17 Doppelrotation, 8 dynamisch, 5, 6 Ebene, 3, 13 Einfügen, 6, 8, 13 Einfügeposition, 8 Einweg-Verzweigung, 18 Elternknoten, 3 entartet, 3, 7 erweiterte Binärbäume, 4 explizit, 3 externe Pfadlänge, 4 Fädelung, 6 Fädelungszeiger, 6 fan-out, 14, 16 fast vollständige Binärbäume, 4 Feldbäume, 5 Festplatte, 12 Fibonacci, 9 Fibonacci-Bäume, 9 Folge, 11 Fragment, 17 geordnet, 6 geordnete Bäume, 3 geordnete Menge, 3 gerichtete Bäume, 3 Gesamtfolge, 11 Geschwister, 3 Gewicht, 3, 9 gewichtet, 4 gewichtsbalanciert, 9 Gewichtsdifferenz, 9 Goldener Schnitt, 9 Grad, 6 Grad eines Baumes, 3 Grad eines Knotens, 3 Höhe, 3, 15 höhenbalanciert, 7, 9 Höhenunterschied, 7 Heap, 11 Heapbedingung, 11 Heapsort, 11 implementieren, 5, 6 implizit, 3 Index, 12, 14 Indizierung, 12 inorder, 5 interne Pfadlänge, 4 k-balanciert, 7 Kindknoten, 3 Klasse, 13, 15 Knoten, 3, 13 Knotenformat, 18 Knotenstruktur, 13 Knuth, 10 Kriterium, 7 Löschen, 6, 13 linker, rechter Teilbaum, 5 linkslastig, 9 Liste, 5, 6 Lokalität, 7 LWR, 5 m-ärer Trie, 17 MapKey, 11 Mehrfachüberlauf, 14 Mehrwegbäume, 12 Menge, 6 Minimum, 18 Mischen, 11 19

20 mittlere Suchdauer, 10 mittlere Suchtiefe, 10 Nachfolger, 3 Nachordnung, 5 natürlich, 3, 6, 7 negative Suche, 18 optimal, 10 optimiert, 18 Ordnung, 3 orientierte Bäume, 3 PATRICIA, 18 Permutation, 6 Pfadlängen, 7 Pfadlängendifferenz, 7 Pointer, 6 postorder, 5 Präfix, 17 preorder, 5 Proxmap Sort, 11 Trie, 17 Vektor, 17 Vergleich, 16 Verweise, 5, 16 vollständige Binärbäume, 4 Vorordnung, 5 Wahrscheinlichkeit, 10 WLR, 5 worst-case, 9 Wurzel, 3 Wurzelbalance, 9 Zeiger, 6, 17 Zugriff, 10, 16 Zugriffskosten, 6 Zugriffswahrscheinlichkeit, 10 Zwischenordnung, 5 Radix, 18 rechtslastig, 9 referenzieren, 6 Reihenfolge, 3, 17 rekursiv, 3 Reorganisation, 6, 7, 12 replacement, 11 rho Verweis, 16 Rotation, 8 RWL, 5 SBB, 17 Schlüssel, 6 Schlüsselanzahl, 15 Schlüsselfragment, 17 Schlüssellänge, 17 sequentiell, 5 sequentielles lesen, 16 sortieren, 10 Sortierschlüssel, 6 Speicherbedarf, 11 Speicherbelegung, 5 Speichernutzung, 16, 17 Splitten, 13 statisch, 5 strikte Binärbäume, 4 Stufe, 3 Suchbäume, 17 Suchbaum, 6 Suchdauer, 10 Suchen, 6 Suchtiefe, 10 symmetrisch, 17 Tabelle, 5 Teilfolge, 11 Tournament Sort, 11 Traversierung, 5 Tree Sort, 10 20

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

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

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 Balancierte Bäume Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 2 Ziele AVL-Bäume als einen wichtigen Vertreter balancierter

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

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

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

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

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

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

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

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

Mehr

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

Binäre Bäume Darstellung und Traversierung

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

Mehr

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

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

Mehr

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

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

Mehr

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

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

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

Mehr

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

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

Mehr

Kap. 4.2: Binäre Suchbäume

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

Mehr

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

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

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

368 4 Algorithmen und Datenstrukturen

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

Mehr

Zeichnen von Graphen. graph drawing

Zeichnen von Graphen. graph drawing Zeichnen von Graphen graph drawing WS 2006 / 2007 Gruppe: D_rot_Ala0607 Christian Becker 11042315 Eugen Plischke 11042351 Vadim Filippov 11042026 Gegeben sei ein Graph G = (V; E) Problemstellung V E =

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren 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

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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

Mehr

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

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

Mehr

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: ralf@informatik.uni-bonn.de Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 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/ws0910

Mehr

Datenstrukturen und Algorithmen

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

Mehr

Beispiel zu Datenstrukturen

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

Mehr

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("Routing-Tabelle")

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist (Routing-Tabelle) 8 Digitalbäume, Tries,, Suffixbäume 8.0 Anwendungen Internet-outer egeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("outing-tabelle") 3 network addr Host id 00 0000 000 0 00 0 0000

Mehr

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

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

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

Mehr

13. Binäre Suchbäume

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

Mehr

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester 2012. Robert Marti

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester 2012. Robert Marti 6 Baumstrukturen Formale Grundlagen der Informatik I Herbstsemester 2012 Robert Marti Vorlesung teilweise basierend auf Unterlagen von Prof. emer. Helmut Schauer Beispiel: Hierarchisches File System 2

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen 2 2 Java: Bäume 2.1 Implementierung von Bäumen 2.2 Implementierung eines binären Suchbaums 2.3 Traversierung von Bäumen 2.4 Implementierung von Heapsort 19 Teil II Java: Bäume Überblick Implementierung

Mehr

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r ) Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen

Mehr

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen

Binäre Suchbäume. Ein Leitprogramm von Timur Erdag und Björn Steffen Binäre Suchbäume Ein Leitprogramm von Timur Erdag und Björn Steffen Inhalt: Bäume gehören zu den bedeutendsten Datenstrukturen in der Informatik. Dieses Leitprogramm gibt eine Einführung in dieses Thema

Mehr

Nachtrag zu binären Suchbäumen

Nachtrag zu binären Suchbäumen Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement

Mehr

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51 RWTH Aacen, Lerstul für Informatik IX Kapitel 3: Sucen in Mengen - Datenstrukturen und Algoritmen - 51 Sucbäume Biser betractete Algoritmen für Suce in Mengen Sortierte Arrays A B C D - Nur sinnvoll für

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

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

Mehr

DATENSTRUKTUREN UND ZAHLENSYSTEME

DATENSTRUKTUREN UND ZAHLENSYSTEME DATENSTRUKTUREN UND ZAHLENSYSTEME RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: ralf@cs.uu.nl Homepage: http://www.cs.uu.nl/~ralf/ March, 2001 (Die Folien finden

Mehr

Codierung, Codes (variabler Länge)

Codierung, Codes (variabler Länge) Codierung, Codes (variabler Länge) A = {a, b, c,...} eine endliche Menge von Nachrichten (Quellalphabet) B = {0, 1} das Kanalalphabet Eine (binäre) Codierung ist eine injektive Abbildung Φ : A B +, falls

Mehr

Einführung in (Binäre) Bäume

Einführung in (Binäre) Bäume edeutung und Ziele inführung in (inäre) äume Marc Rennhard http://www.tik.ee.ethz.ch/~rennhard rennhard@tik.ee.ethz.ch äume gehören ganz allgemein zu den wichtigsten in der Informatik auftretenden atenstrukturen,

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell

Mehr

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2 1 2 Notation für Wörter Grundlagen der Theoretischen Informatik Till Mossakowski Fakultät für Informatik Otto-von-Guericke Universität Magdeburg w a is die Anzahl der Vorkommen von a in w Beispiel: abba

Mehr

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

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

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Assistenten Brian Amberg Andreas Forster Tutoren Simon Andermatt Lukas Beck Webseite http://informatik.unibas.ch/lehre/hs10/cs101/index.html

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm 10. Kapitel (Teil1) BÄUME GRUNDLAGEN Algrithmen & Datenstrukturen Prf. Dr. Wlfgang Schramm Übersicht 1 1. Einführung 2. Algrithmen 3. EigenschaCen vn Prgrammiersprachen 4. Algrithmenparadigmen 5. Suchen

Mehr

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Technische Universität München Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für

Mehr

6. Algorithmen der Computer-Geometrie

6. Algorithmen der Computer-Geometrie 6. Algorithmen der Computer-Geometrie 1. Einführung 2. Schnitt von zwei Strecken 3. Punkt-in-Polygon-Test 4. Schnitt orthogonaler Strecken 5. Punkteinschlussproblem Geo-Informationssysteme 146 6.1 Computer-Geometrie

Mehr

Teil II. Nichtlineare Optimierung

Teil II. Nichtlineare Optimierung Teil II Nichtlineare Optimierung 60 Kapitel 1 Einleitung In diesem Abschnitt wird die Optimierung von Funktionen min {f(x)} x Ω betrachtet, wobei Ω R n eine abgeschlossene Menge und f : Ω R eine gegebene

Mehr

OPERATIONS-RESEARCH (OR)

OPERATIONS-RESEARCH (OR) OPERATIONS-RESEARCH (OR) Man versteht darunter die Anwendung mathematischer Methoden und Modelle zur Vorbereitung optimaler Entscheidungen bei einem Unternehmen. Andere deutsche und englische Bezeichnungen:

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011 Graphen: Einführung Vorlesung Mathematische Strukturen Zum Ende der Vorlesung beschäftigen wir uns mit Graphen. Graphen sind netzartige Strukturen, bestehend aus Knoten und Kanten. Sommersemester 20 Prof.

Mehr

Kodierungsalgorithmen

Kodierungsalgorithmen Kodierungsalgorithmen Komprimierung Verschlüsselung Komprimierung Zielsetzung: Reduktion der Speicherkapazität Schnellere Übertragung Prinzipien: Wiederholungen in den Eingabedaten kompakter speichern

Mehr

Algorithmen und Datenstrukturen 1

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

Mehr

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

Suchen in Listen und Hashtabellen

Suchen in Listen und Hashtabellen Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

Sortierte Folgen 250

Sortierte Folgen 250 Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:

Mehr

Suchen und Sortieren

Suchen und Sortieren (Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten

Mehr

Vorname:... Matrikel-Nr.:... Unterschrift:...

Vorname:... Matrikel-Nr.:... Unterschrift:... Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Bachelor of Computer Science Algorithmen und Datenstrukturen Wintersemester 2003 / 2004 Name:... Vorname:...

Mehr

Laufzeit und Komplexität

Laufzeit und Komplexität Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen

Mehr

Vorlesung 3 MINIMALE SPANNBÄUME

Vorlesung 3 MINIMALE SPANNBÄUME Vorlesung 3 MINIMALE SPANNBÄUME 72 Aufgabe! Szenario: Sie arbeiten für eine Firma, die ein Neubaugebiet ans Netz (Wasser, Strom oder Kabel oder...) anschließt! Ziel: Alle Haushalte ans Netz bringen, dabei

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert. Anwendungen von Bäumen 4.3.2 Huffman Code Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert. => nutzbar für Kompression Code fester

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 1 Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 1 Woche: Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 5/ 44 Unser Modell Shannon

Mehr

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Bearbeitungszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen

Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen aussagenlogischer Regeln: Wissensbasis (Kontextwissen): Formelmenge,

Mehr

Unterrichtsvorhaben Q2- I:

Unterrichtsvorhaben Q2- I: Schulinterner Lehrplan Informatik Sekundarstufe II Q2 III. Qualifikationsphase Q2 Unterrichtsvorhaben Q2- I: Im ersten Halbjahr 1 Klausur, im 2. Halbjahr ein Projekt. Die Länge der Klausur beträgt 90 min.

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

CLRS benutzt eine etwas andere Definition:

CLRS benutzt eine etwas andere Definition: Bemerkungen LRS benutzt eine etwas andere Definition: Für einen B-Baum vom rad t gilt: - jeder Knoten, außer der Wurzel, hat mindestens t- Schlüssel, also mindestens t Kinder - jeder Knoten besitzt höchstens

Mehr

Elemente der Analysis II

Elemente der Analysis II Elemente der Analysis II Kapitel 3: Lineare Abbildungen und Gleichungssysteme Informationen zur Vorlesung: http://www.mathematik.uni-trier.de/ wengenroth/ J. Wengenroth () 15. Mai 2009 1 / 35 3.1 Beispiel

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

Approximationsalgorithmen

Approximationsalgorithmen Ausarbeitung zum Thema Approximationsalgorithmen im Rahmen des Fachseminars 24. Juli 2009 Robert Bahmann robert.bahmann@gmail.com FH Wiesbaden Erstellt von: Robert Bahmann Zuletzt berarbeitet von: Robert

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Algorithmen für Peer-to-Peer-Netzwerke Sommersemester 2004 04.06.2004 7. Vorlesung

Algorithmen für Peer-to-Peer-Netzwerke Sommersemester 2004 04.06.2004 7. Vorlesung Algorithmen für Peer-to-Peer-Netzwerke Sommersemester 2004 04.06.2004 7. Vorlesung 1 Kapitel III Skalierbare Peer to Peer-Netzwerke Tapestry von Zhao, Kubiatowicz und Joseph (2001) Netzw erke 2 Tapestry

Mehr

Binäre Suchbäume. 6. Binäre Suchbäume. Einfügen in binären Suchbäumen

Binäre Suchbäume. 6. Binäre Suchbäume. Einfügen in binären Suchbäumen 6. Binäre Sucbäume Natürlice binäre Sucbäume - Begriffe und Definitionen - Grundoperationen: Einfügen, sequentielle Suce, direkte Suce, öscen - Bestimmung der mittleren Zugriffskosten Balancierte Binärbäume

Mehr

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Kürzeste Wege in Graphen Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Gliederung Einleitung Definitionen Algorithmus von Dijkstra Bellmann-Ford Algorithmus Floyd-Warshall Algorithmus

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Steinerbäume. Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering

Steinerbäume. Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering Steinerbäume Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering Verfasser Flamur Kastrati Betreuer Prof. Dr. habil. Thomas

Mehr

Sortieren. Eine Testmenge erstellen

Sortieren. Eine Testmenge erstellen Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten

Mehr

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

Mehr

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011 Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

Komplexe Softwaresysteme 2 - SS 2014. Dominik Korner

Komplexe Softwaresysteme 2 - SS 2014. Dominik Korner Komplexe Softwaresysteme 2 - SS 2014 Dominik Korner 24. März 2014 Inhaltsverzeichnis 1 Übung 1 2 1.1 Heap.............................................. 2 A Zeichnen Sie den (min)-heap, der durch Einfügen

Mehr

3. Übung Algorithmen I

3. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der

Mehr