@@Crandiddy4354 Man’s gotta make his bread. At this point, only 20 people support him on Patreon and he has tens of thousands of viewers who get such amazing content for free.
@@Crandiddy4354 That sounds like a lot tbh. A portion of my premium membership fee goes towards this channel, making it easier to support this channel and guarantee an ad-free experience. I'm sure he'll tone down the number of ads once he has a decent number of subscribers.
If anyone else had didn't immediately catch the logic behind the " other = 6 - (start + end) ", it's because if you tally up the values of rods 1,2, 3 that will equal six. Thus if start = rod 1 and end = rod3, 6-(rod1+rod3) = rod2, thus "other = rod2".
unless you are using indices to store values or calculating distance between indices or having some kind of significance with adding up the labels of the rods, im going to call that "logic" presented in the video magic numbered bullshit for the sake of pseudo-genius content.
Im really glad that TH-cam finally recommended something that I really needed. Your passion for CS I really resonate with. Amazing video and unparalleled explanation. After encountering recursion, my interest in dynamic programming dwindled quite a lot, but your videos really helped me overcome this hurdle of mine. Many thanks, keep up the amazing work, Here's to hoping for more amazing content Cheers!
Wow, that is one powerful comment Mohammad! Thanks for taking the time to write it and comments like yours mean a lot to me. I'm glad this video helped rekindle your interest in recursion and dynamic programming. Those are hard topics so there's no shame in admitting that they can be frustrating, and the goals of videos like this are to find a way past that frustration and focus on learning the beauty of the concepts, however hard that can be at times. I'm happy that you were able to see that through this video. I'm definitely planning on making future content, so stay tuned!
the effort you put into explaining these complex concepts is unimaginable. I have never seen this kind of presentation for explaining an algorithm. Keep it up please.
spent 2 hours last year trying to understand towers of hanoi without any context (just by lloking at code) ...finally gave up and now, after you explained the recursive approach I coded it in python in 10 minutes. just shows what a huge difference a systematic approach can make. your video helped me immensely. thank you
A few years ago, I solved the towers of hanoi with a loop. I assumed, that there are always three rods. And I said, that an empty rod is a very large disc. I only needed one input: the number of discs. I had realized quite another pattern, for which it is important, whether the number of discs is odd or even. The pattern is, that every other move is the move of the smallest disc. If the number of discs is odd, it always moves start -> end -> other -> start. If the number of discs is even, it always moves start -> other -> end -> start. The other move is always the smaller of the two discs on top of the bigger disc. This solution might might have a few memory issues, but it works.
Solving it with a loop (and memory arrays) can even accommodate a larger N than the recursive-function approach can because you can bypass the stack-overflow ERR for large Ns. But you will get a D or F for your programming assignment in a CS class taught by a CMU/MIT/UC-Berkely-caliber prof, because you completely miss the point of the assignment, which is to test your grasp of *recursion*. You were being taught to conceptualize, to become a computer scientist/programmer/software engineer, not a day laborer hauling bricks with clever moves.
In the school I went to class assignments were graded by TAs only. I meant the TAs worth their salt would grade you D or F (for failing to write a recursive function) and the profs would back them up.
@@yaglehoole5662 You are missing a point, not me. I'm no American, I wasn't on a university and it wasn't a test of my grasp of recursion. Why are you concluding from the towers of Hanoi, that it has to be in a recursive function? Would I then say that, when I failed miserably for that (as you assumed)?
Thank you for taking the time and effort to make this video. The quality of the editing and animations in the video are excellent and remind me of 3Blue1Brown's videos. Great explanation and it really helped me to visualise and understand how this problem works!
after watching the code part (from 16:00 to 20:00) a couple of times and not understanding a single thing, I wrote the functions on paper and watched again and my mind blew away. Damn you're amazing.
Simply no words to praise this person! I often feel lazy for leaving comments on youtube videos, but this time I must. Kindly make a playlist for explaining the theory of all the data structures and algorithms.
This video is soooo great! It took me awhile, but after repeating your video for 5 times, I finally understand this completely and was able to even work out examples with 5+ discs on my own. Thank you so much!!!
Great video for introducing the puzzle! One piece of critique though, When you talked about the "recursive leap of faith" (the induction hypothesis) you took n-1 to mean the second to last domino. This can be a bit confusing. I think it's more explanatory if you just said: Pick any domino, and assume it will fall over. If it falls over, prove the next domino (+1) will ALSO fall over. Thus, the first domino falls because of the base case. The second domino falls down, because the first one falls. The third falls, because the second falls because the first, etc etc. That explanation is better at showing how a proof by Induction kind of "cascades" like dominoes, proving every case. Otherwise, it can seem a bit like assuming something random, just to come up with a result.
Thank you so much for this. No one has explained recursion as well as you did. I had a similar problem to this in one of my assignments: Find recursive function to solve a tower of hanoi for n discs if you want to move them from 1st peg to 3rd peg and you can only move discs to an adjacent peg. I was overwhelmed when I tried it on my own the first time but after watching your video I was able to figure out the solution for this modified version of the problem. Keep up the great work.
Greatest video ever on towers of hanoi problem. Even though I have tried to understand this problem number of time I finally understood it here. Because I was trying to name the discs as well but now I realised it isn't necessary since we'll always be moving top disc on a certain rod. Absolutely amazing way of explaining!! Keep it up!!🎉
As always, fantastic video, thanks a lot! I'm certain you know about this and just didn't mention it to keep things organized and a little more intuitive but I'd like to point it out anyways for the fellow viewers who might be interested: You can simplify the code even further when having n = 0 as your base case. It sounds kind of useless at first but solving the problem with 0 discs just means “do nothing“ which allows you to save space in your code: def h( n, start, end): if n = 0: do nothing else: other = 6 - (start + end) h(n - 1, start, other) pm(start, end) h(n - 1, other, end) ...this boils down to: def h( n, start, end): if n > 0: other = 6 - (start + end) h(n - 1, start, other) pm(start, end) h(n - 1, other, end)
I had solved this problem on my own before watching the video. Btw, in my personal case I found the iterative solution harder to come up with than the recursive one. Since I had already solved this problem before watching the video, what blew mi mind was the little arithmetic "hack" to find the "other" rod: 6 - (start + end) LOL. Great stuff!
I have never been good in math, even simple math. I have an app called IMPULSE. One of the games is Tower of Hanoi. It started out relatively simple but I was taking so long to finish each level and was ending up at 2% of the number of moves and time used. So i searched out a video to help me understand how this game works. I never thought it was a mathematical problem. One of my issues is my ADHD & ASD brain. Trying to keep organized in my thinking is not easy. But now I hope to finish my next level in much fewer moves. I will never reach a faster time, but improving in fewer moves is now my biggest goal. Thank you for this video
This is actually an amazing video, with super clear and simple explanations and animations. This is absolutely amazing and mind blows. Thank you so much
Amazing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I have been trying to solve this problem for a while now and I was so confused with other solutions on the internet (the code of the solutions) but yours is extremely intuitive and elegant. I am very new to recursion and you made this so understandable. THANKS! I hope you continue making such videos because you really really help the community!
Back in 1994, this was on of the first assignments in my "Algorithms and Analysis" course, the one and only course every single programmer needs to take. Then you learn some sorting algorithms, and bam, you 're a programmer. All the rest is just building more algorithms. Even learning programming languages are completely secondary. Most of the class got it wrong, but most had think on it for a few hours. And this was at a community college, so recursive algorithms are not that hard. Over the years, I've been surprised how easy they've become. It's the iterative, efficient approach that's harder!
Thank you so much for these awesome videos. I'm currently taking course MITx 6.00.1x over on edX and your videos are really helping me understand the concepts. Thank you again.
Here's a small typo (speako) you might want to address. Thanks for such clear visualizations, you've been a great help. 15:05 "solving hanoi for n-1 disks where the start ROD is the middle and the end ROD is the last ROD"
What is the reason for other = 6 - (start + end). There are 10 disks on the example? 14:02. If the first, second and third rod was labeled 1,2 and 3. Then the other rod is 6- (start+end). Is there a 4th rod? Edit: After som afterthought I think you possibly referring to the sum of tower numbers 1+2+3 = 6, but this wasn't explained deeply enough to be satisfying. So essentially this is a method of finding the auxiliary rod at any given time in the recursion.
We always have 3 rods: 1, 2 and 3. When start is 1, end is 2, then other is 6-(1+2) = 3. When start is 1, end is 3, then other is 6-(1+3) = 2. When start is 2, end is 3, then other is 6-(2+3) = 1, and so on. Thus, the formula makes sense.
@@quyenscc Thank you! Our teacher taught us by naming the rods 'from', 'to' and 'other' and passing them as string parameters 'A', 'B', 'C'. The lesson was on divide and conquer though, not recursion, maybe that's why.
thank you so much you made it so easy and it seemed more logical, i spent one year thinking what possibly could that tiny code mean and now i get thanks to you!!!
Black magic I tell you! That was crazy how a simple rule can solve a seemingly complex problem. I would have spent hours trying to intuit some complex solution to this.
Love this! I just recently discovered this channel through the FFT video (TH-cam recommendations) and I just immediately loved it! The topics covered are really cool, and I really like the way they're presented in here (Reminds me of 3b1b, not only because Manin is used here to do the bulk of the animations, but too because of the quality of the explanations). Now, one neat little fact about this algorithm for solving the towers of Hanoi is that if you have n disks, this algorithm takes exactly 2^n - 1 steps to complete (The proof is just a simple induction argument for those who might want to try to figure it out), and in fact, if I'm recalling this correctly, this is actually the optimal amount of steps, you can't go any lower than this! Quite fascinating if you ask me.
Thank you for this comment! I absolutely love compliments like this one! And yeah that's a fun inductive reasoning exercise -- fun fact by the way, you can see the number is steps is 2^n - 1 visually by generalizing the tree diagram for the recursion that we did here. In fact, I believe I touched upon this in the Big O notation video with the O(2^n) example. The basic idea is counting the number of nodes in a tree where at each level we have two branches representing calls to n - 1 and continue until we reach the base case of 1. The inductive argument you mentioned also works for solving this problem, but a fun visual addition. Thanks for sharing this!
damn, this channel is so underrated. I came here after watching your 5 steps for solving recursive problems and I am blown away after seeing that whole thing took only 10 lines of code, that's amazing
This video just explained it in easy manner.. Using animations make things to understand easily...Carry on and keep on adding the videos of data structures and algorithms in your playlist ..😀 Eagerly waiting for next video !!! Happy Learning !!
Beautiful. You’re really talented at unraveling seemingly complex concepts very elegantly. After watching your videos, I can’t help but knowing the concepts matter-of-factly. And wonder to myself why I wasn’t able to get it earlier.
Excellent explanation. This recursive program definitely blew my mind when I first saw it two days ago. I hand-drew out the stack frames for a 3 disk problem. And even though it worked, I still couldn’t grasp HOW it was working-the abstract idea of n-1 recursively moving sequentially smaller stacks was the part the really got me. After watching this video a second time, it clicked. The crux of the program’s ability is in that assumption that n-1 will work. It’s pretty amazing stuff. Thank you!
I remember this being a pancake themed recurring puzzle in a Professor Layton game when I was young. I didn't understand the whole recursive ramifications of it but I'm pretty proud I managed to figure out the general strategy of breaking it down to each smaller tower
the best videos that i have ever watched that explains Towers of Hanoi. I love this channel. Keep up the good work. I can't wait watching this kind of vids.
Thank you so much. I was using n,A,B,C initially which was bit difficult but after watching your video it make more sense now. i.e. n, source, temp, dest as n, A,B,C
woooooooooooooooooooooooooooooooooowww!! this was wonderful! the only explanation of this problem that made sense i tried searching all over and failed to get a good explanation of the problem and underlying concepts and this video covers all of it Grant Sanderson would be proud :)
Thank you very much for this video. You have not only explained the problem easily but also introduced us to a framework to solve recursive problems. 👍
More contents please! Would like to see some visual explaination on other problems in DSA. Maybe some hard problems on leetcode or google interview questions.
I was thinking about how to solve this before watching the video and I thought of a really nice and elegant way to think about it: You can easily move 2 elements from one side to the other by moving the top element out of the way, moving the bottom element to the destination and then putting the top one back on. This means that you can move two elements as if they were a single element as long as nothing smaller is below them. Since you can now move 2 elements as one you can effectively convert a 3 stack to a 2 stack by treating the top 2 elements as a single element. Now that the 3 stack can be moved as a 2 stack the above algorithm can be used to move it as if it were a one stack. This strategy can then be repeated indefinitely for any height of tower
Note: this can be implemented recursively by making a move stack function that moves a spesified number of elements from the top of a stack to another rod that executes the move 2 strategy but when moving the top ring calls itself with one less specified element unless only one element is being moved in which case it directly moves the element.
The set of steps used for moving (n-1) tower of Hanoi from rod 1 to rod 2, if used in reverse order then the (n-1) tower of Hanoi returns to rod 1 from rod 2. In all cases all types of rings can be placed on the lowemost biggest ring as all other rings will be smaller than it and hence can be ignored while solving (n-1) tower of Hanoi. This thing was very beautiful 🤯🤯🤯
Basically the function is f(n)=2f(n-1)+1, where the recursion is basically in solving the previous tower twice, once for the middle, and once for the end, and we add the plus one for the final disk.
Don't need a "leap of faith" if you prove the n+1 case, this is the principle of mathematical induction. If n is a natural number (n >= 1 in CS terms), and the function holds in the basis case (n=1, the smallest value for which the statement is true), then it is necessary to prove the n+1 case. It is convention in mathematics to assign n = k+1, where k is a natural number that fulfills the base case. If we show that k+1 holds, then that means that we can recursively plug k+1 into k to say that n = (k+1) +1. This process can be repeated for all natural numbers, hence by the principle of mathematical induction the statement is true for all natural numbers. There are no leaps of faith in mathematics. Good video, nice animations.
The thing is i subscribe to your channel in my first arrival to the channel after seeing this video I dont often do that to other channels Keep goodjob!
When I was learning principles of programming, this was of course one of the assignments. The course I was doing taught it by directing us to the answer. The way they did it was to break the problem into smaller steps, explain each step without giving the answer and providing tests to see if our attempt were correct after each step. So for this problem they did this and I was getting the steps right after some thinking. And when I got to the very end, I had every piece working, and I just had to put everything together. I did it and it worked. I solved a giant hanoi tower... And the craziest thing was: I still don't understand how lol
If you keep making videos like this, you'll become the best and most famous CS teacher on TH-cam.
I agree. Never see someone like him. So passionate
The amount of ads on this video fucking disgusts me tho.
@@Crandiddy4354 Man’s gotta make his bread. At this point, only 20 people support him on Patreon and he has tens of thousands of viewers who get such amazing content for free.
@@lqv3223 He can't tone it down just
a little? I mean for God sakes man, fucking 6 ads on a 20 min video.
@@Crandiddy4354 That sounds like a lot tbh. A portion of my premium membership fee goes towards this channel, making it easier to support this channel and guarantee an ad-free experience. I'm sure he'll tone down the number of ads once he has a decent number of subscribers.
If anyone else had didn't immediately catch the logic behind the " other = 6 - (start + end) ", it's because if you tally up the values of rods 1,2, 3 that will equal six. Thus if start = rod 1 and end = rod3, 6-(rod1+rod3) = rod2, thus "other = rod2".
u made my day thank you:)
I was just about to say that "6" appears to be a *magic number* that should be defined based on core principles. Thank you for elucidating.
@@ryannickles3218 lol same
unless you are using indices to store values or calculating distance between indices or having some kind of significance with adding up the labels of the rods, im going to call that "logic" presented in the video magic numbered bullshit for the sake of pseudo-genius content.
so if I had 4 rods it will be (1+2+3+4) => 10-(strat+end)?
Now I realized that the steps for recursive problem solving is basically the same steps taken in induction proofs in mathematics.
That's why they're usually taught together in discrete math courses for computer science!
There is a generalized version of induction called "structural induction" which has uses in proving things about recursively defined objects
@@HuyTran-ny7mg yes I learnt that along with recursive functions in discrete math
I’m stunned 😮
Now I realized that I do not understand anything in either one or the other.😭
Great explanation! Just a suggestion: highlight which line of the code is doing each step as you explain it
I can’t even belive that the video of this quality has so few views. Keep up the good work!
My jaw literally dropped when I saw that you had 32k subs, I was expecting over 500k!!! But now you're one sub closer!
Geez, SubCount Tripled in 1 month
I am a simple person, I see recursion, I panic.
I am a professional math lover. I see recursion, I panic.
solid answer
solid answer
Im really glad that TH-cam finally recommended something that I really needed. Your passion for CS I really resonate with. Amazing video and unparalleled explanation. After encountering recursion, my interest in dynamic programming dwindled quite a lot, but your videos really helped me overcome this hurdle of mine. Many thanks, keep up the amazing work, Here's to hoping for more amazing content Cheers!
Wow, that is one powerful comment Mohammad! Thanks for taking the time to write it and comments like yours mean a lot to me. I'm glad this video helped rekindle your interest in recursion and dynamic programming. Those are hard topics so there's no shame in admitting that they can be frustrating, and the goals of videos like this are to find a way past that frustration and focus on learning the beauty of the concepts, however hard that can be at times. I'm happy that you were able to see that through this video. I'm definitely planning on making future content, so stay tuned!
the effort you put into explaining these complex concepts is unimaginable. I have never seen this kind of presentation for explaining an algorithm. Keep it up please.
spent 2 hours last year trying to understand towers of hanoi without any context (just by lloking at code) ...finally gave up and now, after you explained the recursive approach I coded it in python in 10 minutes. just shows what a huge difference a systematic approach can make. your video helped me immensely. thank you
Nobody could have explained it better..genius.The dominos concept is gold!
I don't ever take the time to think of such hard problems. But your lessons gives me confidence. Thanks a lot!
I was thinking about this problem a while back, today I got one of your videos recommended to me, and now I'm here! Astounding explanation!
A few years ago, I solved the towers of hanoi with a loop.
I assumed, that there are always three rods. And I said, that an empty rod is a very large disc.
I only needed one input: the number of discs. I had realized quite another pattern, for which it is important, whether the number of discs is odd or even.
The pattern is, that every other move is the move of the smallest disc. If the number of discs is odd, it always moves start -> end -> other -> start. If the number of discs is even, it always moves start -> other -> end -> start. The other move is always the smaller of the two discs on top of the bigger disc.
This solution might might have a few memory issues, but it works.
That is so interesting
that is how i solved it for my C lab problem. had to play it so many times to figure out that pattern
Solving it with a loop (and memory arrays) can even accommodate a larger N than the recursive-function approach can because you can bypass the stack-overflow ERR for large Ns. But you will get a D or F for your programming assignment in a CS class taught by a CMU/MIT/UC-Berkely-caliber prof, because you completely miss the point of the assignment, which is to test your grasp of *recursion*. You were being taught to conceptualize, to become a computer scientist/programmer/software engineer, not a day laborer hauling bricks with clever moves.
In the school I went to class assignments were graded by TAs only. I meant the TAs worth their salt would grade you D or F (for failing to write a recursive function) and the profs would back them up.
@@yaglehoole5662
You are missing a point, not me. I'm no American, I wasn't on a university and it wasn't a test of my grasp of recursion.
Why are you concluding from the towers of Hanoi, that it has to be in a recursive function? Would I then say that, when I failed miserably for that (as you assumed)?
The simplicity of the code is truly beautiful.
Thank you for taking the time and effort to make this video. The quality of the editing and animations in the video are excellent and remind me of 3Blue1Brown's videos. Great explanation and it really helped me to visualise and understand how this problem works!
Thanks for the awesome comment! Glad this content helped you with this problem!
Lol, I was thinking of 3blue1brown too.
@@Reducible was that intro a reference to his ted talk hahaha
after watching the code part (from 16:00 to 20:00) a couple of times and not understanding a single thing, I wrote the functions on paper and watched again and my mind blew away. Damn you're amazing.
Simply no words to praise this person! I often feel lazy for leaving comments on youtube videos, but this time I must. Kindly make a playlist for explaining the theory of all the data structures and algorithms.
This video is soooo great! It took me awhile, but after repeating your video for 5 times, I finally understand this completely and was able to even work out examples with 5+ discs on my own. Thank you so much!!!
Best Teacher Award goes to u Man.....
Seriously best explanation I have ever seen 👌🔥🔥🔥🔥🔥
Great video for introducing the puzzle! One piece of critique though, When you talked about the "recursive leap of faith" (the induction hypothesis) you took n-1 to mean the second to last domino. This can be a bit confusing. I think it's more explanatory if you just said: Pick any domino, and assume it will fall over. If it falls over, prove the next domino (+1) will ALSO fall over. Thus, the first domino falls because of the base case. The second domino falls down, because the first one falls. The third falls, because the second falls because the first, etc etc. That explanation is better at showing how a proof by Induction kind of "cascades" like dominoes, proving every case. Otherwise, it can seem a bit like assuming something random, just to come up with a result.
Ah, that is a subtle and good point. Thanks for the feedback!
Yes that was a bit confusing
Thank you so much for this. No one has explained recursion as well as you did. I had a similar problem to this in one of my assignments: Find recursive function to solve a tower of hanoi for n discs if you want to move them from 1st peg to 3rd peg and you can only move discs to an adjacent peg. I was overwhelmed when I tried it on my own the first time but after watching your video I was able to figure out the solution for this modified version of the problem. Keep up the great work.
It was my biggest challenge when I started my CS course. It's a wonderful presentation, what a great work!
Greatest video ever on towers of hanoi problem. Even though I have tried to understand this problem number of time I finally understood it here. Because I was trying to name the discs as well but now I realised it isn't necessary since we'll always be moving top disc on a certain rod. Absolutely amazing way of explaining!! Keep it up!!🎉
world's best video to show how tower of hanoi works recursively
As always, fantastic video, thanks a lot!
I'm certain you know about this and just didn't mention it to keep things organized and a little more intuitive but I'd like to point it out anyways for the fellow viewers who might be interested:
You can simplify the code even further when having n = 0 as your base case. It sounds kind of useless at first but solving the problem with 0 discs just means “do nothing“ which allows you to save space in your code:
def h( n, start, end):
if n = 0:
do nothing
else:
other = 6 - (start + end)
h(n - 1, start, other)
pm(start, end)
h(n - 1, other, end)
...this boils down to:
def h( n, start, end):
if n > 0:
other = 6 - (start + end)
h(n - 1, start, other)
pm(start, end)
h(n - 1, other, end)
This is the visual version of CS Bible. A ton of respect and appreciation
I had solved this problem on my own before watching the video. Btw, in my personal case I found the iterative solution harder to come up with than the recursive one. Since I had already solved this problem before watching the video, what blew mi mind was the little arithmetic "hack" to find the "other" rod: 6 - (start + end) LOL. Great stuff!
5:30 was the moment of epiphany for me, thanks.
Video might be old but concept is like advance clear... 😊
I have never been good in math, even simple math. I have an app called IMPULSE. One of the games is Tower of Hanoi. It started out relatively simple but I was taking so long to finish each level and was ending up at 2% of the number of moves and time used.
So i searched out a video to help me understand how this game works.
I never thought it was a mathematical problem.
One of my issues is my ADHD & ASD brain.
Trying to keep organized in my thinking is not easy. But now I hope to finish my next level in much fewer moves. I will never reach a faster time, but improving in fewer moves is now my biggest goal.
Thank you for this video
Don't worry bro u can get more better ❤❤
This is actually an amazing video, with super clear and simple explanations and animations. This is absolutely amazing and mind blows.
Thank you so much
Amazing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I have been trying to solve this problem for a while now and I was so confused with other solutions on the internet (the code of the solutions) but yours is extremely intuitive and elegant. I am very new to recursion and you made this so understandable. THANKS! I hope you continue making such videos because you really really help the community!
Mindblowing explanation and animation! That 'Dominos' concept :), I personally liked it!
Thank you, I had a lot of fun making that domino animation so glad you appreciated it!
Back in 1994, this was on of the first assignments in my "Algorithms and Analysis" course, the one and only course every single programmer needs to take. Then you learn some sorting algorithms, and bam, you 're a programmer. All the rest is just building more algorithms. Even learning programming languages are completely secondary.
Most of the class got it wrong, but most had think on it for a few hours. And this was at a community college, so recursive algorithms are not that hard. Over the years, I've been surprised how easy they've become. It's the iterative, efficient approach that's harder!
I finally understood this problem after I understood this problem
Thank you so much for these awesome videos. I'm currently taking course MITx 6.00.1x over on edX and your videos are really helping me understand the concepts. Thank you again.
Here's a small typo (speako) you might want to address. Thanks for such clear visualizations, you've been a great help.
15:05 "solving hanoi for n-1 disks where the start ROD is the middle and the end ROD is the last ROD"
Holy crap, that 3 step list gave me an "aha!" moment. Great video!
Best explanation ! I tried understanding this problem before but gave up, thankfully I found this video
What is the reason for other = 6 - (start + end). There are 10 disks on the example? 14:02. If the first, second and third rod was labeled 1,2 and 3. Then the other rod is 6- (start+end). Is there a 4th rod? Edit: After som afterthought I think you possibly referring to the sum of tower numbers 1+2+3 = 6, but this wasn't explained deeply enough to be satisfying. So essentially this is a method of finding the auxiliary rod at any given time in the recursion.
Your comment helped here. Thanks mate 🤜🏼
We always have 3 rods: 1, 2 and 3. When start is 1, end is 2, then other is 6-(1+2) = 3. When start is 1, end is 3, then other is 6-(1+3) = 2. When start is 2, end is 3, then other is 6-(2+3) = 1, and so on. Thus, the formula makes sense.
It was quite clear I think
@@nikosrouskas2438 I think he though he had to add the number of disks in each rod
@@quyenscc Thank you! Our teacher taught us by naming the rods 'from', 'to' and 'other' and passing them as string parameters 'A', 'B', 'C'. The lesson was on divide and conquer though, not recursion, maybe that's why.
Dawg respectfully, I audibly came when I watch this. 10/10 you're goated
You are the 3blue1brown of computer science. Keep it up!
thank you so much you made it so easy and it seemed more logical, i spent one year thinking what possibly could that tiny code mean and now i get thanks to you!!!
Black magic I tell you! That was crazy how a simple rule can solve a seemingly complex problem. I would have spent hours trying to intuit some complex solution to this.
Best explanation of TOH I've ever heard.
This is the best explanation of tower of hanoi on TH-cam.
So thanks a lot.
Very detailed and simple explanation. Keep up the good work
oh my gawd after 30mins of trying to understand it from a book, i understood this algo in the first 5 mins watching your video!!!! THANKYOU
The best explanation with the best visual animation. An extraordinary work.
Thank you very much and please keep doing it.
Love this! I just recently discovered this channel through the FFT video (TH-cam recommendations) and I just immediately loved it! The topics covered are really cool, and I really like the way they're presented in here (Reminds me of 3b1b, not only because Manin is used here to do the bulk of the animations, but too because of the quality of the explanations). Now, one neat little fact about this algorithm for solving the towers of Hanoi is that if you have n disks, this algorithm takes exactly 2^n - 1 steps to complete (The proof is just a simple induction argument for those who might want to try to figure it out), and in fact, if I'm recalling this correctly, this is actually the optimal amount of steps, you can't go any lower than this! Quite fascinating if you ask me.
Thank you for this comment! I absolutely love compliments like this one!
And yeah that's a fun inductive reasoning exercise -- fun fact by the way, you can see the number is steps is 2^n - 1 visually by generalizing the tree diagram for the recursion that we did here. In fact, I believe I touched upon this in the Big O notation video with the O(2^n) example. The basic idea is counting the number of nodes in a tree where at each level we have two branches representing calls to n - 1 and continue until we reach the base case of 1. The inductive argument you mentioned also works for solving this problem, but a fun visual addition.
Thanks for sharing this!
damn, this channel is so underrated. I came here after watching your 5 steps for solving recursive problems and I am blown away after seeing that whole thing took only 10 lines of code, that's amazing
My mind is absolutely blown by this solution
You amaze with awesome content. The explanation was some understandable, I can hardly forget it. Thanks.
This video just explained it in easy manner..
Using animations make things to understand easily...Carry on and keep on adding the videos of data structures and algorithms in your playlist ..😀
Eagerly waiting for next video !!!
Happy Learning !!
This is the best video visualization of any CS concept i have erver seen....... Keep it up
Best explanation to leap of faith concept in recursion hands down (time trac: 11:00). Absolutely amazig. Subscribed
This is the video that explains the problem the best so far.
These videos remind me of 3blue1brown's videos. Really appreciating your work! Thank you!
3blue1brown to maths is Reducible to Algorithms
Beautiful. You’re really talented at unraveling seemingly complex concepts very elegantly. After watching your videos, I can’t help but knowing the concepts matter-of-factly. And wonder to myself why I wasn’t able to get it earlier.
By Far the Best Explanation Ever for Recursion with Those Tips😀😀
You saved my day! I am taking a course on discrete mathematics and this was a heck of an explanation!!!! Cheers!
Excellent explanation. This recursive program definitely blew my mind when I first saw it two days ago. I hand-drew out the stack frames for a 3 disk problem. And even though it worked, I still couldn’t grasp HOW it was working-the abstract idea of n-1 recursively moving sequentially smaller stacks was the part the really got me. After watching this video a second time, it clicked. The crux of the program’s ability is in that assumption that n-1 will work. It’s pretty amazing stuff. Thank you!
Sir can u pls explain me this.. struggling since 4 days..
How can I contact u..
I remember this being a pancake themed recurring puzzle in a Professor Layton game when I was young. I didn't understand the whole recursive ramifications of it but I'm pretty proud I managed to figure out the general strategy of breaking it down to each smaller tower
This was so awesome man, i watched all of your videos and they are amazing. Big fan here!!!!!
the best videos that i have ever watched that explains Towers of Hanoi. I love this channel. Keep up the good work. I can't wait watching this kind of vids.
Thank you so much. I was using n,A,B,C initially which was bit difficult but after watching your video it make more sense now.
i.e. n, source, temp, dest as n, A,B,C
the explanation is amazing! I hope you make more videos on more algorithmic problems. there are very few on youtube who explain with such clarity
woooooooooooooooooooooooooooooooooowww!!
this was wonderful!
the only explanation of this problem that made sense
i tried searching all over and failed to get a good explanation of the problem and underlying concepts and this video covers all of it
Grant Sanderson would be proud :)
Honestly great job dude
You have much respect from me
I havent seen anyone having such a great ability making something so complex , look so easy
Best explanation to Hanoi tower and its basis in discrete mathematics and algorithms, This is multi target video!!
if there is oscar for teaching it should go to this video,great explaination.
God bless for such a beautiful explanation and Saving me from the sleepless night of not understanding the solution 🙏
Thank you very much for this video. You have not only explained the problem easily but also introduced us to a framework to solve recursive problems. 👍
Thanks for the kind comment! Glad to hear that this content helped you!
Woooow, this is mind blowing. I'll try to understand this again. Thanks for making it visual, I can undertake something
Bless you, man. The best explanation on TH-cam.
More contents please! Would like to see some visual explaination on other problems in DSA. Maybe some hard problems on leetcode or google interview questions.
thank you very much i never thought this problem will be so simple to understand. you made this hard problem very simple
Thank you so much. This is by far the best explanation on youtube for this problem. Thoroughly understood the logic because of the amazing animation.
I was thinking about how to solve this before watching the video and I thought of a really nice and elegant way to think about it:
You can easily move 2 elements from one side to the other by moving the top element out of the way, moving the bottom element to the destination and then putting the top one back on.
This means that you can move two elements as if they were a single element as long as nothing smaller is below them.
Since you can now move 2 elements as one you can effectively convert a 3 stack to a 2 stack by treating the top 2 elements as a single element.
Now that the 3 stack can be moved as a 2 stack the above algorithm can be used to move it as if it were a one stack.
This strategy can then be repeated indefinitely for any height of tower
Note: this can be implemented recursively by making a move stack function that moves a spesified number of elements from the top of a stack to another rod that executes the move 2 strategy but when moving the top ring calls itself with one less specified element unless only one element is being moved in which case it directly moves the element.
The set of steps used for moving (n-1) tower of Hanoi from rod 1 to rod 2, if used in reverse order then the (n-1) tower of Hanoi returns to rod 1 from rod 2. In all cases all types of rings can be placed on the lowemost biggest ring as all other rings will be smaller than it and hence can be ignored while solving (n-1) tower of Hanoi. This thing was very beautiful 🤯🤯🤯
Thank you so much! The animations are amazing to aid our understanding of this problem. :)
Thank you for the kind comment and I'm glad the animations were able to help with your understanding!
best explanation available on internet
love it so much, you beat all those MIT lecturers
Struggling CS student here. Really great video!
This is the best explanation I have come across till date!! and nothing can be better than this.. thank you
Subscribed. Who tf won't want more videos like this?!
Basically the function is f(n)=2f(n-1)+1, where the recursion is basically in solving the previous tower twice, once for the middle, and once for the end, and we add the plus one for the final disk.
While looking at the steps for solving recursive problem , I remembered my "principle of mathematical induction" class back in school
Best explanation I have seen on TH-cam, I appreciate your effort. Thanks for uploading this video :)
Don't need a "leap of faith" if you prove the n+1 case, this is the principle of mathematical induction.
If n is a natural number (n >= 1 in CS terms), and the function holds in the basis case (n=1, the smallest value for which the statement is true), then it is necessary to prove the n+1 case. It is convention in mathematics to assign n = k+1, where k is a natural number that fulfills the base case. If we show that k+1 holds, then that means that we can recursively plug k+1 into k to say that n = (k+1) +1. This process can be repeated for all natural numbers, hence by the principle of mathematical induction the statement is true for all natural numbers.
There are no leaps of faith in mathematics.
Good video, nice animations.
this video is an 11/10 effort
The thing is i subscribe to your channel in my first arrival to the channel after seeing this video
I dont often do that to other channels
Keep goodjob!
You need more views! Excellent explanation. Nothing can beat the Aha moment when you actually understand how something works! Thanks a ton
When I was learning principles of programming, this was of course one of the assignments. The course I was doing taught it by directing us to the answer. The way they did it was to break the problem into smaller steps, explain each step without giving the answer and providing tests to see if our attempt were correct after each step.
So for this problem they did this and I was getting the steps right after some thinking. And when I got to the very end, I had every piece working, and I just had to put everything together. I did it and it worked. I solved a giant hanoi tower... And the craziest thing was: I still don't understand how lol
Your work brought a lot of insights into solving recursive tasks, thanks!
There was a smile on my face seeing the solution
🙂
Such a beautifully visualised video that I was able to code it within minutes of seeing it. Thank you so much
thank you so much man ❤️ please keep making videos like this 🙏the quality and simplicity you have is unmatched.
Great video. Only watched a couple of videos of tours but can tell your love for the subject.