Graph Theory Algorithms
What you'll learn
- Storage and representation of graphs (networks) on a computer
- Common graph theory problems
- Breadth first search algorithm
- Depth first search algorithm
- Various tree algorithms including: the height or a tree, finding the center of a tree, rooting a tree, and etc...
- Dijkstra's algorithm
- Topological sort algorithm
- Shortest/longest path on a acyclic graph
- Bellman Ford's algorithm
- Floyd-Warshall all pairs shortest path algorithm
- Finding bridges/articulation points
- Finding strongly connected components (Tarjan's)
- Travelling salesman problem (TSP)
- How to find the maximum flow of a flow graph
- Finding bipartite graph matchings
- Various network flow algorithms including: Edmonds-Karp, Capacity Scaling, and Dinic's algorithm
- Kruskal's Minimum Spanning Tree algorithm
- The Lowest Common Ancestor (LCA) Problem
Requirements
- Exposure to computer science fundamentals (e.g: data structures, recursion, classes, OOP)
Description
This course provides a complete introduction to Graph Theory algorithms in computer science.
Topics covered in these videos include: how to store and represent graphs on a computer; common graph theory problems seen in the wild; famous graph traversal algorithms (DFS & BFS); Dijkstra's shortest path algorithm (both the lazy and eager version); what a topological sort is, how to find one, and places it's used; learning about detecting negative cycles and finding shortest paths with the Bellman-Ford and Floyd-Warshall algorithms; discovering bridges and articulation points in graphs; understanding and detecting strongly connected components with Tarjan's algorithm, and finally solving the traveling salesman problem with dynamic programming.
Who this course is for:
- Anybody ready for a deep dive into graph theory!
Featured review
Instructor
Hello!
My name is William, I am a software engineer for Google Maps stationed in Mountain View California. I am a former ACM-ICPC world finalist and avid problem solver looking to share my knowledge of computer programming and problem-solving.
I teach courses on Udemy because there exists a need to create high quality content about complex topics in computer science. The areas I focus on are data structures and algorithms; together they are the most important topics to master on the road to becoming an exemplary software engineer. Consider enrolling in one or more of the courses I have developed; they are designed for everyone, whether you are a beginner or advanced.
Yours sincerely,
William