KIV-Dokumentation. Buchholz, Stefan und Winkler, Jörg 25. Februar 2005

Größe: px
Ab Seite anzeigen:

Download "KIV-Dokumentation. Buchholz, Stefan und Winkler, Jörg 25. Februar 2005"

Transkript

1 KIV-Dokumentation Buchholz, Stefan und Winkler, Jörg 25. Februar 2005 KIV-Dokumentation und Beschreibung des Projektes AVL-Baum zur Lehrveranstaltung Programmverifikation. 1

2 Inhaltsverzeichnis 1 Aufgabenstellung 3 2 Grundlagen Datenstrukturen Datenstruktur natürliche Zahlen Datenstruktur Binärbaum Datenstruktur AVL-Baum Eigenschaften, Funktionen und Algorithmen Eigenschaft Balancefaktor Eigenschaft Höhe Funktion Einfügen Algorithmus Rotation KIV-Spezifikationen Binärbaum Struktur Binbaum Erweiterung Binbaumhöhe Erweiterung Binbaumordnung Binbaumerweiterung AVLbaum-Spezifikation AVL-Basis AVL-Bedingung Rechtsrotation Linksrotation Überkreuz-Rechtsrotation Überkreuz-Linksrotation Doppelrotation-Basis Doppelrotation AVL-Baum Weitere KIV-Spezifikationen 23 2

3 1 Aufgabenstellung Die Aufgabenstellung, die wir uns stellen ist die Spezifikation eines AVL-Baumes, mit den im Folgen beschriebenen Schwerpunkten. Um die Schwerpunkte spezifizieren zu können muss vorher eine theoretische Betrachtung geschehen. Da dies nicht Gegenstand der Vorlesung Programmverifikation ist wird diese Betrachtung kurz umrissen. Schwerpunkte Datenstrukturen: Element (natürliche Zahlen) Binärbaum AVL-Baum Eigenschaften: AVL Ausgeglichen Ist-AVL-Baum Ist-leer Ist-geordnet Ist-enthalten Funktionen: einfügen Höhe Algorithmen: Rechtsrotation Linksrotation Überkreuzrechtsrotation Überkreuzlinksrotation Doppelrotation 3

4 2 Grundlagen 2.1 Datenstrukturen Da der AVL-Baum laut Definition ein Binärbaum ist und in diesen Elemente eingefügt werden teilen wir diese komplexe Struktur auf. Wir benötigen Spezifikationen für die Elemente (im speziellen natürliche Zahlen), sowie eine Spezifikation des Binärbaumes, welche wir dann mit Hinzunahme der AVL-Bedingung zu einem AVL-Baum erweitern können. Die Spezifikationen werden im Kapitel näher beschrieben. In diesem Kapitel werden die Definitionen der oben genannten Datenstrukturen festgelegt Datenstruktur natürliche Zahlen Nat (natürliche Zahlen) stellt eine einfache Datenstruktur dar, die in einen Binärbaum eingefügt werden kann. Da diese Struktur mit der Spezifikation in der KIV-Bibliothek identisch ist und keine weiteren Eigenschaften bzw. Funktionen hinzukommen, wird diese im weiteren Verlauf nicht weiter betrachtet. Jedoch eine wichtige Eigenschaften, der natürlichen Zahlen, die im Verlauf genutzt werden muss, ist die Ordnungrelation (Bibliothek: nat-min) Datenstruktur Binärbaum Um mit dem Begriff Binärbaum diskutieren zu können benötigt es einer vorherigen Definition des Begriffes Baum. Trotz dessen sei an dieser Stelle erwähnt, dass der Binärbaum kein Sonderfall eines Baumes ist. Definition Baum Ein Baum ist eine liche Menge B eines oder mehrerer Knoten derart, dass es ein ausgezeichnetes Element, Wurzel genannt, gibt die übrigen Knoten in m 0 disjunkte Mengen aufgeteilt sind und jede dieser Mengen (Teilbäume) ein Baum ist Bemerkung: Diese Definition ist rekursiv, jeder Knoten eines Baumes ist Wurzel eines Teilbaumes. Falls der Grad (Anzahl der Teilbäume) eines Knotens = 0, so nennt man den Knoten Blatt. Definition Binärbaum Ein Binärbaum B ist eine geordnete liche Menge von Knoten, die entweder leer ist oder aus 2 Binärbäumen {B 1, B 2 } besteht. Bemerkung: B1 heißt linker Teilbaum und B2 heißt rechter Teilbaum von B. Handelt es sich um eine leere Menge, sprechen wir von einem Blatt. Weiterhin stehen die Informationen im Binärbaum sowohl in den Knoten, als auch in den Blättern. Durch eine gegebene Ordnung stehen die Daten, die der Ordnung nach kleineren sind, als die im betrachteten Knoten, im linken Teilbaum. Die, die der Ordnung nach größer sind, als die im betrachteten Knoten, stehen im rechtem Teilbaum. 4

5 2.1.3 Datenstruktur AVL-Baum Definition der AVL-Bedingung Sei k ein beliebiger Knoten für einen Binärbaum. Der Knoten k erfüllt die AVL-Bedingung, wenn für seine beiden Teilbäume k.l (linker Teilbaum) und k.r (rechter Teilbaumbaum) gilt: (h(k.l) h(k.r)) { 1, 0, 1} Ein Knoten erfüllt die AVL-Bedingung also genau dann, wenn sich die Höhen seiner beiden Teilbäume höchstens um 1 unterscheiden. Definition AVL-Baum Ein AVL-Baum B ist ein Binärbaum, für den gilt: Alle Knoten des Baumes B erfüllen die AVL-Bedingung. 2.2 Eigenschaften, Funktionen und Algorithmen Eigenschaft Balancefaktor Diese Eigenschaft ist wichtig für die Einhaltung der AVL-Bedingung und ist wie folgt zu betrachten: bal(p) = Höhe des rechten Teilbaumes von p - Höhe des linken Teilbaumes von p Eigenschaft Höhe Ist die Länge eines Pfades von der Wurzel zu dem am weitesten entfernten Blattes des Baumes. Ein Blatt hat die Höhe Funktion Einfügen Diese Funktion ermöglicht es ein neues Element zum Baum hinzu zufügen. Das Einfügen erfolgt nach einer vorgegebenen Ordnung. Dabei kann es dazu kommen, dass die AVL-Bedingung verletzt wird. In diesem Fall muss nach Ausführung der Einfügeoperation eine Balancierung vorgenommen werden. Diesen Balancierungsalgorithmus betrachten wir weiter unten Algorithmus Rotation Einfache Rotation Einfache Rotationen verwet man, nachdem ein neues Element außen an einen AVL-Baum angehängt wurde und der Baum dadurch unbalanciert wird. Dabei unterscheiden wir zwei Richtungen der Rotation: Linksrotation, falls bal(p) des Knotens p < 1 ist (d.h. die Höhe des linken Teilbaums ist größer als die Höhe des rechten Teilbaumes und zwar so, dass die AVL-Bedingung des Knoten p verletzt wurde). Rechtsrotation, falls bal(p) des Knotens p > 1 ist. 5

6 Überkreuz-Zug Abbildung 1: Rechtsrotation - Knoten 7 verletzt die AVL-Bedingung Eine Komplikation könnte entstehen, wenn der rechte Unterknoten des Knotens, der die AVL-Bedingung verletzt, einen rechten und linken Teilbaum hat. In diesem Fall wird statt einer einfachen Rotation ein Überkreuz-Zug notwig. Abbildung 2: Überkreuz-Zug mit Rechtsrotation - Knoten 9 verletzt die AVL-Bedingung und Knoten 8 muss ebenfalls umgehängt werden 6

7 Doppelrotation Doppelrotation benötigt man, wenn ein neues Element in der Mitte an einem AVL-Baum angehängt wird, und der Baum dadurch die Balance verliert. Eine Doppelrotation besteht aus zwei Einzelrotationen: Der Knoten wird im rechten Teilbaumeingehängt Linksrotation, gefolgt von Rechtsrotation Der Knoten wird im linken Teilbaum eingehängt Rechtsrotation, gefolgt von Linksrotation Abbildung 3: Doppelrotation mit Links-/Rechtsrotation - Knoten 9 verletzt die AVL-Bedingung, nach Linksrotation verletzt dann der Knoten 8 die AVL-Bedingung Rechtsrotation 7

8 3 KIV-Spezifikationen In diesem Kapitel beschreiben wir unsere Gedankengänge und die Spezifikationen. Dabei gehen wir den Spezifikationsbaum von unten nach oben durch. 3.1 Binärbaum Im nachflogem wollen wir die Struktur des Binärbaumes behandeln und die wesentlichen Eigenschaften, die für den AVL-Baum relevant sind Struktur Binbaum Ausgeh von unserer Binärbaumdefinition kann ein solcher Baum aus einem leeren Baum (im Folgen bezeichnet), einem Blatt oder einem Knoten mit einem linken und rechten Teilbaum bestehen. Weiterhin haben wir in der Definition gefordert, dass Daten in den Blättern sowie in den Knoten stehen. Dies führt zu folgen Überlegungen: Der einfachste Fall ist der leere welcher keine Daten beinhaltet. Das Blatt wiederum beinhaltet nur ein Datenfeld. Ein Knoten besitzt ebenfalls ein Datenfeld. Zusätzlich beinhaltet er Verweise auf seine Teilbäume, die wiederum Binärbäume sind. Hiermit sind die Binärbäume benannt. Um einen Zugriff auf die Elemnete eines Binärbaumes zu erhalten benötigt man Selektoren welche jetzt erläutert werden: Mit dem Selektor.daten erhält man die Daten aus einem Knoten und einem Blatt. Die Selektoren.rechts und.links liefern den rechten bzw. linken Teilbaum eines Knotens. Diese Überlegungen führen zu nachfolger Spezifikation: binbaum = generic data specification parameter nat-min binbaum = binblatt (..daten : nat ;) binknoten (..links : binbaum ;..daten : nat ;..rechts : binbaum ; variables bb 3, bb 2, bb 1, bb: binbaum; generic data specification Generated axioms: binbaum freely generated binblatt, binknoten; disj : binblatt(m) binknoten(bb, m 0, bb 0 ); disj : disj : binknoten(bb, m, bb 0 sel : binknoten(bb, m, bb 0 ).rechts = bb 0 ; sel : binknoten(bb, m, bb 0 ).daten = m; sel : binknoten(bb, m, bb 0 ).links = bb; sel : binblatt(m).daten = m; inj : binknoten(bb, m, bb 0 ) = binknoten(bb 1, m 0, bb 2 ) bb = bb 1 m = m 0 bb 0 = bb 2 ; 8

9 inj : binblatt(m) = binblatt(m 0 ) m = m 0 ; case : bb = binblatt(bb.daten) bb = binknoten(bb.links, bb.daten, bb.rechts) bb Erweiterung Binbaumhöhe Der Hauptgedanke, welcher zur Erweiterung des Binärbaumes führte, ist die Notwigkeit eine Aussage über die Ausgeglichenheit von Bäumen zu treffen (dazu später mehr). Durch die Definition eines Binärbaumes ergeben sich diese und Blätter besitzten die Höhe 0. Die Höhe eines Knoten ergibt sich aus dem Maximum der Höhen seiner Kinder + 1. Durch diese Merkmale besteht die Möglichkeit einer rekursiven Funktion. Nachsteh nun die sich daraus ergeben Axiome: binbaum-hoehe = enrich binbaum with functions hoehe : binbaum nat ; axioms hoehe(@) = 0; hoehe(binblatt(n)) = 0; hoehe(binknoten(bb, n, bb 0 )) = max(hoehe(bb), hoehe(bb 0 )) + 1; enrich Erweiterung Binbaumordnung Aus der Überlegung über die Binbaumhöhe ergibt sich zwing eine weitere Erfordernis. Für die Beschreibung eines AVL-Baumes benötigen wir eine Erweiterung der Binärbäume, um eine Datenordnung. Diese Ordnung soll die Datenelemente in einer bestimmten Reihenfolge im Baum speichern. Wir legen uns auf diese Merkmale ist geordnet Ein Blatt ist geordnet, da nur ein Datenelement vorhanden ist. In einem Knoten mit einem Datenelement n, muss laut Definition der Ordnung die Daten n 0 des rechten Teilbaumes B 1, n 0 n sein. Dabei ist zwing erforderlich, dass B 1 nicht ist und dass B 1 und B 2 ebenfalls geordnet sind. Für die Daten n 1 des linken Teilbaumes B 2 eines Knoten gilt, dass n 1 > n ist und B 2 ist, sowie das B 1 und B 2 ebenfalls geordnet sind. Der Ausschluss ist damit zu begründen, keine Daten enthalten kann und somit keine Relation besteht. Ist ein Knoten geordnet, so sind auch seine Teilbäume geordnet. 9

10 Diese Merkmale spiegeln sich in diesen Axiomen wieder: binbaum-ordnung = enrich binbaum with predicates istgeordnet : binbaum; axioms istgeordnet(@); istgeordnet(binblatt(n)); istgeordnet(binknoten(bb, n, bb 0 )) istgeordnet(bb) istgeordnet(bb 0 ); istgeordnet(bb 0 ) istgeordnet(bb) binknoten(bb, n, bb 0 ).daten bb.daten istgeordnet(binknoten(bb, n, bb 0 )); enrich bb istgeordnet(bb) istgeordnet(bb 0 ) binknoten(bb, n, bb 0 ).daten < bb 0.daten istgeordnet(binknoten(bb, n, bb 0 )); Binbaumerweiterung Die soeben getroffenen Erweiterungen werden zu einer Union zusammengefasst, damit wir diese beiden Merkmale gemeinsam nutzen können. Diese Zusammenfassung wird jetzt beschrieben: binbaum-erweitert = binbaum-hoehe + binbaum-ordnung 3.2 AVLbaum-Spezifikation Da die für unsere Zwecke wesentlichen Merkmale des Binärbaumes beschrieben wurden sind, erfolgt nun die schrittweise Einführung des AVL-Baumes mit seinen Eigenschaften, Algorithmen und Funktionen AVL-Basis Hier werden die notwigen Umbenennungen vorgenommen, da wir ab jetzt nicht mehr von einem Binärbaum sprechen wollen. Hierzu gehören unter anderem die Umbenennung der Knoten und Blätter in AVL-Knoten und AVL-Blätter. avl-basis = rename binbaum-erweitert by morphism binknoten avlknoten; binblatt avlblatt;.daten.daten;.links.links;.rechts.rechts; hoehe hoehe; istgeordnet istgeordnet; bb avlb; bb 0 avlb 0 ; bb 1 avlb 1 ; bb 2 avlb 2 ; bb 3 avlb 3 rename 10

11 3.2.2 AVL-Bedingung Wir benötigen zur Feststellung der AVL-Bedingung, die wir oben definiert haben, ein Prädikat welches uns bei der Erstellung eines AVL-Baumes unterstützt und uns somit sagt, dass dieses wichtige Merkmal erfüllt ist. Die Erfüllung der Definition führt zu diesen ist ausgeglichen, da er keine Kinder besitzt, die die Balance gefährden. Das Blatt ist aus selben Gründen ausgeglichen. Ein AVL-Knoten ist ausgeglichen, wenn für ihn gilt: B 1 und B 2 = AVLBlatt, da dass AVLBlatt die Höhe 0 besitzen und somit die Balance nicht gefährden Dasselbe gilt, wenn die Kinder vertauscht sind Jetzt muss der Fall betrachtet werden, wo die beiden Teilbäume eines Knoten sind. Dabei ist für B 1 und B 2 gefordert, dass diese die AVL-Bedingung erfüllen. Weiterhin muss gelten, dass die Funktion bal(p) eingehalten wird. Bei der Gestaltung der Axiome muss darauf geachtet werden, dass die Ergebnisse der Subtraktion den Wertebereich der nat-spezifikation nicht verlassen, welches durch eine Falluntersceidung geschieht. avl-bedingung = enrich avl-basis with predicates avl ausgeglichen : avlbaum; axioms avl ausgeglichen(@); avl ausgeglichen(avlblatt(n)); avl ausgeglichen(avlknoten(@, n, avlblatt(n 0 ))); avl ausgeglichen(avlknoten(avlblatt(n 0 ), enrich avlb avl ausgeglichen(avlb) avl ausgeglichen(avlb 0 ) hoehe(avlb) hoehe(avlb 0 ) hoehe(avlb 0 ) - hoehe(avlb) 1 avl ausgeglichen(avlknoten(avlb, n, avlb 0 )); avlb avl ausgeglichen(avlb) avl ausgeglichen(avlb 0 ) hoehe(avlb) > hoehe(avlb 0 ) hoehe(avlb) - hoehe(avlb 0 ) 1 avl ausgeglichen(avlknoten(avlb, n, avlb 0 )); 11

12 3.2.3 Rechtsrotation Die nächsten Abschnitte beschreiben die Rotationen, die den AVL-Baum im wesentlichen mit Charakteresieren. Wir haben uns entschieden die jeweiligen Rotationen einzeln zu betrachen. Angefangen in diesem Abschnitt mit der Rechtsrotation. Diese Aufteilung soll nach dem Teile und Herrsche - Prinzip die Implementation vereinfachen. Folge Eigenschaften liegen der Rechtsrotation zugrunde: Ein geordneter AVL-Baum ist nach Ausführung einer Rechtsrotation weiterhin geordnet. Ebenfalls gilt anderes herum, dass der Ausgangsbaum eines rechts-rotierten AVL-Baumes ebensfalls geordnet ist. Dies begründet sich darin, dass die Rechtsrotation die Ordnung nicht verändert. Die Rechtsrotaion liefert in zwei Fällen garantiert einen AVL-Baum, der die AVL-Bedingung erfüllt. Diese Fälle sind oben schon beschrieben. Die Spezifikation der Rechtsrotation ist als Erstes abgebildet, gefolgt von der Implementation des Rechtsrotation-Modules. avl-rechtsrotation = enrich avl-bedingung with functions rechtsrotation : avlbaum avlbaum ; axioms avl ausgeglichen(rechtsrotation(avlknoten(avlknoten(avlblatt(n), n n avl ausgeglichen(rechtsrotation(avlknoten(avlknoten(avlblatt(n), n n 1, avlblatt(m)))); istgeordnet(avlb) istgeordnet(rechtsrotation(avlb)); enrich avl-rechtsrotation = module export avl-rechtsrotation refinement representation of operations rechtsr# implements rechtsrotation; implementation import avl-bedingung declaration rechtsr#(avlb; var avlb 0 ) var avlb 1 in if avlb = avlknoten(avlknoten(avlblatt(avlb.links.links.daten), avlb.daten, avlb.rechts) then if then if avlb.rechts = avlblatt(avlb.rechts.daten) then avlb 1 := avlknoten(@, avlb.daten, avlblatt(avlb.rechts.daten)) 12

13 avlb 1 := avlblatt(avlb.daten); avlb 0 := avlknoten(avlb.links.links, avlb.links.daten, avlb 1 ) uniform restriction declarations: rechtsr#(avlb; var avlb 0 ) var avlb 1 in if avlb = avlknoten(avlknoten(avlblatt(avlb.links.links.daten), avlb.daten, avlb.rechts) then if then if avlb.rechts = avlblatt(avlb.rechts.daten) then avlb 1 := avlknoten(@, avlb.daten, avlblatt(avlb.rechts.daten)) avlb 1 := avlblatt(avlb.daten); avlb 0 := avlknoten(avlb.links.links, avlb.links.daten, avlb 1 ) Linksrotation Dies ist die seitenverkehrte Betrachtung der Rechtsrotation und beinhaltet die gleichen Merkmale. avl-linksrotation = enrich avl-bedingung with functions linksrotation : avlbaum avlbaum ; axioms istgeordnet(avlb) istgeordnet(linksrotation(avlb)); avl ausgeglichen(linksrotation(avlknoten(@, n 1, avlknoten(@, n 0, avlblatt(n))))); avl ausgeglichen(linksrotation(avlknoten(avlblatt(m), n 1, avlknoten(@, n 0, avlblatt(n))))); enrich avl-linksrotation = module export avl-linksrotation refinement 13

14 representation of operations linksr# implements linksrotation; implementation import avl-bedingung declaration linksr#(avlb; var avlb 0 ) var avlb 1 in if avlb = avlknoten(avlb.links, avlb.daten, avlknoten(@, avlb.rechts.daten, avlblatt(avlb.rechts.rechts.daten))) then if then if avlb.links = avlblatt(avlb.links.daten) then avlb 1 := avlknoten(avlblatt(avlb.links.daten), avlb 1 := avlblatt(avlb.daten); avlb 0 := avlknoten(avlb 1, avlb.rechts.daten, avlb.rechts.rechts) uniform restriction declarations: linksr#(avlb; var avlb 0 ) var avlb 1 in if avlb = avlknoten(avlb.links, avlb.daten, avlknoten(@, avlb.rechts.daten, avlblatt(avlb.rechts.rechts.daten))) then if then if avlb.links = avlblatt(avlb.links.daten) then avlb 1 := avlknoten(avlblatt(avlb.links.daten), avlb 1 := avlblatt(avlb.daten); avlb 0 := avlknoten(avlb 1, avlb.rechts.daten, avlb.rechts.rechts) 14

15 3.2.5 Überkreuz-Rechtsrotation Bei dieser Rotation handelt es sich wie schon beschrieben um einen Spezialfall der Rechtsrotation. Hier werden die gleichen Merkmale gefordert wie bei den vorangegangenen Rotationen. Der wesentliche Unterschied begründet sich auf die Einmaligkeit des zu rotieren AVL-Baumes. Die Abbildung 2 zeigt diesen Spezialfall. avl-rechts-ueberkreuz = enrich avl-bedingung with functions ueberkreuzrechtsrotation : avlbaum avlbaum ; variables n 5, n 4, n 3, n 2 : nat; axioms istgeordnet(ueberkreuzrechtsrotation(avlb)) istgeordnet(avlb); avl ausgeglichen(ueberkreuzrechtsrotation(avlknoten(avlknoten(avlknoten(avlblatt(n 4 ), n n 3, avlblatt(n 2 )), n, avlblatt(n 1 )))); enrich avl-rechts-ueberkreuz = module export avl-rechts-ueberkreuz refinement representation of operations ueberrechtsr# implements ueberkreuzrechtsrotation; implementation import avl-bedingung declaration ueberrechtsr#(avlb; var avlb 0 ) var avlb 1 avlb 2 in if avlb = avlknoten(avlknoten(avlknoten(avlblatt(avlb.links.links.links.daten), avlb.links.daten, avlblatt(avlb.links.rechts.daten)), avlb.daten, avlblatt(avlb.rechts.daten)) then avlb 1 := avlblatt(avlb.links.rechts.daten); avlb 2 := avlknoten(avlb 1, avlb.daten, avlb.rechts); avlb 0 := avlknoten(avlb.links.links, avlb.links.daten, avlb 2 ) uniform restriction declarations: ueberrechtsr#(avlb; var avlb 0 ) var avlb 1 avlb 2 in if avlb = avlknoten(avlknoten(avlknoten(avlblatt(avlb.links.links.links.daten), avlb.links.daten, avlblatt(avlb.links.rechts.daten)), avlb.daten, avlblatt(avlb.rechts.daten)) 15

16 then avlb 1 := avlblatt(avlb.links.rechts.daten); avlb 2 := avlknoten(avlb 1, avlb.daten, avlb.rechts); avlb 0 := avlknoten(avlb.links.links, avlb.links.daten, avlb 2 ) Überkreuz-Linksrotation Bei diesem Fall der Rotation betrachten wir, analog zur Linksrotation, den seitenverkehrten Fall der Überkreuz-Rechtsrotation. Die Merkmale bleiben erhalten. avl-links-ueberkreuz = enrich avl-bedingung with functions ueberkreuzlinksrotation : avlbaum avlbaum ; variables n 5, n 4, n 3, n 2 : nat; axioms istgeordnet(avlb) istgeordnet(ueberkreuzlinksrotation(avlb)); avl ausgeglichen(ueberkreuzlinksrotation(avlknoten(avlblatt(n), n 1, avlknoten(avlblatt(n 3 ), n 2, avlknoten(@, n 4, avlblatt(n 5 )))))); enrich avl-links-ueberkreuz = module export avl-links-ueberkreuz refinement representation of operations ueberlinksr# implements ueberkreuzlinksrotation; implementation import avl-bedingung declaration ueberlinksr#(avlb; var avlb 0 ) var avlb 1 avlb 2 in if avlb = avlknoten(avlblatt(avlb.links.daten), avlb.daten, avlknoten(avlblatt(avlb.rechts.links.daten), avlb.rechts.daten, avlknoten(@, avlb.rechts.rechts.daten, avlblatt(avlb.rechts.rechts.rechts.daten)))) then avlb 1 := avlblatt(avlb.rechts.links.daten); avlb 2 := avlknoten(avlb.links, avlb.daten, avlb 1 ); avlb 0 := avlknoten(avlb 2, avlb.rechts.daten, avlb.rechts.rechts) 16

17 uniform restriction declarations: ueberlinksr#(avlb; var avlb 0 ) var avlb 1 avlb 2 in if avlb = avlknoten(avlblatt(avlb.links.daten), avlb.daten, avlknoten(avlblatt(avlb.rechts.links.daten), avlb.rechts.daten, avlknoten(@, avlb.rechts.rechts.daten, avlblatt(avlb.rechts.rechts.rechts.daten)))) then avlb 1 := avlblatt(avlb.rechts.links.daten); avlb 2 := avlknoten(avlb.links, avlb.daten, avlb 1 ); avlb 0 := avlknoten(avlb 2, avlb.rechts.daten, avlb.rechts.rechts) Doppelrotation-Basis Für die Doppelrotation wird eine Kombination aus Rechts- und Linksrotation sowie den beiden Überkreuz-Rotationen benötigt. Aus diesem Grund muss eine Zusammenführung stattfinden. avl-doppelrotation-basis = avl-rechtsrotation + avl-linksrotation + avl-rechts-ueberkreuz + avl-links-ueberkreuz Doppelrotation Die Doppelrotation kommt in allen anderen Fällen in Betrachtung, die nicht durch die zuvor spezifizierten und implementierten Rotationen abgedeckt wurden. Dies sind laut der oben genannten Definition alle AVL-Bäume, die nach Einfügen eines Elementes in der Mitte die AVL-Bedingung nicht mehr erfüllen. Wie schon oben betrachtet, verändert die Doppelrotation die Ordnung des AVL-Baumes nicht. avl-doppelrotation = enrich avl-doppelrotation-basis with functions doppelrotation : avlbaum avlbaum ; axioms istgeordnet(avlb) istgeordnet(doppelrotation(avlb)); enrich avl-doppelrotation = module export avl-doppelrotation refinement representation of operations doppelr# implements doppelrotation; 17

18 implementation import avl-doppelrotation-basis declaration doppelr#(avlb; var avlb 0 ) var avlb 1 = avlb, avlb 2 = avlb in if hoehe(avlb.links) > hoehe(avlb.rechts) then if then avlb 1 := linksrotation(avlb.links); avlb 2 := avlknoten(avlb 1, avlb.daten, avlb.rechts); avlb 0 := ueberkreuzrechtsrotation(avlb 2 ) avlb 1 := ueberkreuzlinksrotation(avlb.links); avlb 2 := avlknoten(avlb 1, avlb.daten, avlb.rechts); avlb 0 := rechtsrotation(avlb 2 ) if then avlb 1 := rechtsrotation(avlb.rechts); avlb 2 := avlknoten(avlb.links, avlb.daten, avlb 1 ); avlb 0 := ueberkreuzlinksrotation(avlb 2 ) avlb 1 := ueberkreuzrechtsrotation(avlb.rechts); avlb 2 := avlknoten(avlb.links, avlb.daten, avlb 1 ); avlb 0 := linksrotation(avlb 2 ) uniform restriction declarations: doppelr#(avlb; var avlb 0 ) var avlb 1 = avlb, avlb 2 = avlb in if hoehe(avlb.links) > hoehe(avlb.rechts) then if then avlb 1 := linksrotation(avlb.links); avlb 2 := avlknoten(avlb 1, avlb.daten, avlb.rechts); avlb 0 := ueberkreuzrechtsrotation(avlb 2 ) avlb 1 := ueberkreuzlinksrotation(avlb.links); avlb 2 := avlknoten(avlb 1, avlb.daten, avlb.rechts); avlb 0 := rechtsrotation(avlb 2 ) if then 18

19 avlb 1 := rechtsrotation(avlb.rechts); avlb 2 := avlknoten(avlb.links, avlb.daten, avlb 1 ); avlb 0 := ueberkreuzlinksrotation(avlb 2 ) avlb 1 := ueberkreuzrechtsrotation(avlb.rechts); avlb 2 := avlknoten(avlb.links, avlb.daten, avlb 1 ); avlb 0 := linksrotation(avlb 2 ) AVL-Baum In dieser Spezifikation werden die vorher definierten Eigenschaften und Funktionen zur AVL-Baum-Spezifikation zusammen geführt. Die Rotationsfunktionen unterstützen die Einfüge-Funktion des AVL-Baumes. Sie gewährleisten die Einhaltung der AVL-Bedingung und der Datenordnung, bei Einfügen eines Daten-Elementes in einen bestehen AVL-Baumes. Der wesentliche Unterschied zu den vorher betrachten Modulen ist, dass der Ausgangsbaum, ein AVL-Baum, die AVL-Bedingung bereits besitzt. Des weiteren möchten wir einige Prädikate nutzen, welche den Funktionsumfang des AVL-Baumes erweitern. Dabei betrachten wir die Prädikate istenthalten, dieses überprüft das vorhanden sein eines Elementes im AVL-Baum, istleer, zum testen ob der Baum ist und Istavlbaum welches die Eigenschaften der Spezifikation zusammenfasst. Diese Gedanken müssen dabei beachtet werden: Bildet das Prädikatik istleer einen AVL-Baum nach wahr ab, so impliziert das, dass ist, da nur leer ist. Das Prädkat istenthalten sucht rekursiv einen AVL-Baum von der Wurzel zum Blatt durch. Dabei muss es die Ordnungsrelation beachten und unter diesen Bedingungen muss der Algorithmus den Baum von Kind zu Kind entlanggehen. Wenn es dabei auf ein Element trifft das gleich dem zu Suchen Element ist, wird das Prädikatt true. Wenn die Suche in einem Blatt et und das Datenelement des Blattes ungleich dem zu Suchen, ist das Prädikat false. Trifft die Suche so ergibt sich ebenfalls false. Bei istavlbaum fasst die Eigenschaften istgeordnet und avlausgeglichen zusammen. avlbaum = enrich avl-basis2 with functions einfuegen : avlbaum nat avlbaum ; predicates istenthalten : avlbaum nat; istleer : avlbaum; istavlbaum : avlbaum; axioms istavlbaum(avlb) avl ausgeglichen(avlb) istgeordnet(avlb); istavlbaum(avlb) istavlbaum(einfuegen(avlb, n)); istavlbaum(avlblatt(n)); istgeordnet(einfuegen(avlb, n)) istgeordnet(avlb); istleer(avlb) avlb istenthalten(einfuegen(avlb, n), n); 19

20 enrich avl-funktion = module export avlbaum refinement representation of operations einfuegen# implements einfuegen; istleer# implements istleer; istavlbaum# implements istavlbaum; istenthalten# implements istenthalten; implementation import avl-basis2 variables e: bool; declaration istleer#(avlb; var e) if avlb then e := true e := false ; istavlbaum#(avlb; var e) if avl ausgeglichen(avlb) istgeordnet(avlb) then e := true e := false; istenthalten#(avlb, n; var e) if avlb then e := false if avlb.daten = n then e := true if avlb = avlblatt(avlb.daten) then e := false if avlb.daten n then istenthalten#(avlb.links, n; e) istenthalten#(avlb.rechts, n; e); einfuegen#(avlb, n; var avlb 0 ) var avlb 1 in if avlb then latt(n) if avlb = avlblatt(avlb.daten) then if avlb.daten n then avlb 0 := avlknoten(avlblatt(n), avlb 0 := avlknoten(@, avlb.daten, avlblatt(n)) if avlb.daten n then einfuegen#(avlb.links, n; avlb 1 ); avlb 0 := avlknoten(avlb 1, avlb.daten, avlb.rechts) einfuegen#(avlb.rechts, n; avlb 1 ); avlb 0 := avlknoten(avlb.links, avlb.daten, avlb 1 ) ; if avl ausgeglichen(avlb 0 ) then if hoehe(avlb 0.links) = 1 avlb then if avlb 0.links.rechts then avlb 0 := rechtsrotation(avlb 0 ) 20

21 avlb 0 := doppelrotation(avlb 0 ) if hoehe(avlb 0.rechts) = 1 avlb then if avlb 0.rechts.links then avlb 0 := linksrotation(avlb 0 ) avlb 0 := doppelrotation(avlb 0 ) if hoehe(avlb 0.links) = 2 then if hoehe(avlb 0.links.links) = 1 avlb then avlb 0 := ueberkreuzrechtsrotation(avlb 0 ) avlb 0 := doppelrotation(avlb 0 ) if hoehe(avlb 0.rechts.rechts) = 1 avlb then avlb 0 := ueberkreuzlinksrotation(avlb 0 ) avlb 0 := doppelrotation(avlb 0 ) skip uniform restriction declarations: istleer#(avlb; var e) if avlb then e := true e := false ; istavlbaum#(avlb; var e) if avl ausgeglichen(avlb) istgeordnet(avlb) then e := true e := false; istenthalten#(avlb, n; var e) if avlb then e := false if avlb.daten = n then e := true if avlb = avlblatt(avlb.daten) then e := false if avlb.daten n then istenthalten#(avlb.links, n; e) istenthalten#(avlb.rechts, n; e); einfuegen#(avlb, n; var avlb 0 ) var avlb 1 in if avlb then latt(n) if avlb = avlblatt(avlb.daten) then if avlb.daten n then avlb 0 := avlknoten(avlblatt(n), avlb 0 := avlknoten(@, avlb.daten, avlblatt(n)) if avlb.daten n then einfuegen#(avlb.links, n; avlb 1 ); avlb 0 := avlknoten(avlb 1, avlb.daten, avlb.rechts) einfuegen#(avlb.rechts, n; avlb 1 ); avlb 0 := avlknoten(avlb.links, avlb.daten, avlb 1 ) ; if avl ausgeglichen(avlb 0 ) then if hoehe(avlb 0.links) = 1 avlb then 21

22 if avlb 0.links.rechts then avlb 0 := rechtsrotation(avlb 0 ) avlb 0 := doppelrotation(avlb 0 ) if hoehe(avlb 0.rechts) = 1 avlb then if avlb 0.rechts.links then avlb 0 := linksrotation(avlb 0 ) avlb 0 := doppelrotation(avlb 0 ) if hoehe(avlb 0.links) = 2 then if hoehe(avlb 0.links.links) = 1 avlb then avlb 0 := ueberkreuzrechtsrotation(avlb 0 ) avlb 0 := doppelrotation(avlb 0 ) if hoehe(avlb 0.rechts.rechts) = 1 avlb then avlb 0 := ueberkreuzlinksrotation(avlb 0 ) avlb 0 := doppelrotation(avlb 0 ) skip 22

23 4 Weitere KIV-Spezifikationen Im Laufe der Bearbeitung des Projektes benötigten wir ein Paar von nat-zahlen. Daraus beruhen die folgen Spezifikationen. Diese sind jedoch für die AVL-Baumspezifikation nicht mehr von Belang. Sie dokumentieren jedoch den Umgang mit dem KIV-Programm. nat1 = rename nat by morphism nat nat1; 0 0; 1 1; 2 2; +1 +1; -1-1; + +; - -; < <; ; > >; ; m n1m; n n1n; n 0 n1n 0 ; n 1 n1n 1 rename nat2 = rename nat by morphism nat nat2; 0 0; 1 1; 2 2; +1 +1; -1-1; + +; - -; < <; ; > >; ; m n2m; n n2n; n 0 n2n 0 ; n 1 n2n 1 rename nat12 = nat1 + nat2 nat-paar = actualize pair with nat12 by morphism elem1 nat1; elem2 nat2; ;.1.1;.2.2; e1a n1m; e1a 0 n1n; e1b n1n 0 ; e1c n1n 1 ; e2a n2m; e2a 0 n2n; e2b n2n 0 ; e2c n2n 1 actualize avl-basis2 = avl-doppelrotation + nat-paar 23

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

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 20) Übungsblatt 8 Abgabe: Montag, 24.06.20, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes Gruppenmitglieds

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

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

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

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

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

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

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form. für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Vollständige Induktion): Finden Sie eine geschlossene Form für die

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

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

Übung 4: Die generische Klasse AvlBaum in Java 1

Übung 4: Die generische Klasse AvlBaum in Java 1 Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (

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

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

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

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

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

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

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

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Ü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

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

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

Ü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

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume Digitale Suchbäume Heaps

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume Digitale Suchbäume Heaps Teil 1: Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume AVL-Bäume Splay-Bäume B-Bäume Digitale Suchbäume Heaps M.O.Franz; Oktober 2007 Algorithmen und

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

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für balanciert: Balancierte Bäume Aufwand, ein Element zu finden, entspricht der Tiefe des gefundenen Knotens im worst case = Tiefe des Baumes liegt zwischen log N und N Definition für "balanciert": es gibt verschiedene

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Balancieren eines Suchbaums Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 396 Baumgestalt vs. Zeitkomplexität Vorteile eines ausgeglichenen binären Suchbaums

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

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

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

Mehr

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

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

Informatik II, SS 2014

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

Mehr

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

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

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

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

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

Mehr

Gliederung. Algorithmen und Datenstrukturen I. öschen in Rot-Schwarz-Bäumen. Löschen in Rot-Schwarz-Bäumen

Gliederung. Algorithmen und Datenstrukturen I. öschen in Rot-Schwarz-Bäumen. Löschen in Rot-Schwarz-Bäumen Gliederung Algorithmen und Datenstrukturen I Abstrakte Datentypen VII: in n D. Rösner Institut für Wissens- und prachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Winter

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

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als Kapitel 4 Bäume 4.1 Bäume, Datenstrukturen und Algorithmen Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als eine Menge von Knoten und eine Menge von zugehörigen

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

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 12./13. VO DAP2 SS 2009 28.5./2.6.2009 1 Motivation Warum soll

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

ContainerDatenstrukturen. Große Übung 4

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

Mehr

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

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

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

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

Strukturierte Spezifikationen: Umbenennung und Parameter

Strukturierte Spezifikationen: Umbenennung und Parameter Strukturierte Spezifikationen: Umbenennung und Parameter 149 Strukturierte Spezifikationen: Umbenennung Umbenennung: Benennt die Operationen einer Spezifikation um Nützlich um 2 Kopien zu erhalten Syntax:

Mehr

Der Alpha-Beta-Algorithmus

Der Alpha-Beta-Algorithmus Der Alpha-Beta-Algorithmus Maria Hartmann 19. Mai 2017 1 Einführung Wir wollen für bestimmte Spiele algorithmisch die optimale Spielstrategie finden, also die Strategie, die für den betrachteten Spieler

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Lineare Listen (1) Einfach verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 148 Wiederholung Felder Vorteil Der Zugriff auf ein beliebiges

Mehr

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 3.3 Boolsche Algebra Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 72 / 179 Beweisprinzip der vollständigen Induktion

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

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

Balancierte Suchbäume

Balancierte Suchbäume Foliensatz 10 Michael Brinkmeier echnische Universität Ilmenau Institut für heoretische Informatik Sommersemester 2009 U Ilmenau Seite 1 / 74 Balancierte Suchbäume U Ilmenau Seite 2 / 74 Balancierte Suchbäume

Mehr

Binärbäume: Beispiel

Binärbäume: Beispiel Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume Übersicht Datenstrukturen und lgorithmen Vorlesung : Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-/dsal/ 1 Suche Einfügen

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Vorlesung Datenstrukturen

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

Mehr

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. Stammbaum.

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. Stammbaum. lausthal Informatik II Bäume. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Beispiele Stammbaum. Zachmann Informatik - SS 0 Bäume Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy

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

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

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

Mehr

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

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

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

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

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

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

Übung Datenstrukturen. Bäume Übung Datenstrukturen Bäume Übung Binärbaum 7 2 10 1 3 5 9 34 8 7 11 13 17 7 25 19 3 Aufgabe 1 Geben Sie die Reihenfolge der besuchten Knoten nach Prä-, In-, Post- und Levelorder an! Übung Binärbaum Aufgabe

Mehr

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen Datenstrukturen & Algorithmen Übersicht Rot-schwarz Bäume Eigenschaften Einfügen Matthias Zwicker Universität Bern Frühling 2009 2 Rot-schwarz Bäume Binäre Suchbäume sind nur effizient wenn Höhe des Baumes

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

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

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

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

Balancierte Binär- und B-Bäume

Balancierte Binär- und B-Bäume Balancierte Binär- und B-Bäume Sie kennen die Kriterien um die Ausgeglichenheit von Binär- Bäumen zu bestimmen Sie wissen, was B-Bäume und rot-schwarz Bäume sind und wie man sie ausgleicht Suchen und Tiefe

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

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

Algorithmen und Datenstrukturen

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

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen: HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter

Mehr

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen 4.4 MX-Quadtrees (I) MatriX Quadtree Verwaltung 2-dimensionaler Punkte Punkte als 1-Elemente in einer quadratischen Matrix mit Wertebereich {0,1} rekursive Aufteilung des Datenraums in die Quadranten NW,

Mehr

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

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

Mehr

Verkettete Datenstrukturen: Bäume

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

Mehr

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6. Prof. aa Dr. Ir. Joost-Pieter Katoen Allgemeine Hinweise: Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Die Hausaufgaben sollen in Gruppen von je - Studierenden aus der gleichen

Mehr

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am 1 Aufgabe 1 Analysiert man das Verfahren anhand des angegebenen Beispiels, ist schnell zu erkennen, dass das erste Element von infeld2 nach outfeld an Index 2 kopiert wird, das zweite den Index 4 bekommt,

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

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

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I.6.5 Christoph Striecks Christoph.Striecks@kit.edu (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Hinweise zur Übungsklausur (Weitere) Traversierungen von Binärbäumen

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

(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 Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur

Mehr

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

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

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013

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