How can we multiply large integers quickly? (Karatsuba algorithm) - Inside code

SdĂ­let
VloĆŸit
  • čas pƙidĂĄn 27. 07. 2024
  • Source code: gist.github.com/syphh/0df7faf...
    🔮 Learn graph theory algorithms: inscod.com/graphalgo
    ⚙ Learn dynamic programming: inscod.com/dp_course
    💡 Learn to solve popular coding interview problems: inscod.com/50problems_course
    ⌛ Learn time and space complexity analysis: inscod.com/complexity_course
    🔁 Learn recursion: inscod.com/recursion_course
    NB: This video is ad-free, you can choose to support Inside code by purchasing one of the courses above or dropping a super thanks!
    NB2: Discounts of courses above are permanent
    I also post content on LinkedIn (inscod.com/linkedin) and Instagram (inscod.com/instagram)
  • Věda a technologie

Komentáƙe • 163

  • @insidecode
    @insidecode  Pƙed rokem +5

    Discover the new graph theory algorithms course: inscod.com/graphalgo
    🔮
    / \
    đŸ””-🔮
    | |
    🔮-đŸ””

  • @Paul-vg8vc
    @Paul-vg8vc Pƙed rokem +16

    I believe there's a typo at 6:01 - the fifth line should say "(a+b)(c+d)-ac-bd"

  • @markd2797
    @markd2797 Pƙed 3 lety +22

    Jeez, you explain this very well. You don’t explain material in a generic way. Also, I love the animation.

  • @gimmametdeboys1505
    @gimmametdeboys1505 Pƙed měsĂ­cem +2

    Really liked the tree visualtion, made it so much easier to understand.

  • @yaswanthnani6563
    @yaswanthnani6563 Pƙed 8 měsĂ­ci +1

    this is a very well done video, the animation and the color palate are really smooth and the explanation is clear as day.

  • @richardtobing5012
    @richardtobing5012 Pƙed 3 lety +8

    this is a very well done video, the animation and the color palate are really smooth and the explanation is clear as day. Subscribed.

    • @insidecode
      @insidecode  Pƙed 3 lety +2

      Thanks a lot for your comment!

  • @adityas8436
    @adityas8436 Pƙed rokem

    Great platform and very helpful!! Keep Going! One of the rare channels which explain algorithm design in such depth...

  • @ryansamarakoon8268
    @ryansamarakoon8268 Pƙed 3 lety +24

    This is amazing!! I learnt so much not just about the algorithm, but key concepts like merge sort, masters method and more. I'm waiting for the day you blow up đŸ”„ def sending this one to my friends

    • @insidecode
      @insidecode  Pƙed 3 lety +3

      Amazing! Thanks for the comment and the support

  • @samarthtandale9121
    @samarthtandale9121 Pƙed 10 měsĂ­ci +2

    Great explanation ! Underrated 100%

  • @pirateboygaming2726
    @pirateboygaming2726 Pƙed 9 měsĂ­ci +2

    Best explanation of karatsuba algorithm.

  • @TheSacredSteve
    @TheSacredSteve Pƙed 2 lety +1

    Very well done video. I appreciate the care and quality.

  • @sahiljain3083
    @sahiljain3083 Pƙed rokem

    amazing explanation,short and brief...made the concept easy for me. thanks 😍

  • @markocastillo3485
    @markocastillo3485 Pƙed 2 lety +3

    This is some high quality material. Really appreciate it.

  • @antoine2571
    @antoine2571 Pƙed 2 měsĂ­ci +1

    Exactly what I was looking for
    Thanks !

  • @polishane8837
    @polishane8837 Pƙed 2 měsĂ­ci

    Thank you so much, been looking for ways to make my multiplication more efficient

  • @gorantlakarthik2709
    @gorantlakarthik2709 Pƙed 2 lety +3

    Apart from good explanation. The entire presentation is also so satisfying and I can see u put a lot of work behind it. Do more of them we will keep supporting you sir.

  • @piyushsrivastava5581
    @piyushsrivastava5581 Pƙed 2 lety

    Thank you for this video. Keep growing. It would be so great if in future you plan on making a course on data structures & algorithms- would probably be something to watch out for whenever computer geeks open youTube.

  • @mohamedibrahimbehery3235
    @mohamedibrahimbehery3235 Pƙed 2 lety

    Just wow! Thanks man... Keep up the good work!

  • @kshitijzutshi8278
    @kshitijzutshi8278 Pƙed 3 lety +7

    Hi, PLEASE create more videos like this and Also add videos to playlist for easy lookup. Really appreciate it. Algo/problems related to Data science would be great as well.

  • @hansoflaherty9864
    @hansoflaherty9864 Pƙed rokem

    thank you!! best explanation of the concept imo

  • @modysy1660
    @modysy1660 Pƙed 3 lety +3

    This tip seems very helpful. Thank you for sharing

  • @AnuPAMAMUsiC
    @AnuPAMAMUsiC Pƙed 4 měsĂ­ci

    this video saved my life! thanks

  • @someoneunknown2720
    @someoneunknown2720 Pƙed 3 lety +4

    I never knew that there is another algorithm to multiply. Thanks for increasing my knowledge đŸ˜đŸ˜đŸ„°đŸ™âœŒïž

  • @infwin5944
    @infwin5944 Pƙed rokem +1

    Fantastic and easy to understand tutorial! Just want to point out that the last line of code might not work in the case of an odd number of digits, since you calculate half with n//2.

  • @user-rf4vc7mt4d
    @user-rf4vc7mt4d Pƙed rokem

    Brilliant video. Thank you so much

  • @sir_serhii
    @sir_serhii Pƙed 2 lety +3

    One minor thing that is missing here is how to Actually calculate big numbers that don't fit regular programming primitives as Int or Double

  • @saqlainsajid4067
    @saqlainsajid4067 Pƙed 2 lety +1

    Some feedback about calculating the time complexity
    you say, the return statement has complexity O(n) but if you observe closely, the whole return statement is filled with O(1) operations,
    I think the function "ad_plus_bc" has complexity of T(n/2)+O(n), because it has a subtraction operation, subtracting/adding has complexity of O(n)
    The overall expression of complexity is correct.
    T(n) = 3T(n/2) + O(n) + O(1), where O(1) can be ignored in the presence of O(n)

  • @slavii5772
    @slavii5772 Pƙed 3 lety

    Never knew about this,might come in handy
    Thanks :)

  • @nihal-kabir
    @nihal-kabir Pƙed rokem

    teaching can't be better. thank you.

  • @harshmangalamverma
    @harshmangalamverma Pƙed 9 měsĂ­ci +1

    thanks for the video explaination.
    also, note that 1.58 is read as one point five eight, not one point fifty eight.

  • @matteofioretti8218
    @matteofioretti8218 Pƙed 11 měsĂ­ci

    Amazingly clear

  • @ahmedalaaeldin7362
    @ahmedalaaeldin7362 Pƙed rokem

    Great explanation, Thank you

  • @ravinderkaushik3394
    @ravinderkaushik3394 Pƙed 11 měsĂ­ci

    Brilliant explaination

  • @dhruvsingh1850
    @dhruvsingh1850 Pƙed rokem

    Subscribed Sir,Amazing work

  • @10_bhaveshbathija31
    @10_bhaveshbathija31 Pƙed rokem

    great explanation thanks alot for saving the day

  • @mrwhosethebeast1898
    @mrwhosethebeast1898 Pƙed 2 lety

    amazing explaination bro!

  • @donovanmurray7005
    @donovanmurray7005 Pƙed 5 měsĂ­ci

    Thank you this is so helpful :)

  • @shlomighty
    @shlomighty Pƙed rokem

    Amazing explanation

  • @baxtables
    @baxtables Pƙed 3 lety

    Nice man 👍 keep up the good work

  • @lcarliner
    @lcarliner Pƙed 2 lety +2

    With quantum computer memories sometime in the future, if read only quantum memories could be invented, then huge indexed table could be used for instantaneous results. For single value function like trig functions, read only index tables would have advantage of single clock speed and absolute accuracy, as it is my understanding that different approximations have needed accuracy for only portions of the number space.

  • @poppymoonpaperie5458
    @poppymoonpaperie5458 Pƙed rokem

    wow this helped so much thanks youuuu!!!!

  • @BELLAOUAR_Mahmoud
    @BELLAOUAR_Mahmoud Pƙed 2 lety +2

    Ur explanation is very clear i hope to make more videos about unknown topics in computer science
    well done bro .

  • @user-je3fk3ks5f
    @user-je3fk3ks5f Pƙed 10 měsĂ­ci

    informative, thanks

  • @delyartabatabai9636
    @delyartabatabai9636 Pƙed 2 lety

    very great explanation!

  • @AshwaqKHayat
    @AshwaqKHayat Pƙed 2 lety

    Thank you!!

  • @jeffbezos3942
    @jeffbezos3942 Pƙed 2 lety +1

    This channel only need playlist clarification and it is perfect!

  • @aryan7069_
    @aryan7069_ Pƙed 3 lety

    wow , its always worth watching

  • @hb3643
    @hb3643 Pƙed 2 lety

    Great content. Thank you

  • @HollowNyte
    @HollowNyte Pƙed 2 lety

    Amazing Video!

  • @virajgoyanka5150
    @virajgoyanka5150 Pƙed 2 lety

    This is helpful .. Thumbs up!

  • @RageRabbitGames
    @RageRabbitGames Pƙed 2 lety

    very helpful video, thanks heaps

  • @enoon_23984
    @enoon_23984 Pƙed 9 měsĂ­ci

    beautiful ty

  • @AlpPamuk
    @AlpPamuk Pƙed 2 lety

    fascinating!

  • @ghanshyampanchal2527
    @ghanshyampanchal2527 Pƙed 2 lety

    Really really useful

  • @gauravchaudhari618
    @gauravchaudhari618 Pƙed 2 lety +1

    awesome man immediately subscribe to your channel

  • @rohankhandelwal2021
    @rohankhandelwal2021 Pƙed 2 lety

    thank u a lot bro .... best video ;)

  • @vikrambharadwaj6349
    @vikrambharadwaj6349 Pƙed 2 lety

    Beautiful!

  • @jatinjain850
    @jatinjain850 Pƙed rokem

    Thx a lot

  • @cristhiansamatapumahualcca5678

    nice job

  • @jacktrainer4387
    @jacktrainer4387 Pƙed 3 lety +1

    Fantastic as usual! May I ask what program you use to do your videos?

    • @insidecode
      @insidecode  Pƙed 3 lety +2

      Thanks! I make the slides with PowerPoint

    • @eriklonnrot9313
      @eriklonnrot9313 Pƙed 2 lety

      Hahahahaha i was expecting some rare program, thats amazon amazon slides bro. Keep it simple

  • @anonymoususer2271
    @anonymoususer2271 Pƙed rokem

    Aw this is amazing

  • @erforderlich5274
    @erforderlich5274 Pƙed rokem

    His speech melody tells 'it's all very simple, seeee?' - My brain sounds drop to 40hz.

  • @kirankumar2348
    @kirankumar2348 Pƙed 3 lety

    Hi bro, that's realy high quality content
    I love ❀❀❀❀❀❀❀your accent daaam.
    Keep doing, Love from India🇼🇳🇼🇳.

  • @anantshekhar698
    @anantshekhar698 Pƙed rokem

    Amazing

  • @florinmatei8846
    @florinmatei8846 Pƙed 2 lety

    I was wondering from some time ago if Toom-4 is equivalent with Karatsuba , from a complexity point of view, but that looks a bit impossible. Lately , I was able only to come with this. Considerring Toom-4 and also Toom-4 added those two terms multiplications (the ones from middle ), which are more like K-idea, only with two more multiplication comparing too Toom-4. (so we got 4+3 vs 4+5 complexity dilema). those 5 multiplications terms computed are all following some simple rule for product of 2 coetients and other 2, no matter which one of the 5 mult term we chose. So we might be able to reach to the conclusion that we can find the method Florin-4, Florin-8, etc, no so sure about its complexity thow so this may be just some joke offered by me to anyone wish to verify its complexity. Thank You, I like these style of videos on CZcams! ^_^
    P.S. digging this out i was needed to reformulate the K-idea , both with Toom one, by switching from geometric progressions to something more oriented on adds n diffs instead coetient products that looks the same to diffs that look the same. But this is a bit too complex to me, a bit hard to get the job done, need meds 2 times a day in any case, I mean only to be able to put these here, for example. Thank You! :-)

    • @mehdididit
      @mehdididit Pƙed 2 lety +1

      Mucho texto

    • @florinmatei8846
      @florinmatei8846 Pƙed 2 lety

      @@mehdididit I agree, I talk too much since I know myself >

    • @florinmatei8846
      @florinmatei8846 Pƙed 2 lety

      @@mehdididit Alrite, here some more nonsense, that might worth some translation 🙂
      consider ca in mod normal, logica de tip chat bot sau click programming / logic explorer, pentru utilizatori incepatori din gimnaziu/liceu ar cam trebui sa mearga binisor, ma gandesc ca macar atata pedagogie cibernetica ar cam trebui sa se gaseasca pe lume, spre exemplu la programarea in basic, sa ofere pe post de "mutare" din partea computerului, cateva optiuni pentru urmatoarea nstructiune de inserat , doar cu un click, in viitorul mic cod sursa al rutnei respective, provocarea fiind ca la per total, aplicatia gen logic explorer sa ma arate a ceva.
      Multumesc frumos!

  • @waisyousofi9139
    @waisyousofi9139 Pƙed rokem

    thanks

  • @omridrori3286
    @omridrori3286 Pƙed 2 lety

    hey amaizing video but i dont get it why in the time complexity calaculate the sum require o(n)
    it all sum why not o(1)?
    i mean at 8:20 at the below statement ?

  • @florinmatei8846
    @florinmatei8846 Pƙed 2 lety

    An algo optimisation idea that can be inspired by the hardware predication techniques, applied to soft data numbers to be multiplied, arraies to be multiplied, others may too, I think that may give us something to think about. Never tested nor verified by me, sorry! :-)

  • @zareenfatima4742
    @zareenfatima4742 Pƙed rokem

    How do we do this if we have odd lengths of numbers?

  • @rajarshimandal3235
    @rajarshimandal3235 Pƙed 2 lety +1

    Thank u sir

  • @ardiris2715
    @ardiris2715 Pƙed rokem +1

    This begs to be a homework problem in recursive LISP. Using binary numbers. LOL

  • @pokortec9773
    @pokortec9773 Pƙed 3 lety

    The best channel

  • @vishalplayzz2580
    @vishalplayzz2580 Pƙed rokem

    nice man

  • @rehabemadel-dein6950
    @rehabemadel-dein6950 Pƙed rokem

    How to solve it using array by storing two numbers in 1D array with help of 2D array

  • @lo9manechrf819
    @lo9manechrf819 Pƙed 2 lety

    ŰłŰšŰ­Ű§Ù† Ű§Ù„Ù„Ù‡ ÙˆŰ§Ù„Ù„Ù‡ ŰčŰ±ÙŰȘ accent ŰȘŰčك ŰŻŰČÙŠŰ±ÙŠŰ© 😂
    Anyways, thanks for the information it was really helpful, keep going 💜💜

  • @ngneerin
    @ngneerin Pƙed 3 lety

    Need more such

    • @insidecode
      @insidecode  Pƙed 3 lety +1

      The next videos will all be about CS algorithms!

  • @yusufk5919
    @yusufk5919 Pƙed 8 měsĂ­ci

    goated video

  • @kishanmittal431
    @kishanmittal431 Pƙed 2 lety +2

    It should be (a+b)(c+d) and you solved for that only but you have written (a+c)(b+d) at 6:10

    • @insidecode
      @insidecode  Pƙed 2 lety +2

      Yup that's true thanks for mentioning it

  • @YoussefAhmed-is3gf
    @YoussefAhmed-is3gf Pƙed 2 lety

    you are super awesome

  • @savashzaynal6502
    @savashzaynal6502 Pƙed 2 lety

    I have a fat expensive algorithm book in my hand that could not even explain how x became a*10^(n/2) + b. Yet it only took you 10 seconds to explain it...

  • @OKeefeist
    @OKeefeist Pƙed 2 lety +2

    If you talked a bit slower and clearer would be a 10/10

  • @skay1012
    @skay1012 Pƙed 5 měsĂ­ci +1

    cool ♣

  • @DavidFMayerPhD
    @DavidFMayerPhD Pƙed 2 lety

    How does this work IN PRACTICE for standard 64 bit binary machines? Is there REALLY a savings? Or are much larger numbers (256 bit) needed for a practical improvement?
    Has this ever actually been implemented into processor microcode? If so, how did it work out?

    • @kwanarchive
      @kwanarchive Pƙed 2 lety

      According to Wikipedia, at least 320-640 bits.

  • @konstantinrebrov675
    @konstantinrebrov675 Pƙed 8 měsĂ­ci

    When I was in university I was assigned to implement this algorithm, and I struggled to understand it.

  • @suyziljackson8202
    @suyziljackson8202 Pƙed 9 měsĂ­ci

    is there another way to get 3 multiplications?

  • @ash4173
    @ash4173 Pƙed rokem

    u da goat no bap

  • @tastes-like-straberries
    @tastes-like-straberries Pƙed 2 lety

    I wrote a code similar to this but while running it for inputs of 8 digits and more, I'm getting recursion max depth reached error. Any idea how to solve this?

    • @insidecode
      @insidecode  Pƙed 2 lety +2

      Very your base cases, make sure the code is stopping at some point, try to print the parameters to see where it's stuck

    • @tastes-like-straberries
      @tastes-like-straberries Pƙed 2 lety

      @@insidecode yes thanks! I figured out the issue

    • @insidecode
      @insidecode  Pƙed 2 lety

      You're welcome!

  • @LFIILM
    @LFIILM Pƙed rokem

    thanks a loot

  • @ahmedanwar5950
    @ahmedanwar5950 Pƙed 2 lety

    I can't understand why we store n // 2 in the variable half , I know it gives a wrong answer if we don't do that but why ?

    • @insidecode
      @insidecode  Pƙed 2 lety +1

      Technically you don't need to do it, you can write n//2 everywhere but using a variable gives a more understandable code

  • @kostavsheoran1530
    @kostavsheoran1530 Pƙed 2 lety

    Pardon me but i m still confused how does exactly it reduces the time complexity than the old way, i see a lot of arithmetic in this method too?

    • @KahHongTan
      @KahHongTan Pƙed 2 lety +1

      The trick is the part at 3:26. Divide and conquer works only if breaking a problem down and dealing with the sum of those smaller chunks is easier. It might not be, you might just end up with many small problems which added up is still the same problem. This is the case if you split two numbers you want to multiply, now you have twice the number of multiplications of integers half the original size. Split again, now 4 times the number of multiplications with integers of a quarter size. Same problem. But here, whenever you split two integers there's 3 new multiplications instead of 4. So you get to split the integers in half without doubling the multiplications needed.

  • @AlpPamuk
    @AlpPamuk Pƙed 2 lety

    gooddddd

  • @ahadali3908
    @ahadali3908 Pƙed 2 měsĂ­ci

    PayPal link for paying back for this amazing explanation?

  • @arquier
    @arquier Pƙed 3 lety +1

    That algorithm is used to multiply big Matrix right?

    • @insidecode
      @insidecode  Pƙed 3 lety +1

      just integers, maybe you're talking about Chain matrix multiplication?

    • @arquier
      @arquier Pƙed 3 lety

      @@insidecode yes, looks like it can be applied on that case too

  • @sudalaitech4019
    @sudalaitech4019 Pƙed 5 měsĂ­ci

    Why calculating the result takes O(n)?

    • @sethdon1100
      @sethdon1100 Pƙed 3 měsĂ­ci

      Addition digit by digit is an O(n) for n digits

  • @lukayt-content1613
    @lukayt-content1613 Pƙed rokem

    Nice video but i don t understand why do we need this. Cant we just multiply the numbers? Initially i thought that the method will be for that numbers that when are multiplied are giving a very large number that doesn t fit into long long or double.

    • @insidecode
      @insidecode  Pƙed rokem +1

      It's not about overflow because because we could use strings instead anyway, it's about the method we use to actually multiply the numbers. For small numbers we can use the brute force method we all know, but for big numbers, it's better to use the Karatsuba algorithm because it's faster

    • @Fred2-123
      @Fred2-123 Pƙed rokem

      It is for numbers that have hundreds of digits. Think about numbers like the number of nanoseconds since Jan 1, 1492. Or pi to the 100'th decimal place. On a 32 bit machine, what if you need to multiply two 14-digit numbers.

  • @user-dk6qw3mz7l
    @user-dk6qw3mz7l Pƙed 3 měsĂ­ci

    Calculator was made for the math💀💀

  • @RUBAYATKHAN89
    @RUBAYATKHAN89 Pƙed 4 měsĂ­ci

    Did not understand why there's O(n) ? All the operations are O(1)

  • @nursultanzhumabaev9354
    @nursultanzhumabaev9354 Pƙed 2 lety

    I don't get it, why n is 2?

  • @eternalthoughts3778
    @eternalthoughts3778 Pƙed 3 lety

    How u got 5,8

    • @insidecode
      @insidecode  Pƙed 3 lety +2

      In the code, you can see that we're recursively calling the function thrice, once to calculate a*c, once to calculate b*d, and once to calculate (a+b)*(c+d). And in the node where we calculate 14*35, splitting the two numbers into two parts give us a=1, b=4, c=3, and d=5. So 5,8 comes from the fact that we want to calculate (a+b)*(c+d), which is (1+4)*(3+5), which is 5*8

    • @eternalthoughts3778
      @eternalthoughts3778 Pƙed 3 lety

      @@insidecode thank you for your patience,I never expected u will reply comments

    • @insidecode
      @insidecode  Pƙed 3 lety +2

      @@eternalthoughts3778 haha why wouldn't I?

  • @LeonidSaykin
    @LeonidSaykin Pƙed 2 lety +1

    that doesn't look quicker or simpler

    • @insidecode
      @insidecode  Pƙed 2 lety +1

      It's quicker for large numbers, Karatsuba algorithm has an O(n^1.58) time complexity while the brute force method has an O(nÂČ) complexity