Algorithmen & Datenstrukturen. 3. Suchen

Größe: px
Ab Seite anzeigen:

Download "Algorithmen & Datenstrukturen. 3. Suchen"

Transkript

1 Algorithmen & Datenstrukturen 3. Suchen 1

2 Exponentielle Suche Gesucht wird ein Element mit Schlüssel k. Die exponentielle Suche eignet sich zum Suchen in nach den Schlüsselwerten sortierten Feldern, deren Länge nicht bekannt ist. Bestimme in exponentiell wachsenden Schritten einen Bereich, in dem der Schlüssel liegen muss (erster Index ist 1): i = 1; while (k > a[i].key) i = 2*i; Danach gilt: a[i/2].key < k a[i].key Dieser Bereich wird mittels binärer Suche durchsucht. 2

3 Exponentielle Suche: Beispiel Wir suchen den Schlüssel k = 42 im folgenden Feld: a: (1) bestimme den Bereich, in dem k liegen muss: a: i = (2) binäre Suche im Bereich a[i/2+1]... a[i]: mid = (9 + 16) / 2 = 12 mid = ( ) / 2 =

4 Exponentielle Suche: Laufzeit Voraussetzung: Werte sind paarweise verschieden (dies ist z.b. dann gegeben, wenn Schlüsselwerte gesucht werden, Telefonnummer, Matrikelnummer, Personalnummer, usw.) Schlüssel wachsen mindestens so stark wie die Indices die Bereichsbestimmung erfolgt in log 2 (k) Schritten der zu durchsuchende Bereich hat höchstens k Zahlen und kann in Zeit log 2 (k) durchsucht werden insgesamt ergibt sich also eine Laufzeit von Θ(log(k)) Falls die Folge auch gleiche Werte enthalten darf, ist keine Laufzeitabschätzung möglich. 4

5 Lineare Suche und binäre Suche In Kapitel 1.2 haben wir ausführlich die lineare (Elemente nacheinander lesen) und die binäre (rekursive, immer mit dem mittleren Element vergleichen) Suche besprochen und die Komplexitäten im besten, mittleren und schlechtesten Fall berechnet. Es ergab sich linear: O best = O(1), O avg = O(n), O worst = O(n) binäre: O best = O(1), O avg = O(log(n)), O worst = O(log(n)) 5

6 Interpolations-Suche Idee: Schätze die Position des Elements mit Schlüssel k. Beispiel: Im Telefonbuch steht der Name Zimmermann weit hinten, wohingegen Brockmann eher am Anfang steht. Sei l linke Grenze, r rechte Grenze des Suchbereichs: bei der binären Suche wurde der Index des nächsten zu inspizierenden Elements bestimmt als m = l (r l). bei der Interpolationssuche inspiziere als nächstes das Element auf Position m = l+ k a[l].key (r l). a[r].key a[l].key 6

7 Interpolations-Suche: Beispiel (a) gesucht: k = a: l = 0 r = 15 m = 0 + (42 1) / (98 1) * (15 0) = a: l = 7 r = 15 m = 7 + (42 12) / (98 12) * (15 7) = 9 7

8 Interpolations-Suche: Beispiel (b) gesucht: k = a: l = 10 r = 15 m = 10 + (42 27) / (98 27) * (15 10) = a: l = 12 r = 15 m = 12 + (42 39) / (98 39) * (15 12) = 12 8

9 Interpolations-Suche: Beispiel (c) gesucht: k = a: l = 13 r = 15 m = 13 + (42 42) / (98 42) * (15 13) = 13 Im worst-case hat das Verfahren eine lineare Laufzeit, also Θ(n) bei n Schlüsselwerten. Beispiel: k = 10 und F = 1,2,3,4,5,6,7,8,9,10,1000 9

10 Interpolations-Suche: Laufzeit Im Mittel werden log(log(n)) + 1 Schlüsselvergleiche ausgeführt [1], aber dieser Vorteil geht durch die auszuführenden arithmetischen Operationen oft verloren. Im best-case wird jedes Element sofort gefunden, also Θ(1) bei n Schlüsselwerten. Beispiel mit 9 gleichverteilten Elementen F = 10,12,14,16,18,20,22,24,26 m = 0+ k a[0].key a[8].key a[0].key (8 0) = k = k 10 2 [1] A.C. Yao and F.F. Yao: The complexity of searching an ordered random table. Proceedings of the Symposium on Foundations of Computer Science,

11 Hash-Verfahren (1) Schlüsselsuche durch Berechnung der Array-Indices! Idee: bei einer Menge von Werten K {0,1,...,m 1} = U verwende ein Array A der Länge m mit Indices von 0 bis m 1 und speichere die Schlüssel wie folgt: A[k] = { x falls x.key K und x.key = k nil sonst suchen, einfügen und löschen in Θ(1) Schritten Problem: Wertebereich kann sehr groß sein 8-stellige Namen mehr als Werte 11

12 Hash-Verfahren (2) Lösung: verwende eine Hash-Funktion h, um den Wertebereich U, speziell die Menge der Schlüsselwerte K, auf die Zahlen 0,...,l 1 abzubilden, also h : U {0,...,l 1}. K U Hash-Funktion i.allg. nicht injektiv: verschiedene Schlüssel werden auf dieselbe Hash-Adresse abgebildet Kollision Hash-Funktion wird zum Platzieren und Suchen verwendet, muss einfach/effizient zu berechnen sein 12

13 Hash-Verfahren (3) Schlüssel, die nicht als Zahlen interpretiert werden können, müssen vorher geeignet umgerechnet werden. Beispiel: 5 Zeichenketten der Länge 3 Die ASCII-Darstellung wird als Binärzahl interpretiert. Interpretiere die Binärzahlen als Ziffern einer Zahl zur Basis 256, z.b. i2 = = = Input k 1 k 2 k 3 k h(k) = k mod 11 h(k) = k mod 13 i i ii iii i_

14 Hash-Verfahren (4) Hash-Verfahren muss zwei Forderungen genügen: 1. es sollen möglichst wenige Kollisionen auftreten 2. Adress-Kollisionen müssen effizient aufgelöst werden Wahl der Hash-Funktion: soll die zu speichernden Datensätze möglichst gleichmäßig auf den Speicherbereich verteilen, um Adress-Kollisionen zu vermeiden Häufungen in der Schlüsselverteilung sollen sich nicht auf die Verteilung der Adressen auswirken es gilt: wenn eine Hash-Funktion πn/2 Schlüssel auf eine Tabelle der Größe n abbildet, dann gibt es meist eine Kollision (für n = 365 ist πn/2 23, 23 Personen auf deren Geburtstage abgebildet) 14

15 Hash-Funktion: Division-Rest-Methode Methode: Der Schlüssel wird ganzzahlig durch die Länge der Hash- Tabelle dividiert. Der Rest wird als Index verwendet: h(k) = k mod m zu beachten: m soll keinen kleinen Teiler haben! m soll keine Potenz der Basis des Zahlensystems sein! Beispiel: für m = 2 r hängt der Hash-Wert nur von den letzten r Bits ab wähle m als Primzahl, die nicht nah an einer Potenz der Basis des Zahlensystems liegt. Beispiel: m = 761, aber nicht: m = 509 (nah an 2 9 ) oder m = 997 (nah an 10 3 ) 15

16 Hash-Funktion: Multiplikative Methode Sei m = 2 r eine Zweierpotenz, d.h. es können die Werte 0...,2 r 1 angenommen werden. Bei einer Wortgröße w wähle eine Zahl a so, dass 2 w 1 < a < 2 w ist, und wähle für h(k) Anmerkungen: h(k) = (a k mod 2 w ) >> (w r) Wähle a nicht zu nah an 2 w bzw. 2 w 1 Modulo-Operation und Rechts-Shift ist schnell gute Ergebnisse für a w (goldener Schnitt) Beispiel: Für w = 8, r = 3, a = 191 und k = 23 erhalten wir *

17 Hash-Verfahren: Verkettung der Überläufer Probleme treten auf beim Einfügen, wenn die berechnete Hash-Adresse nicht leer ist bei der Suche, wenn der berechnete Platz ein anderes Element enthält T: i h(61) = h(32) = h(7) = i % Kollisionsauflösung: Die Überläufer können in einer linearen Liste verkettet werden, die an den Hash-Tabelleneintrag angehängt wird. 17

18 Verkettung der Überläufer: Bewertung (1) Die durchschnittliche Anzahl der Einträge in h(k) ist n/m, wenn n Einträge durch die Hash-Funktion gleichmäßig auf m Listen verteilt werden. Belegungsfaktor: α = n m Mittlere Laufzeit bei erfolgreicher Suche: beim Einfügen des j-ten Schlüssels ist die durchschnittliche Listenlänge j 1 m bei einer späteren Suche nach dem j-ten Schlüssel betrachten wir also im Durchschnitt 1+ j 1 m Einträge, wenn stets am Listenende eingefügt wird und keine Elemente gelöscht wurden C = 1 n n j=1 ( 1+ j 1 m ) = 1+ n 1 2m 1+ n 2m 18

19 Verkettung der Überläufer: Bewertung (2) in der Regel gilt n O(m) (die Größe der Hash-Tabelle ist ungefähr so groß wie die Anzahl der Datensätze) α = n m = O(m) m O(1) zum Vergleich: binäre Suche hat Laufzeit Θ(log(n)) plus Aufwand Θ(n log(n)) zum Sortieren der Datensätze Problem: verkettete Listen sind umständlich zu Programmieren und dynamische Speicheranforderung ist teuer. Lösung: speichere alle Datensätze innerhalb eines Arrays 19

20 Offene Hash-Verfahren (1) Idee: Speichere die Überläufer in der Hash-Tabelle, nicht in zusätzlichen Listen ist die Hash-Adresse h(k) belegt, so wird systematisch eine Ausweichposition gesucht die Folge der zu betrachtenden Speicherplätze für einen Schlüssel nennt man Sondierungsfolge die Hash-Funktion hängt vom Schlüssel und von der Anzahl durchgeführter Platzierungsversuche ab: h : U {0,...,m 1} {0,...,m 1} die Sondierungsfolge muss eine Permutation der Zahlen 0,...,m 1 sein, damit alle Einträge der Hash-Tabelle genutzt werden können 20

21 Offene Hash-Verfahren (2) Anmerkungen: beim Einfügen und Suchen wird dieselbe Sondierungsfolge durchlaufen beim Löschen wird der Datensatz nicht gelöscht, sondern nur als gelöscht markiert (der Wert wird ggf. bei späterem Einfügen überschrieben) je voller die Tabelle wird, umso schwieriger wird das Einfügen neuer Schlüssel 21

22 Lineares Sondieren Zu einer gegebenen Hash-Funktion h (k) sei h(k,i) = (h (k)+i) mod m. i ist die Anzahl der Kollisionen für einen Key. Beispiel: betrachte das Einfügen der Schlüssel 12,55,5,15,2,47 für m = 7 mit h (k) = k mod 7 und h(k,i) = (k mod 7+i) mod 7 = (k +i) mod mod 7 = mod 7 = mod 7 = mod 7 = mod 7 = mod 7 = 5 22

23 Quadratisches Sondieren (1) Zu einer gegebenen Hash-Funktion h (k) sei h(k,i) = (h (k)+( 1) i i/2 2 ) mod m. bedeutet aufrunden, z.b. 0.5 = 1 Ohne Beweis: Wenn m eine Primzahl der Form 4i+3 ist, werden alle möglichen Schlüssel erreicht. Die Reihenfolge der Durchläufe ist h(k,0) = h (k) mod m h(k,1) = (h (k)+( 1) 1 1/2 2 ) mod m = (h (k) 1) mod m h(k,2) = (h (k)+( 1) 2 2/2 2 ) mod m = (h (k)+1) mod m h(k,3) = (h (k)+( 1) 3 3/2 2 ) mod m = (h (k) 4) mod m 23

24 Quadratisches Sondieren (2) In der Literatur finden sie unterschiedliche Vorzeichen bei den Sondierungsfunktionen Beispiel: betrachte das Einfügen der Schlüssel 12,55,5,15,2,47 für m = 7 mit h(k,i) = (k +( 1) i i/2 2 ) mod mod 7 = mod 7 = mod 7 = mod 7 = mod 7 = mod 7 = (5 9) mod 7 = 3 24

25 Double Hashing (1) Zu zwei gegebenen Hash-Funktionen h 1 (k) und h 2 (k) sei h(k,i) = (h 1 (k)+i h 2 (k)) mod m. Für die Form h(k,i) = (k+i (1+k mod m 2 )) mod m 1 und m 1 2 = m 2 werden alle möglichen Schlüsselwerte erreicht. Beispiel: betrachte die Hash-Funktionen m = 7, h 1 (k) = k mod 7 und h 2 = 1+k mod 5: h(k,i) = (k +i (1+k mod 5)) mod 7. Die Reihenfolge der Durchläufe ist h(k,0) = (k +0 (1+k mod 5)) mod 7 h(k,1) = (k +1 (1+k mod 5)) mod 7 h(k,2) = (k +2 (1+k mod 5)) mod 7 25

26 Double Hashing (2) Beispiel: betrachte das Einfügen der Schlüssel 12,55,5,15,2,47 und h(k,i) = (k +i (1+k mod 5)) mod mod 7 = mod 7 = mod 7 = mod 7 = mod 7 = mod 7 = Alle Verfahren lassen sich noch leicht beschleunigen, wenn häufiger gesucht als eingefügt wird. 26

27 Suchbäume (1) Eine Alternative für Suchprobleme sind Suchbäume (siehe Kapitel 1) Voraussetzung für die schnelle Suche: der Suchbaum muss ausgeglichen sein, d.h. die Blätter unterscheiden sich in ihrer Stufe höchstens um 1. Die Anzahl der Suchschritte in einem ausgeglichenen Suchbaum ist proportional zum Logarithmus der Datenzahl. Die Anzahl der Knoten in einem binären Baum der Höhe T (Wurzel hat Höhe 0) ist maximal k = T 1 i=0 2 i = 2 T 1 27

28 Suchbäume (2) Umgekehrt braucht ein binärer Baum, wenn er k Knoten aufnehmen soll, eine Höhe von mindestens T = log 2 (k+1) (aufrunden) Beispiel: T = 20 k max = 2 (20) 1 = Knoten Jeder Knoten wird nach maximal 20 Schritten erreicht. Sogenannte optimale Suchbäume berücksichtigen beim Aufbau eine Wahrscheinlichkeit, mit der ein Schlüssel gesucht wird, und werden mittels dynamischer Programmierung aufgebaut. 28

29 Operationen für Bäume (1) Suchen eines Elements Das Suchen eines Elements setzt eine Ordnung voraus. Ist der Key des Elements gleich dem Key des Knotens, dann ist das Element gefunden. Ist der Key des Elements kleiner (größer) als der Key des Knotens, suche im linken (rechten) Teilbaum. Ist der (Teil-)Baum leer, ist das Element nicht vorhanden. 29

30 Operationen für Bäume (2) Einfügen eines neuen Knotens in einen Suchbaum Ist der Baum leer, dann wird das neue Element die Wurzel. Falls sortiertes Einfügen, führe rekursiv aus: Ist der Key des Elements kleiner (größer) als der Key des Knotens, füge in den linken (rechten) Teilbaum ein. Erzeuge neuen Knoten an dem Blatt, bei dem einfügt wird, schreibe die Daten in den Knoten und setzte rechten bzw. linken Zeiger von der Einfügestelle auf den neuen Knoten. 30

31 Operationen für Bäume (3) Der Aufbau eines Baums hängt von der Reihenfolge des Einfügens ab. Reihenfolge Einzufügender Knoten Reihenfolge Einzufügender Knoten

32 Operationen für Bäume (4) Löschen eines Elements Hat das Element nur einen oder keinen Teilbaum, ersetzte das Element durch Teilbaum bzw. NULL. Zu löschender Knoten:

33 Operationen für Bäume (5) Hat das zu löschende Element zwei Teilbäume, dann ersetze es durch das größte (kleinste) Element seines linken (rechten) Teilbaums. Dieses Element hat keinen rechten (linken) Teilbaum und wird ersetzt wie beschrieben auf der letzten Folie. Zu löschender Knoten:

34 Operationen für Bäume (6) Ausgleichen eines Baums Notwendig für eine schnelle Suche: der Baum muss ausgeglichen sein. Für die Anzahl der Knoten n in einem Baum der Höhe T gilt log 2 (n+1) T n Bei einem vollständig ausgeglichenen Baum liegen alle Blätter auf einer Ebene bzw. die vorletzte Ebene ist voll belegt. 34

35 Operationen für Bäume (7) Ausgleichen eines Baums Rekursiver Algorithmus zum Ausgleichen eines Baums: Finde das in der Ordnung mittlere Element eines Baums Speichere das Element als Wurzel Verfahre auf gleiche Art mit den Teilbäumen. Sehr aufwendiges Verfahren, dass nach jedem Löschen bzw. Hinzufügen eines Knotens wiederholt werden müsste. Schwächere Definition von Ausgeglichenheit nach Adelson-Vekskii und Landis (1962) AVL-Bäume. 35

36 AVL-Bäume (1) In einem AVL-Baum unterscheiden sich die Höhen d des linken und des rechten Teilbaums für jeden Knoten höchstens um 1. Es ist günstig, die Differenz der Höhen der Teilbäume bei jedem Knoten zu speichern. d=

37 AVL-Bäume (2) Minimale Anzahl n(t) von Knoten: Ein Minimaler AVL-Baum der Höhe T setzt sich aus einer Wurzel und einem Teilbaum der Höhe T 1 sowie einem Teilbaum der Höhe T 2 zusammen minimal Knotenzahl: n(t) = 1+n(T 1)+n(T 2) = fib(t +1) T+1 t n(t) t Die Höhe eines AVL-Baumes mit n Knoten ist O(log(n)) 37

38 Rebalancieren von AVL-Bäumen (1) Ein AVL-Baum hat die Höhendifferenz-Werte von d = 1,0,1. Einfügen und Löschen von Knoten geschieht wie in Suchbäumen. Durch Einfügen oder Löschen können Knoten mit d = 2 oder d = 2 entstehen. Durch Rotation kann in diesen Fällen die AVL-Bedingung wieder hergestellt werden. Beispiel: LL-Rotation Ein Knoten wird im linken Teilbaum vom linken Teilbaum von K1 eingefügt, wobei K1 der Knoten ist, bei dem anschließend d = 2 auftritt. 38

39 Rebalancieren von AVL-Bäumen (2) K1 d=2 d=0 K2 d=1 K2 K1 d=0 A B C A B C Umhängen des rechten Teilbaums von K2 nach K1 und K2 als neuen Wurzelknoten des Teilbaums setzen. Setze die linke Referenz von K1 auf B. Setze die rechte Referenz von K2 auf K1. 39

40 Rebalancieren von AVL-Bäumen (3) d=1/2 20 0/ / /

41 Rebalancieren von AVL-Bäumen (4) RR-Rotation Wird ein Knoten im rechten Teilbaum vom rechten Teilbaum von K1 eingefügt, wobei K1 der Knoten ist, bei dem anschließend d = 2 auftritt, so wird eine einfache Rotation analog zur LL- Rotation durchgeführt. LR-(RL) Rotation Wird ein Knoten im rechten (linken) Teilbaum vom linken (rechten) Teilbaum von K1 eingefügt, wobei K1 der Knoten ist, bei dem anschließend d = 2 auftritt, so muss eine Doppelrotation durchgeführt werden. 41

42 Rebalancieren von AVL-Bäumen (5) d=-2 K1 d=0 K2 K3 d=0 K1 d=-1 K3 d=1 K2 A B C D A B C D Umhängen des rechten Teilbaums von K2 nach K3 Umhängen des linken Teilbaums von K2 nach K1 Referenzen von K1, K2, K3 neu setzen 42

43 Rebalancieren von AVL-Bäumen (6) Aufwand des Rebalancierens: * Werte der Höhendifferenz aktualisieren: O(log(n)) * Umhängen der Zeiger: O(1) Der Gesamtaufwand zum Einfügen eines Knoten beträgt wie beim vollständig ausgeglichenen Suchbaum O(log(n)). Das Löschen eines Knoten geschieht analog zum Einfügen. Dementsprechend beträgt der Gesamtaufwand zum Löschen eines Knoten ebenfalls nur O(log(n)). Nettes Applet: 43

44 Weitere Bäume (1) 2-3 und Bäume Suchbäume, deren Knoten aus Knoten mit 1,2 oder 3 Schlüsseln sind. Der Grad des Baums ist 4. Alle Blätter liegen auf einer Ebene. Vorteil: Die Bäume sind immer ausgeglichen und ein Suchen ist sehr schnell möglich. Nachteil: Die Bäume müssen umgebaut werden, soll ein weiteres Element in einen vollen Baum eingefügt werden. 44

45 Weitere Bäume (2) Beispiel: Spalte 4-Knoten mit 3 Schlüsseln bei weiterem Schlüssel in der Mitte in zwei 2-Knoten auf und übergeben einen Schlüssel an den Vorgänger. D einfügen E J N A B C F G I K L M O P R J C E N A B D F G I K L M O P R 45

46 Weitere Bäume (3) B-Bäume: Sie stammen von Bayer und McCreight und sind eine Erweiterung der 2-3 bzw Bäume. B + - und B -Bäume der Ordnung m: Motivation für diese Bäume waren Datenmengen, die nicht den Speicher passen. Sie bestehen aus inneren Knoten, in denen jeweils mindestens [m/2] und höchstens [m] Schlüssel - keine Datensätze - gespeichert sind, und aus Blattknoten, die jeweils die Datensätze, auch Blöcke genannt, enthalten. Die Wurzel darf auch weniger als [m/2] Schlüssel enthalten. 46

47 Weitere Bäume (4) Jeder innere Knoten mit n Schlüsseln ist ein (n + 1)-Knoten und enthält (n + 1) Verweise auf weiter führende Teilbäume. Die Blätter liegen alle auf einer Ebene und enthalten die Datensätze und ggf. Verweise auf die benachbarten Blätter (lineare Liste). B + - und B -Bäume werden manchmal für die gleiche Struktur verwendet, ursprünglich unterscheiden Sie sich aber im Verhalten beim Einfügen und Löschen neuer Knoten. Es existieren viele weitere Varianten von B-Bäumen. Anwendung von B-Bäumen: XFS oder ReiserFS von Linux, Verwaltung von Indizes in Datenbanken. 47

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

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Datenstrukturen & Algorithmen

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

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe 1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

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

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

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

14. Rot-Schwarz-Bäume

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

Mehr

Übung zur Vorlesung Algorithmische Geometrie

Übung zur Vorlesung Algorithmische Geometrie Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)

Mehr

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

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

Mehr

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

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

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

Mehr

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

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr

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

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

Mehr

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

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

Mehr

Nachtrag zu binären Suchbäumen

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

Mehr

Suchen in Listen und Hashtabellen

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

Mehr

13. Binäre Suchbäume

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

Mehr

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

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

Mehr

Copyright, Page 1 of 8 AVL-Baum

Copyright, Page 1 of 8 AVL-Baum www.mathematik-netz.de Copyright, Page 1 of 8 AVL-Baum 1. Motivation und Einleitung Das Suchen, Einfügen und entfernen eines Schlüssels in einem zufällige erzeugten binären Suchbaum mit N Schlüsseln ist

Mehr

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Suchbäume mit inneren Knoten verschiedener Knotengrade. Was bisher geschah rekursive Datenstrukturen: lineare Datenstrukturen: Liste, Stack, Queue hierarchische Datenstrukturen: Bäume allgemeine Bäume Binäre Bäume Unäre Bäume = Listen Tiefe eines Knotens in

Mehr

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

6-1 A. Schwill Grundlagen der Programmierung II SS 2005 6-1 A. Schwill Grundlagen der Programmierung II SS 25 6. Suchen Suchen = Tätigkeit, in einem vorgegebenen Datenbestand alle Objekte zu ermitteln, die eine best. Bedingung, das Suchkriterium, erfüllen und

Mehr

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

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

Mehr

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

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

Mehr

Informatik II, SS 2014

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

Mehr

Informatik II, SS 2014

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

Mehr

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

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Bäume 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Inhalt Grundbegriffe: Baum, Binärbaum Binäre Suchbäume (Definition) Typische Aufgaben Suchaufwand Löschen allgemein, Methode Schlüsseltransfer

Mehr

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write Thomas Maier Proseminar: Ein- / Ausgabe Stand der Wissenschaft Seite 1 von 13 Gliederung 1. Hashtabelle 3 2.B-Baum 3 2.1 Begriffserklärung 3 2.2

Mehr

Datenstrukturen und Algorithmen

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

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Algorithmen & Datenstrukturen 1. Klausur

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

Mehr

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16. Januar 2013 (Balancierte Suchbäume) Junior-Prof. Dr. Olaf Ronneberger

Mehr

Die mittlere Zeit zum Auffinden eines Elements in einer Hash-Tabelle beträgt, unter realistischen Annahmen, O(1).

Die mittlere Zeit zum Auffinden eines Elements in einer Hash-Tabelle beträgt, unter realistischen Annahmen, O(1). Algorithmen und Datenstrukturen 213 9 Hash-Tabellen Viele Anwendungen erfordern dynamische Mengen, für welche die sog. Wörterbuch-Operationen INSERT, SEARCH und DELETE verfügbar sind. Beispiel: Symboltabelle

Mehr

Suchen und Sortieren Sortieren. Heaps

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

Mehr

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

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

Mehr

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

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

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Kap. 4.2: Binäre Suchbäume

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

Mehr

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

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

Mehr

Sortierverfahren für Felder (Listen)

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

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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

Mehr

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

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

Mehr

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

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

Mehr

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind. Unterschiede von DBMS und files Speichern von Daten! DBMS unterstützt viele Benutzer, die gleichzeitig auf dieselben Daten zugreifen concurrency control.! DBMS speichert mehr Daten als in den Hauptspeicher

Mehr

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

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

Mehr

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2013/14 Prof. Dr. Sándor Fekete 1 4.6 AVL-Bäume 2 4.8 Rot-Schwarz-Bäume Rudolf Bayer Idee: Verwende Farben, um den

Mehr

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

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.6 AVL-Bäume 4.8 Rot-Schwarz-Bäume Idee: Verwende Farben, um den Baum vertikal zu

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

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

Mehr

DATENSTRUKTUREN UND ZAHLENSYSTEME

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2015/16 12. Vorlesung Hashing Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Übungen Begründen Sie grundsätzlich alle Behauptungen außer die Aufgabe

Mehr

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus? Huffman-Code Dieser Text ist als Hintergrundinformation ausschliesslich für die Lehrperson gedacht. Der Text ist deshalb eher technisch gehalten. Er lehnt sich an das entsprechende Kapitel in "Turing Omnibus"

Mehr

Übungen zu Programmierung I - Blatt 8

Übungen zu Programmierung I - Blatt 8 Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 2. Vorlesung Prof. Dr. Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Einfache Suchverfahren Lineare Listen Sequentielle Suche

Mehr

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

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Studiengang Bachelor of Computer Science Modulprüfung Praktische Informatik 1 Wintersemester 2010 / 2011 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und

Mehr

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

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

Mehr

Einführung in die Informatik I Kapitel II.3: Sortieren

Einführung in die Informatik I Kapitel II.3: Sortieren 1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

Mehr

Kapitel 8: Physischer Datenbankentwurf

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

Mehr

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

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

Mehr

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

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

Mehr

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

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

Mehr

11.1 Grundlagen - Denitionen

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

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

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

Mehr

Binäre Bäume Darstellung und Traversierung

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

Mehr

Amortisierte Analysen

Amortisierte Analysen Amortisierte Analysen 26. Mai 2016 1 Einleitung Es gibt viele Datenstrukturen, bei deren Komplexitätsanalyse das Problem auftaucht, dass die Ausführung mancher Operationen Einfluss auf die Komplexität

Mehr

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

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

Mehr

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

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

Mehr

Kurs 1613 Einführung in die imperative Programmierung

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

Mehr

Grundlagen der Programmierung 2. Bäume

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

Mehr

Vorkurs Informatik WiSe 15/16

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

Mehr

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

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

Mehr

368 4 Algorithmen und Datenstrukturen

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

Mehr

Klausur Datenstrukturen und Algorithmen SoSe 2012

Klausur Datenstrukturen und Algorithmen SoSe 2012 Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Klausur Datenstrukturen und Algorithmen SoSe 2012 Vorname: Nachname: Studiengang (bitte genau einen

Mehr

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

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

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

Mehr

Programmiertechnik II

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

Mehr

Faktorisierung ganzer Zahlen mittels Pollards ρ-methode (1975)

Faktorisierung ganzer Zahlen mittels Pollards ρ-methode (1975) Dass das Problem, die Primzahlen von den zusammengesetzten zu unterscheiden und letztere in ihre Primfaktoren zu zerlegen zu den wichtigsten und nützlichsten der ganzen Arithmetik gehört und den Fleiss

Mehr

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte] UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Bernoullistrasse 16 CH 4056 Basel Assistenten Bernhard Egger Andreas Forster Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015. Vorlesung 5, Donnerstag, 20.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015. Vorlesung 5, Donnerstag, 20. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 5, Donnerstag, 20. November 2014 (Wie baut man eine Hash Map, Universelles Hashing)

Mehr

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

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

Mehr

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

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

Mehr

Kapitel 2. Zahlensysteme, Darstellung von Informationen

Kapitel 2. Zahlensysteme, Darstellung von Informationen Kapitel 2 Zahlensysteme, Darstellung von Informationen 1 , Darstellung von Informationen Ein Computer speichert und verarbeitet mehr oder weniger große Informationsmengen, je nach Anwendung und Leistungsfähigkeit.

Mehr

Lenstras Algorithmus für Faktorisierung

Lenstras Algorithmus für Faktorisierung Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

Informatik I 4. Kapitel Suchen in sequentiellen Listen

Informatik I 4. Kapitel Suchen in sequentiellen Listen Informatik I 4. Kapitel Rainer Schrader Zentrum für Angewandte Informatik Köln 21. Mai 2008 1 / 55 2 / 55 Szenario Suchen in Daten gehört zu den wichtigsten Operationen etwa Suchen nach: Stichworten in

Mehr

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

Mehr

Algorithmentheorie Randomisierung. Robert Elsässer

Algorithmentheorie Randomisierung. Robert Elsässer Algorithmentheorie 03 - Randomisierung Robert Elsässer Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten

Mehr

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

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

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

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

Mehr

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

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

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann Blatt Nr. 8 Übung zur Vorlesung Grundlagen: Datenbanken im WS14/15 Harald Lang (harald.lang@in.tum.de) http://www-db.in.tum.de/teaching/ws1415/grundlagen/

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (2 3 4 Bäume): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.0.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr