Breadth-first search in 4 minutes

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ม.ค. 2025

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

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

    After I made the video, I changed the code in GitHub to use a deque instead of an array for the queue. This allows us to pop the first element in 0(1) time. More here: wiki.python.org/moin/TimeComplexity.

    • @Ðogecoin
      @Ðogecoin ปีที่แล้ว

      Good video

  • @leonh2140
    @leonh2140 ปีที่แล้ว +121

    I love that your slides are so minimalistic, for me it's the perfect amount of content to support what you say

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

    It's good to see that you are back. Your past videos have helped me a lot, thank you.

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

    I have an algorithm test coming up on graphs and this came out at exactly the right time! Thank you!!

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

    You are literally saving my life! I’m so glad that you’re uploading again!!

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

    Damn because of your videos, I managed to prepare for the exam tomorrow. I had no idea how I was going to get through so much material in one day, thank you.

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

    Wow, you've added so much value in such a short amount of time. Thank you sir!

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

    your videos keep me sane i swear

  • @Motivational-Mango
    @Motivational-Mango 10 หลายเดือนก่อน +3

    I learned more in 4 minutes than all the 30 years of my life

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

    Thank you for your quick illustrations! I enjoy your videos a lot.

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

    This guy has the ability to make everything simple, thank you.

  • @guirck
    @guirck ปีที่แล้ว +7

    That is so concise! Perfectly explained!

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

    I was looking for a to-the-point refresher of BFS. This was great. Thanks!

  • @dr.walidsoula
    @dr.walidsoula 2 ปีที่แล้ว +2

    You deserve more views, thank you for your videos

  • @SAFEER-q6g
    @SAFEER-q6g ปีที่แล้ว

    Best Explanation on youtube so far..Every other video is from 15 to 20 minutes..and here you are doing it in 4 minutes😂

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

    I love your videos so much! Great illustrations, great explanations, many topics, and I can learn something completely new in under 5 minutes!

  • @JK-ls8kh
    @JK-ls8kh 2 ปีที่แล้ว +3

    you are literally helping me to survive my exam :) big thanks

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

    Michael Sambol should take the place of my tenured professor that teaches Algorithms.

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

    Great video. Makes the concept very easy to understand. Thank you for the way you made it.

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

    honestly i understand it perfectly in that brief explanation
    many thanks to you

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

    You saved my entire life. Thank you so much.

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

    Why do you need "visited" queue? It can still work without it, doesn't it?
    UPD: just figured out that your algorithm is for general graph, but you apply it to a tree (special case of graph) so "visited" is redundant for tree case.

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

    Ive been using recursion in dfs thinking it would work here too
    Thank you for helping me realize my mistake

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

      Def easier iteratively for BFS! github.com/msambol/youtube/blob/master/search/breadth_first_search.py

  • @NoOne-ev3jn
    @NoOne-ev3jn ปีที่แล้ว +3

    The Queue in place always go over my head, now with the visualisation it makes it a lot more easier and obvious 😅😅😅

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

    such calm voice! Love it

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

    Thanks !
    Very instructive, well taught, I understood easily

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

    Bro, you are a god of explaining and teaching, so quick, so simple, so smart, not like other teachers who sound like broken records and x2 speed you tube videos.

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

    Finally someone that’s speaks clear English

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

    Clear and straight forward. Thank you.

  • @imtiaziqbal3041
    @imtiaziqbal3041 2 วันที่ผ่านมา

    Great video on BFS thank you

  • @MaksymOliinyk-z5u
    @MaksymOliinyk-z5u หลายเดือนก่อน

    man thats a very good explanation

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

    Legit the best explanation out there.

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

    very useful and straight to the point, it was useful thanks!

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

    Thanks, you literally saved my life.

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

    This man does not miss 🔥

  • @RownitaTasneem-qf5sr
    @RownitaTasneem-qf5sr 2 ปีที่แล้ว

    This video is well-explained.Thanks a lot for this ....

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

    thank you, so much easier to understand

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

    thank you so much for clear explanation

  • @Nico1a5
    @Nico1a5 9 หลายเดือนก่อน +4

    And what are you searching for in there?

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

      The letter X

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

    Thanks for your clear explanation

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

    I believe the queue was done in the opposite direction, but overall I learned a lot!

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

    Does the 'not in' visited check worsen the time complexity by adding this (i believe linear-time) operation?

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

    Love the way you explained the BFS, but is there a way to write the code using recursion?

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

    Thank you for the vide! What is the addrd value of the last if statement

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

    1:31 isn't the que popping 'C' first ?

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

    U saved me from my com sci final tmr (Im doomed)

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

    So what is optimal solution of your sample? Path????

  • @lennyb.9616
    @lennyb.9616 8 หลายเดือนก่อน

    thank you so much for explaining this in less than 5 min

  • @g.kaush02
    @g.kaush02 3 หลายเดือนก่อน

    if b and c interchange in between, then after what is the traversal path?

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

    He said first in first out and queue but is demonstrating a last in first out stack data structure.

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

    you mentioned the use of queue, but used a stack with pop function, no?

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

      The concept is the same where the abstract data structure is a queue, i.e., FIFO. In the video I used an array and did pop(0), but I later switched the code to use deque and popleft() [same concept as pop(0)] because it's more efficient. See here: github.com/msambol/youtube/blob/master/search/breadth_first_search.py#L17-L19.
      Let me know if that doesn't make sense!

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

    i love you so much and i hope you live a long happy life

  • @AHMEDELMESSAOUDI-f2j
    @AHMEDELMESSAOUDI-f2j 8 หลายเดือนก่อน

    Dude you are the best, cheers

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

    Could you please make a video on the Hungarian Method for a bipartite graph, using only the graph? Or is this not a subject you can cover?

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

    Thank you for this videos

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

    would be easier if you add what is the front and what is the end of the queue because other examples and other i see the queue is other way. I mean it doesn't matter since i figured it out after a few minutes but i think it would make it easier to understand quickly whats happening lol

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

      I should have added that, you're right. Apologies!

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

      @@MichaelSambol no worries just reviewing for algorithms test tomorrow And this really did helped me. Thanks for making these videos!!!

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

    Confusing how you pop the [0] element yet you show that element as being on the far right of the array order, which would not be the [0] element in actual code...

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

      Sorry that's confusing! Check the latest code here, I hope it clarifies it: github.com/msambol/dsa/blob/master/search/breadth_first_search.py.

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

    great video my

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

    Hi, the audio is not clear on your videos. It goes on mute in between for a few seconds. Could you please fix this on all your videos. It would be really helpful. Thanks.

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

      Sorry about that. I'm working on the right settings. Thanks for the feedback.

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

      Is my latest video better, on Fibonacci heaps?

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

      @@MichaelSambol Nope. It isn't any better. Fibonacci heaps also has the same issue.

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

    Thanks bro really helpful

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

    What happens if the graph in question contains cycles? If we're marking nodes as visited when we pop them, won't that mean there will be multiple instances of a node being enqueued into the queue until they are actually reached and dequeued i.e. marked visited?

  • @WhiteFontStudios
    @WhiteFontStudios ปีที่แล้ว +102

    My lord. Sometimes play back speed 2x just isn't enough

    • @bitwodeddemissie7955
      @bitwodeddemissie7955 11 หลายเดือนก่อน +4

      Use revanced there is 5x

    • @legolorian3271
      @legolorian3271 9 หลายเดือนก่อน +71

      Maybe stop watching tik tok so you have an attention span longer than a minute

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

      @@legolorian3271 he does talk pretty slow I won’t lie.

    • @lejuan9002
      @lejuan9002 6 หลายเดือนก่อน +4

      ​@@legolorian3271 chad

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

      🤣🤣🤣🤣

  • @Lukas-mq3vv
    @Lukas-mq3vv หลายเดือนก่อน

    thanks super clear

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

    Great.

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

    Respect 🫡

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

    Thanks

  • @hellogais2177
    @hellogais2177 11 หลายเดือนก่อน +5

    You say first in first out like we are supposed to know where you put elements in and out, can't you put them in either at the top or at the bottom? And why do you say vertically and horizontally without showing a tree, the orientation can be different, we have to fast forward to see what tree you have in your mind, but we can't read yours

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

    ty very muchh

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

    Muhammad Sumbul 😳😳

  • @kavinm9679
    @kavinm9679 24 วันที่ผ่านมา

    W!!

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

    I love you!

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

    o nanq

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

    First

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

    what will be the shortest path here?
    A->C->G->I ?

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

    you code has issues i think this is the right way for BFS
    def bfs(graph, node):
    visited = []
    queue = []
    visited.append(node)
    queue.append(node)
    while queue:
    s = queue.pop(0)
    print(s, end=" ")
    for n in graph[s]: # Corrected indentation
    if n not in visited:
    visited.append(n)
    queue.append(n)

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

      Definitely a few different ways to do it. See here: github.com/msambol/dsa/blob/master/search/breadth_first_search.py

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

    thank you for your clear explanation