Perfekt hashfunktion för atomer
Ett atomnamn kan bestå av enbart en stor bokstav (t ex bor "B" eller en stor bokstav följt av en liten (t ex kalcium "Ca")
Numrera a=1, b=2, ..., z=26 och A=0, B=27, ..., Z=675 (dvs 25*27) och låt hashfunktionen vara summan av bokstävernas nummer. Vi får alltså
atom | hash(atom) |
A | 0 |
B | 1*27 |
C | 2*27 |
⋮ | |
Z | 25*27 |
Aa | 0*27+1 |
Ba | 1*27+1 |
Ca | 2*27+1 |
⋮ |
Då blir hash("A")=0 och hash("Zz")=701, så det behövs 702 platser i hashtabellen (dvs ca sex gånger mer än antalet element). Detta är en perfekt hashfunktion - alla atomnamn får unika hashvärden. Ingen extra luft behövs - det blir inga krockar!
OBS! I hash-labben ska du inte skapa en perfekt hashfunktion utan istället använda krockhantering.