Prof. Dr. R. Laue                                                                                                                                  SS01
                                Informatik II
                                Übungsblatt 10
                                            Abgabe: 12.7.01 in der Vorlesung
URL:         /axel/informatik2_ss01_blatt10.html
 
 

Die Aufgaben sollen in Zweiergruppen bearbeitet werden. Dreiergruppen sind nicht zulässig.
Jede Aufgabe soll  auf einem Extrablatt bearbeitet werden. Bitte auf jedem Blatt Name/Matrikelnummer notieren.
 
 

Aufgabe 27 (3+2+2 Punkte)
Es werden 26 Personen zufällig ausgewählt.  Zeigen Sie, daß die Wahrscheinlichkeit, daß es darunter zwei gibt, die am selben Tag Geburtstag haben > 0.5 ist.  Nehmen Sie zur Vereinfachung an, daß alle Geburtstage gleich wahrscheinlich
sind, und daß man am 29. Februar nicht auf die Welt kommen kann. (3 Punkte) Ist 26 die kleinste Zahl mit dieser Eigenschaft? (2 Punkte). Was ist der Zusammenhang mit dem Stoff der Vorlesung? (2 Punkte)

Aufgabe 28 ( 4 + 3 Punkte) dynamisches Hashen
Mit Hilfe der hash-Funktion
                              h: w  ------------>      ( (5*w) +1 ) mod 61
- ein Wert h(w) habe 6 binäre Stellen - sollen die Primzahlen zwischen 200 und 300 (= 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293) abgespeichert werden. Führen Sie sämtliche Einfügeoperationen durch!
Starten Sie mit d=2, d.h. mit einem Feld der Länge 4 für die Seitenadressen. Auf einer Seite sei Platz für 4 Zahlen. (4 Punkte)
Löschen Sie nun alle Primzahlen, die modulo 4 den Rest 1 haben. Verschmelzen Sie ggf. Datenseiten. (3 Punkte)
 
 
Aufgabe 29 (3 + 5 Programmierpunkte) Hashprogramm
Schreiben Sie eine C-Funktion int hmitte(char *text) die zu einer C-Zeichenkette eine Hashadresse zwischen 0 und 1023 liefert. Dabei soll die Methode Mitte des Quadrats verwendet werden. Es sollen jeweils zwei Byte der Zeichenkette als 16-stellige Binärzahl interpretiert werden. Um den gesamten String zu verarbeiten, soll eine Faltungsmethode verwendet werden. Die Hashadresse ist der Rückgabewert der Funktion (3 Punkte)
Zum Testen schreiben Sie eine main() Routine, die Wörter einliest, die zugehörige hash-Adresse berechnet und dort das Wort abspeichert. Implementieren Sie eine Kollisonsstrategie mit Keller und Nachfolgerzeiger für die Kellerelemente.  (5 Punkte)