4:55 It is pretty clear, but if anyone is wondering, "graph[at]" shuld be "g[at]" in the DFS pseudo-code. Great video!
@iSuperMC3 жыл бұрын
Thank you, I was wondering what that was
@hasnaindev3 жыл бұрын
What's the difference? g[at] seems more confusing to me as the letter "g" does not really mean anything and one has to think about what it is whereas "graph" clearly conveys what the variable is about.
@nmamano3 жыл бұрын
@@hasnaindev the point is that the variable g is defined earlier in the video, whereas graph was not defined as a variable
@hasnaindev3 жыл бұрын
@@nmamano Ooh.
@mathc2 жыл бұрын
it wasn't pretty clear for me, thanks
@anhmai816 ай бұрын
this is way better than a 2-hour lecture from a CS professor with multiple PhD's explanation. Thank God I found your video.
@bullymaguire2335Ай бұрын
Guess what ? My prof literally took screenshots of SCC from this channel and used it as his ppt lol
@J2353042045 жыл бұрын
The best explanation a developer could ever ask for. You have cut out all the possible crap and got to the point.
@iyadelwy15004 жыл бұрын
An explanation with the help of a good example > A CS professor with 2 PHD's explaining it in sheer theory
@karthikrangaraju94214 жыл бұрын
So basically Google's notorious "Number of islands" problem is basic graph theory == Finding connected components using DFS! Thank you William
@protyaybanerjee50513 жыл бұрын
Finding 'disconnected components' . That's the number of island
@wanqingli125411 ай бұрын
this visualization is so clear and william is so good at explaining omg, thx for saving my algo exam
@miriyalajeevankumar54494 жыл бұрын
You are the best in the entire youtube for Algo and DS!
@VarunVishwakarma1 Жыл бұрын
I was scared of graph and you made it so easy.Thanks a lot.
@luisfelipe8474 жыл бұрын
That's such a great video! I loved the minimalist visual and explanation!
@colegartner33393 жыл бұрын
Thank god for this man, the best explanation with visuals a comp sci major could ask for.
@gokulkurup15842 жыл бұрын
great video. jutst a gotacha for future learners, the dfs findComponents algo only works well for undirected graphs and will give weird results with directed graphs. ex. in directed graphs if you take the picture 7:25 the for loop first sees node#2. however there is no path from 2 to 3 even tho they are in the same component. so instead of the answer which is 5 you get 6 Excellent video tho and thanks for the explanation
@jshiwam2 жыл бұрын
I think you confuse reachability with connectedness. Two nodes can be connected but unreachable in directed graph. In order to ensure the connected components you need to loop over each node and see if a path exists which connects all the components and there can be a scenario where nodes would be connected but you wont have a path. In order to know the graph is connected or not, it need to be undirected.
@isaacnewman93412 жыл бұрын
I understand the visual example for DFS, but I struggle with understanding the pseudo code. However, this is a great video!
@TechItEasy04 жыл бұрын
These videos are awesome so far... will watch them through, undoubtedly multiple times!
@rodituclashroyale18122 жыл бұрын
You can reverse the order of calling the neighbours in this implementation, so the output will the same as You would use stack dfs algorithm - the one that uses stack instead of recursion. Because if You add neighbours to the stack the last one will be called first since it will be popped first.
@roman_mf2 жыл бұрын
So happy I found your channel. Thanks for your efforts and quality content. Short, to the point, and the animation done just right. :-)
@IagoSB__0.03 жыл бұрын
Thank you sir, your explanations are always very clean and simple
@MrDayTwo2 жыл бұрын
Waaaay better than leetcode explanation. Thanx!
@anjaliyadav93602 жыл бұрын
Best Explanation ever!
@myhimalayanchants4 жыл бұрын
Excellent Clarity
@vigneshsr11184 жыл бұрын
bought the course, thanks for all the help.
@sandeepkryadav14694 жыл бұрын
Thank you very much for such an amazing video series, the content of the video is so organized that whenever I think of some scenario that scenarios explanation comes to next. Amazing :)
@delyart2 жыл бұрын
Awesome explanation. Thanks.
@selvalooks4 жыл бұрын
Made it easy to understand and also the listing use cases, great !!! Thanks !!!
@iamakifislam3 жыл бұрын
You made my concept crystal clear. :) Thanks
@yagzgazibaba857 Жыл бұрын
If the graph is cyclic one then inside dfs method you also need to check if current node visited or not
@saulr.44812 жыл бұрын
Great explanation!
@josephhigh2503 жыл бұрын
In your first example, you forgot to cover the subsequent call to DFS to explore the other component that contains exactly one node (e.g., node 12).
@ahmedamr112426 күн бұрын
thank god you exist
@AmanYadav-ry3xr3 жыл бұрын
It will give 6 not 5 as the answer because in for loop we visit each node from 0 to n so when i=2 it will visit all the neighbours of 2 but not 3 because there is no outgoing edge to 3.so when i=3 it will also count it as a individual node. And hence the number of connected components would be 6 not 5. Correct me if i am wrong.
@utilizator5002 жыл бұрын
For the pseudo code: for next in neighbors should have an additional line below it that goes like this: if visited[next] = false In Python he did write it correctly though.
@spongsquad2 жыл бұрын
the exclamation mark "!" means the same thing as if visited[next] = false
@christianrodier33814 жыл бұрын
That you for using that visual aid.
@highinstitute236610 ай бұрын
i love your channel, thanks soo much for these good videos🥰
@miguelbarajas98923 жыл бұрын
thank you, now to find those islands 🏝 🏝 🏝
@kamalulazmim38203 жыл бұрын
Very clear, thank you so much!
@amoghdadhich9318 Жыл бұрын
Hey are you sure DFS can be used to find the minimum spanning tree? Pretty sure that it wont give a linear time solution. Prims or Kruskals will probably be better suited for this
@javiersorucolopez15023 жыл бұрын
Amazing video!
@frgaming67114 жыл бұрын
Thank you Sir
@ElAntroDeDager4 жыл бұрын
Great job, TY!
@marcftw3 жыл бұрын
Where does the backtracking occur in the pseudo code snippet?
@zawette3 жыл бұрын
When you return from a recursive call
@JR-mk6ow4 жыл бұрын
"the nice thing about dfs is that is really easy to code". THE AMOUNT OF ITERATORS, POINTERS AND VECTORS INSIDE THE GRAPH, VERTEX AND EDGE CLASS SAY OTHERWISE!! Sometimes I really hate c++
@KAINOA1044 жыл бұрын
Very helpful, thank you!
@samtux7625 жыл бұрын
Great video once again.
@senthilmuruganr2343 жыл бұрын
Excellent
@briannguyen50573 жыл бұрын
very helpful!
@klevisimeri607 Жыл бұрын
Thank you!
@tomaskosta4 жыл бұрын
in the beginning you explain that after the first traversal the dfs is over but you didn't visit the #12 node, dfs beside of coloring from white to gray to black also uses a counter to mark in each node when was that node firs found and when did the algorithm leave the node, you finished the traversal on the big graph but dfs start another traversal , you should have visit 12 also and mark it as a second component of the graph meaning the number of nils in the graph is 2
@WilliamFiset-videos4 жыл бұрын
The animation doesn't visit node 12 because it's trivial, but for completeness sake it should. When I said the dfs was finished I was referring to the large component.
@poli27302 жыл бұрын
visitad[at], obviusly everybody miss the part on how to associate the node with his corresponding visited value... probably because nobody knows
@rajatbudania61814 жыл бұрын
very well explained )--
@ilikememes90524 жыл бұрын
Is this Graph series helpful for competitive programming??
@sidekick3rida2 жыл бұрын
3:35 is `neighbours = graph[at]` supposed to be `neighbours = g[at]`?
@jeffreycuraming38616 ай бұрын
How to create that visual representation?
@videofountain2 жыл бұрын
Why is there no return value in depth first search?
@sambitdash41634 жыл бұрын
Just to clarify this is the python code I wrote using the graph example given in video. Is it okay? g = {0:[1,9],9:[0,8],1:[0,8],8:[1,9,7],7:[8,10,3],10:[7,11],11:[7,10],6:[5,7],5:[6,3],3:[2,4,5],2:[3],4:[3]} n = 12 visited = n*[False] def dfs(at): at = at[0] if visited[at]: return visited[at] = True neighbours = g[at] for nex in neighbours: dfs([nex]) start_node = g[0] dfs(start_node)
@chieesntra2 жыл бұрын
thank you!
@enriquelmx4 жыл бұрын
Can you visit all the neighbors of 7 in any direction no matter the order (preorder, inorder, postorder)? or that only applies to trees?
@DT-ro9et4 жыл бұрын
You are awesome!!!
@lindsaymahusay6 ай бұрын
can someone help me how to write a complete code for this? using c language
@slavinastefanova44795 жыл бұрын
In the pseudo-code for DFS, the variable g is initialized to be the adjacency list representing the graph. However, in the dfs function, this variable is called "graph". Or am I missing something? Also, n is initialized to be |V| but this variable is then never actually used, other than implicitly to initialize the "visited" list of booleans.
@evanwilliams20483 жыл бұрын
thats not an implict use tho - its very important
@shanthureddy42345 жыл бұрын
8:52 ?? Count++ ; // should be implemented later after implementing the DFS( i) ; right ?
@WilliamFiset-videos5 жыл бұрын
It shouldn't matter. The idea is to give every component a unique id at the end of the day. However, labeling components starting at 1 instead of 0 is handy for debugging because by default the 'components' array has all values initialized to 0 so it's hard to tell whether a node was marked by the DFS method or simply initialized that way.
@shanthureddy42345 жыл бұрын
@@WilliamFiset-videos cool , gotcha, thanks man !!
@MrKingoverall3 жыл бұрын
I love you man !!!!!!!!
@sumant91204 жыл бұрын
3:30 Is this a DP implementation?
@sanathreddy77923 жыл бұрын
No
@dumm0054 жыл бұрын
DId you slowmo your presentation?
@marialaurabisogno99514 жыл бұрын
9:24 aren't count and components global?
@hessamzadeh14533 жыл бұрын
can we use this for nba fan duel? what the sharks use
@MrMacAwsome6 жыл бұрын
If I wanted to find the number of paths between two nodes in a DAG, would I use a DFS or BFS? Nice video, thanks.
@WilliamFiset-videos6 жыл бұрын
Probably a BFS with some DP? I haven't solved it yet but you might want to try: open.kattis.com/problems/walkforest
@MrMacAwsome6 жыл бұрын
WilliamFiset thanks
@louisham69983 жыл бұрын
Why zero doesn't go to node 1
@DeadalusX3 жыл бұрын
Pro tip: set playback speed to 1.5
@bananaboyTS2 жыл бұрын
thanks a lot
@jack7342-x5m4 жыл бұрын
No goal node???
@SuchingYan3 жыл бұрын
This is how my brain works
@Kingofqueers16 жыл бұрын
What are edges & vertices in computer science?
@sharathkumar84225 жыл бұрын
Vertices could be computers, websites or programs. Edges then could be network connections, website links etc etc. I'm not a computer scientist but I do know that edges and vertices can be anything as long as they are connected or linked in some way in a system.
@Machinerium5 жыл бұрын
Think of edges as routes and vertices as cities. Check this awesome playlist about Graph Theory from the beginning kzbin.info/aero/PLDV1Zeh2NRsDGO4--qE8yH72HFL1Km93P
@TheGianaJinx2 жыл бұрын
This is the least confused I have ever felt hearing about DFS.
@Sairam307223 жыл бұрын
3;59 [0, n) not understand
@chinaguy1013 жыл бұрын
cool
@TheGugustar2 жыл бұрын
You kinda sound like the guy from Brackeys
@iqbalibrahim47136 жыл бұрын
Can I ask something, I know you entered icpc, and I really want to get ready when I'm entering it, so can you tell what I need to know about number theories for competitive programming, thank you very much
@abdelrahman23486 жыл бұрын
if you got any new or path to study for acm please tell me
@IgorSantarek3 жыл бұрын
@svsrkpraveen3 жыл бұрын
This guy sounds like Brackeys
@beypazariofficial3 жыл бұрын
what
@pcelis195 жыл бұрын
even at 2x speed you talk slow, good tut
@alanlinto9660 Жыл бұрын
Dude sound like @ penguinz
@shashankkumar31385 жыл бұрын
function findComponents(): invalid syntax is coming sir
@Ammar232172 жыл бұрын
not useful. no complete example. many variables not declared. cannot understand.
@GodOfReality3 жыл бұрын
You randomly switch between saying "dep" "defp" "def" and "defth" when you are trying to say "depth" lol.