Yeh page woh har symbol build karta hai jo parent note use karta hai, "string kya hoti hai" se shuru karke — aur koi bhi notation use karne se pehle usse draw aur explain karta hai. Agar neeche koi symbol already obvious lage, skim karo — lekin baad ke har idea ka base pehle waale ideas hain, isliye order matter karta hai.
Agar s=banana toh suf(0)=banana (poori cheez), suf(3)=ana, aur suf(5)=a (sirf aakhri letter). Exactly n suffixes hote hain — ek har position par shuru hota hua.
Topic ko iske zaroorat kyun hai: suffix array inhi objects ko sort karta hai.
Agar SA=[5,3,1,0,4,2] toh position 5 shelf 0 par hai, position 3 shelf 1 par, aur isi tarah, rank=[3,2,5,1,4,0] milta hai (padhna: position 0 shelf 3 par hai).
Topic ko iske zaroorat kyun hai: predecessor lookup j=SA[rank[i]−1] literally dono arrays ko chain karta hai.
k=1 se shuru karo (sirf pehle letter se sort karo), phir k=2, k=4, k=8, har round mein doubling karo jab tak k≥n na ho, us point par "first k chars" already poore suffix ko cover kar leta hai.
Topic ko iske zaroorat kyun hai: yahi O(nlogn) engine hai. logn doublings ki ginti hai.
Topic ko iske zaroorat kyun hai: doubling rounds ki ginti exactly ⌈log2n⌉ hai, isliye cost label O(nlogn) ka matlab hai "har doubling round mein linear kaam × rounds ki ginti."
Self-test: kya tum reveal karne se pehle har ek ka jawaab de sakte ho?
s[i] ka kya matlab hai aur counting kahan se shuru hoti hai?
Position i par character, 0 se count karte hue, toh s[0] pehla aur s[n−1] aakhri hai.
suf(i) kya hai?
s ki tail position i se end tak, s[i..n−1]; inki ginti n hoti hai.
Kyun har substring ka suffix se relation hai?
Har substring kisi suffix ka prefix (front chunk) hota hai, isliye suffixes padhne se saare substrings cover ho jaate hain.
Do strings ko lexicographically kaise compare karte hain?
Left se character by character compare karo; pehla mismatch order decide karta hai; agar ek match karte karte khatam ho jaaye, toh chhoti wali smaller hoti hai.
SA[r] ko words mein kya kehte hain?
Dictionary order mein r-th smallest suffix ka starting index.
SA aur rank mein kya relation hai?
Yeh inverse permutations hain: rank[SA[r]]=r; SA shelf→position map karta hai, rank position→shelf map karta hai.
rk[i] kya hai aur doubling kyun?
Suffix i ki rank sirf uske pehle k chars use karke; doubling se first 2k chars ko pair (rk[i],rk[i+k]) ke roop mein compare kar sakte hain already-known ranks use karke.
Jab i+k≥n ho toh −1 kyun use hota hai?
Woh suffix jo end se bahar chala gaya woh empty/smallest character ki tarah act karta hai, isliye use kisi bhi real character se pehle sort karna chahiye — −1 se encode kiya jaata hai.
Yahan O(nlogn) ka kya matlab hai?
Lagbhag log2n doubling rounds, har ek mein linear (O(n)) kaam.
Kasai's algorithm mein h kya karta hai?
Current overlap length ko positions ke across carry karta hai, har step mein at most 1 se shrink karta hai, linear-time LCP deta hai.