Hi
Was ich mit genauere Hash-Funktion meinte war, die Hash-Funktion des
Hashes aus der ersten Ebene benutzen, aber das Ergebnis nicht abschneiden
sondern in einer hoeheren Genauigkeit zu benutzen. Da muss man dann aber
auch mit groesseren Tabellen leben. Muss man halt abwaegen.
OK, also subdirekte Zerlegung, dabei gilt
"An interesting option is to produce a hash value that is twice as big as what you need, then use the first half as the first hash and the second half as the second hash. See checksum.c, for example. This can guarantee that hash values collide slightly less often than if the functions were truly independent."
http://burtleburtle.net/bob/hash/hashfaq.html#twice
Ich würde die Fkt auf jeden Fall erst darauf abtesten.
Es gäb hier übrigens noch eine Option die K_i nachträglich zu optimieren in dem man in der entsprechenden H-Zelle eine Bitmaske hinterlegt statt nur die Anzahl der abzuschneidenden Bits.
Man könnte also durch Wahl der richtigen Projektion die Kollisionen minimieren, was aber andererseits mit Organisationsoverhead erkauft würde.
Mikrooptimierung? Je nachdem wie teuer der Plattenzugriff ist, ist er aber IMHO nicht.
Tschau
Rolf
再见,
CK