3.7.12 · D3 · HinglishAlgorithm Paradigms

Worked examplesDP problems — edit distance (Levenshtein)

3,845 words17 min read↑ Read in English

3.7.12 · D3 · Coding › Algorithm Paradigms › DP problems — edit distance (Levenshtein)

Is page mein hum har tarah ki input dhundte hain jo edit distance throw kar sakti hai, aur har ek ko ground up se work karte hain. Agar parent note ne tumhe machine sikhaayi thi, toh yeh page stress test hai — hum isme empty strings, identical strings, single characters, aisi strings jahan har letter galat hai, ek real-world spell-checker, aur ek exam twist daaalte hain, taaki tum kabhi aisa case na dekho jo tumne pehle dekha na ho.

Pehle, teen symbols earn karne padte hain, usse pehle kuch bhi unhe use kare: do strings aur , aur distance function .

Ab woh rule jo sab kuch drive karta hai (poori tarah parent note mein build kiya gaya hai):

Yahan "pehle letters" ka matlab hai: string ko position ke baad kaato. cat ke liye, "pehle 2 letters" hain ca. Woh letter jis ke baare mein hum abhi decide kar rahe hain woh hai — us chop mein aakhri wala. Yeh sabse common bug hai, isliye hum har example mein current letters zor se bolenge.


Scenario matrix

Har edit-distance problem in case classes mein se ek mein aata hai. Neeche hamara kaam hai ki har row ko ek fully worked example se bharein. (Yaad karo , upar ki definitions se.)

# Case class Kya khaas hai Covered by
C1 Dono empty Degenerate: kuch karna nahi Example 1
C2 Ek empty, ek non-empty Pure base case (sab inserts ya sab deletes) Example 1
C3 Identical strings Har char match karta hai — diagonal 0 carry karta hai Example 2
C4 Single-char, equal vs unequal Sabse chhota non-empty case, dono branches Example 3
C5 Equal length, kuch substitutions Sirf swaps se distance, koi length change nahi Example 4
C6 Different length, mixed ops Insert/delete aur substitute saath mein Example 5
C7 Completely disjoint alphabets Worst case — distance Example 6
C8 Prefix/suffix contained Ek string doosre ke andar hai Example 7
C9 Real-world word problem Spell-checker suggestion cost Example 8
C10 Exam twist: multiple optimal paths Same distance, alag edit scripts Example 9

Hum poore samay ek sanity bound bhi use karte hain: distance hamesha (length gap — ek lower bound, kyunki tum gap close karne se bach nahi sakte) aur (longer string ki length — ek upper bound, kyunki worst case mein tum ek letter per op fix karte ho) ke beech hoti hai. Symbols mein:

Hum is band ko har example mein dobara check karenge — yeh kisi arithmetic slip ko pakadne ka sabse fast tarika hai.

Neeche wali figure is band ko ek number line par plot karti hai, jisme real distance (red dot) sundaysaturday example ke liye iske andar fansa hua hai jo hum Example 5 mein solve karte hain.

Figure — DP problems — edit distance (Levenshtein)
Figure s01 — se tak ka ek horizontal number line. Ek black double-headed arrow allowed band ko lower bound se upper bound tak span karta hai. Red dot actual answer mark karta hai, band ke andar baitha hai. Ise padhna: koi bhi legal distance se left ya se right nahi ja sakti. Hum Example 5 mein exactly isi picture par wapas aayenge.


Example 1 — Empty strings (C1 + C2)

Forecast: Aage padhne se pehle teeno guess karo. Empty→empty lagta hai… kuch nahi. Empty→3-letter lagta hai… 3 builds. 3-letter→empty lagta hai… 3 removals.

Steps.

  1. ( use karte hue, dono lengths ke saath). Yeh step kyun? Do empty strings pehle se identical hain; zero moves. Yeh woh seed hai jisse har table grow karti hai.
  2. . Base-case rule kehta hai , toh . Yeh step kyun? Kuch nahi se tum sirf insert kar sakte ho. c, phir a, phir t produce karne ke liye tum teen baar insert karte ho — koi sasta move nahi hai kyunki deletes aur substitutions ko act karne ke liye ek existing letter chahiye.
  3. . Base-case rule kehta hai , toh . Yeh step kyun? Empty string tak pahunchne ke liye tum sirf delete kar sakte ho — d, o, g hatao, teen deletes.

Verify: Middle case ke liye, , . Lower bound ; upper bound . Answer bilkul dono ke beech pinched hai, toh sahi hona chahiye. ✅ (dog"" case mirror image hai, .)


Example 2 — Identical strings (C3)

Forecast: Same word, dono taraf. Aage padhne se pehle number guess karo.

Steps.

  1. apple, toh aur — equal lengths. Diagonal bharo. par: current letters a, a — woh match karte hain, toh . Yeh step kyun? Match diagonal ko bina +1 ke copy karta hai (match branch). Zero cost carry hota rehta hai.
  2. Har subsequent diagonal cell match karta hai (p=p, p=p, l=l, e=e), toh . Yeh step kyun? Har current-letter pair equal hai, toh har step ko diagonal se re-copy karta hai. Neeche figure mein s ki seedhi red diagonal dekho.
  3. Final answer .

Figure — DP problems — edit distance (Levenshtein)
Figure s02 — appleapple ke liye poora DP table. Columns B=apple se headed hain, rows A=apple se. Base row aur column tak black mein count karte hain. Red diagonal s ki top-left se bottom-right tak run karti hai; red arrow answer par point karta hai. Har matched letter cell ko up-and-left se copy karta hai, toh zeros seedhe neeche ride karte hain.

Verify: Distance ka matlab hai "pehle se equal" — aur strings hain hi identical, toh koi edit possible ya zaruri nahi. Sanity band: . Answer lower bound par baitha hai, exactly wahan jahan identical strings honi chahiye. ✅


Example 3 — Single characters, dono branches (C4)

Forecast: Ek match hai, ek mismatch. Ek ka cost hona chahiye, doosre ka — kaun sa kaun sa hai?

"a""a" ke liye Steps.

  1. Table ki hai. Bases: , , . Yeh step kyun? Row 0 aur column 0 touch karne se pehle exist karne chahiye — yeh wahi "base bhool gaye" mistake hai parent note se.
  2. : current letters a, a match karte hain → . Toh . Yeh step kyun? Match branch, pure diagonal, koi +1 nahi.

"a""b" ke liye Steps.

  1. : a, b alag hain. Toh . Yeh step kyun? Sabse sasta predecessor diagonal hai, matlab hum ek coin mein a→b substitute karte hain (Levenshtein ka substitute operation — transposition nahi; Levenshtein mein "do letters swap karo" ka koi move nahi hai). a delete karke b insert karna cost karta — min sahi se use reject karta hai.

Verify: "a""a" deta hai; sanity band . ✅ "a""b" deta hai; band , aur hone se poora cost ek substitution hai, kabhi koi length change nahi. ✅


Example 4 — Equal length, sirf substitutions (C5)

Forecast: Har pair mein dono strings ki equal length hai. Guess karo: kya equal length answer ko pure substitutions hone par force karti hai?

"cat""cot" ke liye Steps. Yahan .

  1. : c=c match. Yeh step kyun? Match branch aage carry karta hai.
  2. : current letters a, o alag hain. Yeh step kyun? Min diagonal predecessor pick karta hai, yaani a→o substitute karo. Delete path () aur insert path () dono cost karte hain, toh each — recurrence inhe reject karta hai kyunki substitution yahan strictly sasti hai. Yeh wahi "substitute kyun, delete+insert kyun nahi" hai jo formula automatically settle kar deta hai.
  3. : t=t match. Toh .

"abcd""wxyz" ke liye Steps. Yahan .

  1. Har diagonal cell mein alag letters hain (a≠w, b≠x, c≠y, d≠z). Har ek par, diagonal predecessor delete/insert neighbours ko exactly usi -vs- margin se beat karta hai jaise Step 2 mein, toh har ek ek substitution contribute karta hai: , , , . Yeh step kyun? Jab lengths equal hain, toh har diagonal cell par min-over-three hamesha substitution (cost ) ko delete+insert pair (cost ) ke upar prefer karta hai. Isliye total substitutions.

Verify: "cat""cot" deta hai; sanity band . ✅ "abcd""wxyz" deta hai; band — yeh upper bound par baitha hai kyunki har letter ko kaam ki zarurat thi. ✅


Example 5 — Different length, mixed operations (C6)

Forecast: In dono mein s…day share hai. Guess karo: target letters mein se kitne ko real kaam ki zarurat hai.

Steps.

  1. DP table row by row bharo (rows = sunday, columns = saturday). Neeche ki table recurrence se compute ki gayi hai; bottom-right answer se top-left corner tak red back-pointer path trace karo.

Figure — DP problems — edit distance (Levenshtein)
Figure s03 — sundaysaturday ke liye DP table. Rows A=sunday se headed hain, columns B=saturday se. Bottom-right cell mein answer hai. Red staircase se tak ek optimal back-pointer path trace karta hai: matched letters par diagonal moves (free) aur teen costly moves — do inserts aur ek substitute.

  1. Shared letters s…u…d-a-y diagonal par free line up karte hain — yeh red path ke woh diagonal steps hain jahan letters match karte hain. Kya bacha: saturday mein extra a aur t hain jo sunday mein nahi hain → 2 insert karo (path mein do leftward steps). Aur sunday ka n r banana padega → 1 substitute karo (ek diagonal step jahan letters alag hain). Yeh step kyun? Matches free hain, toh free diagonal run positions ka ek set trace karta hai jo dono strings mein order mein agree karte hain. Yahi woh jagah hai jahan LCS connection precise hai: free (match) diagonal steps ek common subsequence form karte hain — lekin plain Levenshtein use maximise nahi karta. Do related lekin alag DPs: LCS matches count karta hai maximise karne ke liye; Levenshtein edits count karta hai minimise karne ke liye, aur sirf tab jab substitution aur insert/delete sab cost karte hain, toh identity satisfy hoti hai sirf substitution-free (LCS) edit model ke liye. Hum yahan us identity par rely nahi karte; bas observe karte hain ki longer shared runs distance ko shrink karti hain.
  2. Total .

Verify: Figure s01 par wapas, jiska band is example ke liye build kiya gaya tha: lower bound ; hamara answer (extra forced substitution hai), aur . s01 mein red dot exactly par baitha hai, band ke andar. ✅


Example 6 — Disjoint alphabets, worst case (C7)

Forecast: Koi common letters nahi, aur lengths vs . Guess karo ki kya answer hai.

Steps.

  1. Kuch bhi match nahi karta, isliye har cell "differ" branch mein jaata hai — koi free diagonals exist nahi karti. Neeche ki table poora grid dikhati hai; answer bottom-right cell hai.

Figure — DP problems — edit distance (Levenshtein)
Figure s04 — abcxyzw ke liye DP table jisme letters poori tarah disjoint hain. Rows A=abc se headed hain, columns B=xyzw se. Kyunki koi letters match nahi karte, values sirf badhti hain; red bottom-right cell answer dikhata hai, ke equal. Red path teen substitutions aur ek insert ka mix hai.

  1. Path padhte hue: a→x, b→y, c→z substitute karo (teen substitutions), phir w insert karo — total . Yeh step kyun? Jab alphabets disjoint hain, koi free matches exist nahi karte, toh distance apni ceiling tak pahunch jaati hai: longer string ki length. Tum longer string ke har letter par ek op spend karte ho.

Verify: Sanity band . ✅ Disjoint case exactly upper bound saturate karta hai — in lengths ki koi bhi input se zyada cost nahi kar sakti.


Example 7 — Ek string doosre ki substring hai (C8)

Forecast: Pehle mein, kya cat cart ke andar chhupa hai? Doosre mein, kya cat scatter ka ek chunk hai? Sirf "extra letters" se har distance guess karo.

"cart""cat" ke liye Steps. Yahan , .

  1. Neeche ki DP table (top panel) alignment dikhati hai. Red path follow karo: c matches c, a matches a (diagonal, free), phir cart mein abhi bhi apne t se pehle r hai jabki cat seedha t par jaata hai — r leftover hai → use delete karo (ek upward step).

Figure — DP problems — edit distance (Levenshtein)
Figure s05 — do stacked DP tables, har ek apne axes labeled ke saath. Top: cartcat ke liye table; left axis A=cart (rows) labeled hai, top axis B=cat (cols), aur base row/column () annotated hain. Red path do free diagonal matches phir ek upward delete step dikhata hai, answer . Bottom: catscatter ke liye table; left axis A=cat (rows), top axis B=scatter (cols), base row/column annotated. Red path cat ke through ek free diagonal run dikhata hai jo s aur ter ke liye leftward insert steps se bracket hua hai, answer .

  1. Toh ek extra letter r → distance .

"cat""scatter" ke liye Steps. Yahan , .

  1. scatter = s + cat + ter. Hume front mein s aur back mein t,e,r insert karne padte hain → inserts. cat ka poora middle mein free match hota hai (bottom table mein free diagonal run). Yeh step kyun? Jab ek string doosre ke letters ko order mein plus extras ke saath contain karti hai, toh har extra ek single delete/insert hai.

Verify: "cart""cat": sanity band — answer lower bound par baitha hai kyunki sirf deletions ki zarurat thi. ✅ "cat""scatter": band — phir lower bound par, pure insertions, koi substitution nahi kyunki cat cleanly embed hota hai. ✅


Example 8 — Real-world word problem: spell-checker (C9)

Forecast: Dono candidates letters ke hain, typo ki tarah same. Guess karo kaun sa correction "closer" hai.

Steps.

  1. Dono candidate distances DP table bharne se aati hain; figure do answer cells side by side dikhati hai taaki tum dekh sako kaun sa chhota hai.

Figure — DP problems — edit distance (Levenshtein)
Figure s06 — do DP tables, ek har candidate ke liye. Left: recievereceive, uska bottom-right answer cell red mein padhta hai. Right: recieverelieve, uska red answer cell padhta hai. Chhota red number ranking jeet ta hai.

  1. "recieve""receive": equal lengths (), toh letter-for-letter align karo. r-e-c match karte hain, phir typo mein i-e hai jahan correct word mein e-i hai — reversed, toh do substitutions (i→e aur e→i), phir v-e match. Distance . Yeh step kyun? Equal lengths → position-by-position align karo; do positions differ karte hain → do substitutions.
  2. "recieve""relieve": r-e match karte hain, phir c vs l differ karte hain (+1 substitute), i-e-v-e sab match karte hain. Sirf ek position differ karti hai → distance .
  3. Compare karo: receive cost karta hai, relieve cost karta hai. Checker "relieve" pehle rank karta hai raw edit distance se. Yeh step kyun matter karta hai? Real spell-checkers precisely isliye dictionary-frequency tie-breaker add karte hain kyunki raw distance "galat" word ko favour kar sakta hai — lekin pure Levenshtein par, relieve jeet ta hai.

Verify: Teeno words ki length hai. receive: band ; relieve: band . Dono distances pure-substitution counts hain ( aur ) kyunki . ✅


Example 9 — Exam twist: do optimal paths, same distance (C10)

Forecast: Letters same hain, bas reorder hue hain. Levenshtein mein koi transposition operation nahi hai (tum ek move mein do letters swap nahi kar sakte), toh reorder free nahi hai — cost guess karo.

Steps.

  1. table banao (). Bases: aur . Phir (ab, substitute), (a=a match, carry karta hai), (b=b match, carry karta hai), aur .

Figure — DP problems — edit distance (Levenshtein)
Figure s07 — abba ke liye DP table, answer red bottom-right cell mein. Teen red arrows us cell se saare teen predecessors (, , ) par fan out karte hain, jo sab par tie karte hain. Kyunki teen back-pointers equally optimal hain, ek se zyada edit script minimum achieve karti hai.

  1. par saare teen predecessors par tie karte hain, toh figure teen red back-pointer arrows draw karti hai — yahi tie exactly woh reason hai kyun multiple optimal edit scripts exist karti hain. Do natural scripts:
    • a→b substitute karo, phir b→a substitute karo.
    • a delete karo, phir end mein a insert karo (ek "rotate" delete+insert ke roop mein). Dono cost karte hain. Yeh step kyun? Bottom-right se top-left tak har distinct back-pointer path ek distinct edit script mein decode hoti hai jisme same total cost hai.

Verify: Levenshtein mein koi transposition operation nahi hai, isliye do adjacent letters swap karne ki cost hai, nahi. Sanity band — upper bound par baitha hai. ✅ (Agar transpositions allowed hote — Damerau–Levenshtein variant — toh answer hota; standard Levenshtein deta hai.)


Recall Matrix ke across quick self-test

Answers cover karo aur har ek reconstruct karo. ::: ::: (teen inserts) ::: (identical) ::: (ek substitution) ::: (ek substitution) ::: (char substitutions) ::: ::: (worst case ) ::: (r delete karo) ::: (char inserts) ::: ::: (free transposition nahi)


Connections

  • Parent: Edit Distance — woh machine jinhe yeh examples stress-test karti hain.
  • Longest Common Subsequence — free diagonal run ek shared subsequence se relate karta hai (Example 5), though LCS maximise karta hai matches ko jabki Levenshtein minimise karta hai edits ko.
  • Sequence Alignment — spell-checking (Example 8) small-scale alignment hai.
  • Optimal Substructure · Overlapping Subproblems — kyun recurrence upar har case par sahi hai.
  • Recursion and Memoization — inhe compute karne ka top-down tarika.
  • Space Optimization in DP — upar ki har table ko sirf previous row chahiye.
  • Dynamic Programming — umbrella paradigm.