異なる2つのキーが同じバケットにハッシュされる可能性があります。これをコリジョンと呼びます。ハッシュテーブルは、コリジョンを解決し、バケットが満杯になる前にリサイジングすることで、ロードファクタによって制御されながら、平均的にO(1)を保ちます。
コリジョン解決
text
Separate chaining: each bucket holds a list
[3] -> ("cat",9) -> ("rat",2) # both hashed to 3
Open addressing: probe to the next free slot
hash=3 taken -> try 4 -> try 5 ... (linear probing)
ロードファクタとリサイジング
text
load factor α = number_of_entries / number_of_buckets
α rises -> more collisions -> slower lookups
When α exceeds a threshold (e.g. 0.75):
-> allocate a bigger array (usually 2x)
-> REHASH every existing key into new buckets
