Kapitel 9 Suchalgorithmen
|
|
|
- Julian Bergmann
- vor 10 Jahren
- Abrufe
Transkript
1 Kapitel 9 Suchalgorithmen Technische Universität München Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in Datenbanken, Google-Search, DNA-Tests Suchen nach ähnlichen Mustern: z.b. Viren, Malware Bilderkennungsverfahren: Suchen nach Pattern Ziel: einfache Suchverfahren auf Listen und Bäumen Basis: Elementare Datenstrukturen Effiziente Datenstrukturen: Bäume, Listen und Hashtabellen AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 1
2 Im Folgenden: Suchalgorithmen angepasst an die Anforderungen: 1. Statische, kleine Menge, selten Suchoperation notwendig: Lösung: Feld als Datenstruktur und sequentielles Suchen: O(n) 2. Statische, kleine Menge, häufige Zugriffe/Suchoperationen Lösung: Vorsortiertes O(n log n) Feld, binäres Suchen O(log n) 3. Dynamisch, große Menge von Elementen, z.b. Personaldaten Lösung: Baum als dynamische Datenstruktur (einfügen, löschen), organisiert als binärer Suchbaum O(h), h ist Baumhöhe Worst-Case: h = n, Best-Case: h= log n (balanciert) 4. Dynamisch, große Menge, viele, effiziente Zugriffe notwendig z.b. große Produktdatenbanken, Suchmaschinen, Lösung: Binärer Suchbaum, der eine möglichst geringe Höhe h garantiert: z.b. Rot-Schwarz Baum AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 2
3 Suchalgorithmen analog zum Sortieren: Charakterisierung der gesuchten Objekte durch Such-Schlüssel. Such-Schlüssel können z.b. Attribute der Objekte sein. Beispiel: Versicherungsnummer von Personen 9.1 Lineare Suche Gegeben sei ein Feld A[1.. n] von (ggf. auch unsortierten) Datenelementen und ein Element x mit Such-Schlüssel k. Idee der linearen Suche: sequentielles Durchlaufen des Feldes A und Vergleich der Schlüssel A[i], i=1,, n, mit dem Such-Schlüssel k. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 3
4 Laufzeitanalyse: Best-Case: sofortiger Treffer: T(n) = 1, also T(n) = O(1) Worst-Case: alles durchsuchen: T(n) = n, also T(n) = O(n) Average-Case: erfolgreiche Suche unter der Annahme, dass jede Anordnung der Elemente gleich wahrscheinlich ist: T(n) = also T(n) = O(n) Fazit: sehr einfaches Verfahren, eignet sich auch für einfach verkettete Listen, das Verfahren ist auch für unsortierte Felder geeignet, aber das Verfahren ist nur für kleine Werte von n praktikabel. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 4
5 9.2 Binäre Suche Falls in einer Folge häufig gesucht werden muss, so lohnt es sich, die Feldelemente sortiert zu speichern. Vorgehen: Eingabe: Sortiertes Feld halbieren des Suchbereichs in jedem Schritt, indem der gesuchte Wert mit dem Wert auf der Mittelposition des geordneten Feldes verglichen wird. Gesuchter Wert ist kleiner: weiterarbeiten mit linkem Teilfeld. Gesuchter Wert ist größer: weiterarbeiten mit rechtem Teilfeld. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 5
6 Eingabe: Feld A[1.. n], Schlüssel s Ausgabe: Position von s oder 0, falls s nicht vorhanden BINARY-SEARCH(A, s) 1 l = 1 2 r = n 3 while (s A[m] und l r) 4 m = (l + r) / 2 5 if s < A[m] 6 r = m 1 7 else l = m if s == A[m] 9 return m 10 else return 0 Beispiel: Eingabe: Sortiertes Feld A = (5, 15, 20, 22, 37) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 6
7 Binary Search Algorithm C Code int BinarySearch(int *array, int key, int low, int high) { int middle; if(low > high) /* termination case */ return -1; middle = (low+high)/2; if(array[middle] == key) return middle; else if(array[middle] > key) return BinarySearch(array, key, low, middle-1); /* search left */ return BinarySearch(array, key, middle+1, high); /* search right */ } AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 7
8 Binary Search Algorithm C Code #include <stdbool.h> typedef unsigned long ulong; typedef int (*CompareProc) /* compares an element key against the desired key */ ( ulong Element, void * Arg ); /* result should be -1, 0 or +1, indicating whether given key is less than, equal to or greater than desired key. */ bool Search ( ulong LowBound, ulong HighBound, CompareProc Compare, void * CompareArg, bool ReturnGreater, ulong * Location ) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 8
9 Binary Search Algorithm C Code { ulong MidElement; bool Found; int Comparison; for (;;) { if (LowBound > HighBound) { Found = false; if (ReturnGreater) { *Location = LowBound; } else { *Location = HighBound; } /*if*/ break; } /*if*/ MidElement = (LowBound + HighBound) / 2; Comparison = Compare(MidElement, CompareArg); if (Comparison < 0) { LowBound = MidElement + 1; } else if (Comparison > 0) { HighBound = MidElement - 1; } else { *Location = MidElement; Found = true; break; } /*if*/ } /*for*/ return Found; } /*Search*/ AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 9
10 Laufzeitanalyse: Zählen der Anzahl der Vergleiche Best-Case: sofortiger Treffer: T(n) = 1, also T(n) = O(1) Worst-Case: Suchbereich muss solange halbiert werden, bis er nur noch 1 Element enthält, also im schlechtesten Fall logarithmisch oft : T(n) = T(n/2) 1 = log(n + 1), T(n) = (log n) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 10
11 Laufzeitanalyse: Zählen der Anzahl der Vergleiche Average-Case: es gilt T(n) = = Θ(log n) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 11
12 Fazit: Binäre Suche gut geeignet für große Werte n Beispiel: sei n = 2 Millionen Lineare Suche benötigt im Worst Case 2 Millionen Vergleiche Binäre Suche benötigt: log (2 * 10 6 ) 20 Vergleiche nicht gut geeignet, wenn sich die Daten häufig ändern, dann ist das Suchen in binären Suchbäumen (s.u.) besser geeignet. 9.3 Suchen in binären Suchbäumen Kapitel 7: Entscheidungsbaum für Sortieren ist auch ein Suchbaum Binärer Suchbaum: Datenstruktur, um in einer dynamisch sich ändernden Menge von Daten zu suchen AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 12
13 Repräsentation eines binären Suchbaumes: als eine verkettete Liste. Jeder Knoten des Baumes besitzt mindestens die Attribute: Suchschlüssel, links, rechts, p, das sind Verweise auf das linke und rechte Kind, sowie auf den Vaterknoten (vgl. Kapitel 7) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 13
14 Suchbaum-Eigenschaft Der Baum ist so organisiert, dass die Suchbaum-Eigenschaft gilt: sei x ein Knoten und y ein Knoten im linken Unterbaum von x, dann gilt: schlüssel[y] schlüssel[x]. Ist y ein Knoten im rechten Unterbaum von x, so gilt: schlüssel[x] schlüssel[y]. Eigenschaften binärer Suchbäume Operationen auf dem Baum, wie Suchen, Einfügen, Entnehmen, sind in O(h) Schritten ausführbar, wobei h die Höhe des Baumes ist. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 14
15 Binärer Suchbäume Bem.: Unterschiedliche binäre Suchbäume können die gleiche Menge von Werten repräsentieren. Beispiel: Eingabe: Werte 2, 3, 5, 7, 8 Fall (a) Suchbaum mit 6 Knoten der Höhe h = 2 Fall (b) Suchbaum mit gleichen Schlüssel, der weniger effizient organisiert ist und die Höhe h = 4 besitzt. Fall (a) Fall (b) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 15
16 9.3.1 Suchen in binären Suchbäumen Aufgabe: Suche nach einem Schlüssel k in dem Baum. Rekursive Beschreibung der Suche: durch Rekursion wird ein Pfad von der Wurzel zum gesuchten Knoten beschrieben, d.h. Laufzeit von Tree-Search ist O(h), h ist die Baumhöhe. TREE-SEARCH(x, k) 1 if x == NULL oder k == schlüssel[x] 2 return x 3 if k < schlüssel[x] 4 return TREE-SEARCH(links[x], k) 5 else return TREE SEARCH(rechts[x], k) Beispiel: Suche nach k=13 AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 16
17 Häufig ist eine rekursiv programmierte Suche auf Rechnern nicht so effizient ausführbar wie eine iterativ programmierte Suche. Iterative Beschreibung der Suche: ITERATIVE-TREE-SEARCH(x, k) 1 while x NULL und k schlüssel[x] 2 if k < schlüssel[x] 3 x = links[x] 4 else x = rechts[x] 5 return x AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 17
18 9.3.2 Minimum und Maximum Suche Eine häufig benötigte Operation ist die Suche nach dem kleinsten bzw. größten Element des Baumes. Suche nach kleinstem Element: ist wegen der binären Suchbaum-Eigenschaft sehr einfach: gehe von der Wurzel immer den linken Teilbaum hinunter: Tree-Minimum gibt einen Zeiger auf das Element x mit dem kleinsten Schlüssel zurück. Terminierung, wenn der linke Teilbaum eines Knotens x NULL ist TREE-MINIMUM (x) 1 while links[x] NULL 2 x = links[x] 3 return x Beispiel-Baum auf Folie 14: minimales Element: x = 2 AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 18
19 Suche nach größtem Element: analoges Vorgehen gehe von der Wurzel immer den rechten Teilbaum hinunter: Tree-Maximum gibt einen Zeiger auf das Element x mit dem größten Schlüssel zurück. Terminierung, wenn der rechte Teilbaum eines Knotens x NULL ist Beispiel-Baum auf Folie 14: maximales Element: x = 20 Laufzeit: TREE-MAXIMUM(x) 1 while rechts[x] NULL 2 x = rechts[x] 3 return x Tree-Minimum und Tree-Maximum benötigen für einen Baum mit Höhe h eine Laufzeit von O(h); Berechnung baut einen Pfad von der Wurzel bis zum Blatt entlang linker bzw. rechter Äste auf. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 19
20 9.3.3 Nachfolgerknoten eines Knotens x Seien die Schlüssel der Knoten paarweise verschieden, dann gilt: Nachfolger von x ist der Knoten y mit: schlüssel[x] < schlüssel[y] und für alle Knoten r y, mit schlüssel[x] < schlüssel[r] gilt: schlüssel[y] < schlüssel[r] TREE-SUCCESSOR(x) 1 if rechts[x] NIL 2 return TREE-MINIMUM(rechts[x]) 3 y = p[x] 4 while y NIL und x == rechts[y] 5 x = y 6 y = p[y] 7 return y AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 20
21 9.3.4 Einfügen und Löschen in binärem Suchbaum Ziel: Aufrechterhalten der binären Suchbaum-Eigenschaft! Einfügen Einzufügen sei ein Knoten z, mit schlüssel[z] = v, links[z] = NULL, rechts[z] = NULL Finden der korrekten Position TREE-INSERT(T, z) 1 y = NULL 2 x = wurzel[t] 3 while x NULL 4 y = x 5 if schlüssel[z] < schlüssel[x] 6 x = links[x] 7 else x = rechts[x] 8 p[z] = y 9 if y == NULL 10 wurzel[t] = z 11 else if schlüssel [z] < schlüssel[y] 12 links[y] = z 13 else rechts[y] = z AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 21
22 Beispiel: Einfügen eines Knotens z mit schlüssel[z] = 13 Hell schattierte Knoten in Abb.: Pfad von der Wurzel bis zur korrekten Position Gestrichelte Linie: neue Verbindung, um das Element z einzufügen Tree-Insert startet bei der Wurzel: Zeiger x verfolgt den Pfad, Zeiger y verweist auf den Vater von x, In der while-schleife wandern beide Zeiger im Baum nach unten. Wenn x auf NULL verweist: Position für das Einfügen ist gefunden. Anweisungen in den Zeilen 8-13 fügen Knoten z ein. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 22
23 Einfügen ist somit auch eine einfache Operation auf Suchbäumen. Die Laufzeit von Tree-Insert ist ebenfalls O(h), h ist die Baumhöhe. Löschen Vgl. nächste Folie, dort ist das Vorgehen veranschaulicht. TREE-SUCCESSOR(x) 1 if rechts[x] NIL 2 return TREE-MINIMUM(rechts[x]) 3 y = p[x] 4 while y NIL und x == rechts[y] 5 x = y 6 y = p[y] 7 return y TREE-DELETE(T, z) 1 if links[z] == NULL or rechts[z] == NULL 2 y = z 3 else y = TREE-SUCCESSOR(z) 4 if links[y] NULL 5 x = links[y] 6 else x = rechts[y] 7 if x NULL 8 p[x] = p[y] 9 if p[y] == NULL 10 wurzel[t] = x 11 else if y = links[p[y]] 12 links[p[y]] = x 13 rechts[p[y]] = x 14 if y z 15 schlüssel[z] = schlüssel[y] 16 kopiere die Daten von y in z 17 return y AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 23
24 Beispiel: die drei Fälle des Tree-Delete Fall (a) z hat keine Kinder Fall (b) z hat nur ein Kind Fall (c) z hat 2 Kinder AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 24
25 Bem.: Die Operationen auf binären Suchbäumen haben alle eine Laufzeit, die proportional zu Höhe des Baumes ist. Binäre Suchbäume können aber degeneriert sein, d.h. bei einem Baum mit n Knoten kann im Worst-Case die Laufzeit (n) sein Ziel: Strukturieren von Suchbäumen so, dass Höhe h für gute Performance sorgt! Lösung: Konstruktion von balancierten Suchbäumen, so dass gilt: Der Baum hat eine garantierte kleine Höhe und die Laufzeit ist O(lg n). B-Bäume, AVL-, oder Rot-Schwarz-Bäume sind hierfür geeignet AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 25
26 9.4 Rot-Schwarz-Baum (R. Bayer, 1972) Ein Rot-Schwarz-Baum ist ein Binärer Suchbaum, der näherungsweise balanciert ist. Die Knoten des Baumes besitzen ein zusätzliches Attribut: farbe Das Attribut farbe kann zwei Werte annehmen: rot und schwarz Ein Rot-Schwarz-Baum erfüllt die Rot-Schwarz-Eigenschaft: Jeder Knoten ist entweder rot oder schwarz. Die Wurzel ist schwarz und jedes Blatt ist schwarz. Wenn ein Knoten rot ist, dann sind seine beiden Kinder schwarz. Für jeden Knoten x enthalten alle Pfade mit der Wurzel x und die in einem Blatt des Teilbaums von x enden, die gleiche Anzahl schwarzer Knoten. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 26
27 Rot-Schwarz-Eigenschaft (Wiederholung) 1. Jeder Knoten ist entweder rot oder schwarz. 2. Die Wurzel ist schwarz und jedes Blatt ist schwarz. 3. Wenn ein Knoten rot ist, dann sind seine beiden Kinder schwarz. 4. Für jeden Knoten x enthalten alle Pfade mit der Wurzel x und die in einem Blatt des Teilbaums von x enden, die gleiche Anzahl schwarzer Knoten. Beispiel: AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 27
28 Beispiel für einen Rot-Schwarz-Baum (siehe Cormen) Bei der Darstellung werden aber idr die NIL-Blätter ignoriert und nur die inneren Knoten betrachtet: AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 28
29 Operationen auf Rot-Schwarz-Bäumen AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 29
30 9.4.1 Einfügen auf Rot-Schwarz-Bäumen Zentrale Operation: Rotation, um r/s Eigenschaft zu garantieren Fall 1 AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 30
31 Einfügen auf Rot-Schwarz-Bäumen (Forts.) Fall 2 Fall 3 AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 31
32 Rotationen Verändern der Zeigerstrukturen Rotation: lokale Operation auf einem Suchbaum, die die binäre Suchbaumeigenschaft beibehält Linksrotation auf einem Knoten x: Voraussetzung: rechtes Kind y ist nicht NIL dreht die Verbindung zwischen x und y um y wird neue Wurzel und x das linke Kind von y das vor der Rotation linke Kind von y wird das rechte Kind von x Rechtsrotation analog Aufwand: O(1) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 32
33 Rotationen LEFT-ROTATE(T, x) 1 y = rechts[x] // Setze y 2 rechts[x] = links[x] // Wandle y s linken Teilbaum in x s rechten Teilbaum 3 if links[y] NIL 4 p[links[y]] = x 5 p[y] = p[x] // Verbinde den Vater von x mit y 6 if p[x] = NIL 7 wurzel[t] = y 8 else if x == links[p[x]] 9 links[p[x]] = y 10 else rechts[p[x]] = y 11 links[y] = x // Verschiebe x auf 12 p[x] = y // die linke Seite von y AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 33
34 Einfügen in Rot/Schwarz-Baum Variante der Tree-Insert-Operation, O(lg n) Anschließend wird neuer Knoten rot gefärbt Sicherstellen der r/s-eigenschaft: Aufruf von RB-Insert-Fixup: Knoten werden neu gefärbt und Rotationen durchgeführt RB-INSERT(T, z) 1 y = NIL 2 x = wurzel[t] 3 while x NIL 4 y = x 5 if schlüssel[z] < schlüssel[x] 6 x = links[x] 7 else x = rechts[x] 8 p[z] = y 9 if y == NIL 10 wurzel[t] = z 11 else if schlüssel[z] < schlüssel[y] 12 links[y] = z 13 else rechts[y] = z 14 links[z] = NIL 15 rechts[z] = NIL 16 farbe[z] = ROT 17 RB-INSERT-FIXUP(T, z) RB-INSERT-FIXUP(T, z) 1 while farbe[p[z]] == ROT 2 if p[z] == links[p[p[z]]] 3 y = rechts[p[p[z]]] 4 if farbe[y] == ROT 5 farbe[p[z]] = SCHWARZ 6 farbe[y] = SCHWARZ 7 farbe[p[p[z]]] = ROT 8 z = p[p[z]] 9 else if z == rechts[p[z]] 10 z = p[z] 11 LEFT-ROTATE(T, z) 12 farbe[p[z]] = SCHWARZ 13 farbe[p[p[z]]] = ROT 14 RIGHT-ROTATE(T, p[p[z]]) 15 else (wie der then-zweig, wobei rechts und links vertauscht sind) 16 farbe[wurzel[t]] = SCHWARZ AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 34
35 9.4.2 Entfernen aus Rot/Schwarz-Baum Variante der Tree-Delete-Operation für binäre Suchbäume, O(lg n) Nach Ausschneiden eines Knotens: Aufruf von RB-Delete- Fixup: Knoten werden neu gefärbt und Rotationen durchgeführt RB-DELETE(T, z) 1 if links[z] == NIL oder rechts[z] == NIL 2 y = z 3 else y = TREE-SUCCESSOR(z) 4 if links[y] NIL 5 x = links[y] 6 else x = rechts[y] 7 p[x] = p[y] 8 if p[y] == NIL 9 wurzel[t] = x 10 else if y == links[p[y]] 11 links[p[y]] = x 12 else rechts[p[y]] = x 13 if y z 14 schlüssel[z] = schlüssel[y] 15 kopiere y s Satellitendaten nach z 16 if farbe[y] == SCHWARZ 17 RB-DELETE-FIXUP(T, x) 18 return y RB-DELETE-FIXUP(T, x) 1 while x wurzel[t] und farbe[x] == SCHWARZ 2 if x == links[p[x]] 3 w = rechts[p[x]] 4 if farbe[w] == ROT 5 farbe[w] = SCHWARZ 6 farbe[p[x]] = ROT 7 LEFT-ROTATE(T, p[x]) 8 w = rechts[p[x]] 9 if farbe[links[w]] == SCHWARZ und farbe[rechts[w]] == SCHWARZ 10 farbe[w] = ROT 11 x = p[x] 12 else if farbe[rechts[w]] == SCHWARZ 13 farbe[links[w]] = SCHWARZ 14 farbe[w] = ROT 15 RIGHT-ROTATE(T, w) 16 w = rechts[p[x]] 17 farbe[w] = farbe[p[x]] 18 farbe[p[x]] = SCHWARZ 19 farbe[rechts[w]] = SCHWARZ 20 LEFT-ROTATE(T, p[x]) 21 x = wurzel[t] 22 else (wie then-zweig, wobei rechts und links vertauscht sind) 23 farbe[x] = SCHWARZ AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 35
36 Bezeichnung: Die Anzahl der schwarzen Knoten auf einem Pfad ausgehend von einem Knoten x (aber ohne diesen mitzuzählen) zu einem Blatt heißt die Schwarze Höhe von x: bh(x). Noch einmal Beispiel bh(13) = h(13): längster Pfad = bh(1) = AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 36
37 Rot-Schwarz-Bäume sind sehr gute Suchbäume, denn es gilt: Satz: Ein Rot-Schwarz-Baum mit n inneren Knoten hat höchstens die Höhe 2lg(n + 1), also h 2log(n + 1). Beweis: Zunächst wird gezeigt: der Teilbaum T x zu einem Knoten x besitzt mindestens 2 bh(x) 1 innere Knoten. Beweis durch Induktion über die Höhe von x. (1) Induktionsbasis: h(x) = 0 AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 37
38 (2) Induktionsschritt: Sei x ein innerer Knoten mit 2 Kindern. Jedes Kind hat, abhängig von seiner Farbe, entweder die schwarze Höhe bh(x) (Kind ist rot) oder bh(x) 1 (Kind ist schwarz). Die Höhe eines Kindes von x ist stets kleiner als die Höhe von x. Mit der Induktionsannahme können wir schließen, dass ein Kind von x mindestens 2 bh(x) 1 1 innere Knoten besitzt. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 38
39 Induktionsschritt (Forts.): Also enthält der Teilbaum zu x mindestens (2 bh(x) 1 1) + (2 bh(x) 1 1) + 1 = 2*(2 bh(x) 1 1) + 1 = 2 bh(x) 2 + 1= 2 bh(x) 1 innere Knoten. Weiterhin gilt: Gemäß der Rot-Schwarz-Eigenschaft muss gelten, dass mindestens die Hälfte der Knoten auf jedem Pfad von x zu einem Blatt schwarz sind. Sei h die Höhe des Baumes, dann gilt: Die Schwarz-Höhe der Wurzel ist mindestens h/2, es gilt somit: n 2 h/2 1, durch Umformung gilt: lg(n + 1) h/2 bzw. h 2lg(n + 1) AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 39
40 Beispiel AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 40
41 Bedeutung der bewiesenen Aussage: Die Operationen Search, Minimum oder auch Maximum können auf einem Rot-Schwarz-Baum in O(lg n) implementiert werden, da sie auf einem Baum der Höhe h in O(h) laufen und jeder Rot-Schwarz-Baum ein Suchbaum mit Höhe O(lg n) ist. Auch modifizierte Insert, Delete Operationen liegen in O(lg n). Fazit: Rot-Schwarz-Bäume sind effiziente Strukturen, sie ermöglichen eine schelle Suche etc. Sie setzen aber voraus, dass die Daten und Suchinformationen im Arbeitsspeicher vorliegen, also ein schneller Zugriff möglich ist. Aber: In der Praxis: sehr viele Daten sind zu speichern (z.b. in riesigen Kunden- und Produktdatenbanken). AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 41
42 Die Datenvolumina können nicht alle im Hauptspeicher abgelegt werden. Eine Auslagerung auf externe Festplatten ist notwendig: die Zugriffe sind dann sehr langsam! Lösung: B-Bäume 1972 (R. Bayer): geht über AuD-Stoff hinaus Das Ziel von B-Bäumen ist es, die Daten so zu organisieren, dass die Anzahl der Zugriffe auf externe Medien minimiert wird. B-Bäume sind balancierte Suchbäume Im Unterschied zu Rot-Schwarz-Bäumen kann ein Knoten in einem B-Baum viele Kinder besitzen, bis zu einigen tausend! D.h. der Verzweigungsfaktor eines B-Baumes kann sehr groß sein. Dadurch kann die Höhe eines B-Baumes erheblich geringer sein, als bei einem Rot/Schwarz-Baum. AuD, WS10/11, C. Eckert, Kapitel 9 Suchalgorithmen 42
Kapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in
13. Binäre Suchbäume
1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),
Datenstruktur, die viele Operationen dynamischer Mengen unterstützt
Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)
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
Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &
Grundlagen Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem & Frank Heitmann [email protected] 25. November 2015 Frank Heitmann [email protected]
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 Bäume [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden
Algorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &
Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem & Frank Heitmann [email protected] 25. November 2015 Frank Heitmann [email protected] 1/122
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
3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1
3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)
4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
Vorkurs Informatik WiSe 15/16
Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner
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
15 Optimales Kodieren
15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)
1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
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,...
Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
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).
Tutorium Algorithmen & Datenstrukturen
June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten
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
Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
WS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
Überblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert
Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume
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
Ü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
Kap. 4.2: Binäre Suchbäume
Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:
Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern
Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische
Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.
6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente
Nachtrag zu binären Suchbäumen
Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement
Abschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
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
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens [email protected] Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes
Programm 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
Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.
Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen
Grundlagen der Programmierung 2. Bäume
Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)
Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)
Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der
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
Programmieren I. Kapitel 7. Sortieren und Suchen
Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren
Kapitel 5: Dynamisches Programmieren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN
KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: [email protected] Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume
Konzepte der Informatik
Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens
Binäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail [email protected] Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
Sortierverfahren für Felder (Listen)
Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es
3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel
3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36
Sortierte Folgen 250
Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:
Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
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
Suchen und Sortieren
(Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten
Programmierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Die Komplexitätsklassen P und NP
Die Komplexitätsklassen P und NP Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 3. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und
Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.
Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.
Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung
Kapitel 6 Komplexität von Algorithmen 1 6.1 Beurteilung von Algorithmen I.d.R. existieren viele Algorithmen, um dieselbe Funktion zu realisieren. Welche Algorithmen sind die besseren? Betrachtung nicht-funktionaler
Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.
040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl
50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte
50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien
DATENSTRUKTUREN UND ZAHLENSYSTEME
DATENSTRUKTUREN UND ZAHLENSYSTEME RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: [email protected] Homepage: http://www.cs.uu.nl/~ralf/ March, 2001 (Die Folien finden
B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP
B-Bäume I Annahme: Sei die Anzahl der Objekte und damit der Datensätze. Das Datenvolumen ist zu groß, um im Hauptspeicher gehalten zu werden, z.b. 10. Datensätze auf externen Speicher auslagern, z.b. Festplatte
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
Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany [email protected]. Stammbaum. Stammbaum. Stammbaum
lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany [email protected]. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum
Erwin Grüner 09.02.2006
FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife
Kapitel 8: Physischer Datenbankentwurf
8. Physischer Datenbankentwurf Seite 1 Kapitel 8: Physischer Datenbankentwurf Speicherung und Verwaltung der Relationen einer relationalen Datenbank so, dass eine möglichst große Effizienz der einzelnen
Algorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
Theoretische Grundlagen der Informatik WS 09/10
Theoretische Grundlagen der Informatik WS 09/10 - Tutorium 6 - Michael Kirsten und Kai Wallisch Sitzung 13 02.02.2010 Inhaltsverzeichnis 1 Formeln zur Berechnung Aufgabe 1 2 Hamming-Distanz Aufgabe 2 3
Informationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Rot-schwarz Bäume Eigenschaften Rotationen Einfügen (Löschen) 2 Einführung Binäre Suchbäume Höhe h O(h) für Operationen
Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss
Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige
Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema
Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema 2x 4 + x 3 + x + 3 div x 2 + x 1 = 2x 2 x + 3 (2x 4 + 2x 3 2x 2 ) x 3 + 2x 2 + x + 3 ( x
1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit
Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der
Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis
Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest
Analysis I für Studierende der Ingenieurwissenschaften
Fachbereich Mathematik der Universität Hamburg WiSe 2015/16 Prof. Dr. M. Hinze Dr. P. Kiani Analysis I für Studierende der Ingenieurwissenschaften Lösungshinweise zu Blatt 2 Aufgabe 1: (12 Punkte) a) Beweisen
Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10
Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien
Programmiertechnik II
Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen
Mining High-Speed Data Streams
Mining High-Speed Data Streams Pedro Domingos & Geoff Hulten Departement of Computer Science & Engineering University of Washington Datum : 212006 Seminar: Maschinelles Lernen und symbolische Ansätze Vortragender:
2.11 Kontextfreie Grammatiken und Parsebäume
2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle
4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum
4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.
Suchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die
Theoretische Informatik SS 04 Übung 1
Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die
Lösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank
Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Die Entscheidung Advoware über VPN direkt auf dem lokalen PC / Netzwerk mit Zugriff auf die Datenbank des zentralen Servers am anderen
Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1
Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal
Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss
Schließen Sie die AVM Fritz!Box, wie auf dem der Fritz!Box beiliegenden Schaubild beschrieben, an. Starten Sie den Internet Explorer oder einen beliebigen Browser (Mozilla Firefox, Google Chrome, Safari)
Algorithmen 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
Wirtschaftsinformatik I
Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation
Theoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik
Codes und Informationsgehalt
Aufgaben 2 Codes und Informationsgehalt Auf wie viele Dezimalziffern genau können vorzeichenlose ganze Zahlen in einem binären Code der Länge 32 bit dargestellt werden? 2 Codes und Informationsgehalt Auf
Anmerkungen zur Übergangsprüfung
DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung
Lizenzen auschecken. Was ist zu tun?
Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.
Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20
Suche in Spielbäumen Suche in Spielbäumen KI SS2011: Suche in Spielbäumen 1/20 Spiele in der KI Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche Einschränkung von Spielen auf: 2 Spieler:
Whitebox-Tests: Allgemeines
-Tests: Allgemeines Andere Bezeichnungen Logic driven, Strukturelles Der Tester entwickelt Testfälle aus einer Betrachtung der Ablauflogik des Programms unter Berücksichtigung der Spezifikation Intuitiv
PowerPoint: Text. Text
PowerPoint: Anders als in einem verarbeitungsprogramm steht in PowerPoint der Cursor nicht automatisch links oben auf einem Blatt in der ersten Zeile und wartet auf eingabe. kann hier vielmehr frei über
Kurs 1613 Einführung in die imperative Programmierung
Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Kapitalerhöhung - Verbuchung
Kapitalerhöhung - Verbuchung Beschreibung Eine Kapitalerhöhung ist eine Erhöhung des Aktienkapitals einer Aktiengesellschaft durch Emission von en Aktien. Es gibt unterschiedliche Formen von Kapitalerhöhung.
Professionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
