Logische Datenstrukturen

Ähnliche Dokumente
Datenstrukturen. einfach verkettete Liste

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

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Bäume Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

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

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

Verkettete Datenstrukturen: Bäume

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

Algorithmen und Datenstrukturen

Informatik II, SS 2014

Algorithmen und Datenstrukturen 1

Datenstrukturen & Algorithmen

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

13. Bäume: effektives Suchen und Sortieren

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

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

11. Elementare Datenstrukturen

Suchbäume mit inneren Knoten verschiedener Knotengrade.

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

Listen. Für die Verarbeitung von Listen durch den Rechner ist relevant:

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

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

C- Kurs 09 Dynamische Datenstrukturen

Abschnitt 18: Effizientes Suchen in Mengen

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Binäre Bäume Darstellung und Traversierung

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. SS 06

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Algorithmen und Datenstrukturen Suchbaum

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

13. Binäre Suchbäume

Leitprogramm der Informatik Binäre Suchbäume

Nachtrag zu binären Suchbäumen (nicht (nur) AVL Bäumen: Löschen von Elementen in binären Suchbäumen. 1. Fall: zu löschendes Element ist Blatt: löschen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen

Informatik B Sommersemester Musterlösung zur Klausur vom

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ärbäume: Beispiel

Copyright, Page 1 of 8 AVL-Baum

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

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.

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

14. Rot-Schwarz-Bäume

Informatik II Vorlesung am D-BAUG der ETH Zürich

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

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen (für ET/IT)

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Grundlagen der Programmierung

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Advanced Programming in C

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Struktur am Beispiel einer Liste

INTERVALLBÄUME. Tanja Lehenauer, Besart Sylejmani

Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste

7. Sortieren Lernziele. 7. Sortieren

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Programmiertechnik II

ADS: Algorithmen und Datenstrukturen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Nachtrag zu binären Suchbäumen

Balancierte Suchbäume

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

Kap. 4.2: Binäre Suchbäume

Bäume, Anwendung und Begriffe

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

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

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

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Bäume, Suchbäume und Hash-Tabellen

Übung zur Vorlesung Algorithmische Geometrie

Einstieg in die Informatik mit Java

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:

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

12. Dynamische Datenstrukturen

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

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 )

Transkript:

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 des logischen Listenanfangs - Schlüssel; Ordnungskriterium - Adresse des logischen Nachfolgers - Datensatz- - leere Adresse; logisches Ende der Liste Seite 2

Lineare Liste Beispiel *Biber Biber *Dachs Dachs *Eule Eule *Maus Maus *Uhu Uhu Seite 3 Operationen in linearen Listen Einfügen am Anfang Adler *Biber *Adler Biber *Dachs Dachs *Eule Eule *Maus Maus *Uhu Uhu Seite 4

Operationen in linearen Listen Einfügen am Anfang Algorithmus: Speichern des neuen Listenelementes auf beliebigen freien Speicherplatz Adresse der bisherigen Wurzel in des neuen Listenelementes eintragen Adresse des neuen Listenelementes in first eintragen Seite Operationen in linearen Listen Einfügen innerhalb der Liste Adler *Biber Katze *Maus *Adler Biber *Dachs Dachs *Eule Eule *Katze Maus *Uhu Uhu Seite 6

Operationen in linearen Listen Einfügen innerhalb der Liste Algorithmus: Speicherung des neuen Elementes auf beliebigen freien Speicherplatz Suchen der Einfügestelle (sequentielles Durchlaufen der Liste) Adresse des logischen Nachfolgers aus des logischen Vorgängers in des neuen Elementes eintragen Adresse des neuen Elementes in des logischen Vorgängers eintragen Seite Operationen in linearen Listen Einfügen am Ende der Liste Adler *Adler *Biber Katze *Maus Zebra Biber *Dachs Dachs *Eule Eule *Katze Maus *Uhu Uhu *Zebra Seite

Operationen in linearen Listen Einfügen am Ende der Liste Algorithmus: Speicherung des neuen Elementes auf beliebigen freien Speicherplatz Suchen der Einfügestelle (sequentielles Durchlaufen der Liste) Adresse aus des logischen Vorgängers in des neuen Elementes eintragen Adresse des neuen Elementes in des bisherigen logisch letzten Elementes eintragen Seite 9 Operationen in linearen Listen Löschen eines Elementes der Liste Adler *Adler *Biber Katze *Maus Zebra Biber *Dachs Dachs *Katze Eule *Katze Maus *Uhu Uhu *Zebra Seite 10

Operationen in linearen Listen Löschen eines Elementes der Liste Algorithmus: Suchen des zu löschenden Elementes (sequentielles Durchlaufen der Liste) Adresse des logischen Nachfolgers des zu löschenden Elementes aus dieses Elementes in des logischen Vorgängers eintragen (anstelle der Adresse des zu löschenden Elementes) Speicherplatz des gelöschten Elementes freigeben Seite 11 Lineare Liste Implementierung Voraussetzung: Direktzugriffsspeicher Notwendiger Speicherplatz: für n Datensätze zu je m Bytes = n*m Bytes Speicherplatz für Anker Verwaltung des Speichers durch Programm durch Betriebssystem Satzaufbau: Schlüsselattribut Satzinhalt / Daten Zeiger auf logisch nächsten Datensatz Seite 12

Lineare Liste Implementierung Probleme: aufwändiges Durchsuchen: Rückwärtsverkettung zusätzlich, Mehrfachverkettung Speicherverwaltung der leeren Datensätze: Bitmap (1 bit/datensatz) oder Lineare Liste freier Datensätze (Ankeradresse + Kettung der leeren Datensätze) oder...? logische Reihenfolge entspricht nicht physischer Reihenfolge: Reorganisation = Herstellen der Übereinstimmung von logischer und physischer Folge Seite 13 Lineare Liste Mehrfach-Verkettung first prev prev prev prev last Seite 14

Stapel LIFO: last in - first out stack end Prinzip: last in - first out (LIFO) Synonyme: Kellerspeicher, Stapel, stack Operationen: Hinzufügen eines Eintrags: stack[end] = new; end++; Entnehmen eines Eintrags: last = stack[end-1]; end--; Zustände des Stacks: voll; leer Seite 1 Warteschlange FIFO: first in - first out queue front end Prinzip: first in - first out (FIFO) Synonyme: Wartschlange, Schlange, queue Operationen: Hinzufügen eines Eintrags: queue[end] = new; end++; Entnehmen eines Eintrags: old = queue[front]; front++; Zustände der Warteschlange: voll; leer Seite 16

Binärbäume Begriffe Baum (tree) = endlicher, schwach zusammenhängender Graph, für dessen Knoten gilt: genau ein Knoten hat keinen Eingang (Wurzel, root) alle anderen Knoten haben genau einen Eingang endlicher Graph = Menge Knoten N (nodes) + Menge Kanten E (edges) Binärer Baum (binary tree) = geordneter Baum, der leer ist oder für dessen Knoten gilt: außer den Endknoten haben alle Knoten genau zwei Ausgänge maximal ein "Kind" jedes "Elternknotens" ist leer Seite 1 Binärbäume Begriffe Vollständiger Baum: alle Knoten besetzt Tiefe 0 Wurzel Tiefe 1 3 Unterbaum Tiefe 2 1 4 6 9 Blätter Unausgeglichener Baum: ungleiche Tiefe Vorgänger Direkter Nachfolger 3 6 1 4 Brüder Seite 1

Binärbäume Begriffe Ausgeglichener Baum: gleiche Tiefe oder max. eine Ebene Unterschied 4 6 2 Seite Binärer Suchbaum Erzeugen Ausgangspunkt: Liste 2 4 1 4 1 2 2 4 1 4 2 1 4 1 2 2 1 4 Seite 20

Binärer Suchbaum Hinzufügen Ausgangspunkt: ausgeglichener Binärbaum Hinzufügen: 20 3 29 1 11 24 1 (in dieser Reihenfolge) Algorithmus: Durchlaufen des Baumes bis zu einem Blatt Anhängen des neuen Knotens 4 6 2 9 20 29 3 1 24 11 1 Seite 21 Binärer Suchbaum Löschen Löschen: 3 20 (in dieser Reihenfolge) Algorithmus: Durchlaufen des Baumes bis zum zu löschenden Knoten Fallunterscheidung: Endknoten Knoten mit nur einem Nachfolger: Nachfolger ersetzt den zu löschenden Knoten Knoten mit zwei Nachfolgern: "größter" Knoten im "linken" Unterbaum bzw. "kleinster" Knoten im "rechten" Unterbaum ersetzt den zu löschenden Knoten 4 6 2 9 3 11 1 20 1 24 29 Seite 22

Binärer Suchbaum Löschen Ergebnis (1. Schritt): 4 6 20 4 6 29 2 9 29 2 9 24 3 1 24 1 11 1 11 1 Seite 23 Binärer Suchbaum Löschen Ergebnis (2. Schritt): 6 4 6 29 4 29 2 9 24 2 9 24 1 1 11 1 11 1 Seite 24

Binärer Suchbaum Durchmustern / Durchlaufen Durchmustern berührt alle Knoten des Baumes, Durchlaufen nur einen Teil Durchmustern in Präordnung: Reihenfolge: Wurzel des Unterbaums links rechts also: () ( (4 2 _) 6) ( ( _ 9) _) symmetrisches Durchmustern: Reihenfolge: links Wurzel rechts also: ((2 4 _) 6) (_ 9) _) Durchmustern in Postordnung: Reihenfolge: links rechts Wurzel also: ((2 _ 4) 6 ) ((_ 9 ) _ ) 4 6 2 9 Durchlaufen eines Baumes: von der Wurzel zu einem definierten Knoten "laufen" Seite 2 Binärer Suchbaum Suchen / Durchlaufen Algorithmus: Durchlaufen des Baumes bis zum gesuchten Knoten oder zu einem Blatt (bzw. "nicht gefunden") Beispiel: maxtiefe = 20 Anzahl der Knoten eines Baumes: n B = 2 (maxtiefe + 1) -1 2.09.11 Durchschnittliche Anzahl der Zugriffe: v B = ( maxtiefe+1) / 2 10, Anzahl der Zugriffe in einer Liste (zum Vergleich): v L = ( n L + 1 ) / 2 1.04.6 4 6 2 9 Seite 26

Syntaxbäume Darstellung der Syntax arithmetischer Ausdrücke: x+y x*y + * x y x y a*(b+c) a*((b+c)*(d*e-f/g)) * * a + a y* b c x+ y- b c x* yx/ d e f g Seite 2 Binärbäume Speichern von Binärbäumen Prinzip: *left *right *left *right *left *right Beispiel: * * 4 6 *4 *6 * 2 9 4 6 *2 *9 2 9 Seite 2

Binärbaum Balancierte Bäume Problem: zufällig erzeugte Bäume können sehr unsymmetrisch sein Suchoperationen werden dann aufwändig Lösung: zusätzliche Bedingungen beim Einfügen und Löschen berücksichtigen Beispiel: AVL-Bäume Seite 29 Binärbaum AVL-Bäume zurückzuführen auf Adelson-Velskij und Landis (62) Definition: Für jeden Knoten p eines AVL-Baumes gilt, dass sich die Höhe des linken Teilbaumes maximal um 1 von der des rechten Teilbaumes unterscheidet. Besonderheiten: Suchen in AVL-Bäumen geht mit O(log N) bei N Datensätzen Nach jedem Einfügen und Löschen muss überprüft werden, ob noch ein AVL-Baum vorliegt; sonst Wiederherstellung durch "Rotation" oder "Doppelrotation". Seite 30