G-41. Bellman Ford Algorithm

Поділитися
Вставка
  • Опубліковано 23 січ 2025

КОМЕНТАРІ • 373

  • @takeUforward
    @takeUforward  2 роки тому +102

    Let's continue the habit of commenting “understood” if you got the entire video. Please give it a like too, you don't 😞
    Do follow me on Instagram: striver_79

  • @mandarbhatye17
    @mandarbhatye17 2 роки тому +60

    Thanks

  • @harleenkaur7751
    @harleenkaur7751 2 роки тому +101

    Thanks Striver. Trust me, even in my paid course, they just simply explained the working of Dijkstra and Bellman without going into such detail. U r the best teacher.

    • @dharmvir2330
      @dharmvir2330 Рік тому +9

      True , i am also here from a paid course , Someone believes it or not These explanations are way better than in a paid course.

    • @harshitrautela6585
      @harshitrautela6585 5 місяців тому +1

      @@dharmvir2330 So why did you take the paid course? Is there any advantage you can think of that the paid course is giving better than Striver(just curious to know)?

  • @EliasEH89
    @EliasEH89 11 місяців тому +26

    Thank u.
    Note: The Dijkstra's algorithm implemented in G-32 can handle any negative edges graph EXCEPT the following cases:
    1- Directed graph having any negative cycle (cycle with sum < 0)
    2- Undirected graph having any negative edge because the edge in undirected graph is by itself a cycle

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

      What if graph is disconnected and negative cycle isnt reachable from source then your first point is false.

    • @shravani2922
      @shravani2922 7 місяців тому +1

      Your thought is right, my doubt is why not follow Dijkstras algorithm implemented in G-32 for directed graphs with no negative cycles. The time complexity is even less than Bellmanford algorithm. What is the use of Bellman ford algorithm?

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

      @@Mercer80 I think we can apply a quick visited check? Like we did in the first lectures?

  • @akshaysoni3496
    @akshaysoni3496 Рік тому +73

    Improve Time Complexity by exponential with just minor observation:
    Put int count =0; After the first loop & increment the value of count by 1 when the dist array will get updated and at the end of the second loop, if the value of count is not increased then directly return dist array. if no update in dist array happened that means we already calculate dist array, no need to do further iteration, In the worst case it does not have any impact, but for rest, it decreases TC a lot. It Reduce the number of iteration in Best & Average cases.

    • @srimanproductions8396
      @srimanproductions8396 Рік тому +1

      this should be pinned

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

      I did the same thing.

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

      exactly!

    • @nalingoyal881
      @nalingoyal881 11 місяців тому +1

      Is this case even possible? in a graph like this : a-> b-> c . if we have found smaller distance for a->b , we will surely find shorter distance for b->c in next iteration. Let me know if you think differently.

    • @dank7044
      @dank7044 6 місяців тому +1

      @@nalingoyal881 Bhai you would find smoller distance for c in the same iteration.

  • @mashfy6314
    @mashfy6314 2 роки тому +271

    This guy got superpower. Can be cast as a Marvel hero "The Explainer" .

    • @samarthagarwal6965
      @samarthagarwal6965 2 роки тому +23

      And we all guys as watchers 😂

    • @noobcoder6306
      @noobcoder6306 2 роки тому +1

      nice one

    • @noobcoder6306
      @noobcoder6306 2 роки тому +3

      @@samarthagarwal6965 already taken by the "Watcher"

    • @blutoo1363
      @blutoo1363 Рік тому +9

      I think Striver is already a good enough superhero name

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

      Wahi yr his teachings skills with so much of patiencee

  • @av21015
    @av21015 2 роки тому +11

    You explained it really well, If I was to trace this myself I would have sat for an entire day.

  • @tanyacharanpahadi158
    @tanyacharanpahadi158 8 місяців тому +4

    OMG! too much hype about bellman ford algorithm and this is what it is? WOW! you made it so simple. Thanks a ton striver!

  • @satyakidas7536
    @satyakidas7536 Місяць тому

    After many years I finally understood with your example why bellman ford runs for (n - 1) iterations. Thank you

  • @imajt5
    @imajt5 Рік тому +1

    Have watched multiple videos, but got the understanding from this explaination. Thanks

  • @srinayclg390
    @srinayclg390 2 роки тому +30

    when u said "yes u r correct", my confidence became infinity❤

  • @LokeshSharma-hm5jz
    @LokeshSharma-hm5jz Рік тому +1

    understood, I dont know why i was afraid of this algo in explaining. You made it a butter.

  • @dhanashreegodase4445
    @dhanashreegodase4445 Рік тому +1

    thanks striver, you are the real gem

  • @rethickpavan4264
    @rethickpavan4264 16 днів тому +1

    point 1: see not all paths will updated till last , its based on the order , so ATMOST (N-1)
    point 2 : no matter how many edges in the graph all will be updated for sure
    hope this finds helpful

  • @arnabdebnath2425
    @arnabdebnath2425 2 роки тому +2

    Bhaiya nind se uth ke breakfast mai apka video khaneka Maza hi kuch Alag h…….
    Thank you so much bhaiya ….❤

  • @naitikrathore3317
    @naitikrathore3317 2 роки тому +7

    2 din baad DAA ki paper hai and Bellman Ford aayega exam me, soch hi rha tha ki striver agr next video yhi upload kr de fir to mjaa hi aa jaye and aaj subh dekha BOOM!!

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

    One of the best playlist of Graph on youtube bhaia you deserve more

  • @tasneemayham974
    @tasneemayham974 7 місяців тому +1

    SUBSCRIBED FROM FIRST RECURSION LIST VIDEO, SIRE!!!! UNDERRRSSTOOODDDD

  • @GauravThinks
    @GauravThinks Рік тому +14

    Question: why do we need N-1 iterations?
    Reason: Because we first of all set the source distance out ot all the N edges, now we have N-1 edges, to fill their distances w.r.t source, we need at max N-1 iterations for each Node.

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

    Best explaination of this algo till date !!

  • @jagannathan1014
    @jagannathan1014 Рік тому +2

    Shortly, if N nodes, the node at the farthest level will be at

  • @stith_pragya
    @stith_pragya Рік тому +2

    Thank You So Much for this wonderful video...........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @newsbuster2194
    @newsbuster2194 Рік тому +1

    Thanks for putting such kind of effort for us.

  • @Curiousdev01
    @Curiousdev01 Рік тому +4

    Amazing content sir !! ..... if I get a job will be because of you.🙂

  • @yashshukla1637
    @yashshukla1637 Місяць тому

    AWESOME!!! Bellman Ford will also handle -ve weights + detect -ve Cycles.

  • @HarshnitePrasad
    @HarshnitePrasad Рік тому +1

    Things i figured out :
    1. If you know a path to reach a node you can figure out the paths to reach nodes adjacent to it.
    2. why repeat n-1 times, every time you run through the edges you find a path to reach the node and the cost to reach it, if its better you update, incase the cost doesnt update you have been able to exhaust the minimum cost path.

  • @ashutoshpandey1639
    @ashutoshpandey1639 Рік тому +2

    one thing should also be mentioned that if a graph on N nodes have cycle, then their is path exist having more than N - 1 edges from first to last node.
    By the way best explanation on UA-cam👌

  • @decepticonWave
    @decepticonWave Рік тому +4

    The fact that you explained N-1 is why you are the GOAT. Please make a paid course and we will pay

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

      But the one thing should also be mentioned that if a graph on N nodes have cycle then their is path exist having edges more than N - 1.

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

    You got so much energy, bro!

  • @Kokowangmini
    @Kokowangmini Рік тому +1

    understood, It was so Awesome.

  • @pranshu_awasthi
    @pranshu_awasthi 9 місяців тому +3

    Dijsktra's code which striver has taught works for negative edges , it just not works for Negative edge cycles. So all in all , it would work for DAG with positive / negative weights.

    • @tasneemayham974
      @tasneemayham974 7 місяців тому +1

      Of course, because Dijkstra doesn't work for negative edges in UNdirected grapsh: What if you have 0 - 1 with -1 weight? It will give TLE. But in directed, 0->1 with -1, 1 can never go back to 0 so the loop will not work.

    • @pranshu_awasthi
      @pranshu_awasthi 7 місяців тому +1

      @@tasneemayham974 That's what I said. It works for DAG.

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

    We can also fit the negetive cycle check in the for loop with extending its range to V and checking if its the Vth iteration in relaxtion without writing repeated code. Also the best and worst cases can be improved by keeping a count of how many relaxations done in each iteration which signifies that if at any point no relaxation can be done then no further iteration is required bcoz there will be no change in distances further. Here's how its done:
    vector bellman_ford(int V, vector& edges, int S) {
    vector dist(V, 1e8);
    dist[S] = 0;
    for(int i = 1; i

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

    Understood. Great explanation for the intuition.

  • @keshavprasad1017
    @keshavprasad1017 8 місяців тому

    thank you so much for the clean and crisp explanation.

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

    Thanks Striver for these wonderful lectures. Understood.

  • @cinime
    @cinime 2 роки тому +1

    Understood! Super amazing explanation as always, thank you very much!!

  • @suyashjain3223
    @suyashjain3223 11 місяців тому

    Amazing Explanation!!🔥🔥

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

    Habibi ye ek number bideo bana di tumne toh ...baut baut danyawaad

  • @rajatjakhar3146
    @rajatjakhar3146 2 роки тому +1

    great explanation 🔥🔥🔥🔥

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

    Beautiful Explanation . Loved your content keep going 100%

  • @CodeNow-nc4rk
    @CodeNow-nc4rk 4 місяці тому

    23:34 -
    If someone is wondering like me as to why the edges are passed by reference using &
    If you don't use a reference, the function would create a copy of the edges vector every time the function is called, which can be very costly in terms of memory and time, especially for large graphs

  • @Kparkhade
    @Kparkhade 6 місяців тому

    Maja aa gaya
    Itna khatarnak explanation bro 🎉

  • @alessandrocamilleri1239
    @alessandrocamilleri1239 2 роки тому +1

    Top notch explanation as usual. I would have included an update flag to pre-empt unnecessary iterations.

  • @kaichang8186
    @kaichang8186 4 місяці тому

    understood, thanks for the intuition part

  • @shivisingh9975
    @shivisingh9975 27 днів тому

    Understood sir ! thank you so much

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

    lots of love and respect🙌

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

    Understood !! Amazing as always

  • @vakhariyajay2224
    @vakhariyajay2224 2 роки тому +1

    Thank you very much. You are a genius.

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

    Wow! very well explained, completely Understood

  • @coder6109
    @coder6109 8 місяців тому

    Imp when to apply - > when have -ve cycles, idea-> relax all the edges v-1 times , tc->(O(VE))

  • @varunakrishnani7688
    @varunakrishnani7688 2 роки тому +1

    Understood!! :)
    Thank you! 🙏🏻😊

  • @ayushsharma-bw5ch
    @ayushsharma-bw5ch 2 роки тому +1

    we need to relax each edge for n - 1 times but in the code we are running loop for

    • @vishnubanjara5209
      @vishnubanjara5209 2 роки тому +6

      if we assume it 0 index based then V-2 is right and if we take it 1 based than simply run it for 1 less as V-1

    • @shreyanshagrawal3115
      @shreyanshagrawal3115 Рік тому +3

      for(int i = 0; i < N; i++) : runs for N times ( 0 to N-1)
      for(int i = 0; i < N-1; i++) : runs for N-1 times ( 0 to N-2) - which is required

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

    Thank you, Striver!
    Understood

  • @smile8510
    @smile8510 2 роки тому +2

    Master piece !

  • @user-zn3be9ik1x
    @user-zn3be9ik1x 2 роки тому

    start the relaxation loop from i=1 to i

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

    intution was just 🔥🔥🔥🔥🔥🔥🔥🔥

  • @kiranpoojary493
    @kiranpoojary493 3 місяці тому

    20:11 activated SUPER SONIC MODE 🔥

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

    Solid explanation man! Thanks!

  • @kr_ankit123
    @kr_ankit123 2 роки тому +1

    Understood👍👍
    Thanks a lot

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

    the thought process is insane

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

    Understood bhaiya 🙏❤️

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

    Amazing , very well explained 🔥🔥

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

    great explanation thank you so much and please continue😘😍

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

    greate explaination and with great energy while explaining that make people more creative affracting getting more..💖

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

    Good, well explained.

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

    Well explained man ❤️

  • @ajitpal0821
    @ajitpal0821 2 роки тому +1

    5 nodes not edges at 17:24 @take U forward

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

    Well explained bhai!

  • @rajeshj4066
    @rajeshj4066 Рік тому +1

    @ 16:00 : explained why it has n-1 iterations

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

    striver bhai is goated

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

    Very well explained.

  • @VrundLeuva-g5s
    @VrundLeuva-g5s 6 місяців тому

    very nice explanation

  • @rithikraj4316
    @rithikraj4316 6 місяців тому

    Simple in every cycle worst can be 1 updation, so we need to update n - 1 updation as we already have 0 or src updated manually

  • @saniyaverma914
    @saniyaverma914 8 місяців тому

    Understood, thank you bhaiya

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

    Super explanation😀

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

    👏 understood...very well explained..

  • @Stickman-rz9nu
    @Stickman-rz9nu 8 місяців тому

    bhaiya , in the for loop terminating condition should be “ i < V “ for n-1 iterations

  • @chitranshkulshrestha485
    @chitranshkulshrestha485 6 місяців тому

    Thanks for the intution

  • @UECAshutoshKumar
    @UECAshutoshKumar Рік тому +1

    Thank you sir 🙏

  • @vibhugulati5707
    @vibhugulati5707 9 місяців тому

    what is auto it:edges at 24:24?? please explain this step??

    • @reomurphy
      @reomurphy 9 місяців тому

      Like in the above step, the loop goes for V-1 times, this is the step to check for negative cycles.
      auto it:edges basically goes for another iteration in edges, you can say for Vth time to check the cycle.
      It can alternatively be written as :
      for (int i=0; i

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

    Amazing, thanks a lot.

  • @kasamadhu3509
    @kasamadhu3509 2 роки тому +2

    striver: Directed Acyclic Graph with negative edges we can use Dijkstra's right?
    Example: vertices 3, edge 3
    node node weight;
    0 1 10
    1 2 -8
    0 2 5
    source 0 ;
    it is giving 0, 10, 2 correct, bellman ford is used for only detecting negative cycles that can't be done using dijkstra's as you explained in series.

    • @akashkumarsingh8369
      @akashkumarsingh8369 2 роки тому +1

      same confusion hai bhai. smjh nhi aa rha agar cycle nhi hua aur negative weight hai to dijkstra glt ans dega ya shi. Dry run krne pr shi hi aa rha hai.

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

      @@akashkumarsingh8369 it shouldn't work as per the real meaning of dijkstra's whether its
      1. having neg weights
      2. having neg cycle becoz this already includes negative weight in the path

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

      @@akashkumarsingh8369 koi aur tc lo and then check

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

      it won't work with dijkstra. We mark a node as visited in dijkstra and do not visit it again, which should not be done in case of negative weights.

    • @jiyabhagat6510
      @jiyabhagat6510 Рік тому +1

      Yes, Dijkstra can be used for Directed Acyclic Graph with negative weights. Since it doesn't have a negative cycle, it will not get caught in an infinite loop

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

  • @harishnaik8164
    @harishnaik8164 Рік тому +1

    why adjacent list is not created? why iterate through edges list?

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

    nicely explained, thanks alot

  • @presidenttalks8
    @presidenttalks8 Місяць тому

    understood , thank you sir

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

    In for loop i

  • @vaalarivan_p
    @vaalarivan_p Рік тому +1

    5:28 - 22:00

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

    Whatt an explanation amazing. understood.

  • @Mandh-c7r
    @Mandh-c7r 6 місяців тому

    what if we sort the given input such that the src node is at the start and so on......will we be able to to compute it all in just 1 relaxation then?

  • @juniorboy1903
    @juniorboy1903 2 роки тому +1

    Understood😉 bhaiya

  • @120-venkataraghavareddyvar4
    @120-venkataraghavareddyvar4 Рік тому +1

    I guess for the question why we need to do n-1 relaxations to each node is that ,, suppose we have 3 nodes directly connected a node and we have relaxed those nodes,, now in typical dijkstra algo,, the node with smallest value of relaxation will never get relaxed again, but if there are negative weights,, then there is a chance that the the node with smallest value of relaxation will get relaxed again. Since each node at max gets connected to n-1 nodes, so thus n-1 relaxations.

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

    understood very well!

  • @sdfg204
    @sdfg204 10 місяців тому

    Had no idea it was this easy, damn. Obviously now that i know the logic, i don't even need to remember it.

  • @gangsta_coder_12
    @gangsta_coder_12 2 роки тому +1

    Understood 🔥🔥

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

    I have a question: the only reason we do N-1 iterations is because the node might be ordered from end to beginning with the source at the end and its connected node after. What if we re-write the graph such that the first edge is always the source and so on.. till the end? Will that need N-1 iterations now?

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

    Why do I get a TLE when I don't mention this condition: dist[u] != 1e8 in the if statement? Why did we need to specifically mention this as I thought it would handle it by itself.

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

    watching it at 4 a.m. and when u say , I got a better guy, it really hurts :)🤣🤣

  • @Gamer-nz3cx
    @Gamer-nz3cx 6 місяців тому +2

    26:08 its cubic not quadratic

  • @dipendrapratap6495
    @dipendrapratap6495 4 місяці тому

    If we will take nodes in a increasing order then that time I think we can find the distance in 2-3 iteration as well we don't need to do n-1 iterations