3.8.3 · D1 · HinglishString Algorithms

FoundationsRabin-Karp — rolling hash, O(n+m) expected

2,172 words10 min read↑ Read in English

3.8.3 · D1 · Coding › String Algorithms › Rabin-Karp — rolling hash, O(n+m) expected

Ye page assume karta hai ki tumne pehle kuch nahi dekha. Parent note mein use kiya gaya har letter, subscript, aur squiggle yahan unpack kiya gaya hai, ek aisi order mein jahan har idea sirf pehle wale ideas pe depend karta hai.


1. Ek string, aur "character code" kya hota hai

Ek string ko boxes ki row ki tarah socho, jisme har box ek character rakhta hai:

Parent note mein jaisi cheezein likhi hain. Exactly yahi matlab hai unka:

Figure dekhо: red box hai, yaani sabse left wala character. Subscript literally hai "kaunsa box."

Ye topic ise kyun chahta hai: hum abhi ek poori string ko ek bada number treat karne wale hain. Iske liye, pehle har character ko ek number hona chahiye. Code woh pehla translation hai.


2. Length aur — cheezein kitni badi hain

Kyunki mein boxes hain, iski positions tak chalti hain — sabse bada index hai, nahi, kyunki hum se count karna shuru kiya tha.

Ye topic ise kyun chahta hai: note mein har cost (, ) aur ke terms mein likhi hai. Ye "kitna kaam" wale dials hain.


3. ka matlab — speed measure karna

Ye topic ise kyun chahta hai: poora selling point ek speed claim hai. Jaane bina ki ka matlab kya hai, "expected " sirf shor hai.


4. Ek "window" aur slide

Sliding ka matlab hai: window ko ek box right mein move karo, toh ban jata hai . Sabse left wala character bahar chala jata hai; ek naya character right se enter karta hai.

Figure mein, red character woh hai jo slide karte waqt enter kar raha hai; left pe greyed wala leave kar raha hai. Yahi "ek jaata hai, ek aata hai" wali picture rolling update ko possible banati hai — sirf do characters change hote hain.

Ye topic ise kyun chahta hai: possible windows hain (inhe se start karo jab tak far edge text se bahar na chali jaye). Rabin-Karp har ek par ek baar visit karta hai.


5. Base- numbers — "237" actually kaise kaam karta hai

Hashing se pehle, tumhe feel karna chahiye ki ordinary numbers kaise bante hain.

Ye topic ise kyun chahta hai: hash formula exactly "237" ka place-value formula hai, bas character codes digits ki jagah hain aur base hai. Ise ordinary counting ki tarah pahchanna hi poora trick hai.


6. Modular arithmetic — "ghadi" aur

Upar wala fingerprint number ek lambi string ke liye bahut bada ho sakta hai. Hum ise remainder se kabu karte hain.

Ye topic ise kyun chahta hai: har hash mein rehta hai. Prime hi "probably different fingerprints" ko "provably rare collisions (~)" mein badalta hai. Link: Hashing, Birthday Paradox.


7. Hash , aur

Ab parent ke formulas ke symbols sab earn ho chuke hain:

Ye topic ise kyun chahta hai: woh single precomputed constant hai jo roll ko sasta banata hai. Yeh boxed rolling formula mein aur "Drop, Slide, Add" mnemonic mein appear karta hai.


8. Hash collision — woh ek cheez jisse darna chahiye

Ye topic ise kyun chahta hai: isliye algorithm expected hai, guaranteed nahi — rare collisions kabhi kabhi verification force karti hain. Collisions actually kitni likely hain iska intuition ke liye Birthday Paradox dekhо.


Prerequisite map

Character codes

Base-b place value

Polynomial hash H

Modular arithmetic mod q

Large prime q

Collision probability

Index and subscript s0 s1

Window T i to i+m-1

Lengths n and m

Rolling update O of 1

Precomputed b to m minus 1

Big-O speed measure

Rabin-Karp

Verify on hash hit


Equipment checklist

mein subscript tumhe kya batata hai?
Character ki position, se count karte hue — toh teesra box hai.
aur kya hain?
= text ki length; = pattern ki length.
ka matlab kya hai?
Input size se independent, steps ki ek fixed sankhya — constant time.
"504" ko base- place-value form mein likhо.
.
Kisi bhi base ke liye kya hai?
.
kya hai?
(kyunki ).
prime aur large kyun choose karte hain?
Fingerprints evenly spread karne ke liye aur collisions rare banane ke liye (~).
Code mein modular result negative kyun ja sakta hai, aur fix kya hai?
Subtraction se neeche ja sakti hai; fix hai ((x) % q + q) % q.
Length ke text mein width ki kitni windows exist karti hain?
.
Collision kya hai, aur hum panic kyun nahi karte?
Do alag strings ek hash share karti hain; hum ise har hash hit par ek character verification se pakad lete hain.
precompute kyun karein?
Yeh leaving character ka weight hai, har slide mein chahiye; ise ek baar compute karna roll ko rakhta hai.

Connections

  • Hashing — polynomial/modular fingerprint idea puri tarah se
  • Modular Arithmetic — ghadi, remainders, aur prime kyun hai
  • Birthday Paradox — collisions actually kitni likely hain
  • String Hashing for Substring Comparison — wahi rolling hash range equality ke liye reuse kiya gaya
  • Knuth-Morris-Pratt — ek collision-free linear matcher (contrast)
  • Z-Algorithm — ek aur linear pattern matcher (contrast)