Load factor woh ek number hai jo control karta hai ki hash table kitna fast hai. Chhota α = fast hai lekin memory waste hoti hai. Bada α = memory bachti hai lekin slow ho jaata hai.
Maano simple uniform hashing (har key equally likely hai kisi bhi bucket mein jaane ke liye, independently). Jo chain tum scan karte ho uski expected length average chain length hai, jo exactly α hai.
E[cost of search]=hash + index1+scan chainα=O(1+α)
Yeh step kyun?n keys mein se har ek kisi bucket mein hai. Kisi given key ke tumhare bucket mein hone ki probability 1/m hai. Expected number of sharing = (n)⋅m1=α. Toh jo chain tum walk karte ho uski expected length α hai.
➡️ Agar hum α=O(1) rakhen (ek chhota constant, jaise ≤0.75), toh O(1+α)=O(1). Yahi poora reason hai ki hum resize karte hain.
n elements ka ek rehash Θ(n) cost karta hai. Yeh scary lagta hai — ek insert kabhi-kabhi linear time leta hai! Toh phir table ko O(1) per operation kyun maana jaata hai?
Har constant interval pe rehash → total work Θ(n2) → amortized O(n) per insert.
Doubling ke amortized bound ke peeche geometric series?
1+2+4+⋯+n=2n−1.
Alag grow/shrink thresholds (hysteresis) kyun use karte hain?
Grow↔shrink thrashing rokne ke liye jab ops ek single boundary ke paas alternate karti hain.
Agar 1500 keys expect karo α≤0.75 pe, minimum m?
m≥1500/0.75=2000.
Recall Feynman: ek 12-saal ke bachche ko explain karo
Socho ek coat-check room jisme hooks hain. "Load factor" yeh hai ki kitne coats har hook pe hain. Kam coats ho toh instant hai — ek hook, ek coat. Jaise-jaise bharta hai, ek hi hook pe kai coats latke rehte hain aur tumhe flip karna padta hai, slower hota jaata hai. Toh jab room teen-chauthaayi bhara hota hai, tum sab kuch double hooks wale room mein shift kar dete ho. Sabko move karna ek badi mehnat hai — lekin tum yeh kabhi-kabhi hi karte ho, aur kyunki har naya room pichhle se double hai, yeh kaam almost kabhi nahi karna padta. Saare coats jo tumne kabhi bhi latkaaye, unke upar spread karo toh yeh mehnat almost kuch nahi karti per coat. Yeh "average mein almost kuch nahi" hi hai jo hum amortized O(1) kehte hain.