Hi,
Eine Kollision durch die Funktion h(x)=y wird verarbeitet, indem statt
der sonst üblichen LLs eine weiter Hashtabelle drangehangen wird.Soweit richtig.
Bei der ersten Kollision ist die aber noch komplett leer.
Bei der ersten Kollision muessen zwei Werte in eine bis dahin leere
Hash-Tabelle gelegt werden, um es mal zu praezisieren.
Ah, jetzt verstehe ich: Du möchtest nicht nur das Problemkind, sondern alles in die zweite Tabelle packen?
Warum?
Ist das Loch der ersten Tabelle gefüllt (= Kollision) heißt das doch schon, das etwas dagegen getan werden muß, die an diesem Loch liegende zweite Hashtabelle genutzt werden soll (in Pseudocode):
if(Loch_n == besetzt){
use_other(hashtabelle[Loch_n], hash_value, value);
}
Eine zweite Hashfunktion ist wirklich nicht essentiell, alle nötigen Informationen sind bereits vorhanden.
Ob das Sinn macht ist dann allerdings eine andere Frage, das ist wohl wahr. (es würde rein theoretisch eine Vergrößerung der primären Hashtabelle vermeiden helfen, eine Art diskrete und auch finite Dynamik sozusagen. Wäre vielleicht mal eine Untersuchung mit PoC wert?)
so short
Christoph Zurnieden