How Dijkstra's Algorithm Works

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 พ.ค. 2024
  • Dijkstra's Algorithm allows us to find the shortest path between two vertices in a graph. Here, we explore the intuition behind the algorithm - what information we need to keep track of, in what order we need to explore vertices, and what the limitations of the algorithm are.
    ***
    Spanning Tree is an educational video series about computer science and mathematics. See more at spanningtree.me
    To be notified when a new video is released, sign up for the Spanning Tree mailing list at spanningtree.substack.com/
    Spanning Tree is created by Brian Yu. brianyu.me/
    Email me at brian@spanningtree.me to suggest a future topic.

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

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

    This video is ridiculously underrated ((

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

      istg

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

      Can't agree more

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

      I noticed that people put everything between is and underrated

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

      Truuee

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

      Criminally underrated, Brian Yu also teaches in Cs50 topics like AI and Web dev

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

    Came from Computerphile's video after not understanding, and this is just so much better! You made advanced concepts so easy to understand for beginners like me, thank you.

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

      Here's the implementation in Python
      th-cam.com/video/VnTlW572Sc4/w-d-xo.html

    • @Itachi.Uchiha.Offical
      @Itachi.Uchiha.Offical ปีที่แล้ว +14

      Same! Came from Computerphile, felt dumb, watched this, and understood.

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

      Same, concepts should be intuitive for humans.

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

      @@TainuiaKid1973 I also came here after seeing Computerphile video😂..

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

      This video is criminally underrated

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

    I cant stress how amazing these animations are! You are a livesaver for "self-learners" like us :)

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

      Absolutely!

    • @Yell-Heah
      @Yell-Heah 2 ปีที่แล้ว

      fuck, dude, yeah. I don't learn anything from my college lectures- I need stuff I can pause and rewind, and my monkey brain does great with visual assistance. needing to basically self-teach myself all my CompSci, I don't wanna think about where I'd be without videos like this

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

      Learn your real name first!

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

      Calling yourself a self learner is meaningless. Everyone is a self learner.

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

      @@MikhailFederov There is a more respectable term for self-taught:
      Autodidact.

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

    THANK YOU for the part at 6:28 ! Nobody else seems to explain how to actually find the path, and not just it's length.

  • @Yell-Heah
    @Yell-Heah 2 ปีที่แล้ว +73

    I've been agonizing over trying to understand this algorithm for a class for hours- and now I'm about halfway through this video, and I'm already feeling enlightened. It's FINALLY clicking. You're a lifesaver, mate!

  • @dominiorrr6510
    @dominiorrr6510 ปีที่แล้ว +33

    I love learning based on examples and this is by far the best example of Dijkstra's algorithm I've seen so far. It covers a lot of aspects that might not be obvious at first. I haven't even learned Dijkstra yet, but it feels trivial to implement after knowing how simple graph algorithms like DFS or BFS work.

  • @penguinjuice7543
    @penguinjuice7543 11 หลายเดือนก่อน +2

    Absoloute life saver. Got taught this by a teacher who literally doesn't know computer science so videos like this are vital.

  • @whatsup_internet
    @whatsup_internet 5 หลายเดือนก่อน +1

    So far the best and easiest explainations i have ever seen on YT yet for dijkstra;s Algo. Great work !!! Thank you :)

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

    The animation is just outstanding!
    A video on "how" you make these videos or just what inspired you to get started on this creative journey would be awesome.
    Keep up the amazing work. I have subscribed and also pressed the bell icon. :)

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

    Please continue to do more of this video! Thank you so much for your content!!

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

    A very helpful video. Just looking at code and some rambling explanation in a book made the algorithm as clear as mud in a beer bottle to me... but this video has made it so abundantly clear... and seeing how code is derived from it is more than helpful. Thanks so much for posting.

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

    This is the best explanation on Dijkstra's algorithm I've ever come across!! 🙌🙌

  • @pend_deletepatrickguarente4916
    @pend_deletepatrickguarente4916 8 หลายเดือนก่อน +2

    By far the best video on this subject I have ever seen, FANTASTIC job with those animations they are really good!

  • @artycrafty8691
    @artycrafty8691 11 หลายเดือนก่อน

    Not only the video is underrated but the whole youtube channel is underrated. best of luck you spanning tree. This is the future of education. I feels so good when i look up to such unique educational channels.

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

    What a great explainer video! Please make more of algorithms. Thanks a lot for making this video.

  • @jaylensung7332
    @jaylensung7332 8 หลายเดือนก่อน +1

    It's amazing that I recognized this voice immediately and realized this random video I picked is actually from Brain! Thank you for all the hard work you've done!

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

    Very great explanation, I just followed along Dikstra's algorithm in pseudo code and implemented pathfinding in Unity using it. This visual tool really helps explain the algorithm at hand! Great work.

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

    This is so much better than some other ones I already saw....and that was a nice tip at the end, referring to the negative value.

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

    This channel is a germ!! So glad I found you!

  • @qazizayad4860
    @qazizayad4860 11 หลายเดือนก่อน

    i have my Alevel Comp Sci paper 12 hours from now. I love you man. Youre a real life saver

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

    very interesting!
    i love how you voice over your code. you make it super understandable!

  • @taumah7302
    @taumah7302 11 หลายเดือนก่อน

    Incroyable ! Mes profs n'ont pas réussi à ma faire comprendre cet algo en 1h et là je tombe sur cette vidéo ! Merci tu viens de sauver mon année !

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

    Kudos to the animation and explation.

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

    One thing I realized, visualization is more helpful to grasp a context than just reading about it.

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

    For each vertex v:
    Dist[v] = infinite
    Prev[v] = none
    Dist source = 0
    Set all vertices to unexplored
    While destination not explored:
    V = least valued unexplored vortex
    Set v to explored
    For each edge (v, w):
    If dist[v] + len(v, w) < dist[w]:
    Dist[w] = dist[v] + len[v, w]
    Prev[w] = v

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

      Thank you to SpanningTree for the insight and thank you for the memo !

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

      What's the significance of Prev[w] when the latest update of Dist[w] is more important?

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

      @@abam9787 6:24

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

      @Skidoodles the last two lines should be indented more, to indicate they are both part of the "if true" branch of the conditional. Also, why not indent for the while loop?

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

      Thanks man

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

    I've been watching a few of your videos over the last day or so, and they're all just so good. You really have a knack for explaining complicated concepts with a clear, easy-to-grasp visual style. I think I'd describe your channel as "3blue1brown for computer science" :) I hope that comes off as complementary as it's intended. Kudos, and keep up the great work, I'm looking forward to more!

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

    By far the best explanation on the internet. Thank you

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

    Such a great way to explain the complex topic. Thanks a lot. 😊

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

    Excellent illustration of the Dijkstra's algorithm. Superb!

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

    I am sharing this link with my students in the Data Structures course -- Keep it up!

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

    This is the first video I watched on your channel and on dijkstra's algorithm and damnn it was sooo good! Loved it!

  • @nawalkhawar7602
    @nawalkhawar7602 5 วันที่ผ่านมา +1

    you're videos are extremely helpful. thank you for making these! Also love the robot

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

    Excellent video. Clear and concise description of Dijkstra's algorithm.

  • @ghanshyamtripathi221
    @ghanshyamtripathi221 4 หลายเดือนก่อน

    not even kidding this is the best explanation/ visualisation one can ever get Thank you sir!!

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

    Excellent walkthrough. 4th video down and I finally get it. Thanks

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

    This is the best explanation,one can ask for. . Waiting for more such algo explanations

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

    I don't know why YT is recommending this to me 2 years after its upload, but I gladly clicked on the video! This is pretty much the only thing I remember from when I was studying Geoinformatics before I quit lol so it's a nice throwback for me. Very well explained too! 8:30 for something our professor needed like 2 weeks for

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

    Awesome explanation, short and to the point.

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

    I love this explanation is so simple to understand. Thank you!

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

    The ambience,sound the illustration and putting the main logic behind this algorithm : Clarity and transparency are optimum.Please do make videos like this for every important algo,a request.Refreshing..

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

    Thank you! You've made it so easy to comprehend

  • @davewilson4493
    @davewilson4493 11 หลายเดือนก่อน +7

    No doubt like many other people, I reinvented a variant of this particular wheel (in my case back in the mid 90s while writing "AI" code for NPCs at a games company).
    A guy on our team who actually liked writing in x86 assembly language had written a brute-force A-B routefinding function that was slow enough to take up meaningful time.
    After some playing around in C, I ended up zeroing in on the offspring of Dijkstra which fully explores the graph and finds the shortest routes to everywhere, and it was several orders of magnitude faster than the assembly guy's code.

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

    I saw this in a class in 1994 or 5. This has always been my favorite algorithm I've ever learned. Nice video

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

    Exactly what we need more of! Amazing explanation

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

    thanks! easy to follow. explained in simple terms.

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

    This is incredibly well made!

  • @rodrigo-tj1gf
    @rodrigo-tj1gf 5 หลายเดือนก่อน

    You need to post more, those videos are freaking good

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

    Really cool stuff. I am also happy about the snippet code algorithm at the end

  • @megamaser
    @megamaser 6 หลายเดือนก่อน

    The first time I figured out this algorithm, it was by reading code. That worked, but took way longer than watching this video. This video is very nice. It is clear and touched the most important points. You've made an intuitive understanding of Dijkstra's algorithm easily accessible to anyone. The only thing I would add to this video is at least a brief mention that you would put the data in a heap. This could be a nice segue into a separate video about heaps.

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

    Great, clean and simple!
    Congrats!

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

    Fantastic video!! Am watching all your videos back to back

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

    Just gotta a say, thanks a lot.... U have made it so easy to understand... The animation is very helpful... Keep going

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

    I don't think I've ever watched anything ever explained in a clearer way than this.

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

    This is almost similar to the CPM (Critical Path Method) that we study in Project Planning and Management. So beautifully explained

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

      Just wanted to mention that. You're absolutely right 🙂

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

    This is amazing. Please keep the good work.

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

    Your channel should grow! Amazing work!

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

    You guys have produced super videos..thanks much!❤

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

    I have a shortest path problem that I am currently working on, and even though I am familiar with the Dijkstra algorithm this somehow just made me instantly realise of my mistake in code. Gracias

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

    Great video with clear explanation! It would fit those entry level guys.

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

    beautifuly explained! Dont stop making these videos. You are the savior of cs students

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

    Amazing job! I have a logistics course in uni and I didn't understand the class. Lucky me found this video. Thank you!!!

  • @rpgprime
    @rpgprime ปีที่แล้ว +5

    By far THE best graphical explanation of Dijkstra's algorithm and it covers improving it to get the actual path 👍

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

    The amazing quality of your videos is super underrated

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

    Really great animation for explaining the concept, loved it

  • @CrescentDolluwu
    @CrescentDolluwu 11 หลายเดือนก่อน

    Besides how great of a job this video explains this concept, The absolute best part is the little blue robot blinking and looking around.

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

    you are just doing a great job right there, Thank you

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

    Best video about dijkstra algorithm I have ever seen

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

    perfectly explained, intuitive well ordered and perfect example.
    great work

  • @bapynshngain
    @bapynshngain ปีที่แล้ว +14

    This was really very insightful. I wish more teachers would adopt this method of teaching because it is so much easier to understand than the traditional textbook method!

    • @tirateehoffenberg8824
      @tirateehoffenberg8824 9 หลายเดือนก่อน +1

      Making a high quality TH-cam videos like this takes a lot more time than drawing nodes and edges on a whiteboard.

    • @ghad6799
      @ghad6799 4 หลายเดือนก่อน

      While giving high quality lectures on white board is skill. Honestly, our education system is fine, just the skill issue of conveying an idea. Fucking hell my "international university" profs can't even speak English.

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

    Great video, very intuitive and help me a lot!

  • @DC-zb7uf
    @DC-zb7uf 2 ปีที่แล้ว

    Best video explanation out of them all, thanks !

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

    Great video and audio visual representation of the complex algorithm. Made it look like so easy for anybody to learn. Can we have a similar video maybe for A* algorithm, that would be pretty awesome. Also any algorithm google might be using for their routing solution. Thank you.

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

    Brilliant explanation. Thank you!

  • @shufflecat3334
    @shufflecat3334 ปีที่แล้ว +25

    Very well explained! The only feedback I can provide is that I personally found the background music annoying. The wind instrument (flute?) seemed a bit obnoxious and interrupted my focus on the concepts being presented pretty often.
    Kind of hard to know that sort of thing ahead of time, but that's just my personal experience of the video. :)

    • @fosatech
      @fosatech 5 หลายเดือนก่อน

      The music makes me want to kms

    • @hairold5680
      @hairold5680 4 หลายเดือนก่อน

      Agreed, itd be better without it

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

    Very clear explanation, thank you!

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

    I am taking CS50 Edx class, I recognized this voice. It must be you Brain. Wonderful job explaining this concept, just like you did in CS50!

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

    Great way to get a feel of Dijkstra's Algorithm

  • @ssamship2275
    @ssamship2275 7 หลายเดือนก่อน +1

    This video had actually insane timing. Just went over this in class.

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

    My professors love bringing up the traveling salesman problem and then not elaborating, so this was fun. Thanks!

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

    Very useful! Thank you very much for doing this video :D

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

    Amazing video. So well explained. Brillinat

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

    Damn, I recognised Brians' voice from CS50AI. Respect for your joy of teaching man!!

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

    This video is amazing, thank you very much for this help!

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

    best explanation of dijkstra's algo so far

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

    my god this is amazing!!!!! How expert you must be at your art to be able to simplify to this extent

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

    This is Amazing!!!
    Thank you so much for the video!!!

  • @jannickbreunis
    @jannickbreunis 4 หลายเดือนก่อน

    Explained very well!

  • @mdkhaledhossain996
    @mdkhaledhossain996 11 หลายเดือนก่อน

    this is just mindblowing, keep creating content like this, you will reach to million subscriber within no time

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

    Coolest video on Dijkstra's ever. So easy to understand, thank you so much.

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

    Thank you for this simplification

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

    Also...a great voice too. Very clear.

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

    Very great visualisation, thank you

  • @HabunoGD1821
    @HabunoGD1821 6 หลายเดือนก่อน

    I loved the video and your explanation.
    I read something out there and I want to share it
    3:47 - 4:42 "It's important to note that this approach may have limitations and doesn't always ensure the most accurate result. In certain situations, it could lead to inaccurate estimates if the initial estimation doesn't precisely reflect the reality of the path. In the original Dijkstra's algorithm, continually updating estimations is crucial to ensure the accuracy of the shortest path."

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

    Thank you!! Greetings from Argentina, excellent video!

  • @ikuubi
    @ikuubi 6 หลายเดือนก่อน

    Most grandiose of respect,
    the other day I saw a video that jump straight to explaining the 'cost'. Me being a non technic person can't understand why a to b took so long, while you can just hypothenuse your way to b.
    But now it makes sense!

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

    i never subscribed a channel just watching one video before..You are so good

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

    Beautiful explanation. Thank u so much.

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

    Great visuals and explanantion well done mann!!!
    😄

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

    Amazing work !!

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

    nice video, especially the negative values and heap