Preview only show first 10 pages with watermark. For full document please download

übung 10

   EMBED


Share

Transcript

Aufgabe (Hashing) Gegeben sei eine Hashtabelle mit 10 Feldern fu ¨r Eintr¨age (Index 0 bis 9) und eine Hashfunktion h(k) = k mod 10. Fu ¨hren Sie fu ¨r die folgenden Hashverfahren einen Schreibtischtest durch, indem Sie jeweils die Werte 56, 34, 6, 13, 94, 27, 47 in dieser Reihenfolge in eine leere Tabelle einfu ¨gen und diese nach jeder Einfu ¨geoperation ausgeben. 1 Hashing mit direkter Listenverkettung Hierbei ist die Hashtabelle als Array von einfach verketteten Listen realisiert. 2 Offenes Hashing mit linearem Sondieren Bei Kollisionen wird hier das einzufu ¨gende Element an der n¨achsten freien Stelle links vom berechneten Hashwert eingefu ¨gt. Das heißt, die Sondierungsreihenfolge (die Reihenfolge, in der die Pl¨atze im Array durchgegangen werden, bis erstmals ein freier Platz angetroffen wird) ist gegeben durch s(k, i) = (h(k) − i) mod 10 fu ¨r i = 0, . . . , 9. Aufgabe (Hashing) Gegeben sei eine Hashtabelle mit 10 Feldern fu ¨r Eintr¨age (Index 0 bis 9) und eine Hashfunktion h(k) = k mod 10. Fu ¨hren Sie fu ¨r die folgenden Hashverfahren einen Schreibtischtest durch, indem Sie jeweils die Werte 56, 34, 6, 13, 94, 27, 47 in dieser Reihenfolge in eine leere Tabelle einfu ¨gen und diese nach jeder Einfu ¨geoperation ausgeben. 3 Doppeltes Hashing Das doppelte Hashing ist ein offenes Hashing, bei dem die Sondierungsreihenfolge von einer zweiten Hashfunktion h0 (k) = 1 + (k mod 8) abh¨angt. Die Position fu ¨r das i-te Sondieren ist bestimmt durch s(k, i) = (h(k) − i · h0 (k)) mod 10 fu ¨r i = 0, . . . , 9. 4 Uniformes offenes Hashing Hier erh¨alt jeder Schlu ¨ssel mit gleicher Wahrscheinlichkeit eine der 10! Permutationen von {0, 1, . . . , 9} als Sondierungsreihenfolge. Als zuf¨allige“ Permutationen nutzen Sie: ” L(56) = 2, 9, 3, 0, 8, 7, 6, 1, 4, 5 L(94) = 6, 8, 4, 0, 9, 1, 5, 2, 3, 7 L(34) = 1, 5, 9, 3, 7, 4, 8, 6, 2, 0 L(27) = 4, 2, 7, 5, 1, 8, 9, 0, 3, 6 L(6) = 9, 8, 5, 2, 1, 7, 0, 6, 3, 4 L(47) = 1, 9, 6, 0, 3, 5, 2, 8, 7, 4 L(13) = 1, 4, 5, 2, 0, 7, 3, 6, 9, 8 Bin¨are Suchb¨aume (Definition) Bin¨arer Suchbaum: (Geordneter gewurzelter) bin¨arer Baum, der das Search Constraint erfu ¨llt. Search Constraint: Fu ¨r alle Knoten v gilt alle Schlu ¨ssel im linken Teilbaum von v sind kleiner (oder gleich) dem Schlu ¨ssel von v, alle Schlu ¨ssel des rechten Teilbaum von v sind gr¨oßer (oder gleich) dem Schlu ¨ssel von v. Bin¨are Suchb¨aume (Einfu¨gen/Entfernen) Fu ¨hren sie die folgenden Operationen in der gegebenen Reihenfolge aus. Geben sie nach jeder Operation den neuen Baum an. 1 insert(16), insert(11) 10 5 14 3 2 8 15 delete(24), delete(10) 20 10 2 24 18 15 12 14 30 19 25 40 Traversierungen von B¨aumen Pre-Order-Traversierung (w, L, R) 1 Besuche Wurzel w 2 Pre-Order-Traversierung auf linkem Teilbaum von Wurzel w 3 Pre-Order-Traversierung auf rechtem Teilbaum von Wurzel w In-Order-Traversierung (L, w, R) 1 In-Order-Traversierung auf linkem Teilbaum von Wurzel w 2 Besuche Wurzel w 3 In-Order-Traversierung auf rechtem Teilbaum von Wurzel w Post-Order-Traversierung (L, R, w) 1 Post-Order-Traversierung auf linkem Teilbaum von Wurzel w 2 Post-Order-Traversierung auf rechtem Teilbaum von Wurzel w 3 Besuche Wurzel w Traversierungen von B¨aumen (Aufgabe) 1 Welche der drei Traversierungen ist geeignet um die Schlu ¨ssel eines Suchbaumes in sortierter Reihenfolge auszugeben? 2 Ein Suchbaum enthalte die Schlu ¨ssel 1, 3, 4, 7, 9, 13, 20, 22. In der Pre-Order-Traversierung (w, L, R) werden die Schlu ¨ssel in der folgenden Reihenfolge besucht: 4, 1, 3, 20, 9, 7, 13, 22. Geben Sie den Suchbaum an. AVL-B¨aume (Definition) AVL-Baum: Bin¨arer Suchbaum mit Height Constraint Height Constraint: Fu ohe des linken und des rechten ¨r alle Knoten v unterscheiden sich die H¨ Teilbaums um maximal 1. AVL-B¨aume (Einfu¨gen) Einfu¨gen eines Schlu¨ssels: 1 2 Knoten einfu ¨gen (wie bei Suchb¨aumen) Balancen berechnen: Beginnend bei eingefu ¨gtem Knoten bis zur ersten Disbalance (+2 oder -2) auf dem Pfad bis zu der Wurzel. 3 ggf. Rotation oder Doppelrotation um diese Disbalance auszugleichen 4 fertig (maximal eine Rotation oder Doppelrotation n¨otig) AVL-B¨aume (Entfernen) Entfernen eines Schlu¨ssels: 1 Knoten entfernen (wie bei Suchb¨aumen) 2 Balancen berechnen: Beginnend bei entferntem Knoten (das ist ggf. der symmetrische Vorg¨anger/Nachfolger) bis zur ersten Disbalance (+2 oder -2) auf dem Pfad bis zu der Wurzel. 3 ggf. Rotation oder Doppelrotation um diese Disbalance auszugleichen 4 Wiederhole 2. und 3. (ab dem Knoten, wo vorher die Disbalance war), solange bis Wurzel erreicht wurde. (Es k¨onnen mehrere Rotatationen oder Doppelrotationen n¨otig sein.)