Datenstrukturen und Algorithmen. Vorlesung 10
|
|
|
- Timo Ziegler
- vor 7 Jahren
- Abrufe
Transkript
1 Datenstrukturen und Algorithmen Vorlesung 10
2 Hashtabelle als Erinnerung Hashtabellen sind Tabellen (Arrays), wo aber die Elemente nicht von links nach rechts eingefügt werden, wie bei typischen Arrays Für jedes Element, das eingefügt werden muss, wird die Position mit Hilfe einer Hashfunktion berechnet Wenn die Hashfunktion dieselbe Position für zwei Elemente generiert, dann gibt es eine Kollision und man braucht eine Strategie für Kollisionauflösung
3 Hashtabelle als Erinnerung Für unabhängige Verkettung haben wir auf jede Position eine verkettete Liste: Ein wichtiger Wert für eine Hashtabelle ist der Belegungsfaktor, α, der als n/m berechnet wird (n Anzahl der Elemente, m Anzahl der Slots) Für unabhängige Verkettung kann α größer als 1 sein
4 Coalesced/Verzahnte Verkettung (coalesced chaining) Kollisionsbehandlung bei coalesced Verkettung: jedes Element aus der Hashtabelle wird in der Hashtabelle direkt gespeichert (ohne verkettete Listen nach außen), aber jedes Element hat einen next Feld, ähnlich wie bei verketteten Listen auf Arrays Sollte beim Einfügen eine Kollision auftreten, wird der Wert in eine freie Position eingetragen und die Position in die Liste, die von der ursprünglich berechneten Position ausgeht, eingehängt (als next) Da sich alle Elemente in der Tabelle befinden ist α höchstens 1
5 Coalesced/Verzahnte Verkettung - Beispiel Sei eine Hashtabelle mit der Größe m = 19 mit coalesced Verkettung als Kollisionsbehandlung und eine Hashfunktion mit der Divisionsmethode Wir wollen folgende Buchstaben (ohne Leerzeichen) in die Tabelle einfügen: A SEARCHING EXAMPLE Für jede Buchstabe berechnet man den Hashcode als Index der Buchstabe in dem Alphabet Buchstabe A S E R C H I N G X M P L Hashcode h(buchstabe)
6 Coalesced/Verzahnte Verkettung - Beispiel Position T S A A C E E X G H I A E L M N P R next m = 19 α = 0.89 firstfree = 15
7 Coalesced Verkettung Repräsentierung Welche Felder braucht man für die Repräsentierung? Für die Vereinfachung betrachten wir nur die Schlüssel HashTable: T:TKey[] next: Integer[] m: Integer firstfree: Integer h: TFunction
8 Coalesced Verkettung insert subalgorithm insert (ht, k) is: //pre: ht ist ein HashTable, k ist ein TKey //post: k wurde in ht eingefügt pos ht.h(k) if ht.t[pos] = -1 then //-1 heißt leere Position ht.t[pos] k ht.next[pos] -1 else current pos while ht.next[current] -1 execute current ht.next[current] end-while if ht.firstfree = ht.m and rehash else //Fortsetzung auf der nächsten Folie
9 Coalesced Verkettung insert ht.t[ht.firstfree] k ht.next[ht.firstfree] - 1 ht.next[current] ht.firstfree changefirstfree(ht) end-if end-if end-subalgorithm Komplexität: Θ(1) im Durchschnitt, Θ(n) im schlimmsten Fall
10 Coalesced Verkettung ChangeFirstFree subalgorithm changefirstfree(ht) is: //pre: ht ist ein HashTable //post: der Wert von ht.firstfree wird die nächste freie Position sein ht.firstfree ht.firstfree + 1 while ht.firstfree < ht.m and ht.t[ht.firstfree] = -1 execute ht.firstfree ht.firstfree + 1 end-while end-subalgorithm Komplexität: Θ(m) Wäre es besser, die leere Positionen in einer einfach verketteten Liste zu speichern? Wäre es besser, die leere Positionen in einer doppelt verketteten Liste zu speichern?
11 Coalesced Verkettung Die Operationen remove und search werden im Seminar 6 besprochen Wie kann man einen Iterator für eine Hashtabelle mit coalesced Verkettung definieren? Was sollten folgende Operationen tun? init getcurrent next valid
12 Offene Adressierung Im Falle der offenen Adressierung wird jedes Element in der Hashtabelle direkt gespeichert und es gibt keine Pointers oder next Felder zwischen den Elementen Um das Einfügen mithilfe offener Adressierung durchzuführen, müssen wir die Hashtabelle sukzessive überprüfen oder sondieren, bis wird einen leeren Slot finden, an dem wir den Schlüssel speichern können
13 Offene Adressierung Um die Slots zu bestimmen, die sondiert werden, erweitern wir die Hashfunktion um einen zusätzlichen Eingabeparameter, über den eine Sondierungszahl (mit 0 beginnend) übergeben wird Die Hashfunktion wird damit zu: h : U {0, 1,..., m-1} {0, 1,..., m-1} Für ein Element wird der Reihe nach folgende Sequenz sondiert <h(k,0), h(k,1),..., h(k,m-1)> - Sondierungssequenz Für jeden Schlüssel k fordert man, dass die Sondierungssequenz eine Permutation von (0, 1,..., m 1) ist, sodass letztendlich jede Position der Hashtabelle als Slot für einen neuen Schlüssel berücksichtigt wird
14 Offene Adressierung lineares Sondieren Eine Methode die Hashfunktion zu definieren ist lineares Sondieren: h k, i = h k + i mod m, i = 0,, m 1 wobei h (k) eine einfache Hashfunktion ist (z.b. h (k) = k mod m) die Sondierungssequenz für lineares Sondieren ist: <h (k), h (k)+1,h (k)+2,..., m-1, 0, 1,..., h (k)-1>
15 Offene Adressierung lineares Sondieren Beispiel Sei eine Hashtabelle mit der Größe m = 19 mit offener Adressierung mit lineares Sondieren als Kollisionsbehandlung (h (k) ist eine Hashfunktion mit der Divisionsmethode) Wir wollen folgende Buchstaben (ohne Leerzeichen) in die Tabelle einfügen: A SEARCHING EXAMPLE Für jede Buchstabe berechnet man den Hashcode als Index der Buchstabe in dem Alphabet Buchstabe A S E R C H I N G X M P L Hashcode h (Buchstabe)
16 Offene Adressierung lineares Sondieren Beispiel Position T S A A C A E E G H I X E L M N P R α = 0.89 Nachteil des linearen Sondieren: Es gibt nur m unterschiedliche Sondierungssequenz (nachdem man den Anfangspunkt kennt, kennt man schon die ganze Sondierungsequenz) Das Problem des primären Clustern es bilden sich lange Folgen besettzer Slots, wodurch sich die Suchzeit erhöht
17 Offene Adressierung Quadratisches Sondieren Verwende eine Hashfunktion der Form: h k, i = h k + c 1 i + c 2 i 2 mod m, i = 0,, m 1 wobei h (k) eine einfache Hashfunktion ist (z.b. h (k) = k mod m) und c 1 und c 2 Konstante sind (c 2 sollte nicht 0 sein) Wenn man ein vereinfachtes Beispiel betrachtet mit c 1 = 0 und c 2 = 1, dann ist die Sondierungssequenz: <k, k+1, k+4, k+9, k+16,...>
18 Offene Adressierung Quadratisches Sondieren Wie kann man aber die Werte für m, c 1 und c 2 auswählen, sodass die Sondierungssequenz eine Permutation ist? Falls m eine Primzahl ist, dann ist die erste Hälfte der Sondierungssequenz eindeutig, also, sobald die Hälfte der Tabelle voll ist, kann man nicht sicherstellen, dass eine leere Position gefunden wird z.b. m = 17, c 1 = 3, c 2 = 1 und k = 13, Sondierungssequenz: <13, 0, 6, 14, 7, 2, 16, 15, 16, 2, 7, 14, 6, 0, 13, 11, 11> z.b. m = 11, c 1 = 1, c 2 = 1 und k = 27, Sondierungssequenz: <5, 7, 0, 6, 3, 2, 3, 6, 0, 7, 5>
19 Offene Adressierung Quadratisches Sondieren Falls m eine Potenz von 2 ist und c 1 = c 2 = 0.5, dann ist die Sondierungssequenz immer eine Permutation. Z.B. für m = 8 und k = 3: h(3,0) = (3 % * * 0 2 ) % 8 = 3 h(3,1) = (3 % * * 1 2 ) % 8 = 4 h(3,2) = (3 % * * 2 2 ) % 8 = 6 h(3,3) = (3 % * * 3 2 ) % 8 = 1 h(3,4) = (3 % * * 4 2 ) % 8 = 5 h(3,5) = (3 % * * 5 2 ) % 8 = 2 h(3,6) = (3 % * * 6 2 ) % 8 = 0 h(3,7) = (3 % * * 7 2 ) % 8 = 7
20 Offene Adressierung Quadratisches Sondieren Falls m eine Primzahl der Form 4 * k + 3 ist, c 1 = 0 und c 2 = (-1) i ist die Sondierungssequenz +0, -1, +4, -9, usw.) dann ist die Sondierungssequenz immer eine Permutation. Z.B. für m = 7 und k = 3: h(3,0) = (3 % ) % 7 = 3 h(3,1) = (3 % ) % 7 = 2 h(3,2) = (3 % ) % 7 = 0 h(3,3) = (3 % ) % 7 = 1 h(3,4) = (3 % ) % 7 = 5 h(3,5) = (3 % ) % 7 = 6 h(3,6) = (3 % ) % 7 = 4 (dann
21 Offene Adressierung Quadratisches Sondieren Beispiel Sei eine Hashtabelle mit der Größe m = 16 mit offener Adressierung mit quadratisches Sondieren als Kollisionsbehandlung (h (k) ist eine Hashfunktion mit der Divisionsmethode), c 1 = c 2 = 0.5 Wir wollen folgende Buchstaben in die Tabelle einfügen: HASHTABLE Für jede Buchstabe berechnet man den Hashcode als Index der Buchstabe in dem Alphabet Buchstabe H A S T B L E Hashcode h (Buchstabe)
22 Offene Adressierung Quadratisches Sondieren Position T A A S T B E H H L Nachteile des quadratischen Sondieren: Die Leistung hängt von den Werten m, c 1 und c 2 ab Das Problem des sekundäres Clustern wenn die Anfangsslots die gleichen sind, dann sind zwei Sondierungssequenzen gleich, denn aus h(k 1,0) = h(k 2,0) folgt h(k 1,i) = h(k 2,i) Wie beim linearen Sondieren legt die erste sondierte Position die gesamte Sondierungssequenz fest und so werden nur m verschiedene Sondierungssequenzen verwendet
23 Offene Adressierung Doppeltes Hashing Verwendet eine Hashfunktion der Form: h k, i = (h k + i h k ) mod m, i = 0,, m 1 wobei h (k) und h (k) einfache Hashfunktionen sind, aber h (k) sollte nie den Wert 0 haben Für einen Schlüssel, k, wird die erste sondierte Position h (k) sein; alle anderen Positionen werden mithilfe der zweiten Hashfunktion h (k) berechnet
24 Offene Adressierung Doppeltes Hashing Ähnlich wie bei der quadratischen Sondieren wird nicht jede Kombination vom m und h (k) eine Permutation als Sondierungssequenz generieren Um eine Permutation zu generiere müssen m und die Werte h (k) teilerfremd (relatively primes) sein. Es gibt zwei Möglichkeiten das zu erreichen: m als Potenz von 2 zu wählen und die Funktion h so zu konstruieren, dass sie immer eine ungerade Zahl erzeugt m als Primzahl zu wählen und die Funktion h so zu konstruieren, dass sie immer eine positive ganze Zahl kleiner als m ergibt
25 Offene Adressierung Doppeltes Hashing m als Primzahl zu wählen und die Funktion h so zu konstruieren, dass sie immer eine positive ganze Zahl kleiner als m ergibt Zum Beispiel: h (k) = k % m h (k) = 1 + (k % (m-1)) Für m = 11 und k = 36: h (k) = 3 h (k) = 7 Die Sondierungssequenz ist: <3, 10, 6, 2, 9, 5, 1, 8, 4, 0, 7> ( Hashfunktion h k, i = (h k + i h k ) mod m )
26 Offene Adressierung Doppeltes Hashing Beispiel Sei eine Hashtabelle mit der Größe m = 13 mit offener Adressierung mit doppeltes Hashing als Kollisionsbehandlung mit h (k) = k % m und h (k) = 1 + (k % (m-1)) Wir wollen folgende Buchstaben in die Tabelle einfügen: HASHTABLE Für jede Buchstabe berechnet man den Hashcode als Index der Buchstabe in dem Alphabet Buchstabe H A S T B L E Hashcode h (Buchstabe) h (Buchstabe)
27 Offene Adressierung Doppeltes Hashing Position T A B A H E S T H L Hauptvorteil des doppelten Hashings: auch wenn h(k 1,0) = h(k 2,0) werden die Sondierungssequenzen nicht gleich sein, falls k 1 k 2 Zum Beispiel: Buchstabe A, HashCode 1: <1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12> Buchstabe N, HashCode 14: <1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11> Da jedes mögliche Paar (h (k), h (k)) eine andere Sondierungssequenzen liefert, werden bei der doppelten Hashing ungefähr m 2 unterschiedliche Permutationen verwendet
28 Offene Adressierung Operationen Wir besprechen die Implementierung der Standard Wörterbuchoperationen für Kollisionsbehandlung mit offener Adressierung Wir benutzen die Notation h(k, i) für eine Hashfunktion, ohne anzugeben ob diese lineares Sondieren, quadratisches Sondieren oder doppelte Hashing benutzt (die Implementierung der Operationen unterscheidet sich nicht, nur die Implementierung von h)
29 Offene Adressierung Repräsentierung Welche Felder braucht man um eine Hashtabelle mit Kollisionsbehandlung mit offener Adressierung zu speichern? Für die Vereinfachung betrachten wir nur die Schlüssel HashTable: T:TKey m: Integer h: TFunction
30 Offene Adressierung insert subalgorithm insert (ht, e) is: //pre: ht ist ein HashTable, e ist ein TKey //post: e wurde in ht eingefügt i 0 pos ht.h(e, i) while i < ht.m and ht.t[pos] -1 execute //-1 heißt leere Position i i + 1 pos ht.h(e, i) end-while if i = ht.m and rehash else ht.t[pos] e end-if end-subalgorithm
31 Offene Adressierung search function search (ht, e) is: //pre: ht ist ein HashTable, e ist ein TKey //post: überprüft ob e in ht enthalten ist i 0 pos ht.h(e, i) while i < ht.m and ht.t[pos] -1 and ht.t.[pos] e execute //-1 means empty space i i + 1 pos ht.h(e, i) end-while if i < ht.m and ht.t[pos] = e execute search True else search False end-if end-function
32 Offene Adressierung remove Wie kann man ein Element aus einer Hashtabelle löschen? Aus einer Hashtabelle mit offener Adressierung ist es nicht einfach ein Element zu löschen: Man kann nicht einfach die Position als leer markieren die search Funktion wird dann die anderen Elemente nicht mehr finden Man kann die Elemente nicht einfach verschieben die search Funktion wird dann die anderen Elemente nicht mehr finden Die Löschoperation wird meisten implementiert indem man die leere Position mit einem speziellen Wert, DELETED, markiert Wie ändert dieser speziellen Wert die insert und search Operationen?
33 Offene Adressierung Performanz In einer Hashtabelle mit offener Adressierung mit Belegungsfaktor α = n/m (α < 1) ist die durchschnittliche Anzahl von Sondierungen: Für insert und erfolglose search: 1 1 α Für erfolgreiche search: 1 ln 1 α 1 α Falls α eine Konstante ist, dann ist die Komplexität Θ(1) Im schlimmsten Fall ist die Komplexität O(n)
34 Perfektes Hashing Vermute, dass man alle Schlüssel von Anfang an kennt und, dass wir unabhängige Verkettung als Kollisionsbehandlung benutzen um so mehrere Listen man bildet, um so kürzer sin die Listen (man reduziert die Anzahl der Kollisionen) wenn man eine große Anzahl von Listen hat, dann wird jede Liste ein einziges Element enthalten (keine Kollisionen) Wie groß sollte die Hashtabelle sein, damit man sicherstellt, dass es keine Kollisionen gibt? Falls M = N 2, dann kann man zeigen, dass die Tabelle mit einer Wahrscheinlichkeit von 1/2 keine Kollisionen enthält Man fängt an eine Hashtabelle aufzubauen. Falls man eine Kollision entdeckt, dann wählt man eine neue Hashfunktion und man fängt neu an (man braucht höchstens 2 Versuche)
35 Perfektes Hashing Eine Tabelle von Größe N 2 ist nicht praktisch Lösung anstatt: Benutze eine Hashtabelle von Größe N (primäre Hashtabelle) Anstatt verkettete Listen für Kollisionen zu benutzen ist jedes Element der Hashtabelle eine Hashtabelle selber (sekundäre Hashtabelle) Die sekundäre Hashtabelle wird die Größe n j2 haben, wobei n j die Anzahl der Elemente aus dieser Hashtabelle ist (um garantieren zu können, dass es keine Kollisionen auf der zweiten Ebene gibt) Jede sekundäre Hashtabelle wird mit einer unterschiedlichen Hashfunktion erstellt und wird neuerstellt, falls es eine Kollision gibt Das heißt perfektes Hashing Man kann zeigen, dass die gesamte Platz, die für die sekundäre Hashtabellen gebraucht wird, höchstens 2N ist
36 Perfektes Hashing Perfektes Hashing benötigt mehrere Hashfunktionen, darum benutzen wir universelles Hashing Sei p eine Primzahl, größer als der größte Schlüsselwert Die universelle Hashfunktionen Familie H kann folgendermaßen definiert werden: H = { H a,b (x) = ((a * x + b) % p) % m}, wobei 1 a p-1, 0 b p-1 a und b werden zufällig ausgewählt bei der Initialisierung der Hashfunktion
37 Perfektes Hashing Beispiel Wir wollen folgende Buchstaben in die Tabelle einfügen: PERFECT HASHING EXAMPLE Da wir keine Kollisionen haben wollen betrachten wir nur die unterschiedlichen Buchstaben: PERFCTHASINGXML Da es N = 15 Elemente gibt, wählen wir m = 15 Für jede Buchstabe berechnet man den Hashcode als Index der Buchstabe in dem Alphabet Buchstabe P E R F C T H A S I N G X M L Hashcode
38 Perfektes Hashing Beispiel p muss eine Primzahl sein größer als der maximale Schlüsselwert, also p = 29 Die Hashfunktion ist: H a,b (x) = ((a * x + b) % p) % m Wobei a ist und b ist 2 (zufällig) Buchstabe P E R F C T H A S I N G X M L Hashcode h(hashcode)
39 Perfektes Hashing Beispiel Kollisionen: Position 0 I, N Position 1 S, X Position 2 E Position 4 T Position 5 F, A Position 6 P Position 8 G Position 9 L Position 11 C, H Position 12 R, M
40 Perfektes Hashing Beispiel Für die Positionen wo es keine Kollisionen gibt, werden wir eine sekundäre Hashtabelle mit einem Element haben und mit der Hashfunktion h(x) = 0 Für die Positionen mit zwei Elementen werden wir eine sekundäre Hashtabelle mit 4 Positionen haben und unterschiedliche Hashfunktionen, aus derselben Familie, aber mit unterschiedlichen Werte für a und b Zum Beispiel für die Position 0 kann man a = 4 und b= 11 haben, dann kriegt man: h(i) = h(9) = 2 h(n) = h(14) =1
41 Perfektes Hashing Beispiel Nehmen wir an, dass man die Werte a = 5 und b= 2 für die sekundäre Tabelle von der Position 1 auswählt Dann sind die Positionen der Elemente: h(s) = h(19) = ((5 * ) % 29 ) % 4 = 2 h(x) = h(24) = ((5 * ) % 29 ) % 4 = 2 Bei perfektes Hashing darf man keine Kollisionen haben, also man wählt eine andere Hashfunktion: andere zufällige Werte für a und b. Zum Beipsiel für a = 2 und b= 13 kriegt man h(s) = 2 und h(x) = 3
42 Perfektes Hashing Bei perfektes Hashing muss man höchstens 2 Positionen für ein Element überprüfen (Position in der primären und in der sekundären Tabelle) Das heißt im schlimmsten Fall ist die Komplexität Θ(1) Aber um perfektes Hashing zu benutzen braucht man statische Schlüssel: nachdem die Tabelle erstellt wurde, sollten keine neue Elemente eingefügt werden
43 Cuckoo Hashing Bei Cockoo Hashing gibt es zwei Hashtabellen derselben Größe, jeder der Hashtabellen hat mehr als die Hälfte leer und jede Hashtabelle hat seine eigene Hashfunktion Für jedes Element zum Einfügen kann man zwei Positionen berechnen: eine in der ersten Tabelle und eine in der zweiten Tabelle. Bei Cuckoo Hashing wird sichergestellt, dass sich ein Element auf einer dieser beiden Position befindet Die Suche ist einfach, da man nur auf zwei Positionen suchen muss Das Löschen ist einfach, da man die zwei Positionen betrachten muss und die Position, wo man das Element findet, als leer bezeichnen muss
44 Cuckoo Hashing Wenn man ein Element einfügen will, dann berechnet man seine Position in der ersten Hashtabelle. Falls diese Position leer ist, dann fügt man das Element hier ein Falls die Position in der ersten Hashtabelle nicht leer ist, dann ersetzt man das Element, das sich an der Position befindet und man speichert das neue Element an dieser Position Das Element das ersetzt wurde wird an der Position in der zweiten Hashtabelle gespeichert. Falls diese Position besetzt ist, dann ersetzt man dieses Element mit dem neuen Element und das ersetzte Element wird in der ersten Hashtabelle eingefügt Man wiederholt diese Schritte bis man ein Element auf einer leeren Position einfügen muss Falls man zurück zu einer vorigen Position kommt, dann gibt es einen Zyklus, d.h. man kann das Element nicht einfügen resize, rehash
45 Cuckoo Hashing Beispiel Nehmen wir an, dass es zwei Hashtabelle gibt mit m = 11 Positionen und mit den folgenden Hashfunktionen: h1(k) = k % 11 h2(k) = (k div 11) % 11 Wir wollen folgende Elemente einfügen: 20, 50, 53, 75, 100, 67, 105, 3, 36, 39 Position T Position T
46 Cuckoo Hashing Beispiel Füge 20 ein: h1(20) = 9 leere Position, in der ersten Tabelle eingefügt Füge 50 ein: h1(50) = 6 leere Position, in der ersten Tabelle eingefügt Position T Position T
47 Cuckoo Hashing Beispiel Füge 53 ein: h1(53) = 9 besetzte Position 53 wird in der ersten Tabelle eingefügt und 20 wird in der zweiten Tabelle eingefügt an der Position h2(20) = 1 Position T Position T 20
48 Cuckoo Hashing Beispiel Füge 75 ein: h1(75) = 9 besetzte Position 75 wird in der ersten Tabelle eingefügt und 53 wird in der zweiten Tabelle eingefügt an der Position h2(53) = 4 Position T Position T 20 53
49 Cuckoo Hashing Beispiel Füge 100 ein: h1(100) = 1 leere Position Füge 67 ein: h1(67) = 1 besetzt 67 wird in der ersten Tabelle eingefügt und 100 wird in der zweiten Tabelle eingefügt an der Position h2(100) = 9 Position T Position T
50 Cuckoo Hashing Beispiel Füge 105 ein: h1(105) = 6 besetzt 105 wird in der ersten Tabelle eingefügt und 50 wird in der zweiten Tabelle eingefügt an der Position h2(50) = 4 besetzt 50 wird in der zweiten Tabelle eingefügt und 53 wird in der ersten Tabelle eingefügt an der Position h1(53) = 9 besetzt 53 wird in der ersten Tabelle eingefügt und 75 wird in der zweiten Tabelle eingefügt an der Position h2(75) = 6 Position T Position T
51 Cuckoo Hashing Beispiel Füge 3 ein: h1(3) = 3 leere Position Füge 36 ein h1(36) = 3 besetzt 36 wird in der ersten Tabelle eingefügt und 3 wird in der zweiten Tabelle eingefügt an der Position h2(3) = 0 Position T Position T
52 Cuckoo Hashing Beispiel Füge 39 ein: h1(39) = 6 besetzt 39 wird in der ersten Tabelle eingefügt und 105 wird in der zweiten Tabelle eingefügt an der Position h2(105) = 9 besetzt 105 wird in der zweiten Tabelle eingefügt und 100 wird in der ersten Tabelle eingefügt an der Position h1(100) = 1 besetzt 100 wird in der ersten Tabelle eingefügt und 67 wird in der zweiten Tabelle eingefügt an der Position h2(67) = 6 67 wird in der zweiten Tabelle eingefügt und 75 wird in der ersten Tabelle eingefügt an der Position h1(75) = 9 besetzt 75 wird in der ersten Tabelle eingefügt und 53 wird in der zweiten Tabelle eingefügt an der Position h2(53) = 4 53 wird in der zweiten Tabelle eingefügt und 50 wird in der ersten Tabelle eingefügt an der Position h1(50) = 6 besetzt 50 wird in der ersten Tabelle eingefügt und 39 wird in der zweiten Tabelle eingefügt an der Position h2(39) = 3
53 Cuckoo Hashing Beispiel Position T Position T
54 Cuckoo Hashing Es kann sein, dass man ein Element nicht einfügen kann, falls es eine Endlosschleife gibt. In diesem Fall muss man die Größe der zwei Hashtabellen vergrößern und dann werden zufällig zwei neue Hashfunktionen gewählt und alle Elemente gerehasht Obwohl in manchen Fälle die Einfügeoperation viele Elemente verschiebt, kann man zeigen, falls der Belegungsfaktor kleiner als 0.5 ist, dass die Wahrscheinlichkeit einer Endlosschleife klein ist und dass es unwahrscheinlich ist, dass mehr als O(log 2 n) Elemente verschoben werden
55 Cuckoo Hashing Wenn man zwei Hashtabelle benutzt und jede Position aus der Hashtabelle enthällt höschstens ein Element, dann müssen die Tabellen ein Belegungsfaktor kleiner als 0.5 haben, damit es gut funktioniert Wenn man drei Tabellen benutzt, dann können diese den Belegungsfaktor 0.91 haben Wenn man vier Tabellen benutzt, dann können diese den Belegungsfaktor 0.97 haben
Datenstrukturen und Algorithmen. Vorlesung 9
Datenstrukturen und Algorithmen Vorlesung 9 Inhaltsverzeichnis Vorige Woche: ADT Deque ADT Prioritätsschlange Binomial-Heap Heute betrachten wir: Aufgaben Hashtabellen Aufgabe I Rot-Schwarz Kartenspiel:
12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.
Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete. Worst-case Zeit für Search: Θ(n). In der Praxis jedoch sehr gut. Unter gewissen
13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)
AVL-Bäume: Ausgabe aller Elemente in O(n) Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) Frage: Kann man Einfügen, Löschen und Suchen in O(1) Zeit? 1 Hashing einfache Methode
Teil VII. Hashverfahren
Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:
Verbund/Struktur (record/struct)
Arrays. Iteratoren. Verbund/Struktur (record/struct) Ein Verbund oder Struktur ist eine statische Datenstruktur Ein Verbund ist eine Menge von Elementen (meistens von unterschiedlichen Typen), die eine
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil Hash-Verfahren Version vom: 18. November 2016 1 / 28 Vorlesung 9 18. November 2016
Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 06 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8 Such-Algorithmen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung
P ( Mindestens zwei Personen haben am gleichen Tag Geb. ) (1) = 1 P ( Alle Personen haben an verschiedenen Tagen Geb. ) (2)
1 Hashing Einleitung Eine sehr naive Herangehensweise zur Implementierung eines Wörterbuchs ist die Benutzung eines hinreichend grossen unsortierten Arrays, in dem jeweils an eine freie Position eingefügt
Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren
Themen Hashverfahren Einleitung Bisher: Suchen in logarithmischer Zeit --> Binärsuche Frage: Geht es eventuell noch schneller/effektiver? Finden von Schlüsseln in weniger als logarithmischer Zeit Wichtig
Datenstrukturen und Algorithmen. Vorlesung 8
Datenstrukturen und Algorithmen Vorlesung 8 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap Schriftliche Prüfung Informationen
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 9 (28.5.2014) Hashtabellen III Algorithmen und Komplexität Offene Adressierung : Zusammenfassung Offene Adressierung: Alle Schlüssel/Werte
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11 Hashverfahren: Allgemeiner Rahmen) Prof. Dr. Susanne Albers Das Wörterbuch-Problem (1) Das Wörterbuch-Problem (WBP) kann wie folgt beschrieben
Hashing. Überblick Aufgabe Realisierung
Überblick Aufgabe Realisierung Aufgabe Realisierung Anforderungen Wahl einer Hashfunktion mit Verkettung der Überläufer Offene Universelles 2/33 Überblick Aufgabe Realisierung Aufgabe Dynamische Verwaltung
Hashing Hashfunktionen Kollisionen Ausblick. Hashverfahren. Dank an: Beate Bollig, TU Dortmund! 1/42. Hashverfahren
Dank an: Beate Bollig, TU Dortmund! 1/42 Hashing Überblick Aufgabe Realisierung Aufgabe Realisierung Anforderungen Wahl einer Hashfunktion mit Verkettung der Überläufer Offene Universelles Hashing 2/42
Implementierung von Mengen (und Wörterbücher): Alternative zu Suchbäumen
5.8 HashVerfahren und Anwendungen Implementierung von Mengen (und Wörterbücher): Alternative zu Suchbäumen hash: zerhacken, Hackfleisch Grundidee: Indexierung der Tabelle mit geeignet transformierten Schlüsselwerten
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
Übungsklausur Algorithmen I
Jun.-Prof. Hofheinz, Jun.-Prof. Meyerhenke (ITI, KIT) 08.06.2015 Übungsklausur Algorithmen I Aufgabe 1. (Algorithm Engineering) Nennen Sie zwei Konzepte, die Algorithm Engineering im Gegensatz zu theoretischer
14. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i
Motivation 14. Hashing Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Perfektes und universelles Hashing, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren [Ottan/Widayer, Kap. 4.1-4.3.2,
Humboldt-Universität zu Berlin Berlin, den Institut für Informatik
Humboldt-Universität zu Berlin Berlin, den 15.06.2015 Institut für Informatik Prof. Dr. Ulf Leser Übungen zur Vorlesung M. Bux, B. Grußien, J. Sürmeli, S. Wandelt Algorithmen und Datenstrukturen Übungsblatt
Datenstrukturen & Algorithmen Lösungen zu Blatt 5 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 26. März
Algorithmen und Datenstrukturen II: Hashverfahren
Algorithmen und Datenstrukturen II: Hashverfahren Prof. Dr. Oliver Braun Letzte Änderung: 10.05.2017 16:21 Algorithmen und Datenstrukturen II: Hashverfahren 1/28 Hashverfahren bisher jeder Datensatz durch
Kollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren
4. Hashverfahren geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D Menge A von Speicheradressen; oft: A = {0,..., m 1} jedes Speicherverfahren realisiert h : D A mögliche Implementierungen von
Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Departement Informatik 24. November 2016 Markus
Algorithmen und Datenstrukturen II: Hashverfahren
Algorithmen und Datenstrukturen II: Hashverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 10.05.2017 16:21 Inhaltsverzeichnis Hashverfahren....................................
4.4.1 Statisches perfektes Hashing. des Bildbereichs {0, 1,..., n 1} der Hashfunktionen und S U, S = m n, eine Menge von Schlüsseln.
4.4 Perfektes Hashing Das Ziel des perfekten Hashings ist es, für eine Schlüsselmenge eine Hashfunktion zu finden, so dass keine Kollisionen auftreten. Die Größe der Hashtabelle soll dabei natürlich möglichst
Algorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
Algorithmen und Datenstrukturen Hashverfahren
Algorithmen und Datenstrukturen Hashverfahren Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Prinzip Details Anwendungen Motivation Hashverfahren
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:
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
U h(k 1 ) h(k 4 ) k 1 h(k 3 )
92 Kapitel 8 Hashing Hashing ist ein anderes Vorgehen, das auch ohne Baumstrukturen ein effizientes Suchen ermöglicht. Wie bei Bucketsort ist auch hier eine der grundsätzlichen Eigenschaften, dass Hashing
Kapitel 6 HASHING. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm
Kapitel 6 HASHING Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm Übersicht 1 1. Einführung 2. Algorithmen 3. Eigenscha?en von Programmiersprachen 4. Algorithmenparadigmen 5. Suchen & SorGeren
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
8. Hashing Lernziele. 8. Hashing
8. Hashing Lernziele 8. Hashing Lernziele: Hashverfahren verstehen und einsetzen können, Vor- und Nachteile von Hashing gegenüber Suchbäumen benennen können, verschiedene Verfahren zur Auflösung von Kollisionen
INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS
Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales
Informatik I 5. Kapitel. Hashverfahren. Hashverfahren. Hashverfahren. Rainer Schrader. 3. Juni Gliederung
Informatik I 5. Kapitel Rainer Schrader Zentrum für Angewandte Informatik Köln 3. Juni 2008 1 / 86 2 / 86 Gliederung Adressberechnung durch Hashing Hashfunktionen Kollisionsbehandlung Anwendung von Hashfunktionen
Kap. 5 Hashing. 15./16. VO DAP2 SS /18. Juni 2009
Kap. 5 Hashing nach Übungstest Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 15./16. VO DAP2 SS 2009 16./18. Juni 2009 1 Linux-Kurs 2. Teil Beginn: Di 16.6.
Kap. 5 Hashing. Linux-Kurs 2. Teil. Überblick. Motivation. 4 Idee von Hashing. Idee von Hashing. Warum soll ich heute hier bleiben? Und wenn nicht?
Kap. 5 Hashing Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, T Dortmund nach Übungstest 15./16. VO DAP2 SS 2009 16./18. Juni 2009 Linux-Kurs 2. Teil Beginn: Di 16.6.
Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens
Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens h 1 2 j = 2 h 1 j=0 interne Knoten enthalten kann. EADS 86/600 Beweis: Induktionsanfang: 1 ein AVL-Baum der Höhe h = 1 enthält
17. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i
Motivation 17. Hashing Hash Tabellen, Geburtstagsparadoxon, Hashfunktionen, Kollisionsauflösung durch Verketten, offenes Hashing, Sondieren Ziel: Tabelle aller n Studenten dieser Vorlesung Anforderung:
Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen
5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
3. Übungsblatt zu Algorithmen I im SoSe 2017
Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799
Hashing. Übersicht. 5 Hashing
Übersicht 5 Hashing Hashtabellen Hashing with Chaining Universelles Hashing Hashing with Linear Probing Anpassung der Tabellengröße Perfektes Hashing Diskussion / Alternativen H. Täubig (TUM) GAD SS 14
Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005
Fibonacci-Suche Informatik I Einführung Rainer Schrader Zentrum für Angewandte Informatik Köln 4. Mai 005 Grundidee wie bei der Binärsuche, aber andere Aufteilung Fibonacci-Zahlen: F 0 = 0 F 1 = 1 F m
Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 1 186.089 VO 3.0 Vorlesungsprüfung 19. Oktober
Überlaufbehandlung ohne Verkettung
3.2 Statische Hash-Verfahren direkte Berechnung der Speicheradresse (Seitenadresse) eines Satzes über Schlüssel (Schlüsseltransformation) Hash-Funktion h: S {, 2,..., n} S = Schlüsselraum, n = Größe des
Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:
Binäre Suchbäume (a, b)-bäume (Folie 173, Seite 56 im Skript) Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: 1 Jeder Knoten hat höchstens b Kinder. 2 Jeder
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
4. Übung zu Algorithmen I 17. Mai 2017
4. Übung zu Algorithmen I 17. Mai 2017 Björn Kaidel [email protected] (mit Folien von Julian Arz, Timo Bingmann, Lisa Kohl, Christian Schulz, Sebastian Schlag und Christoph Striecks) Organisatorisches
Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min
TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dipl.-Ing. C. Mattern Klausur Algorithmen und Datenstrukturen
Hashing. Algorithmen und Datenstrukturen II 1
Hashing Algorithmen und Datenstrukturen II 1 Einführendes Beispiel Ein Pizza-Lieferservice in Bielefeld speichert die Daten seiner Kunden: Name, Vorname, Adresse und Telefonnummer Wenn ein Kunde seine
Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 12
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 8. März
NAME, VORNAME: Studiennummer: Matrikel:
TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.
Kapitel 3. Symboltabelle. Symboltabelle Wintersemester 2008/09 1 / 10
Kapitel 3 Symboltabelle Symboltabelle Wintersemester 2008/09 1 / 10 Symboltabelle: Ziele und Kriterien Ziele: Die Merkmale bzw. Schlüssel aller Symbole festlegen, die nicht durch Endzustände des Automaten
Algorithmen & Datenstrukturen Midterm Test 2
Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern
Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
3. Übungsblatt zu Algorithmen I im SS 2010
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 3. Übungsblatt zu Algorithmen I im SS 2010 http://algo2.iti.kit.edu/algorithmeni.php
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).
Algorithmen und Datenstrukturen 11
5. Juli 2012 1 Besprechung Blatt 10 Fragen 2 Hashing Allgemein, Hashtablestruktur Sondierungsverfahren 3 Anonyme und innere Klassen Anonyme Klassen Innere Klassen 4 Zirkuläre Arrays 5 Vorbereitung Blatt
Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N
2 von 15 Aufgabe 1: Suchbäume (14 ) Betrachten Sie den folgenden Suchbaum. A B C D E F G H I J K L M N O P R (a) (1 Punkt ) Geben Sie die Höhe des Knotens F an. (b) (1 Punkt ) Geben Sie die Tiefe des Knotens
Multiplikationsmethode. Informatik I. goldener Schnitt. Der goldene Schnitt. Einführung. Rainer Schrader. 30. Mai Konstruktionsmethode
Multiplikationsethode Inforatik I Einführung Rainer Schrader Zentru für Angewandte Inforatik Köln 30. Mai 005 zu (): Irrationale Zahlen sind eine gute Wahl. Erinnerung: Φ = 1 + 5 = 1.6180339887... ˆΦ =
8 Elementare Datenstrukturen
Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.
1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)
Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter
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:
Grundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung
Klausur Algorithmen und Datenstrukturen
Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013
Übersicht. Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene
Übersicht Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene 5.0.07 1 IR-System Peter Kolb 5.0.07 Volltextindex Dokumentenmenge durchsuchbar machen Suche nach Wörtern Volltextindex:
Übungsklausur Algorithmen I
Universität Karlsruhe, Institut für Theoretische Informatik Prof. Dr. P. Sanders 26.5.2010 svorschlag Übungsklausur Algorithmen I Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe:
Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?
Algorithmen I Prof. Jörn Müller-Quade 17.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik
Datenstrukturen und Algorithmen D-INFK
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 Peter Widmayer
12. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)?
5.8.2 Erweiterungen Dynamische Hash-Funktionen (mit variabler Tabellengröße)? Ladefaktor: α, n aktuelle Anzahl gespeicherter Werte m Tabellengröße. Einfacher Ansatz: rehash() a z c h s r b s h a z Wenn
Assoziative Container in C++ Christian Poulter
Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: [email protected] Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...
