Suchalgorithmen - BFH

Werbung
Algorithmen & Datenstrukturen Übungen
P. Fierz / HS 2012/2013
Kapitel 4
Suchalgorithmen
Aufgabe 4.1 [Hashtabellen] In einer Hashtabelle der Länge 17 können Grossbuchstaben
eingetragen werden. Die Hashfuntion sei
Hash_1(k) = ord(k) mod 17
ord(A) = 1, ord(B) = 2, . . . , ord(Z) = 26
Nun werden nacheinander die Buchstaben
A, Z, P, K, C, G, R, V, B, X
eingetragen.
1. Wie sieht die Tabelle aus, wenn Kollisionen mit double Hashing behandelt werden und
die zweite Hashfunktion Hash_2(k) = 1 ist?
2. Wie sieht die Tabelle aus, wenn Kollisionen mit double Hashing behandelt werden und
die zweite Hashfunktion Hash_2(k) = 1 + (ord(k) mod 15) ist?
Aufgabe 4.2 [Stringsuche]
Gegeben:
Gesucht:
Zwei Strings src (source) und patt (pattern)
Die erste Stelle im String src, wo der String patt als Substring
vorkommt.
Implementieren Sie einen Algorithmus, der mit Hilfe der Hashingtechniken dieses Problem
löst. Benutzen Sie als Hashfunktion den polynomialen Hashcode.
Aufgabe 4.3 [2-3-4-Baum] Gegeben sei ein leerer 2-3-4-Baum.
1. Wie sieht der Baum aus, wenn nacheinander die folgenden Schlüssel eingefügt werden?
1, 200, 47, 33, 303, 22, 7, 98, 66, 32, 11, 55, 105, 20, 137, 140
2. Wie sieht der Baum aus, wenn jetzt nacheinander die folgenden Schlüssel gelöscht werden?
200, 22, 66, 105, 140
4-1
Algorithmen & Datenstrukturen Übungen
P. Fierz / HS 2012/2013
Aufgabe 4.4 [Rot-Schwarz-Baum] Gegeben sei ein leerer Rot-Schwarz-Baum.
1. Wie sieht der Baum aus, wenn nacheinander die folgenden Schlüssel eingefügt werden?
17, 2, 13, 33, 35, 22, 6, 5, 59, 12, 11, 57, 107, 21, 141, 153
2. Wie sieht der Baum aus, wenn jetzt nacheinander die folgenden Schlüssel gelöscht werden?
2, 6, 57, 21, 153
Aufgabe 4.5 [B-Tree] In einem leeren B-Tree der Ordnung 2 werden die Schlüssel
1, 2, 3, . . . , 33
nacheinander eingetragen.
1. Wie sieht der Baum nach dem Eintrag dieser Schlüssel aus?
2. Wie sieht der Baum aus, wenn anschliessend nacheinander die Schlüssel 2, 4, 8, 16 und
32 gelöscht werden?
3. Was kann man über die Anzahl Schlüssel in den einzelnen Knoten des Baumes aussagen,
wenn die Schlüssel im Baum in streng aufsteigender Reihenfolge eingetragen werden und
keine Schlüssel gelöscht werden?
Aufgabe 4.6 [Tiefe eines B-Trees] Gegeben sei ein B-Tree der Ordnung n (d.h., in jedem
Knoten können maximal 2n Schlüssel gespeichert werden). Wie gross ist die maximale Tiefe
des Baumes, wenn dieser N Schlüssel enthält?
Tip:
k
X
i=0
ni =
nk+1 − 1
n−1
Aufgabe 4.7 [Implementation Skipliste] Implementieren Sie die Skipliste. Dabei soll das
Interface SortSuch implementiert werden. Sie finden das Interface auf meiner Internetseite.
Bauen Sie in den Such- Einfügen- und Löschmethoden Zähler ein, die die Anzahl Operationen
Zählen.
Aufgabe 4.8 [Implementation Rot-Schwarz-Baum] Implementieren Sie den Rot-SchwarzBaum. Dazu können Sie die Implementation des binären Suchbaumes aus der Aufgabe 1.6 als
Grundlage verwenden.
Die Routinen zum Einfügen und Löschen von Elementen sollen in Zählern die folgenden
Informationen festhalten:
• Anzahl Elemente die eingefügt (bzw. gelöscht) wurden.
• Anzahl Umfärbungen
• Anzahl Restrukturierungen
• Anzahl Anpassungen
4-2
Algorithmen & Datenstrukturen Übungen
P. Fierz / HS 2012/2013
Die Routine zum Suchen eines Elementes soll in Zählern die folgenden Informationen festhalten:
• Durchschnittliche Anzahl Vergleiche bei einer Erfolgreichen Suche.
• Durchschnittliche Anzahl Vergleiche bei einer Erfolglosen Suche.
Aufgabe 4.9 [Performance Test] Schreiben Sie ein Testprogramm, das die Performance
von Skiplisten und von Rot-Schwarzbäumen vergleicht.
Aufgabe 4.10 [Hash-Funktion] Implementieren Sie die universelle Famillie von Hashfunktionen mit dem Matrixverfahren.
• Die Länge des Schlüssels muss frei wählbar sein.
• Die Länge der Tabelle kann als Zweierpotenz (21 . . . 263 ) auch frei gewählt werden.
• Zum Testen der Anzahl kollisionen steht das File WMeister.txt auf meiner Homepage
zur Verfügung. Es enthält pro Zeile einen Schlüssel, wobei der Längste Schlüssel 30 Bytes
ist. Die Anzahl Schlüssel ist ca. 30’000.
Tip:
Implementieren Sie die Matrix als Array von longs (long matrix[]).
4-3
Herunterladen