Algorithmen und Datenstrukturen II
|
|
- Max Frank
- vor 5 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen II und Red-Black-Trees Dr. Georg Sauthoff 1 AG Praktische Informatik July 1, SoSe gsauthof@techfak.uni-bielefeld.de
2 Suchbäume (Indexdatenstrukturen) Zugriff in O(logn) Baum muss balanciert (ausgeglichen) sein Heute: Red-Black-Trees
3 Suchbäume (Indexdatenstrukturen) Zugriff in O(logn) Baum muss balanciert (ausgeglichen) sein Heute: Baumstruktur hard-wired Red-Black-Trees Muss ggf. durch Rotationen gefixt werden
4 Datenstruktur zur Sortierung von Schlüsseln Nicht zu verwechseln mit: Speicherverwaltungs-Heap
5 Datenstruktur zur Sortierung von Schlüsseln Voraussetzung: totale Ordnung auf den Schlüsseln Nicht zu verwechseln mit: Speicherverwaltungs-Heap Aufbau: O(n)
6 Datenstruktur zur Sortierung von Schlüsseln (Hinter einem Schlüssel kann ein Datensatz stehen) Nicht zu verwechseln mit: Speicherverwaltungs-Heap Aufbau: O(n) Einfügen: O(log n)
7 Datenstruktur zur Sortierung von Schlüsseln Nicht zu verwechseln mit: Speicherverwaltungs-Heap Aufbau: O(n) Einfügen: O(log n) ort: O(n log n)
8 Datenstruktur zur Sortierung von Schlüsseln Nicht zu verwechseln mit: Speicherverwaltungs-Heap Aufbau: O(n) Einfügen: O(log n) ort: O(n log n) in-place wie Insert-Sort worst-case Laufzeit wie Merge-Sort
9 Heap Array von Schlüsseln organisiert als Binärer Baum Jeder Knoten erfüllt die Heap-Eigenschaft
10 Heap Array von Schlüsseln organisiert als Binärer Baum Jeder Knoten erfüllt die Heap-Eigenschaft Definition (Heap-Eigenschaft) wobei i einen Knoten bezeichnet key(parent(i)) key(i) (1)
11 Heap Array von Schlüsseln organisiert als Binärer Baum Jeder Knoten erfüllt die Heap-Eigenschaft Definition (Heap-Eigenschaft) wobei i einen Knoten bezeichnet Binary Max-Heap key(parent(i)) key(i) (1)
12 Wiederholung Effiziente Verwaltung in einem Array A: A 0 ist der Wurzel-Knoten left(i) = 2i + 1 right(i) = 2i + 2 parent(i) = i 1 2, i > 0
13 Wiederholung Effiziente Verwaltung in einem Array A: A 0 ist der Wurzel-Knoten left(i) = 2i + 1 right(i) = 2i + 2 parent(i) = i 1 2, i > 0 height(a, x) = maximale Anzahl von Kannten bis zu einem Blatt height(a, x) = 0 falls isleaf (x) height(a) = height(a, 0) = log n, wenn A balanciert maxsize(a, h) = 2 h n 2 h+1 = # Knoten auf Level h max
14 Wiederholung Indices
15 Wiederholung Indices, left i 2i
16 Wiederholung Indices, left i 2i + 1, right i 2i
17 Wiederholung Indices, left i 2i + 1, right i 2i + 2, parent i i
18 Wiederholung
19 Heapify Voraussetzung Eingabe ist ein Knoten x, wobei isheap(h, left(x)) = isheap(h, right(x)) = true (2)
20 Heapify Voraussetzung Eingabe ist ein Knoten x, wobei isheap(h, left(x)) = isheap(h, right(x)) = true (2) Top-Down rekursiv Array-Elemente vertauschen wenn Heap-Eigenschaft verletzt ist
21 Heapify 1 c l a s s Heap { 2 p r i v a t e T a r r a y [ ] ; 3 p r i v a t e i n t l e n g t h ; 4 5 p r i v a t e T key ( i n t i ) ; 6 p r i v a t e void swap ( i n t i, i n t j ) ; 7 p r i v a t e void r e s i z e ( ) ; p u b l i c void h e a p i f y ( i n t i ) ; }
22 Heapify 1 void h e a p i f y ( i n t i ) 2 { 3 i n t x = i ; 4 i f ( l e f t ( i ) < l e n g t h 5 && key ( l e f t ( i ) ) > key ( i ) ) 6 x = l e f t ( i ) ; 7 i f ( r i g h t ( i ) < l e n g t h 8 && key ( r i g h t ( i ) ) > key ( x ) ) 9 x = r i g h t ( i ) ; 10 i f ( x == i ) 11 return ; 12 swap ( i, x ) ; 13 h e a p i f y ( x ) ; 14 }
23 Effizienz Anzahl der Rekursiven Aufrufe: height(0)
24 Effizienz Anzahl der Rekursiven Aufrufe: height(0) Laufzeit in O(log n) Speicher in O(n)
25 Effizienz Anzahl der Rekursiven Aufrufe: height(0) Laufzeit in O(log n) Speicher in O(n) Funktionsstack?
26 Effizienz Anzahl der Rekursiven Aufrufe: height(0) Laufzeit in O(log n) Speicher in O(n) Funktionsstack? Tail-Rekursion
27 Build Bottom-Up iterativer Aufruf von Heapify
28 Build Bottom-Up iterativer Aufruf von Heapify Beginnend mit 1-er 1 void b u i l d ( a r r a y a ) 2 { 3 a r r a y = a ; 4 l e n g t h = a r r a y. s i z e ( ) ; 5 i f ( l e n g t h == 0) return ; 6 // f o r ( i n t i = l e n g t h 1; i >=0; i ) 7 f o r ( i n t i = l e n g t h /2 1; i >=0; i ) 8 h e a p i f y ( i ) 9 }
29 Build-Laufzeit O(n log n) (3)
30 Build-Laufzeit Aber die Schranke ist zu großzügig: log n n 2 h+1 O(h) = O n h=0 O(n log n) (3) log n h=0 h = O(n) (4) 2 h
31 Sortierung Priority-Queue
32 ort Aufbau Heap
33 ort Aufbau Heap Tausch erstes und letztes Element
34 ort Aufbau Heap Tausch erstes und letztes Element length dekrementieren
35 ort Aufbau Heap Tausch erstes und letztes Element length dekrementieren root heapifizieren
36 Priority-Queue get-max O(1) extract-max O(log n) insert O(log n) increase-key O(log n)
37 get-max trivial
38 extract-max ersten mit letztem Knoten vertauschen length dekrementieren (neuen root) heapifizieren
39 extract-max ersten mit letztem Knoten vertauschen length dekrementieren (neuen root) heapifizieren 1 node extract_max ( ) 2 { 3 i f ( l e n g t h == 0) 4 throw RuntimeError ( " Heap i s empty " ) ; 5 swap ( 0, l e n g t h ) ; 6 h e a p i f y ( 0 ) ; 7 return a r r a y [ l e n g t h ] ; 8 }
40 Insert Array um 1 vergrößern Knoten an die letzte Stelle speichern Knoten nach oben tauschen, bis die Heap-Eigenschaft nicht mehr verletzt ist Bottom-Up 1 void i n s e r t ( node o ) 2 { 3 r e s i z e ( ) ; 4 i n t i = l e n g t h ; 5 a r r a y [ l e n g t h ++] = o ; 6 w h i l e ( i > 0) 7 i f ( key ( i ) > key ( p a r e n t ( i ) ) ) { 8 swap ( i, p a r e n t ( i ) ) ; 9 i = p a r e n t ( i ) ; 10 } 11 }
41 Sortierung
42 Sortierung gute Quicksort Implementierung; hat geringere konstante Laufzeitfaktoren in der Praxis
43 Sortierung gute Quicksort Implementierung; hat geringere konstante Laufzeitfaktoren in der Praxis Priority-Queue
44 Sortierung gute Quicksort Implementierung; hat geringere konstante Laufzeitfaktoren in der Praxis Priority-Queue beispielsweise Job-Scheduling
45 Red-Black-Trees Binary Search Tree Balenced d.h. ein RB-Tree wird ausbalanciert
46 Red-Black-Trees Binary Search Tree Balenced d.h. ein RB-Tree wird ausbalanciert Blätter sind Nil-Marker und speichern keine Schlüssel en:
47 Red-Black-Trees Binary Search Tree Balenced d.h. ein RB-Tree wird ausbalanciert Blätter sind Nil-Marker und speichern keine Schlüssel en: In-Memory Index-Strukturen Maps, assoziative Arrays (z.b. C++ STL map, Java TreeMap)
48 Red-Black-Trees Binary Search Tree Balenced d.h. ein RB-Tree wird ausbalanciert Blätter sind Nil-Marker und speichern keine Schlüssel en: In-Memory Index-Strukturen Maps, assoziative Arrays (z.b. C++ STL map, Java TreeMap) Definition (Red-Black-Tree) Ein Binärer-Suchbaum ist ein Red-Black-Tree, wenn jeder Knoten x die Red-Black-Eigenschaften erfüllt.
49 Red-Black-Tree Beispiel nil 5 8 nil nil nil nil
50 Red-Black-Eigenschaften Definition (Red-Black-Eigenschaften) Jeder Knoten x in einem Red-Black-Tree erfüllt folgende Eigenschaften: 1 color(x) {red, black} 2 isroot(x) color(x) = black 3 isleaf (x) color(x) = black key(x) = nil 4 color(x) = red color(left(x)) = color(right(x)) = black 5 {blacknodes(p) l leaves(x), p path(x, l)} = 1
51 Höhe Beobachtung Bei einem Red-Black-Tree der Höhe h ist die Anzahl der roten Knoten auf einem Pfad maximal h/2.
52 Höhe Beobachtung Bei einem Red-Black-Tree der Höhe h ist die Anzahl der roten Knoten auf einem Pfad maximal h/2. Lemma (RB-Höhe) Die Höhe h von einem Red-Black-Tree mit n internen Knoten ist 2 log(n + 1).
53 Höhe Beweis-Skizze Wenn alle Knoten schwarz sind folgt dies direkt aus der 2. RB-Eigenschaft ( blackheight(root) = log n)
54 Höhe Beweis-Skizze Wenn alle Knoten schwarz sind folgt dies direkt aus der 2. RB-Eigenschaft ( blackheight(root) = log n) Sonst: Die Längen der Pfade zu den Blättern können sich nur durch rote Knoten unterscheiden
55 Höhe Beweis-Skizze Wenn alle Knoten schwarz sind folgt dies direkt aus der 2. RB-Eigenschaft ( blackheight(root) = log n) Sonst: Die Längen der Pfade zu den Blättern können sich nur durch rote Knoten unterscheiden Maximal-Anzahl von roten Knoten ist bekannt
56 Höhe Beweis-Skizze Wenn alle Knoten schwarz sind folgt dies direkt aus der 2. RB-Eigenschaft ( blackheight(root) = log n) Sonst: Die Längen der Pfade zu den Blättern können sich nur durch rote Knoten unterscheiden Maximal-Anzahl von roten Knoten ist bekannt Pfad-Länge l im Intervall: blackheight(root) l 2blackheight(root)
57 Effizienz Direkte Folgerung aus dem Lemma:
58 Effizienz Direkte Folgerung aus dem Lemma: Lookup/Insert/Delete in O(log n)
59 Insert Knoten x wie in einen BST einfügen (O(log n)), color(x) = red
60 Insert Knoten x wie in einen BST einfügen (O(log n)), color(x) = red Beobachtung Ein neu eingefügter Knoten ist ein Blatt.
61 Insert Knoten x wie in einen BST einfügen (O(log n)), color(x) = red Beobachtung Ein neu eingefügter Knoten ist ein Blatt. Nun kann eine der Red-Black-Eigenschaften verletzt sein welche?
62 Insert Knoten x wie in einen BST einfügen (O(log n)), color(x) = red Beobachtung Ein neu eingefügter Knoten ist ein Blatt. Nun kann eine der Red-Black-Eigenschaften verletzt sein welche? Falls ja, RB-Tree korrigieren (O(log n))
63 Rotationen a x b y c Rechts- Rotation um y Links- Rotation um x a x b y c
64 Rotationen a x b y c Rechts- Rotation um y Links- Rotation um x a x b y c Beobachtung Rotation verändert nicht den in-order key-string.
65 Insert-Fixup Fallunterscheidung color(parent(x)) = black Elter-Knoten ist rot fixen: Großelter-Knoten hat einen Geschwister-Knoten rechts Großtante-Knoten ist rot (Fall 1) Großtante-Knoten ist schwarz Knoten hat Geschwister-Knoten links (Fall 2) Knoten hat Geschwister Knoten links oder rechts (Fall 2+3)
66 Insert-Fixup Fallunterscheidung color(parent(x)) = black Elter-Knoten ist rot fixen: Großelter-Knoten hat einen Geschwister-Knoten rechts Großtante-Knoten ist rot (Fall 1) Großtante-Knoten ist schwarz Knoten hat Geschwister-Knoten links (Fall 2) Knoten hat Geschwister Knoten links oder rechts (Fall 2+3) Großelter-Knoten hat einen Geschwister-Knoten links (symmetrisch) Großtante-Knoten ist rot Großtante-Knoten ist schwarz Knoten hat Geschwister-Knoten rechts Knoten hat Geschwister Knoten links oder rechts
67 Insert-Fixup Fallunterscheidung color(parent(x)) = black Elter-Knoten ist rot fixen: Großelter-Knoten hat einen Geschwister-Knoten rechts Großtante-Knoten ist rot (Fall 1) Großtante-Knoten ist schwarz Knoten hat Geschwister-Knoten links (Fall 2) Knoten hat Geschwister Knoten links oder rechts (Fall 2+3) Großelter-Knoten hat einen Geschwister-Knoten links (symmetrisch) Großtante-Knoten ist rot Großtante-Knoten ist schwarz Knoten hat Geschwister-Knoten rechts Knoten hat Geschwister Knoten links oder rechts Bottom-Up RB-Eigenschaft wiederherstellen
68 Beispiel: Fall 1 (Nil-Blätter nicht dargestellt)
69 Beispiel: Fall 1 (Nil-Blätter nicht dargestellt)
70 Beispiel: Fall 1 (Nil-Blätter nicht dargestellt) Farben vertauschen, 2-level Bottom-Up 4. RB-Eigenschaft verletzt
71 Beispiel: Fall
72 Beispiel: Fall
73 Beispiel: Fall Links Rotation um x 4. RB-Eigenschaft verletzt
74 Beispiel: Fall 3a
75 Beispiel: Fall 3a
76 Beispiel: Fall 3a Farbentausch 2. RB-Eigenschaft verletzt
77 Beispiel: Fall 3b
78 Beispiel: Fall 3b
79 Beispiel: Fall 3b Rechts-Rotation um parent(parent(x)) fertig
80 Abgrenzung Warum nicht einfach eine Hashtable nehmen?!?
81 Abgrenzung Warum nicht einfach eine Hashtable nehmen?!? BTrees?
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
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
MehrÜbersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015
Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter
Mehr8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
MehrDatenstrukturen & 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
MehrSortieren 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
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein
Mehr11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
MehrAuswählen nach Rang (Selektion)
Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B7. Balancierte Bäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 13. April 2018 1 Folien basieren auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/33balancedsearchtrees-2x2.pdf
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 11 (1.6.2016) Binäre Suchbäume III Algorithmen und Komplexität Tiefe eines binären Suchbaums Worst-Case Laufzeit der Operationen in binären
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer
MehrKapitel 8 Fortgeschrittene Sortieralgorithmen
Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n
MehrDatenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)
Aufgabe 3 a) Wir verwenden zur Lösung den Algorithmus Build-Heap 1, dieser verwendet die Funktion Heapify. Unser Array A ist gegeben durch [7, 10,, 5, 5,, 3, 3, 17]. 10 5 5 3 17 7 Abbildung 1: Das Array
Mehr14. Rot-Schwarz-Bäume
Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 10 (28.5.2018) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 018/19 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I - 4 Heute: Wir bauen eine Datenstruktur Datenstruktur: Konzept,
MehrHeapsort. Ziel: Sortieren Feld A[1..n]von nschlüsseln in O(n log n)worst case Zeit(so wie Mergesort), aber ohne Zusatzspeicher(so wie Quicksort).
Heapsort Ziel: Sortieren Feld A[..n]von nschlüsseln in O(n log n)worst case Zeit(so wie Mergesort), aber ohne Zusatzspeicher(so wie Quicksort). Abstrakte Speichere die Schlüssel in A[]in den ersten n Knoten
MehrMengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps
// Mengen Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps n Ziel: ufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: n eines Elements n eines Elements
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Prioritätswarteschlangen Maike Buchin 18. und 23.5.2017 Prioritätswarteschlange Häufiges Szenario: dynamische Menge von Objekten mit Prioritäten, z.b. Aufgaben, Prozesse, in der
MehrBinäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps
Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
Mehr9. Natürliche Suchbäume
Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten
MehrWerden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
7. 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.
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen
MehrVorlesung 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,
MehrNatürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16
Natürliche Bäume (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 18:16 Natürliche Bäume 1/16 Bäume Begriffe (1/2) Bäume sind verallgemeinerte Listenstrukturen ein
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Fortgeschrittene Datenstrukturen Such-Algorithmen
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:
Mehr18. Natürliche Suchbäume
Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile
MehrAlgorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B7.1 Einführung. B Bäume. B7.3 Rot-Schwarz Bäume
B7. Balancierte Bäume a B7. Balancierte Bäume 1 Marcel Lüthi and Gabriele Röger Universität Basel a Folien basieren auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/33balancedsearchtrees-2x2.pdf
MehrHeapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays
Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array
MehrDefinition 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
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
MehrDynamische Datenstrukturen
Dynamische Datenstrukturen B-Bäume größere Datenmengen verwalten Extern speichern Art der Speicherung berücksichtigen sonst kein optimaler Datenzugriff möglich Art der Speicherung großer Datenmengen Magnetplatten
MehrAlgorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin
Departement Mathematik und Informatik Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin 5. April 2017 Suchbäume I Andrew D. Booth Algorithmen und Datenstrukturen, FS17 5. April 2017 2 /
MehrTeil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1
Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene
MehrVL-11: Rot-Schwarz Bäume. (Datenstrukturen und Algorithmen, SS 2017) Janosch Fuchs
VL-11: Rot-Schwarz Bäume (Datenstrukturen und Algorithmen, SS 2017) Janosch Fuchs SS 2017, RWTH DSAL/SS 2017 VL-11: Rot-Schwarz Bäume 1/41 Organisatorisches Vorlesung: Gerhard Woeginger (Zimmer 4024 im
MehrINSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS
Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales 7.
MehrAlgorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Einführung. B6.2 Symboltabellen. B6.3 Einfache Implementationen
Algorithmen und Datenstrukturen 03. April 2019 B6. Symboltabellen a Algorithmen und Datenstrukturen B6. Symboltabellen 1 Marcel Lüthi and Gabriele Röger Universität Basel 03. April 2019 a Folien basieren
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Sortierte Folgen Maike Buchin 30.5., 1.6., 13.6.2017 Sortierte Folgen Häufiges Szenario: in einer Menge von Objekten mit Schlüsseln (aus geordnetem Universum) sollen Elemente
Mehr18. Natürliche Suchbäume
Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten
MehrAlgorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B7.1 Einführung. B Bäume. B7.3 Rot-Schwarz Bäume.
B7. Balancierte Bäume a B7. Balancierte Bäume 1 Marcel Lüthi and Gabriele Röger Universität Basel a Folien basieren auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/33balancedsearchtrees-2x2.pdf
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge
MehrAlgorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-5. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-16 Heaps 1 Heaps Binäre Heaps Erhalten der Heap-Eigenschaft Erzeugen eines
MehrAlgorithmen und Datenstrukturen I Bruder-Bäume
Algorithmen und Datenstrukturen I Bruder-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 11.12.2017 10:50 Algorithmen und Datenstrukturen I, Bruder-Bäume 1/24 Definition ein binärer Baum heißt ein Bruder-Baum,
MehrSatz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).
2.6 Vergleichsbasierte Sortierverfahren Alle bisher betrachteten Sortierverfahren sind vergleichsbasiert, d.h. sie greifen auf Schlüssel k, k (außer in Zuweisungen) nur in Vergleichsoperationen der Form
MehrWas bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch
Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch verschiedene Datenstrukturen: lineare Datenstrukturen: Array,
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist
MehrInformatik II Bäume zum effizienten Information Retrieval
lausthal Informatik II Bäume zum effizienten Information Retrieval. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Binäre Suchbäume (binary search tree, BST) Speichere wieder Daten als "Schlüssel
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 217 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 2 Agenda
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
Mehr2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus
2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus {0, 1,..., B 1} d in Zeit O(d(n + B)) sortiert werden, indem sie zuerst gemäß dem letzten
MehrInformatik II Vorlesung am D-BAUG der ETH Zürich
Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:
MehrTrees. November 14, Algorithms & Datastructures 2 Exercises WT 2017
Trees November 14, 2017 Algorithms & Datastructures 2 Exercises WT 2017 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz anzengruber@pervasive.jku.at Binärbaum
MehrBinäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps
Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer
MehrBäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
MehrAbstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.
Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung
MehrTrees. November 13, Algorithms & Datastructures 2 Exercises WT 2017
Trees November 13, 2018 Algorithms & Datastructures 2 Exercises WT 2017 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz anzengruber@pervasive.jku.at Binärbaum
MehrAVL-Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. AVL-Bäume 1/38
AVL-Bäume (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 18:16 AVL-Bäume 1/38 Balancierte Bäume in einem zufällig erzeugten Binärbaum haben die Algorithmen Suchen,
MehrAnwendungsbeispiel MinHeap
Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n
MehrAlgorithmen 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
MehrEinfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden
5.6.2 AVL-Bäume Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden AVL-Bäume, benannt nach ihren Erfindern G. M. Adelson- Velskii und E. M. Landis,
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei
Mehr8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrTechnische Universität München
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrWünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)
.6 Ausgeglichene Mehrweg-Suchbäume Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n) Methoden: lokale Transformationen (AVL-Baum) Stochastische
MehrAlgorithmen und Datenstrukturen 2. Dynamische Datenstrukturen
Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl
MehrKomplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT
Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus Algorithmen verbrauchen Ressourcen Rechenzeit
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste
MehrÜ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
MehrAlgorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel
Algorithmen und Datenstrukturen Bäume M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Baumstrukturen und Ihre Verwendung kennen Grundbegriffe zu Bäumen anwenden können Baumstruktur in C anlegen können Suchbäume
MehrSuchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,
MehrEINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrKap. 3: Sortieren (3)
Kap. 3: Sortieren (3) Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 6. VO DAP2 SS 2009 30. April 2009 Überblick Quick-Sort Analyse von Quick-Sort Quick-Sort
Mehr(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016
(Digital) Sorting October 2, 2016 Algorithms & Datastructures 2 Exercises WS 2016 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at
Mehr14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
MehrUmstrukturierung durch Rotationen
Umstrukturierung durch Rotationen (Folie 109, Seite 52 im Skript) P P T A A D B T B C C D Eine Rechtsrotation um T. Die Suchbaumeigenschaft bleibt erhalten. B, C, D können nur aus externen Knoten bestehen.
MehrAufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion
Abschnitt 1 Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion Aufgabe 1: Binäre Suchbäume: Iteratives Suchen/Einfügen/Löschen Das Material dieser Übung enthält in der Klasse Tree0 die
Mehr3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
Mehr> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013. Parallele und Verteilte Systeme, Institut für Informatik
> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013 Parallele und Verteilte Systeme, Institut für Informatik Inhaltsverzeichnis 2 1 Besprechung des 4. Übungsblattes Aufgabe
Mehr8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
MehrWintersemester 2004/ Dezember 2004
Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim
MehrBemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl:
Heapsort Bemerkung: Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern mit logarithmischem Aufwand durch Verwendung einer besonderen
Mehr3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen. Heapsort verfeinert die Idee des Sortierens durch Auswahl:
Heapsort 3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern
MehrPriority Queues and Heapsort
19. ovember 2012 Prioritätswarteschlangen und Priority Queues and Ferd van denhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software ngineering 19. ovember 2012 D/FHTBM Priority Queues and 19.
MehrDr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund
EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrEINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17
EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrAlgorithmen I - Tutorium 28 Nr. 7
Algorithmen I - Tutorium 28 Nr. 7 14.07.2016: Spaß mit Heaps und weiteren Baeumen Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE KIT
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume Marcel Lüthi and Gabriele Röger Universität Basel 22. März 2018 Einführung Abstrakter Datentyp / Datenstruktur Abstrakter Datentyp Eine Menge
Mehr