你好 LanX²,
Die Hash-Funktion hat immer einen bestimmten Wertebereich. Du kannst die
Tabelle schliesslich nicht beliebig gross machen. Irgendwann wird
dadurch aber auch diese Tabelle zu klein. Bei (theoretisch) unbegrenzt
vielen Daten ist eine Hash-Tabelle einfach nicht das wahre, akzeptiere
das doch einfach ;-)Die Daten sind aber 1. nicht unbegrenzt weil wir nur ein begrenztes
Vokabular haben (Selfdeutsch und deine "??" ;),
Und was hindert mich daran, jeden Tag eine neue Wortschoepfung zu
kreieren? Sorry, aber das ist doch Quatsch. Weder weisst du, wie welcher
Mensch welche Worte schreibst, noch weisst du, welche Wortschoepfungen
eventuell kreiert werden koennen.
ausserdem gehst du glaube ich von einem geschlossenen Hash aus, ich
aber von einem offenen. Was spricht also dagegen als Hashwert wiederum
einen weiteren Hash zu haben, der alle möglichen Kollisionen beinhaltet?
Weil es dir schwerfallen duerfte, die Datei entsprechend zu organisieren.
Je genauer der Hash-Wert, desto groesser die Hash-Tabelle. In der zweiten
Stufe muesste der Hash-Wert um einiges genauer sein als in der ersten
Stufe, dadurch wuerdest du n Hash-Tabellen mit beachtlicher Groesse
aufbauen muessen. Gehen wir mal davon aus, du hast in der ersten Tabelle
Hash-Werte von 16 Bit, dann kannst du darin maximal 65536 Werte
unterbringen. Arbeitest du mit 32Bit-Datei-Pointern, hast du damit schon
256KB verbraucht. In der zweiten Stufe muesstest du dann am besten mit
einer 2er-Potenz mehr arbeiten, damit haettest du 32 Bit Hashwerte und
maximal 4294967296 Eintraege a 32 Bit. Damit kaemst du auf 131072MB
fuer die zweite Hash-Tabelle.
再见,
CK