Minimum Edit Distance Dynamic Programming

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ม.ค. 2025

ความคิดเห็น • 511

  • @mylilcritic
    @mylilcritic 8 ปีที่แล้ว +66

    Legend! I couldn't figure it out after an hour of looking at my lectures but within 3 minutes of you explaining it just clicked! Thank you!

  • @shubhampathak1080
    @shubhampathak1080 9 ปีที่แล้ว +37

    I have got my exam tomorrow and this video really helped me to understand the edit distance algorithm thoroughly. Probably one of the best explanation that one can find on TH-cam for edit distance. Thank you very much !

    • @vaibhavmourya65
      @vaibhavmourya65 ปีที่แล้ว +2

      mine is tmrw.. 8 years same vibe

    • @nihadbkirli347
      @nihadbkirli347 2 หลายเดือนก่อน

      @@vaibhavmourya65 2024 same vibe tomorrow exam

    • @vaibhavmourya65
      @vaibhavmourya65 2 หลายเดือนก่อน

      @@nihadbkirli347
      I am graduate now 2024 batch

  • @sbahuddin
    @sbahuddin 11 หลายเดือนก่อน +1

    I spent hours and couldn't figure it out. You explained the concept so nicely in just 9 minutes.

  • @namazbaiishmakhametov6424
    @namazbaiishmakhametov6424 4 ปีที่แล้ว +34

    Crap, man, in a little over three months it will be 6 years since you shot this video, and it helped me today! Thanks a lot, Tushar, and I hope you're doing well these corona-days!

  • @4ythere
    @4ythere 9 ปีที่แล้ว +243

    Hey, I feel you should also hover over optimal subproblems and what a state of the DP represents, For example, In this question, when not equal, you take the min of(top,left,diagonal) , where in you should explain that the top refers to inserting a[i], left refers to deleting a[i] and diagonal refers to editing a[i].
    On a side note, you should have mentioned the case where the cost of edit, insert and delete are different.

    • @sankethb.k642
      @sankethb.k642 5 ปีที่แล้ว +1

      Thank you

    • @manoharyedla360
      @manoharyedla360 4 ปีที่แล้ว +3

      @@sankethb.k642 worst lecture

    • @abhishekk.3977
      @abhishekk.3977 4 ปีที่แล้ว +8

      7:00 - Diagonal ( EDIT)
      7:25 - Left ( DELETE )
      Top -> Insert (Implied)

    • @beanlighter9491
      @beanlighter9491 4 ปีที่แล้ว +1

      yes but this is how indians study
      can you guys recommend me a more detailed lectures?

    • @Cube2deth
      @Cube2deth 4 ปีที่แล้ว +3

      @@parmoksha +1 I don't know why they complain! His videos are not meant for proof or theory or how he thought of the solution
      just how to solve a problem, which is what we are all trying to learn

  • @tuncdogukan
    @tuncdogukan 7 ปีที่แล้ว +1

    I got the idea of the algorithm quickly. It's a nice and clear implementation with good explanation. Thanks for the effort to pass on the knowledge.

  • @melogens994
    @melogens994 10 หลายเดือนก่อน

    I have been spamming your videos before the olympiad in informatics and they are quite literally my lifeline. Thanks so much for these videos!

  • @novicaovuka5480
    @novicaovuka5480 6 ปีที่แล้ว +4

    Man, you helped me a lot. I have an exam soon. And I have to learn a lot of code which I don't understand. After watching your video, man, that code is so easy. Thanks a lot.

  • @FF-ne2qz
    @FF-ne2qz 8 ปีที่แล้ว +268

    You didn't say why this works. It is very important!

    • @bioinfo9386
      @bioinfo9386 8 ปีที่แล้ว +16

      He actually did, even in detail- you´d better watch the clip again..

    • @azklinok
      @azklinok 8 ปีที่แล้ว +99

      He did not. He told us the method, not its proof.

    • @wanghaochen3515
      @wanghaochen3515 8 ปีที่แล้ว +16

      What kind of proof do you need? If they are the same, then do nothing, if not, add 1 more operation to whatever gets the least in previous ops. To me, the logic is pretty obvious.

    • @azklinok
      @azklinok 8 ปีที่แล้ว +76

      The logic is obvious to all of us. I want to know WHY the logic works, and gets us the right answer.

    • @wanghaochen3515
      @wanghaochen3515 8 ปีที่แล้ว +137

      azklinok Well. First of all, if two characters are same, you don't do anything, that's clear right? If not, then there's 3 possible moves: delete, replace and insert.
      Suppose your rows represents str1, cols represents str2. If you wanna delete, you go back to previous column, which is T[i][j-1], because you'd like to retrieve the last character in str2. Similarly, if you wanna insert, you go back to previous row, which is T[i-1][j]. For replacing current character, you need to retrieve last character in both str1 and str2, which is T[i-1][j-1]. At last, you get the minimum among the above 3 moves and plus 1 to it to get T[i][j].
      I'm not sure if I articulate it in a proper way, at least that's how I understand this problem.

  • @pvpk1994
    @pvpk1994 8 ปีที่แล้ว +7

    Man! Respect! Awesome Job! ..i spent hours together breaking my head on this before seeing this video!
    Lucid Explanation!

  • @ksankitha
    @ksankitha 8 ปีที่แล้ว +3

    Tushar your explanations are extremely clear and have been immensely helpful Great job .Looking forward to more videos from you .Please keep them coming !

  • @aashkas
    @aashkas ปีที่แล้ว

    Thank you, I had been looking at some dp question for days. Your explanation and graph really became a breakthrough.

  • @DominicClaxton
    @DominicClaxton 8 ปีที่แล้ว +1

    I didn't understand this until I watched your video. Thanks a lot!

  • @ertagon
    @ertagon 2 ปีที่แล้ว

    Simple and straightforward. I looked at 3 different videos before this. This is a really good explanation.

  • @amith89rm
    @amith89rm 4 ปีที่แล้ว +1

    I salute this guy!!! Thanks so much for the video. I was cracking my head to solve this problem. your explanation helped me understand in less than 10 minutes

    • @sagnikrana7016
      @sagnikrana7016 4 ปีที่แล้ว

      Hey Amith, I understood the approach. Could you help me explain why this method works?

  • @digusbickus
    @digusbickus 3 ปีที่แล้ว +1

    I've been slamming my head against this problem for days. Cheers! You made it very understandable and easy to grasp.

  • @mr.mystiks9968
    @mr.mystiks9968 5 ปีที่แล้ว +1

    Awesome video. I already knew how to write out the DP table and but deriving the edit operations being done from the table was the crucial part I did not understand. This was a big help.

  • @studyaccount794
    @studyaccount794 2 ปีที่แล้ว +1

    Bro really drew the 2d array even before starting the video.

  • @xlOogh0stoOlx
    @xlOogh0stoOlx 9 ปีที่แล้ว

    Thank you so much. I have computer algorithm exam tomorrow and this video really helps me. You're the man.

  • @cppprogramming
    @cppprogramming 8 ปีที่แล้ว

    Tushar, your explanation of how to populate the table, and then how to work it backwards to identify operations was awesome. Thank you.

  • @DignsagYT
    @DignsagYT 7 ปีที่แล้ว

    Until this video I could not wrap my head around it. So thank you very much. Straight to the point.

  • @kushal1
    @kushal1 4 ปีที่แล้ว

    Thank God, you did before I am learning DP. Intuition building is hard and there is a way. My instructors don't know it. You know it and you show it.

  • @abhijithtk
    @abhijithtk 9 ปีที่แล้ว +42

    I think this is one of the best explanations out there for this problem. Thanks much. Your implementation is very simple too. love it.

  • @Daniel-to5jd
    @Daniel-to5jd 4 ปีที่แล้ว

    the best video i have found on this topic so far, you explain it better than in a paid coursera course

  • @afiyatiamaluddin9034
    @afiyatiamaluddin9034 4 ปีที่แล้ว

    Thank you very much, this is my AHA MOMENT. This is what I'm looking for all this time.

  • @abhijeetkumar2204
    @abhijeetkumar2204 4 ปีที่แล้ว

    Evergreen video even u can watch this video 10 year later and understand the dp.

  • @studywithrobin2715
    @studywithrobin2715 3 ปีที่แล้ว

    You explain it a lot better than some of the newer videos.

  • @ayanpaul27
    @ayanpaul27 4 ปีที่แล้ว

    Short and crisp explanation.. Thank u so much... Finally i got to understand this

  • @evergreen7781
    @evergreen7781 4 ปีที่แล้ว

    I can say that, you have the best Dynamic Programming TH-cam tutorial in the market ❤️❤️❤️

  • @sharpdemon
    @sharpdemon 9 ปีที่แล้ว

    Wow very nice man! I will definitely go through all your videos to brush up my algorithms!

  • @vvsatyanarayanareddyn4641
    @vvsatyanarayanareddyn4641 9 ปีที่แล้ว +35

    DP was my nightmare , always used give up , after watching your videos, its like DP marathon at weekend. thanks a lot

    • @noone-ip8qs
      @noone-ip8qs 5 หลายเดือนก่อน

      How is it going on now

  • @tristangrobler4950
    @tristangrobler4950 9 หลายเดือนก่อน

    This is really cool! 9 years since posting and it helped. Nice work!

  • @janedawg09
    @janedawg09 ปีที่แล้ว

    your clear explanation as to how each number came up for each cell is really helpful (also the shortcut). i've been having a hard time understanding the this but you removed the complexity with your explanation

  • @daydreameravani
    @daydreameravani 8 ปีที่แล้ว

    Without you video, I will definitely fuck up on leetcode. Thx a lot! Please keep doing this!

  • @srinivasdesai3801
    @srinivasdesai3801 6 ปีที่แล้ว +10

    I have few suggestions,
    1. As many people have pointed out, I don't think I'm getting to know why this solution works before seeing the complete video. It would be helpful if Tushar goes over other approaches as well to prove that this solution works or mathematical proof shall be sufficient.
    2. I think it would be better if the video explains what happens to the string(s) when we delete a character(s) and how the comparison shall be made rather than asking to the take the minimum of top, left and diagonal
    3. Adding to the second point, if the characters are not same, I don't think it is just 1 + Min(cost(top), cost(dia), cost(left)). I think it shall be min(1 + cost(top), 1 + cost(left), 2 + cost(dia)). Because, when we are taking from the diagonal we are removing one element from str1 and one from str2. Assuming cost of removal is 1, it shall be 2 + cost(diag) rather than 1 + cost(dia)
    I welcome any suggestions for correction.

    • @ericchen1248
      @ericchen1248 6 ปีที่แล้ว

      Nope, it's talking about changing one string into the other, so you're either operating on str1 or str2. If you want to go down that route, then by the way string is stored by computer memory, insertion or deletion should cost much more than changing. This is just the definition of edit distance. Of course, if you want to go to variants where there are different costs, your point is correct.
      As for the explaining part many people are asking about, he has a lot of videos on dynamic programming itself, it's basically all the same logic, and would be rather redundant for viewers otherwise. You can check out other videos explaining DP to get a better understanding, but here is a cut short version
      Dynamic Programming works because when looking for answers for a question with length of n, we can look at it as an answer for question of length n - 1 ( or some other lesser length, generally something that can be achieved from an atomic operation ), plus some trivial atomic operations.
      So in the case of edit distance, what is an atomic operation on string edits. We have insertion, removal, or changing. And if you create a table like the one in the video, the three separate n-1 length question corresponds to the three cells to the left, diagonal, and top. The minimum of the three is choosing the best way to starting point from the previous three states, and + 1 is the cost to go from that state to the current state.

    • @uditkanotra9393
      @uditkanotra9393 4 ปีที่แล้ว

      Use f[i][j] to represent the shortest edit distance between word1[0,i) and word2[0, j). Then compare the last character of word1[0,i) and word2[0,j), which are c and d respectively (c == word1[i-1], d == word2[j-1]):
      if c == d, then : f[i][j] = f[i-1][j-1]
      Otherwise we can use three operations to convert word1 to word2:
      (a) if we replaced c with d: f[i][j] = f[i-1][j-1] + 1;
      (b) if we added d after c: f[i][j] = f[i][j-1] + 1;
      (c) if we deleted c: f[i][j] = f[i-1][j] + 1;
      Note that f[i][j] only depends on f[i-1][j-1], f[i-1][j] and f[i][j-1], therefore we can reduce the space to O(n) by using only the (i-1)th array and previous updated element(f[i][j-1]).

  • @CodeFromSoul
    @CodeFromSoul 4 ปีที่แล้ว +1

    How the hell people think so out of the box to solve problem, I can never imagine this problem can be solved this way... really burst up 🤯

  • @yinkaige5169
    @yinkaige5169 2 ปีที่แล้ว

    Great explanation! So so much easier this way to understand this way

  • @sahnawaz
    @sahnawaz 8 ปีที่แล้ว +3

    one thing he did not mention how we detect addition. so when computing all kind operations, if you move up the cell (e.g from (2,1) to (1,1) that means we need to add that particular row character in the conversion.

  • @AntiochsAdvocate
    @AntiochsAdvocate 3 ปีที่แล้ว

    Got stuck on this problem in an NLP textbook and this really helped tysm :)

  • @monapanah
    @monapanah 10 หลายเดือนก่อน

    Bravo! one of the best teachers in this field! thank you

  • @achilles165
    @achilles165 10 ปีที่แล้ว +20

    Great series of videos to prepare of interviews... already subscribed to your channel...
    One suggestion though...
    instead of directly jumping to the matrix right from start...
    it would be awesome if you could explain the solution for a min or 30 seconds, in terms of what you will be doing before jumping to solving of the table.
    Although you kind of mention the formula in the end, but it would be better if it is verbally explained at the beginning and then mathematically written at the end. That would help people in understanding that how DP can solve this problem in the first place.

  • @perfectfalse1
    @perfectfalse1 2 ปีที่แล้ว

    THIS WAS A HUGE HELP. Thank you for posting this.

  • @alessiodenny6123
    @alessiodenny6123 4 ปีที่แล้ว

    excellent thanks ! More useful than 3 hours of lectures at school

  • @vyshnavramesh9305
    @vyshnavramesh9305 4 ปีที่แล้ว +1

    In MIT DP 3 video, Eric explains the logic behind the "min(the three cells)" beautifully.
    In short its the representation of insert, delete, replace.

  • @prashantjindal8697
    @prashantjindal8697 8 ปีที่แล้ว

    Your videos on dynamic programming are extremely helpful....!!! Great Job Tushar.....!!!!

  • @yusniamaliah4522
    @yusniamaliah4522 8 ปีที่แล้ว

    i have been looking for tree edit distance theory, and this is the best explanation ever. i just watch at once, i really understand. thanks for sharing education. I'm subscribing U right now..

  • @simiyutube
    @simiyutube 3 ปีที่แล้ว

    old video Tushar Roy but really helpful. I appreciate your help. Made this pretty straight forward.

  • @bernardoalvarenga2607
    @bernardoalvarenga2607 6 ปีที่แล้ว

    Excellent explanation, great clarity. I've seen a video from CS50 on the subject that was a mess. This is great.

  • @MegaMiley
    @MegaMiley 6 ปีที่แล้ว +1

    Thank you!! This is the second time already a video of you made a problem 'click' for me :D, it all makes so much sense now!

  • @karthikeyanm.v8381
    @karthikeyanm.v8381 6 ปีที่แล้ว

    thing is that you teach better than my professor . thank you bro

  • @ankursuri3853
    @ankursuri3853 6 ปีที่แล้ว

    This is the best explanation I have found sofar. Thanks so much Tushar! Keep up the good work.

    • @uditkanotra9393
      @uditkanotra9393 4 ปีที่แล้ว

      please understand where the formula came from
      Use f[i][j] to represent the shortest edit distance between word1[0,i) and word2[0, j). Then compare the last character of word1[0,i) and word2[0,j), which are c and d respectively (c == word1[i-1], d == word2[j-1]):
      if c == d, then : f[i][j] = f[i-1][j-1]
      Otherwise we can use three operations to convert word1 to word2:
      (a) if we replaced c with d: f[i][j] = f[i-1][j-1] + 1;
      (b) if we added d after c: f[i][j] = f[i][j-1] + 1;
      (c) if we deleted c: f[i][j] = f[i-1][j] + 1;
      Note that f[i][j] only depends on f[i-1][j-1], f[i-1][j] and f[i][j-1], therefore we can reduce the space to O(n) by using only the (i-1)th array and previous updated element(f[i][j-1]).

  • @mesosiderite4670
    @mesosiderite4670 2 ปีที่แล้ว

    you're better than my teacher greetings from Quebec

  • @gururajraykar9254
    @gururajraykar9254 3 ปีที่แล้ว

    Just awesome video. Was searching short video which i can learn this algorithm.

  • @ghakol
    @ghakol 3 ปีที่แล้ว

    thank you so much for this video!! i have a test on this in a few hours and this explanation was really helpful :)

  • @kurinchimalarn8555
    @kurinchimalarn8555 9 ปีที่แล้ว

    +Tushar Roy In source code, I believe assuming string2 is modified according to string 1... if T[i][j] == T[ i-1 ][ j ] + 1 "Delete in String 1" ... Should be changed to Insert in string 1. We are not supposed to delete in both string1 and string 2

  • @taoyan8007
    @taoyan8007 8 ปีที่แล้ว

    I completed this question on leetcode online judge, after watching this video I had a deeper understanding of Dynamic programming

  • @muthurajramalingakumar2361
    @muthurajramalingakumar2361 4 ปีที่แล้ว

    Thanks for the upload! The intuition behind taking the Min of three cells would be helpful.

  • @cadmonyuen6141
    @cadmonyuen6141 9 ปีที่แล้ว

    You are doing a really good job. Keep up man.

  • @willgoydych4403
    @willgoydych4403 ปีที่แล้ว

    This guy really casuallly out here just helping peopel

  • @PAIETES19
    @PAIETES19 9 ปีที่แล้ว

    Best explanation on the internet! Thanks for the video

  • @Harow77
    @Harow77 ปีที่แล้ว

    Thanks sir, cleared all my doubts in a short time.

  • @1piecegaming622
    @1piecegaming622 3 ปีที่แล้ว

    thanx thanx thanx bro....Dynamic programming is sick to understand but this logic helps me a lot....Thnaks bhaai

  • @pushkarsinha2800
    @pushkarsinha2800 6 ปีที่แล้ว +1

    So with your algorithm the edit distance of 'b' and 'ababab' is 3. But its 5.
    Please correct at 3:26 - 3:30. It's NOT minimum of the three+0/1 ,
    it's "min{ left+1, up+1, leftUp+0/1(depending on the match)}".
    Rest is cool.

  • @Anne-ug4jv
    @Anne-ug4jv 6 ปีที่แล้ว

    I have NLP exams tomorrow. Thank you very much for this!

  • @eshwareducationsolutions2091
    @eshwareducationsolutions2091 9 ปีที่แล้ว

    this is the best explanations. Thanks much. Your implementation is very simple too. I really helped for my exam.

  • @sigmoid3596
    @sigmoid3596 4 ปีที่แล้ว +1

    respect !! i pass the exam because of you

  • @KameshwaranTheInsane
    @KameshwaranTheInsane 7 ปีที่แล้ว

    I owe you so much
    Perfectly presented. You had explained this within 10 minutes
    Thank you very much...

  • @ce097priyaraina2
    @ce097priyaraina2 2 ปีที่แล้ว

    best explanation i have seen so far..

  • @rialaurent-hughes7191
    @rialaurent-hughes7191 8 ปีที่แล้ว

    Thank you, that was perfect. Explained better than my lecturer

  • @TheNickparsa
    @TheNickparsa 9 ปีที่แล้ว +9

    No body could explain me better than this, thank you and thank you, however although you explained why when we have two equals we should go diagonal you didn't explain why in inequality we get three minimums and plus it to 1,I played with giving an example for myself and I understood that part!
    When they are Not equal:
    First we suppose that last char is not there and we go for previous chars
    we need to see what permutations takes the least operations to have the conversion, after that we need 1 operation to add the one we supposed to get rid of it in the beginning so that is why we have minimum plus 1 here
    Thank you very much,you help has been greatly appreciated.

  • @PrakashBesra
    @PrakashBesra 4 ปีที่แล้ว

    'Why' part is missing here. Statement: We have three operations 1. Insert, 2. Remove, 3. Replace to convert string1 to string2. If not specified, all three operations will have same cost. Naturally, there will be there operations to convert string1 to string2.(give a thought about it.).e.g s1(i)=pupy, s2(j)=pupxyz=> if we insert x in s1, then we need to take care of s1(i) and s2(j-1) which implies d[i][j-1]. Similar to this case, you can take up other two cases. Since, all these three operations take same cost, then why are we trying to find minimum of them? The reason is one of them may be faster(minimum no. of steps) than others to convert string1 to string 2 completely. Also optimal substructure and overlapping subproblem scenario missing.

  • @ahmedboutaraa8771
    @ahmedboutaraa8771 4 ปีที่แล้ว +1

    shout out to you man. really empowering content.

  • @latheefjunior
    @latheefjunior 8 ปีที่แล้ว

    Bro, you've done a wonderful job here. Thanks!!!

  • @blowingmind4097
    @blowingmind4097 4 ปีที่แล้ว

    This logic might fail when repetition of characters occurs as originally we would want to delete the repeated character(and hence increase number of operation by 1) but by this logic we will not count that operation .
    Eg: String 1: aaaa & String 2: a
    Ideally, output must be 3 (deleting 3 characters) but we will get 0 according to your logic.

    • @aadityajoshi3403
      @aadityajoshi3403 4 ปีที่แล้ว +1

      Yes, you are right. Minimum should not be chosen in case of a match. The diagonal element must be chosen. If you have a match at i , j then i - 1, j - 1 should be chosen

  • @alvaro1121
    @alvaro1121 6 ปีที่แล้ว

    Thank you my friend! Very clear explanation of the algorithm

  • @agrimasrivastava2060
    @agrimasrivastava2060 9 ปีที่แล้ว

    Thanks a lot Tushar. One of the best explanations I came across. :)

  • @vvfking
    @vvfking 9 ปีที่แล้ว

    Thank you for the explaination. My prof just went straight from the matrix with all the values filled in and didn't explain what they were, and only listed all the formulas without explicitly going through each of them, I found it very confusing :P

  • @dimitrisdimitriou6969
    @dimitrisdimitriou6969 8 ปีที่แล้ว +15

    Tushar! Awesome! Great job!

  • @ltrinhmuseum
    @ltrinhmuseum 6 ปีที่แล้ว

    If we use this algorithm on 'b' and 'aab'. The table making path and backtracking path is different.
    Table making path is the path you get from the min([i-1, j-1], [i, j-1], [i-1, j]). That is magical.

  • @kiryls1207
    @kiryls1207 3 ปีที่แล้ว +3

    i'm so powerful right now, no one gonna stop me

  • @a50x
    @a50x 6 ปีที่แล้ว

    Great explanation, easy to understand, really helped me to clearly understand DP

  • @maielshazly6054
    @maielshazly6054 8 ปีที่แล้ว

    Your explanation is really clear.
    Thank you very much

  • @josegermanparra6064
    @josegermanparra6064 4 ปีที่แล้ว

    Thanks for a clear and concise explanation!

  • @jarias14
    @jarias14 8 ปีที่แล้ว

    Thank YOU for explaining this in detail.

  • @sritharan20
    @sritharan20 9 ปีที่แล้ว +2

    Hi Tushar, Great Job Man, one small suggestion-> it would be great maybe if you tell about the practical application of the programs we can actually do some real time implementation of it and i think it add more value to it :). Kudos Happy coding!!!

  • @mariusz4742
    @mariusz4742 8 ปีที่แล้ว +2

    Thanks a lot, that's so easy when you explained it :)

  • @ts-gaming-29531
    @ts-gaming-29531 9 ปีที่แล้ว

    Very good short video .
    Good job.

  • @sheikhs1475
    @sheikhs1475 7 ปีที่แล้ว

    Love from Pakistan. So simple. So concise. So comprehensive.

  • @dhanashreepawar9329
    @dhanashreepawar9329 7 ปีที่แล้ว

    Good and clear explanation. Easy to understand!!!

  • @the_sweet_heaven
    @the_sweet_heaven 4 ปีที่แล้ว

    Nice problem, Nice solution, and of course excellent explanation. +1 tushar

  • @wreno7879
    @wreno7879 8 ปีที่แล้ว

    Thank you for uploading this video. It's extremely helpful!

  • @yuhua1994
    @yuhua1994 8 ปีที่แล้ว

    Helpful video! Totally understand after watching your videos :)

  • @manasbudam7192
    @manasbudam7192 9 ปีที่แล้ว +1

    absolutely better explanation than wikipedia!!!........thank you man!

  • @milesstephenson4873
    @milesstephenson4873 6 ปีที่แล้ว

    Thanks, Tushar. Very clear explanation.

  • @pikapika8282
    @pikapika8282 6 ปีที่แล้ว

    Awesome video! Thanks for posting, this has helped me a lot!

  • @akshaytata
    @akshaytata 9 ปีที่แล้ว

    Holy Shit, Who is the guy who made this algorithm! Awesome explanation!

  • @fk121276
    @fk121276 3 ปีที่แล้ว

    Wonderful explanation. Please also mention at the end the time complexity and maybe you should mention this is "Levenshtein distance"

  • @somebodymk
    @somebodymk 6 ปีที่แล้ว +2

    This helped me out so much! Thank you!

  • @Schoko4craft
    @Schoko4craft 6 ปีที่แล้ว

    6:20 If the letters are same you allways take the diagonal number ot the minimum of the 3 numbers (top diagonal left)?

  • @Toxx98
    @Toxx98 9 ปีที่แล้ว

    Thank you for your videos, helped me understand it properly.