Do you want to learn python from me with a lot of interactive quizzes, and exercises? Here is my project-based python learning course: codebasics.io/courses/python-for-beginner-and-intermediate-learners
Thank you for your efforts. As a self-taught learner who had no background in CS until a year ago, videos such as yours are what's helping me believe I can succeed in a new career field.
After completion of data structures sir please dont forget to make videos on algorithms using python because this is really rare to find someone ...your work is awesome please keep going ..we truly rely on you.
This is the only video that I had to watch 2nd time in order to understand. But it is because of the complexity of Graph and my friends tell me that even if you get it in 2nd try, the video maker has done a great job. Thanks Daval, your tutorials are the best.
I know sir you teach python stuff but never really thought you are this good..I am trying to have this thing in my head for the interviews and the way you taught is beyond excellent..you got a new subscriber..
Wow! You put in a great deal of effort into these videos! Thank you so much! Please, please give us some exercises or problems we can solve on graphs: directed, undirected and weighted types. I've had so much fun working on the previous exercises in this series.
If you have already a method called "get_paths" for getting all possible routes, then you can get the shortest_path by reusing that same method too. This will also show the all possible shortest routes rather than showing just one. "Shortest Path between Mumbai and New York: [['Mumbai', 'Paris', 'New York'], ['Mumbai', 'Dubai', 'New York']]" def get_shortest_path(self, start, end): total_paths = self.get_paths(start,end) shortest_paths = [] for i in total_paths: if len(i) == len(min(total_paths)): shortest_paths.append(i)
return shortest_paths ALSO A BIG THANK YOU @codebasics FOR SHARING ALL YOUR KNOWLEDGE AND HELPING US.
this is merging two list in to a single list at the beginning path has a value lets assume "mumbai", second time the sart has another node suppose it is "new york" hence path would be ["mumbai"]+["ne york"] = ["mumbai","new york"]@@faisalabdulkadir9439
Superb....I have learnt all data structures from your playlist. Your videos are interesting and attractive. THANK YOU SO SO MUCH ❤️❤️❤️❤️ LOVE FROM ANDHRA PRADESH...❤️❤️
Hello, this series has been really helpful in my coding preparation, especially for understanding how to implement different data structures with Python. Could you please upload more videos on graph and also exercises related to it? Your exercises are really amazing:)
Yes Deepika I am actively working on this series. It will have many more videos , your one stop solution for all data structure and algo knowledge. Stay tuned! 👍
To prevent people from spending 30 mins troubleshooting like me, this is a key difference in the get_paths() method and get_shortest_path() method: get_paths(): if start == end: return [path] get_shortest_path(): if start == end: return path get_paths() returns it's path variable converted to list form, which then allows it to build onto the previous list (Because we're adding additional paths (lists) to eachother). Not the case in get_shortest_path() which is replacing the existing path with a new one, if the new one is shorter than the others. Spent a while trying to figure out why it was returning [['Mumbai','Paris','Dubai','New York']] as the shortest path only to realize it was a list of lists, which had a len==1
Hi prof, i hope you are very well. We all hope that you consider making other videos about graph and its implementation (EX: weighted graph, graph using adjacancy matrix, ...) And thank you for all your effort, i wish you a great day.
Sir your explanation is damn good..we need algorithm also like how to use greedy ,dynamic programming, divide and conquer, branch and bound ,bit manipulation etc..pleaseeeee sirrr
One Doubt Sir because I am absolutely a beginner in this. Why we are creating our data in tuples first and then migrating to a dictionary. Why can't we directly declare our values in a dictionary?
Hi, just wanted to know that for getting the shortest path, can I just call get_path method and return the list with minimum length. And great videos very nicely explained.
Have a look to my code, I tried to implement it before seeing yours, then it worked then checked yours and found it hard to understand haha : def get_paths(self, start, end, path=[ ]): path = path + [start] if start == end: return [path] if start not in self.dict_graph: return [ ] paths = [ ] for node in self.dict_graph[start]: paths += self.get_paths(node, end, path) return paths I think mine looks clear ...
for weighted graphs can we just sort out the values by the weights in descending and then visit them one by one giving the highest weight the priority??
What a great tutorial!! Thanks a lot for another excellent video. I've subscribed to your channel due to the quality of the content and for creating such great visualisations to help us understand these topics. Thanks for sharing.
I will upload probably 10, more tutorials on graph alone. There are many concepts to cover such graph traversal, dijikstra's algo, graph representation etc, wanted to start with something simple and cover advanced topics as we go
Hi I have an issue at time 11.41min of the video as I am unable to run the code on my code editor which is visual studio code. I end up getting: ValueError: too many values to unpack (expected 2)
Hi Dhaval, I am wondering if it is possible for you to make a Breath first search video for graph. I watched many videos on this but they don’t explain as well as you.
Hi.. This is amazing.. Thank you for making these videos.. I just wanted to crosscheck something with you. In the get_shortest_path() method, will it be a good idea to call the get_paths() method, sort the returned list, and print the paths that have the least length?.. Or will it have any downside to it, which I might be missing..
can anyone tell me why ı do not get the correct output when I remove for loop and write "return path" instead of "return [path]" and directly append new_path
Hey, It is a great tutorial. But I'm wondering why necessarily we have to create a method to find the shortest path when we can easily find it using an instance variable. For example, we could create self.shortest_path and set it to None. Then in the get_paths method, we could update it by simply finding the smallest length of the list inside the paths list. This way it would return both the paths like Mumbai-Paris_NewYork and Mumbai-Dubai-NewYork because their length is three. Also, it would make the coding a lot easier as well.
self in this case is the entire graph of all nodes. To find the shortest path between two specific nodes within that graph, I don't think it makes too much sense to have an attribute self.shortest_path as you'd want to figure out the shortest path between two nodes within the graph, not the shortest path on the entire graph (Which will always be len == 1). But I agree that this would have been easily done by just using the get_paths method, though I'd guess he wanted to show another example of recursion for educational reasons.
Wow...looks interesting. I must be related to PERT -CPM methods of scheduling [from mathematics/Operations research] similarly, I found Tree data structure analogous to decision tree in ML
Do you want to learn python from me with a lot of interactive quizzes, and exercises? Here is my project-based python learning course: codebasics.io/courses/python-for-beginner-and-intermediate-learners
my favorite tree is the trie i use it for everything !
Thank you for your efforts. As a self-taught learner who had no background in CS until a year ago, videos such as yours are what's helping me believe I can succeed in a new career field.
parben apni inshallah
After completion of data structures sir please dont forget to make videos on algorithms using python because this is really rare to find someone ...your work is awesome please keep going ..we truly rely on you.
Yes sure. I am going to make this series complete by covering almost all the concepts in DS and algorithms
Sir, please make a playlist on Algorithms with Python.
This is the only video that I had to watch 2nd time in order to understand. But it is because of the complexity of Graph and my friends tell me that even if you get it in 2nd try, the video maker has done a great job. Thanks Daval, your tutorials are the best.
👍🙏
I know sir you teach python stuff but never really thought you are this good..I am trying to have this thing in my head for the interviews and the way you taught is beyond excellent..you got a new subscriber..
Wow! You put in a great deal of effort into these videos! Thank you so much!
Please, please give us some exercises or problems we can solve on graphs: directed, undirected and weighted types.
I've had so much fun working on the previous exercises in this series.
This is hands down the best intro to graphs in python I've come across. Amazing work, dude!
This playlist helped me understand DSA more deeply. Thanks for making it look more easy.
Glad it was helpful!
Your efforts never waste... alwayzzz will give thumbs up....
Thank you, awaiting for graphs.....and waiting for Algos.....and also you are the best DSA teacher out there
If you have already a method called "get_paths" for getting all possible routes, then you can get the shortest_path by reusing that same method too. This will also show the all possible shortest routes rather than showing just one.
"Shortest Path between Mumbai and New York: [['Mumbai', 'Paris', 'New York'], ['Mumbai', 'Dubai', 'New York']]"
def get_shortest_path(self, start, end):
total_paths = self.get_paths(start,end)
shortest_paths = []
for i in total_paths:
if len(i) == len(min(total_paths)):
shortest_paths.append(i)
return shortest_paths
ALSO A BIG THANK YOU @codebasics FOR SHARING ALL YOUR KNOWLEDGE AND HELPING US.
pls can u explain why he did path = path + [start] and how does it work recursively?
Love from India🇮🇳
You made data structures like a elementary school subject. I feel so comfortable when you are teaching it sir❤❤
Glad it was helpful!
pls can u explain why he did path = path + [start] and how does it work recursively?
Sir You are really doing a great job, lectures are excellent .Keep up the good work.
Bro you are helping me a lot on passing my DS class. Thanks so much
This was one of the best DSA series I have seen! It has helped me a lot!!
pls can u explain why he did path = path + [start] and how does it work recursively?
Finally, I can say I know DSA ..........
thank you sir for such a good explanation
Mauj kardi
What a wonderful and patience video!!!!!! Thanks again!!!! 🤸♂️
I've implemented this long ago but did not know this was called Graph. Thanks for deep insights.
pls can u explain why he did path = path + [start] and how does it work recursively?
this is merging two list in to a single list at the beginning path has a value lets assume "mumbai", second time the sart has another node suppose it is "new york" hence path would be ["mumbai"]+["ne york"] = ["mumbai","new york"]@@faisalabdulkadir9439
Superb....I have learnt all data structures from your playlist. Your videos are interesting and attractive.
THANK YOU SO SO MUCH ❤️❤️❤️❤️
LOVE FROM ANDHRA PRADESH...❤️❤️
Thanks and welcome
Hello, this series has been really helpful in my coding preparation, especially for understanding how to implement different data structures with Python. Could you please upload more videos on graph and also exercises related to it? Your exercises are really amazing:)
Yes Deepika I am actively working on this series. It will have many more videos , your one stop solution for all data structure and algo knowledge. Stay tuned! 👍
hello , thanks for your efforts ,
but did you upload the part for weighted graphs ?
Absolutely fantastic series BIG thumb's up sir.
Hopefully make a playlist of Algorithms as well😍
sure i will add algo videos
To prevent people from spending 30 mins troubleshooting like me, this is a key difference in the get_paths() method and get_shortest_path() method:
get_paths():
if start == end:
return [path]
get_shortest_path():
if start == end:
return path
get_paths() returns it's path variable converted to list form, which then allows it to build onto the previous list (Because we're adding additional paths (lists) to eachother). Not the case in get_shortest_path() which is replacing the existing path with a new one, if the new one is shorter than the others.
Spent a while trying to figure out why it was returning [['Mumbai','Paris','Dubai','New York']] as the shortest path only to realize it was a list of lists, which had a len==1
pls can u explain why he did paths = paths + [start]
thank you!
love this playlist. Keep continuing this!. Thank you
Thank you for breaking it all down clearly
☺️👍
Thank you a lot for this fantastic course
Hi prof, i hope you are very well.
We all hope that you consider making other videos about graph and its implementation (EX: weighted graph, graph using adjacancy matrix, ...)
And thank you for all your effort, i wish you a great day.
Sir your explanation is damn good..we need algorithm also like how to use greedy ,dynamic programming, divide and conquer, branch and bound ,bit manipulation etc..pleaseeeee sirrr
yes i am going to add many more tutorials in this series.
Waiting for more videos on graphs
please make a detailed video for all the concepts of graph
Thanks a lot, sir this help me alot
line 5 to 10 can be reduced as below :)
for start, end in self.edges:
self.graph_dict.setdefault(start, []).append(end)
print(self.graph_dict)
pls can u explain why he did path = path + [start] and how does it work recursively?
best DS tutorials 💯💯
Very helpful Sir. I was wondering if you would come up with more videos and exercises related to graph theory and its implementation.
pls can u explain why he did path = path + [start] and how does it work recursively?
Sometimes you explain complex things very simply with more basic data.
Sir please make all further videos related to the graph
whats the need of creating paths when it gives the same thing as in new_paths?
Nicely explained.
Sir jald bhut sare problem ke saath bnaiye video
Great Educational content ❤
I am happy this was helpful to you.
More graph videos please 🙏
Great video as usual,Thanks
Very nice explanation!!! Any more graph videos teaching traversals?
Nice explanation
Thanks for the video sir! I'm glad I have finished all the basic knowledge in data structure( Of course I have done the excercise lol)
Please Make Some More Videos on Graph.
Did you ever cover weighted graphs?
amazing explanation, thank you very much.
Glad it was helpful!
Have you made a graph algorithems specific course (in python)?
Hi, For the shortest path, can we just call get_paths(start, end) and return the one with the shortest length among those?
One Doubt Sir because I am absolutely a beginner in this. Why we are creating our data in tuples first and then migrating to a dictionary. Why can't we directly declare our values in a dictionary?
Pls Continue with Weighted graphs , DFS and BFS in Graphs
Hi, just wanted to know that for getting the shortest path, can I just call get_path method and return the list with minimum length. And great videos very nicely explained.
Yes I was thinking the same as well.
The question is which way is more computation intense. Do you happen to find an answer to this?
Excellent tutorial! good explanation very easy to understand! Thanks for creating this.
😊👍
Have a look to my code, I tried to implement it before seeing yours, then it worked then checked yours and found it hard to understand haha :
def get_paths(self, start, end, path=[ ]):
path = path + [start]
if start == end:
return [path]
if start not in self.dict_graph:
return [ ]
paths = [ ]
for node in self.dict_graph[start]:
paths += self.get_paths(node, end, path)
return paths
I think mine looks clear ...
for weighted graphs can we just sort out the values by the weights in descending and then visit them one by one giving the highest weight the priority??
love your video and waiting for more
Thx for tutorial and are you going to add new videos about graph ?
I was hoping for the exercise! Anyways, thank you for all your efforts, learnt a lot from you and specially those exercises, thank you sir!
Please reply to me if you have made more videos on graph.
I didn't find them
What a great tutorial!! Thanks a lot for another excellent video. I've subscribed to your channel due to the quality of the content and for creating such great visualisations to help us understand these topics. Thanks for sharing.
Thanks for the sub!
You are doing a great job. Thanks so much
It was very well explained and I liked it very much..... Well Explained
Is there any video on BFS and DFS???
hello sir loved your video, please let me know when the series on weighted graph and algo will come
thanku sir keep uploading such videos ....loved your effort
sir your series is great and you are doing such a good work for students like us :) God Bless you immensely.
I am happy this was helpful to you.
In recursion,
For loop goes to index 1 in grap_dict, after append mum, par, dub, ny
...Beauty...
It's really about recursion. If you understand recursion well it's not difficult to understand otherwise it's a struggle.
very nice
Thanks for the clear video
Glad it was helpful!
is there any chance you could extend by adding visualization of these graphs?
is it convinient to find shortest_path by first finding list of all possible paths and then fetch the element which has lowest length
Missed the excericse for this Video :( Waiting for future videos on Graphs
Sir please make a video on artificial intelligence coding.........
Only for u I have understood machine learning from ur video...❤️❤️❤️🔥
Thank you for your efforts. Great help!
4:23 Mumbai --> Boston ---> Hartford ---> New York should be 5300, not 5120. Correct?
Hey Dhaval, I hope your health's great now. Great vid, could've done with a little more theory though. cheers!
I will upload probably 10, more tutorials on graph alone. There are many concepts to cover such graph traversal, dijikstra's algo, graph representation etc, wanted to start with something simple and cover advanced topics as we go
@@codebasics Great!
Can you make a Java algorithm playlist? Java is my first language that's why it's easier for me understand.
Great video. Thanks!
Hi I have an issue at time 11.41min of the video as I am unable to run the code on my code editor which is visual studio code. I end up getting:
ValueError: too many values to unpack (expected 2)
nice one!
When will we see more videos on graphs?
Hello Sir, can you please create a video developing of project using only DSA ?
Hi Dhaval, I am wondering if it is possible for you to make a Breath first search video for graph. I watched many videos on this but they don’t explain as well as you.
Yes that video is coming up soon
@@codebasics Thank You!
Hi.. This is amazing.. Thank you for making these videos.. I just wanted to crosscheck something with you. In the get_shortest_path() method, will it be a good idea to call the get_paths() method, sort the returned list, and print the paths that have the least length?.. Or will it have any downside to it, which I might be missing..
I have same question as well. Did you find the answer?
Can anyone tell me the software sir used for compiling the code and debugging it? Plzs ,TThanks
pycharm community edition. You can download it for free.. just google it
@@codebasics Thanks sir!!!
is it ok if we get shortest path using getpaths method. LIke after getting list of all paths, can I take a list which is having lesser cities
Can anyone please explain me how shortest_path is working out here ? Unable to understand that
very good!
can anyone tell me why ı do not get the correct output when I remove for loop and write "return path" instead of "return [path]" and directly append new_path
Hey nice video buddy, thank you very much for the video!
Glad you liked it!
That was helpful! Thank you!
Glad it was helpful!
Maaan !!! Recursion is a hard concept to wrap your head around. Please suggest some source to practice this skill.
Thank You :>
This is good.Thanks.
Glad you like it!
Hey, It is a great tutorial. But I'm wondering why necessarily we have to create a method to find the shortest path when we can easily find it using an instance variable. For example, we could create self.shortest_path and set it to None. Then in the get_paths method, we could update it by simply finding the smallest length of the list inside the paths list. This way it would return both the paths like Mumbai-Paris_NewYork and Mumbai-Dubai-NewYork because their length is three. Also, it would make the coding a lot easier as well.
self in this case is the entire graph of all nodes. To find the shortest path between two specific nodes within that graph, I don't think it makes too much sense to have an attribute self.shortest_path as you'd want to figure out the shortest path between two nodes within the graph, not the shortest path on the entire graph (Which will always be len == 1).
But I agree that this would have been easily done by just using the get_paths method, though I'd guess he wanted to show another example of recursion for educational reasons.
if u nest path=[ ] within get_paths wouldnt it get reset for each recursive call?
Hi, Nice video...do we really require "if sp:" condition to find shortest path? i tried without using that condition and i get the correct output
Wow...looks interesting. I must be related to PERT -CPM methods of scheduling [from mathematics/Operations research]
similarly, I found Tree data structure analogous to decision tree in ML
Sir when will you complete this series of Graph ?
It will take some time but I am on it.
Sir how many videos will be there in this series!??