3.3.8 · Coding › Hashing
Intuition Core idea (WHY yeh exist karta hai)
Ek fixed hash function ko hamesha defeat kiya ja sakta hai. Jab ek adversary ko aapka function h pata chal jaye, woh aapko aisi keys de deta hai jo saari ek hi slot mein collide karti hain — har operation O ( n ) tak degrade ho jaata hai. Solution: ek hi function pe commit mat karo . h ko runtime pe ek carefully designed family H se randomly pick karo. Tab kisi bhi fixed pair of keys ke liye, unke collide karne ki probability bahut chhoti hoti hai — aur adversary us randomness ko exploit nahi kar sakta jo usse dikhi hi nahi.
WHAT we buy: har input ke liye expected O ( 1 ) operations — sirf lucky cases mein nahi.
Definition Universal family
Ek family H of hash functions jo universe U ko { 0 , 1 , … , m − 1 } mein map karti hai, universal kehlati hai agar har pair of distinct keys x = y ke liye:
Pr h ∈ H [ h ( x ) = h ( y ) ] ≤ m 1
jahan h ko H se uniformly at random choose kiya gaya ho.
Common mistake Steel-man: "Random hashing matlab har key uniformly land karti hai."
Yeh lagta toh sahi hai — hum keys ko evenly scatter hote imagine karte hain. Lekin universal property ek key ki distribution ke baare mein nahi hai; yeh pairs ke baare mein hai. Hum kabhi assume nahi karte ki data random hai. Randomness poori tarah h ke choice mein rehti hai, jabki keys x , y arbitrary hain (adversarial bhi ho sakti hain). Fix: definition ko aise padho — "fixed x , y ke liye, random h ".
Maano hum n keys ko m slots wale ek chained hash table mein insert karte hain, universal family se randomly choose kiya hua h use karke. Hum chahte hain ki ek given key x ke saath collide karne wali keys ki expected number kya hogi.
α = m n . Tab x ko dikhne wali expected chain length at most 1 + α hoti hai (+ 1 x khud ke liye agar woh present hai; m n − 1 agar x abhi insert nahi hua).
Intuition Therefore (HOW yeh O(1) deta hai)
Expected search time = O ( 1 + α ) . Agar hum m = Θ ( n ) rakhein, tab α = O ( 1 ) , isliye har operation expected O ( 1 ) hai — input keys chahe jo bhi ho . Guarantee hamare coin flips pe hai, "nice" data pe nahi.
Definition Number-theoretic family
H p , m
Ek prime p > (max key) pick karo. a ∈ { 1 , … , p − 1 } aur b ∈ { 0 , … , p − 1 } ke liye:
h a , b ( k ) = ( ( a k + b ) mod p ) mod m
Family H p , m = { h a , b } universal hai. Hum a , b randomly pick karte hain.
Common mistake Steel-man: "Final
mod m collision probability exactly ≤ 1/ m rakhta hai."
Yeh lagta exact hai — humne p residues ko m buckets mein map kiya, toh "1/ m " automatic lagta hai. Lekin m usually p ko divide nahi karta , isliye buckets thodi uneven hoti hain: kuch ko ⌈ p / m ⌉ residues milte hain, doosron ko ⌊ p / m ⌋ . Honest bound yeh hai:
Pr [ h ( x ) = h ( y )] ≤ p − 1 ⌈ p / m ⌉ − 1 ≤ m 1 .
Ek looser lekin common form hai ≤ p ⌈ p / m ⌉ ≤ m 1 + p 1 . Toh yeh family truly universal (≤ 1/ m ) hai jab m ∣ p , aur almost-universal (≤ 1/ m + 1/ p ) general case mein — extra 1/ p negligible hai kyunki p bahut bada hota hai. Fix: ≤ 1/ m tabhi quote karo jab "m ∣ p " caveat ho, warna + 1/ p saath rakho.
Worked example Yeh (almost) universal kyun hai? (WHY ka sketch)
Fix karo x = y . Maano r = ( a x + b ) mod p , s = ( a y + b ) mod p . Kyunki a = 0 aur p prime hai, map ( a , b ) ↦ ( r , s ) un pairs pe ek bijection hai jahan r = s (distinct keys mod p distinct residues deti hain). Collision tab hi hoti hai jab r ≡ s ( mod m ) . Har fixed r ke liye, s = r ki count jo s ≡ r ( mod m ) satisfy kare woh at most ⌈ p / m ⌉ − 1 hai, p − 1 choices mein se. Isliye
Pr [ collision ] ≤ p − 1 ⌈ p / m ⌉ − 1 ≤ m 1 . ∎
Worked example Example 1 — Expected probe count
Table mein m = 100 slots hain, n = 50 keys already insert hain, universal h use ho raha hai. Ek nayi key x ke slot mein kitni keys hone ki expected number hai?
Kyun: x abhi insert nahi hua, toh m n use karo.
E [ collisions ] ≤ 100 50 = 0.5
Expected search cost = 1 + 0.5 = 1.5 comparisons. Constant.
Worked example Example 2 —
h a , b compute karna
p = 17 , m = 6 , choose a = 3 , b = 4 . Hash k = 10 :
ak + b = 3 ⋅ 10 + 4 = 34 . Kyun: ak + b apply karo.
34 mod 17 = 0 . Kyun: pehle mod p karo (yahi universality engine hai).
0 mod 6 = 0 . Kyun: table range [ 0 , m ) mein squeeze karo.
Toh h ( 10 ) = 0 .
Worked example Example 3 — Probability sanity check
Yahan p = 17 , m = 6 , aur 6 ∤ 17 , toh hum expect karte hain at most 17 ⌈ 17/6 ⌉ = 17 3 ≈ 0.176 (almost-universal bound), jo 1/ m = 1/6 ≈ 0.167 se thoda upar hai. Keys 10 aur 15 pick karo; saare valid ( a , b ) ke upar empirical collision fraction ≤ 3/17 hai. (VERIFY block isko numerically check karta hai.)
Recall Feynman: ek 12-saal ke bachche ko explain karo
Socho ek bully hamesha wahi locker choose karta hai jo already bhara hua ho taaki tum apna saman nahi rakh sako. Agar tumhara locker-picking rule fixed hai, toh woh hamesha jeetta hai. Toh uske bajaye, class se pehle secretly dice roll karo rule decide karne ke liye. Ab bully ko nahi pata ki cheezein kaunse lockers mein gayi hain, toh average mein sab ko apna locker milta hai aur koi zyada wait nahi karta. Dice (random choice of h ) tumhara secret hai, aur wahi use beat karta hai — yeh nahi ki bachche "random" hain.
"RANDOM the FUNCTION, never the DATA."
Aur bound: "Pair collides at most 1-in-m." (Pr ≤ 1/ m — exact jab m ∣ p , warna + 1/ p .)
When is a family H called universal? Har distinct x = y ke liye, Pr h ∈ H [ h ( x ) = h ( y )] ≤ 1/ m , jab h uniformly at random choose kiya gaya ho.
Where does the randomness live in universal hashing? Family se hash function ke choice mein — keys mein NAHI, jo adversarial ho sakti hain.
Why use linearity of expectation in the analysis? Yeh hamare liye E [ X x y ] ko bina independence assume kiye sum karne deti hai, aur collisions dependent hoti hain.
Expected number of keys colliding with x (x not inserted)? ≤ n / m = α (the load factor).
Expected cost of a search with universal hashing? O ( 1 + α ) ; jab m = Θ ( n ) ho toh O ( 1 ) hai.
State the classic universal family h a , b . h a , b ( k ) = (( ak + b ) mod p ) mod m , prime p > max key ke saath, a ∈ { 1.. p − 1 } , b ∈ { 0.. p − 1 } .
Is h a , b exactly universal? Sirf jab m ∣ p (Pr ≤ 1/ m ). General case mein yeh almost -universal hai jab Pr ≤ 1/ m + 1/ p .
Why must a = 0 in h a , b ? Taaki map k ↦ ak + b mod p ek bijection ho, jo ensure kare ki distinct keys mod p distinct residues dein.
What does universal hashing protect against that fixed hashing cannot? Ek adversary jo worst-case keys choose kare taaki saari collisions force ho sakein.
E [ X x y ] equals what?Pr [ h ( x ) = h ( y )] , kyunki X x y ek 0/1 indicator hai.
Adversary forces collisions
Pick h randomly from family H
Pr collision at most 1 over m
E of X at most n-1 over m
Expected O of 1 per operation