Union Find Kruskal's Algorithm

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 72

  • @andreas9109
    @andreas9109 6 років тому +128

    4:25.
    It does matter!
    The smaller group becomes part of the greater group, otherwise the worst case runtime would be different.

    • @TheDemeaN
      @TheDemeaN 4 роки тому +10

      yas it does matter but I think he was saying in the context of find the mst in the graph, like imagine an exam exercise where you need to draw the mst

    • @JanacMeena
      @JanacMeena 3 роки тому +3

      Merging a smaller group into a larger group would require fewer operations, but it does not affect the worst-case runtime. Please let me know if I'm wrong!

    • @lordquaggan
      @lordquaggan 2 роки тому +4

      @@JanacMeena It actually does! Weighted union keeps tree depth below log(n), even in the worst case (can prove by induction), so find is O(log(n)), while without weighted union, tree depth can be n in the worst case, leading to O(n) find. Applied to Kruskal's algorithm, this is the difference between an overall O(mlog(n)) and O(mn) complexity.

    • @SAJID-zs2gf
      @SAJID-zs2gf Рік тому +1

      @@lordquaggan during each find operation you can update the parent of children and attach children directly to it's top-most parent (root node), then in that case tree-depth won't reach O(n), since at every call to find(), the children node will be attached to root node of the whole group.

  • @madanrajvenkatesan518
    @madanrajvenkatesan518 4 роки тому +34

    Such a neat and crisp explanation. People like you are making our lives simpler. Thanks a bunch !!! Keep it up.

  • @adityabhashkar3405
    @adityabhashkar3405 7 років тому +32

    I've been trying to understand it for a long time. finally understood. thanks a lot!

  • @chepaiytrath
    @chepaiytrath 4 роки тому +9

    I saw your Prim's explanation using PriorityQueue first. Kruskal's using PriorityQueue and Union Find was a piece of cake thence. Your explanations are great and so is your code. Thanks a lot

  • @Megan-gl7pi
    @Megan-gl7pi 4 роки тому +4

    The color grouping is really intuitive. Thank you for the helpful video.

  • @picnicbros
    @picnicbros Рік тому +6

    Basically, sort the edge then run Union Find

  • @jhonJ1245
    @jhonJ1245 4 роки тому +2

    Great video! Finally I understood this algorithm. I had been trying to understand it for days until I watched your video

  • @nelsonthekinger
    @nelsonthekinger 10 місяців тому +1

    This Algorithm is crazy!! I find beautiful how people come with these solutions. This is a beautiful application of Data Structures to simplify hard problems to solve. Just waw! Oh and Thanks William for bringing the quality content as usual!

  • @solidwaterslayer
    @solidwaterslayer 4 роки тому +1

    i love u
    u explained it better than my textbook and professor
    regarding applications of mfset so I understand disjoint set better!

  • @avocados3500
    @avocados3500 7 років тому +17

    You made my life so much easier!

  • @jagrit07
    @jagrit07 4 роки тому +1

    You have really worked hard in designing these colourful ppts/video. Thank you very much.

  • @jabir5768
    @jabir5768 2 роки тому

    I swear you are the king of graph theory

  • @mrallenchuang
    @mrallenchuang 4 роки тому +1

    Your channel is so underrated. Love it!

  • @iamsanin
    @iamsanin 5 років тому

    Your explanation made it super simple... great work

  • @ayeyo4081
    @ayeyo4081 Рік тому

    very adaptive to my brain. thanks !

  • @asafsh2306
    @asafsh2306 4 роки тому +1

    Fantastic simulation my friend - keep up

  • @JasonMelton1
    @JasonMelton1 6 років тому

    Great illustration! This is a great series!

  • @saidathanikhil.k6415
    @saidathanikhil.k6415 2 роки тому

    Great explanation

  • @YT.Nikolay
    @YT.Nikolay 2 роки тому

    Thanks for the video, love your channel! Why did you stop after the pair "B to C"? how do I know when to stop iterating over the list on left?

  • @priscilapadilla357
    @priscilapadilla357 2 роки тому

    This was absolutely freaking great. I love this stuff, u explained it so well. Thank you for reminding me why I love what I do. Keep up the great work!

  • @prakhargupta3283
    @prakhargupta3283 Рік тому

    Can you please help me understand how are giving weight to a junction.

  • @iwannarigana2258
    @iwannarigana2258 6 років тому

    Thank you!!!!!By far the best explanation!!!

  • @jayaprakashhasthi5775
    @jayaprakashhasthi5775 4 роки тому

    greatexplanation ,you made it easy

  • @ankitchoudhary197
    @ankitchoudhary197 2 роки тому

    Thanks a lot William 😁😁

  • @MykolaDolgalov
    @MykolaDolgalov 4 роки тому +1

    Thank you, this is very helpful!

  • @juggles5474
    @juggles5474 2 роки тому

    You rock dude, thanks for the video

  • @TViener
    @TViener 7 років тому +2

    Just found your channel while studying for my algorithms exam. Cannot thank you enough for making these great videos! You are f@#$!ing awesome!

  • @ramennudeln247
    @ramennudeln247 Рік тому

    Why B to C instead of G to I or H to C is it because of node size?

  • @guilucasds
    @guilucasds 3 роки тому

    This is amazing! Thank you so much for that, really!

  • @BrandonMinjaresCodes
    @BrandonMinjaresCodes 23 дні тому

    It's not important, but at 2:55 when you said 'I' belongs to group orange but 'C' doesn't have a group yet...I said "Oh I see". Just a funny moment. Happy learning ya'll lol

  • @alexvakalis9553
    @alexvakalis9553 2 роки тому

    i don't understand the logic behind each number being assigned to which path.
    Any kind of help is aprecciated.

  • @FrazerKirkman
    @FrazerKirkman Рік тому

    at 5:20 you say we've found the minimum spanning tree, but how did you know that they were all connected at the point? Does Kruskals algorithm keep track of group size at each root node?

    • @kylewilliams9429
      @kylewilliams9429 Рік тому

      The would all have the same 'root' parent. That's how you know the algorithm is complete. When every vertice has the same parent (belongs to the same 'group')

    • @gradientO
      @gradientO 10 місяців тому +2

      You can keep track of group count. At the start, each node is a group, so it'll be the node count. Decrease the count on union. Stop immediately when the group size is one instead of going through remaining edges (which won't be added anyway)

  • @arjundosajh
    @arjundosajh 2 роки тому

    nice explanation, thanks!

  • @dochell1781
    @dochell1781 6 років тому +1

    Sehr gut erklärt. Vielen Dank :)

  • @kanishk1010
    @kanishk1010 5 років тому

    Great illustration. Just wanted to add that union-find is an algorithm and not a data structure. Graph is a data structure.

    • @riteshrastogi5388
      @riteshrastogi5388 4 роки тому

      No its not. Read the first line ( written in black color ) of this article :
      cp-algorithms.com/data_structures/disjoint_set_union.html

  • @nabidulalam6956
    @nabidulalam6956 4 роки тому

    nicely explained. thanks.

  • @dinhnhobao
    @dinhnhobao 3 роки тому

    This is brilliant, thank you!

  • @williamhuang6200
    @williamhuang6200 3 роки тому

    how do you assign the edge weights?

  • @nikhilrajput5030
    @nikhilrajput5030 4 роки тому

    Is this algorithm work when graph is directed?

  • @mariyambajwa9162
    @mariyambajwa9162 5 років тому

    Excellent explaination! :)

  • @承苏凯
    @承苏凯 3 роки тому

    hello,Willliam can you teach me how to do the ppt, I am very interested

  • @prrrrrratatata
    @prrrrrratatata 7 років тому

    Well presented.

  • @bharathateja2797
    @bharathateja2797 6 років тому

    nice explanation thanks

  • @sallaklamhayyen9876
    @sallaklamhayyen9876 5 місяців тому

    thank you so much

  • @hendrikombach7285
    @hendrikombach7285 4 роки тому

    are the edge weights arbitrarily assigned?

  • @mantistoboggan537
    @mantistoboggan537 6 років тому

    I'm still not sure where "size" comes into play

    • @WilliamFiset-videos
      @WilliamFiset-videos  6 років тому

      Whether you merge the smaller group into the larger group or vice versa doesn't matter. It's just a good heuristic to use for efficiency of the Union find if you merge the smaller group into the larger one.

  • @tungtruong5904
    @tungtruong5904 3 роки тому

    I am your fan, bro!

  • @supportitservices6349
    @supportitservices6349 Рік тому

    Thanks

  • @aleksajanjatovic5596
    @aleksajanjatovic5596 5 років тому

    Great job, keep it up!

  • @matheuscosta5330
    @matheuscosta5330 2 роки тому

    mind blowing

  • @x3non500
    @x3non500 3 роки тому

    Very interesting, thanks ^^

  • @AndrewBradTanner
    @AndrewBradTanner 6 років тому

    Great vid

  • @DanielMGobbi
    @DanielMGobbi 5 днів тому

    thank u

  • @dimitrijs.869
    @dimitrijs.869 6 років тому

    very good

  • @akshatbhutra7278
    @akshatbhutra7278 5 років тому

    done

  • @huseyinari8654
    @huseyinari8654 2 роки тому

    ehrenmann

  • @ujjvalpatel5353
    @ujjvalpatel5353 7 років тому +4

    !!!!!!!!!! WAIT ,
    The title of your video is very misleading . It should say something like "Application of Union Find data structure (Kruskal's Algorithm)" . Cause when you say adding "C and J" will create a cycle ,that is where we need to know how union Find Algo works .
    else video was awesome

    • @williamvanderscheer4327
      @williamvanderscheer4327 5 років тому +1

      I know this is obviously very late, but for others reading this, just in case...
      It has nothing to do with the union find algorithm, but with Kruskal's algorithm, which tries to find a minimum spanning tree. A minimum spanning tree is the minimum set of weighted edges needed to connect all nodes. If we select edges that form cycles, then we have by default not found a minimum spanning tree. It doesn't even have anything to do with a cycle itself, it's simply because since that node was already "spanned" before (aka already in the group) we did not have to actually use that edge to visit it, and we needlessly incurred the cost by travelling over that vertex, which violates the invariant of the minimum spanning tree algorithm.
      A scenario that happens to be equivalent to creating cycles. (because we are reaching a node in the group, from a node that is also in that group => cycle)

  • @tariqkhasawneh4536
    @tariqkhasawneh4536 6 років тому

    All these "Algorithms", are recipes that a six year old might use when introduced to such problems with no prior knowledge. Very simple !

  • @subee128
    @subee128 7 місяців тому

    Thanks