Kyunki ∣U∣≫m hai, collisions unavoidable hain (pigeonhole). Do alag keys kabhi kabhi same bucket mein map ho jaayengi. Ek acchi hash function collisions ko poori tarah avoid nahi karti — woh unhe rare aur evenly distributed banati hai.
YEH KYU MATTER KARTA HAI: Hashing put then find se kaam karti hai. Agar aap insert("cat") karte ho toh woh bucket 7 mein jaata hai. Baad mein lookup("cat") ko bucket 7 dobara compute karna hoga taaki woh mile. Agar h randomness ya current time use karta, toh "cat" kahin aur land hota aur aap usse kabhi retrieve nahi kar paate.
YEH KYU MATTER KARTA HAI — cost derive karo. Maan lo n keys m buckets mein insert ki gayi hain. Load factor define karo:
α=mn=number of bucketsnumber of keys
Expected chain length ka derivation (separate chaining):
Ek fixed bucket j ke liye, indicator Xi=1 agar key i bucket j mein land karti hai.
E[Xi]=P(h(ki)=j)=m1
Bucket j mein expected keys = sabhi n keys ka sum (linearity of expectation):
E[∑i=1nXi]=∑i=1nm1=mn=α
Toh search cost ≈ O(1+α) hai (1 hash compute karne ke liye, α chain walk karne ke liye). Agar α ek chhota constant rehta hai (hum m≈n rakhte hain), toh search O(1) hai.
YEH KYU MATTER KARTA HAI: Hash table ka poora selling point O(1) operations hai. Agar h khud O(n) leta ya kuch expensive karta (cryptographic hashing, sorting), toh aap advantage kho dete. Hashing ek tiny constant-time computation ke badle search avoid karna trade karta hai.
Ek deewar par numbered mailboxes 0 se 9 tak imagine karo. Ek hash function ek rule hai jo decide karta hai ki har letter kis mailbox mein jaayega uske naam ke basis par. Accha rule:
(1) Same naam hamesha same box — warna aapko apna letter dobara nahi milta (deterministic).
(2) Letters evenly spread karo — aap nahi chahte ki saare letters box 3 mein jam jaayein aur baaki khaali rahein (uniform).
(3) Rule jaldi apply ho — aapko box decide karne mein ek ghanta nahi lagana chahiye (fast).
Kabhi kabhi do naam same box mein aa jaate hain (ek collision) — koi baat nahi, aap bas us box ke andar ek chhota stack rakhte ho.