Topological Sort | Kahn's Algorithm | Graph Theory

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024

Комментарии • 145

  • @puneetkumarsingh1484
    @puneetkumarsingh1484 4 года назад +62

    This video is simply great. When I read it first, it took 3-4 hrs to fully understand the algorithm. The video has done the same in 14min.

    • @Aldrin32f
      @Aldrin32f 2 года назад +1

      Repeated the same feat, RUclips recommendation to the rescue. PS Thanks @WilliamFiset

    • @democreation3594
      @democreation3594 9 дней назад

      @@Aldrin32f did the same and now I am here😁

  • @shouryasingh2193
    @shouryasingh2193 4 года назад +67

    I just now Solved Course Schedule II on leetcode using this algo

  • @williamadams5034
    @williamadams5034 4 года назад +51

    My favourite ordering is to Keep Sleeping.

  • @1hpdell
    @1hpdell 3 года назад +8

    William, really appreciate your effort in making this Video! Effort behind this Animation is awesome, explanation is awesome too!

  • @geniamartynova8844
    @geniamartynova8844 Год назад +2

    Clean and concise explanation. Easy to comprehend and remember. Thank you!

  • @AbrahamWilson
    @AbrahamWilson 4 года назад +47

    Hey William, just wanted to say thank you. If it's possible could you make a series on DP like the one you're doing for graph theory.

    • @vedantsharma5876
      @vedantsharma5876 3 года назад +3

      That would surely be the best DP course on RUclips. I love how he explains

    • @sandeepjnv13
      @sandeepjnv13 2 года назад +3

      Not to undermine William but there’s RUclips channel “Inside Code”, he explains lot of concepts pretty well. He has dynamic programming content as well. Also a Udemy course on dynamic programming

    • @pelvispresley22
      @pelvispresley22 Год назад

      The freecodecamp video from Alvin Zablan on DP is as good as it gets

  • @AtharvaRao0104
    @AtharvaRao0104 26 дней назад

    @11:54 : It should be "Afterwards loop through all the *nodes* (not edges) of the graph and add all the nodes with an incoming degree of 0"
    This is a brilliant series. You teach in concise and clear manner. I first studied graphs in 2003 at college but never understood it and had great fear in the mind for graph problems. I found a great teacher after 21 years and I understand it easily. Thank you very much.

  • @LUKFUNTV
    @LUKFUNTV 4 года назад +4

    Really takes an effort to make it sooooooooooooo
    SIMPLE🙏🙏🙏🙏🙏🙌🙌🙌🙌🙌

  • @dheerajgopinath1892
    @dheerajgopinath1892 2 года назад +1

    The way you explained is simply superb!! especially the "getting ready for school" example..

  • @njkevlani
    @njkevlani 4 года назад +39

    TIL Superman didn't know topological sort

  • @emwistu22
    @emwistu22 Месяц назад

    Your videos and your teaching style are amazing!!

  • @robaczliwy
    @robaczliwy 3 года назад +3

    Thank you for a very clear explanation. Implementation was easy once I grasped the concept you've laid out in this video.

  • @KevinDesai
    @KevinDesai 2 года назад

    What an example to start with. Thanks for not starting with gibberish numbers. This makes more sense than all the other videos

  • @m.movsar
    @m.movsar 9 месяцев назад

    Лучший канал по алгоритмам! Thank you William!

  • @Sunny-vl1ff
    @Sunny-vl1ff 3 года назад +2

    Thanks! It is great to see how the algorithm works in practice.

  • @mister_mad
    @mister_mad Год назад +1

    amazing explanation and visualization of the algorithm! a video unlike no other

  • @abhishektiwari7643
    @abhishektiwari7643 6 месяцев назад

    Was following a course and couldn't understand this concept there but this video was so simple and better explained

  • @shnerdz
    @shnerdz 4 года назад +3

    great explanation as always. please make a video on segment trees next! such a powerful yet simple data structure

  • @JeremyIglehart
    @JeremyIglehart 2 года назад +2

    Great video. Small suggestion - right at the end where you check if index is not equals to n it would be really nice if you also showed an example of what would happen with your code if there was a cycle in the graph.

    • @jamesbon68
      @jamesbon68 2 года назад +6

      For anyone wondering about this, if you imagine a 3 node cycle, A -> B -> C -> A. Notice that you will never add these nodes to the queue because their indegree will never be 0. This implies that index will also never be larger than n.

  • @njww13
    @njww13 2 года назад

    This video helped a lot since before I would constantly wake up in the morning and put on my school before my socks

  • @justarandomguyofficial1058
    @justarandomguyofficial1058 2 года назад

    just looking at the playlists you made motivates me

  • @mercyomwoyo985
    @mercyomwoyo985 Год назад

    Thanks William for the visualization and Animation! I clearly understand the concept now!

  • @abhinavboyed6624
    @abhinavboyed6624 2 года назад

    I'm about to binge watch all your videos. Thanks for the awesome content!

  • @centr0
    @centr0 Год назад

    Wow. I understood that. Great way of teaching. You’re amazing. Thank you, sir.

  • @David-fy1sn
    @David-fy1sn 2 года назад

    Wow great explanation in only 13 mins!

  • @przemekbary
    @przemekbary Год назад

    Thanks a lot for the explanation. You've got a great gift of explaining complicated thing easy (which IMO is the sign of a genius mind)

  • @kartarsingh7776
    @kartarsingh7776 3 года назад +1

    That was a great example(dressing up) at the start of video.

  • @fantasy9960
    @fantasy9960 2 года назад +1

    thank you so much William! this is extremely helpful for beginners!

  • @zy3749
    @zy3749 4 года назад +2

    Thank you so much, it is the most clear explanation I've found.

  • @NoName-ip4tt
    @NoName-ip4tt 3 года назад

    Animation you conduct has heart beat sound as background. I like it :)

  • @markwillis2336
    @markwillis2336 Год назад +1

    I work from home. Why do I even need this getting dressed algorithm again?
    What an incredible breakdown, thank you so much for simplifying this complex topic so much for complete beginners like me.

  • @hix0071
    @hix0071 3 года назад

    Keep it up William. May you reach million subs next year !

  • @northridgefield
    @northridgefield Год назад

    Great clarity - quality content.

  • @leducphuclong
    @leducphuclong Год назад

    Thank you so much, I really appreciate your video. Please continue...

  • @nehascorpion
    @nehascorpion 2 года назад +1

    Awesome content! Thank you for putting in so much effort. Appreciate it!

  • @Sauce-ke
    @Sauce-ke 3 года назад

    I hope all of my professors are teaching the same as you. I really need a data structure 1 on 1 teacher to teach me everything

  • @neerajkulkarni6506
    @neerajkulkarni6506 3 года назад +2

    10/10 beautifully explained!

  • @Junposs
    @Junposs 3 года назад

    Thank you Wiliam, I finally understand what Topological Sort is!

  • @agnelamodia
    @agnelamodia 3 года назад

    Easy and simple. Marvelous.

  • @Learner010
    @Learner010 4 года назад +1

    Very nice explanation. please make a video on articulation point and bridges

  • @twistedlog24
    @twistedlog24 7 месяцев назад

    thanks for explaning this so clearly!!

  • @sstp105
    @sstp105 3 года назад +2

    amazing explanation!

  • @tanmaykharshikar9419
    @tanmaykharshikar9419 3 года назад

    This video is a gem, thanks! You have a new fan :)

  • @avipatel1534
    @avipatel1534 3 года назад

    Thanks this video helped me optimize my sort code for leetcode course scheduling

  • @mickeynig1
    @mickeynig1 3 года назад

    Thanks Mr. Fiset really awesome explanation

  • @soanonso
    @soanonso 2 года назад

    Nicely explained - thanks for this.

  • @FaustoCarvalho
    @FaustoCarvalho Год назад +1

    What tool have you used to draw and animate these graphs? Thanks

  • @kevintran6102
    @kevintran6102 4 года назад

    Good as always. So easy to understand.

  • @30天冥想练习
    @30天冥想练习 3 года назад +1

    Kahn : Implements Topological Sort.
    Superman : Am i a joke to you ? Wears underwear after pants.

  • @cardel-qq6xp
    @cardel-qq6xp 10 месяцев назад +1

    Underwear -> pants -> shirt -> hoodie -> socks -> shoes -> school

  • @algorithmscasts902
    @algorithmscasts902 3 года назад

    Nice animation and great explanation, thank you

  • @lazysky1234
    @lazysky1234 Год назад

    Thank you for your video, great explanation!

  • @m-meier
    @m-meier Год назад

    This was awesome! Subscribed!

  • @LUKFUNTV
    @LUKFUNTV 4 года назад +2

    I recommend this.........to all the before_watching_read_comments_section people 🙌🙌🙌

  • @jabir5768
    @jabir5768 2 года назад +1

    HI ! Really nice explanation but I was wondering about the complexity
    why is it O(E+V) ? Shouldn't be O(V) since we iteratre of the nodes twice to set the degrees, then the while loop iterates exactly V times ?

  • @VijayKiran225
    @VijayKiran225 2 года назад

    beautiful explanation .. keep up the good work.. subscribed as well

  • @il5083
    @il5083 Год назад

    Nice video. Is there a reason not to use Kahn's algorithm instead of the DFS topological sort in an interview since this is easier to memorize and code?

  • @yujianzhao6461
    @yujianzhao6461 3 года назад

    Thanks a lot man! I really appreciate your work!

  • @babumon5351
    @babumon5351 3 года назад

    Very nice explanation. Thanks

  • @LoriSmikeh
    @LoriSmikeh 5 дней назад

    최고의 영상

  • @atharvas4399
    @atharvas4399 3 года назад

    this is 100 times better than my algo professor

  • @ricardo7240
    @ricardo7240 4 года назад +2

    Awesome, keep it up!

  • @spicy_wizard
    @spicy_wizard 4 года назад

    FANTASTIC. The problem with DFS on topological sort is that the recursion is too expensive, BFS is faster in all other aspects

    • @puneetkumarsingh1484
      @puneetkumarsingh1484 4 года назад

      Alternatively, we can implement the DFS topological sort algo, using stack.

  • @droy7528
    @droy7528 4 года назад

    Thanks a lot, William for all these golden videos. I recently came across Aho- corasick and finding it really difficult to umderstand it properly. So I am commenting on the latest vdo here...hoping u would see my comment. We would be really grateful if u could pull up a vdo on Aho-Corasick. Thanks in advance.

  • @mostafaarafa1461
    @mostafaarafa1461 3 года назад

    Thanks, You explained it really perfectly

  • @akidanis6984
    @akidanis6984 7 месяцев назад

    holy shit this was such a great explanation, tysm!!

  • @ksenthu
    @ksenthu 3 года назад

    Best explanation ever, thank you!

  • @shantanubapat6937
    @shantanubapat6937 3 года назад +2

    We have to loop through all vertices to find those who have in degree of zero. Can we optimize this using heap or priority queue?

    • @WhyAnkurGautam
      @WhyAnkurGautam 2 года назад +2

      We have to loop through once to find the vertices which have indegree of zero and put it in queue. After that we just have to pop the element and decrement in-degree of its dependent nodes. When you are decrementing you can check if it is zero or not. If it is zero than you can put that node into queue. This way you dont need priority queue. Only using queue will work in O(N+E) I guess.

  • @RushOrbit
    @RushOrbit Год назад

    Where did you find the intro music for your videos?

  • @amanbhatia7442
    @amanbhatia7442 6 месяцев назад

    just realized you have a similar algorithm for the dfs approach as well? , But I really like this, feels intuitive

  • @ameynaik2743
    @ameynaik2743 3 года назад

    Nice video, how is this different from another video you have on top sort using dfs?

  • @jisanson
    @jisanson 3 года назад

    Thank you for this awesome video!

  • @akshatmehra3951
    @akshatmehra3951 Год назад

    You're the best man

  • @geomichelon
    @geomichelon 2 года назад

    great video! Thanks man!

  • @无名-c1f
    @无名-c1f 3 года назад

    What drawing software to use? The picture is very nice

  • @migzleon4047
    @migzleon4047 2 года назад

    Excellent content.!

  • @tarunstv796
    @tarunstv796 Год назад

    Will this approach also work for cyclic graphs?
    *When I say it will work, I mean it will let us determine whether the graph is cyclic or not, or if a DAG will provide valid ordering.

  • @andreyvalverde4780
    @andreyvalverde4780 2 года назад

    hi there, quick question, based on the code, how do we make sure that we are not adding vertices that we've already visited?

  • @WebSurfingIsMyPastime
    @WebSurfingIsMyPastime Год назад

    Great Video!

  • @soumyajitchatterjee5822
    @soumyajitchatterjee5822 Месяц назад

    Beautiful

  • @prabhat2342
    @prabhat2342 3 года назад

    wonderful explanation, thanks man:)

  • @vm7240
    @vm7240 2 года назад

    What is the time complexity of calculating indegree? O(V^2) or O(V + E)?
    V = no of vertices
    E = no of edges
    Since there are two for loops, ig it should be v^2

  • @AryanPatel-wb5tp
    @AryanPatel-wb5tp 9 дней назад

    What is run time , O(V+E) ? can someone explain line by line using the pseudocode if possible

  • @alifrahman7099
    @alifrahman7099 2 месяца назад

    Amazing

  • @pankajpanwar9385
    @pankajpanwar9385 2 года назад

    Even tho you say that the in-degree array has to be number of nodes the current index is connected to indegree[0] = 0
    Actually in code it seems like you're populating the in-degree by adding the number of nodes connected to the current index indegree[0] = 3

  • @ManishaSingh-yk5en
    @ManishaSingh-yk5en 2 года назад

    Can we get the ppt which is being used in the video?

  • @pamp3657
    @pamp3657 Год назад

    very good video

  • @saralee548
    @saralee548 3 года назад

    amazing.

  • @shreyashachoudhary480
    @shreyashachoudhary480 3 года назад

    Awsm!

  • @akashshirale1927
    @akashshirale1927 4 года назад

    can u post videos on identifying kadane's algorithm for dynamic programming

  • @76lunagogogo
    @76lunagogogo 6 месяцев назад

    Regarding the DAG, isn't the (3) also not he DAG as the same reason that (4) one has?

  • @zappist751
    @zappist751 Год назад

    MAH MANNN

  • @mnchester
    @mnchester 3 года назад

    great vid

  • @richa2950
    @richa2950 5 месяцев назад

    Best😭❤❤❤❤

  • @bullymaguire2335
    @bullymaguire2335 Год назад +1

    Dude just increase ur volume .no other complains .👍

  • @karankanojiya7672
    @karankanojiya7672 2 года назад

    Respect++

  • @cikolatalpudingg1968
    @cikolatalpudingg1968 9 месяцев назад

    muhteşem yaa

  • @bxfootballphenom
    @bxfootballphenom 2 года назад

    I've been running into a problem with this algorithm when there is no node 0. In this case, the inDegrees array will always have the 0th index be 0, and since there is no "0" node to add any incoming dependencies it will incorrectly add it to the queue. This also ends up breaking the rest of the algorithm since the true size of the inDegrees array is 1 less than what we were expecting. For example if our vertices are [1,2,3,4] the inDegree array at initialization will be [0,0,0,0] and will only match up to vertex 3, since at iteration it will be expecting i to start at 0. Has anyone else come across this and how have you solved this?

    • @WilliamFiset-videos
      @WilliamFiset-videos  2 года назад +1

      Hey Cesar, when labelling the nodes of the graph you should always label the first node as node 0, the second node as node 1, the third node as node 2 and etc... This should ensure that you always have a node 0, does this resolve your problem?

    • @bxfootballphenom
      @bxfootballphenom 2 года назад

      @@WilliamFiset-videos Thanks!

  • @nitika9769
    @nitika9769 11 месяцев назад

    my Saviour

  • @JayPatel12928
    @JayPatel12928 4 года назад +8

    Socks, shirt, hoodie before underwear! Picture that :D