3.8.1 · D1 · HinglishString Algorithms

FoundationsNaive pattern matching — O(nm)

1,941 words9 min read↑ Read in English

3.8.1 · D1 · Coding › String Algorithms › Naive pattern matching — O(nm)

Is page mein zero prior knowledge assume ki gayi hai. Parent note padhne se pehle, usmein use hone wala har letter yahan ground up se build kiya gaya hai, us order mein jo har idea ko pehle waale idea ke upar rest karne deta hai.


1. Ek string numbered boxes ki ek row hoti hai

Yahan sab kuch ek string se shuru hota hai: characters ki ek ordered row. "Ordered" ka matlab hai ki position matter karti hai — "ABA" aur "AAB" same nahi hain.

Ek string ko boxes ki ek strip ki tarah picture karo, ek character per box, aur — yeh crucial habit hai — box number neeche likho, 0 se shuru karke.

Figure — Naive pattern matching — O(nm)
  • Figure dekho: sabse left waale box mein jo character hai uska index 0 hai, 1 nahi. Yeh "count-from-zero" rule code mein universal hai aur parent note har jagah isi par rely karta hai.
  • Length- string ke last box ka index hota hai. Agar hai, toh last valid index 9 hai, kabhi bhi 10 nahi.

2. Hamare kaam ki do strings: aur

Poori problem mein exactly do strings involved hain.

Dono ko ek length symbol dete hain taaki "kitna lamba" words mein kabhi na kehna pade:

Do alag letters kyun, ek ki jagah? Kyunki algorithm ki speed dono par independently depend karti hai — ek lamba text ek tiny pattern ke saath bahut alag behave karta hai ek aisi situation se jahan text aur pattern ka size similar ho. aur ko alag rakhna hi baad mein honest label likhne deta hai dono mein se ek ko hide karne ki jagah.


3. Indexing: square-bracket notation

Ek specific box ke baare mein baat karne ke liye, hume use name karne ka tarika chahiye.

  • = pehla character. = aakhri character.
  • Bracket ek sawaal hai jo tum string se poochte ho: "position par kaun sa letter hai?"

Hume consecutive boxes ki ek run ko bhi name karna hoga, kyunki ek match text ka ek poora stretch hota hai, na ki sirf ek letter:

Toh ek 3-character chunk hai (boxes 2, 3, 4). Gino: . Yeh "+1" baar baar aata hai — yeh Section 1 ka wahi "count-from-zero" fingerprint hai.


4. Shift — jahan hum ruler rakhte hain

Ab asli star. Imagine karo ki pattern-ruler ko text ke saath slide kar rahe ho. Abhi woh kahan baitha hai woh ek single number hai.

Figure — Naive pattern matching — O(nm)
  • Figure mein ruler (pattern ) shift par rakha gaya hai. Uska box text box ke saath line up karta hai. Yeh ek relationship — ==pattern box ↔ text box == — poore algorithm ka dil hai.
  • Ek shift valid tab kehlata hai jab har pattern letter neeche waale text letter se match kare: Ise zor se padho: " ka -lamba slice jo se shuru hota hai, poore pattern ke barabar hai."

5. Shifts par kyun rukте hain

Agar ruler ko bahut zyada right slide karein, uski tail text ke end se bahar latakti hai. Woh kab hota hai?

Pattern ka last box par land karta hai. Uske liye abhi bhi ek real text box hona zaroori hai, hume chahiye ki woh last text index se zyada na ho:

Figure — Naive pattern matching — O(nm)
  • Figure mein green ruler last legal shift par baitha hai: uski tail exactly last text box ko touch karti hai.
  • par red ruler overhang karta hai — box ko text box chahiye hoga, jo exist nahi karta.

Yahi wajah hai ki parent note kehta hai exactly candidates hain.


6. Counting tool: — Big-O

Parent ka headline "" hai. Is symbol ka matlab kya hai?

Yeh tool hume exact steps count karne ki jagah kyun chahiye? Kyunki exact step count machine, language, chosen letters par depend karta hai — messy, unstable numbers. Big-O us noise ko uda deta hai aur sirf growth ka shape rakhta hai, jo actually decide karta hai "fast" versus "slow" jab inputs scale hote hain. Poori treatment ke liye Big-O Notation dekho.

  • Yahan kahan se aata hai? Outer slide baar chalti hai; har slide mein up to letter-comparisons hoti hain. Multiply karo: lagbhag comparisons. Woh product hi hai.

7. Do loops aur "==" test

Parent ka pseudocode do loops aur ek equality check use karta hai. Inhe picture se build karo.


Prerequisite map

Strings and length

Zero-based indexing T of i

Slice notation T from a to b

Text T and pattern P

Lengths n and m with m less than or equal n

Shift s where ruler sits

Shifts run 0 to n-m

Count is n-m+1

Valid shift equality

Outer slide and inner spell loops

Big-O growth n times m

Naive pattern matching O nm


Equipment checklist

Apne aap ko test karo — har answer sirf tab reveal karo jab tum use zor se bol chuke ho.

Kisi bhi string ke pehle character ka index kya hota hai?
(hum hamesha zero se count karte hain).
Length- string ke aakhri character ka index kya hota hai?
.
aur kya stand karte hain?
= text ki length; = pattern ki length, with .
ka matlab kya hai?
Text ke box number mein ek single character.
Slice ka matlab kya hai, aur ismein kitne characters hain?
ka substring index se tak inclusive — exactly characters.
Agar pattern shift par rakha gaya hai, toh uska box kaun sa text box cover karta hai?
Text box .
Valid shifts par kyun rukте hain?
Kyunki pattern ka last box par land karta hai; text ke andar rehne ke liye hume chahiye , yaani .
Kitne candidate shifts hote hain?
.
Plain words mein, kya describe karta hai?
Running time bade inputs ke liye kaise grow karta hai — roughly times ke proportional — constants ko ignore karke.
Kaun sa loop "slide" hai aur kaun sa "spell"?
Outer loop over = ruler slide karo; inner loop over = pattern ko text ke against spell karo.

Connections