
Discover how breadth first search traverses a graph layer by layer using a queue to find shortest paths in unweighted graphs, with a practical solve and path reconstruction.
An introduction to tree algorithms. This video covers how trees are stored and represented on a computer.
Learn beginner-friendly tree algorithms by implementing recursive leaf-sum and binary-tree height calculations using depth-first search, with clear pseudocode and base-case strategies.
Root a tree with depth-first search to obtain a rooted tree with directed edges. The method uses a designated root, maintains parent pointers, and avoids revisiting the parent during traversal.
Learn how topological sort produces a valid ordering for directed acyclic graphs, useful for course prerequisites and program build dependencies, by performing depth-first search and producing a reverse ordering.
Explore the eager implementation of Dijkstra's shortest path algorithm in Java, including an indexed min d-ary heap, graph representation, edge relaxation, and path reconstruction.
Learn the Floyd-Warshall all-pairs shortest path solver using an adjacency matrix, distance and next matrices, handling infinity and negative cycles, and reconstructing paths between node pairs.
Explore the algorithm to find bridges and articulation points in an undirected adjacency-list graph, with Java source code; learn how depth-first search and low-link values identify these points.
Discover Tarjan's algorithm for finding strongly connected components by maintaining a stack and updating low-link values during DFS to identify SCCs in linear time.
Explore the Eulerian path algorithm's source code by instantiating the solver with a directed graph and retrieving the path, with in and out degree tracking, DFS, and GitHub-hosted examples.
Discover how to compute maximum flow with the Ford-Fulkerson method on a flow graph using augmenting paths and residual edges to update bottlenecks.
Turns number pairs into a bipartite flow problem and solves it with max flow, building a graph from inputs to unique answers and deducing the operator for each pair.
Edmonds-Karp uses a breadth-first search to find the shortest augmenting path in the Ford-Fulkerson framework, delivering max flow with a strongly polynomial time bound O(V E^2).
Learn Prim's eager algorithm for minimum spanning trees, using an index priority queue to maintain vertex edge pairs and relax edges. Compare with the lazy version and discuss graph performance.
This is the sparse table data structure from my DS video series. We need to understand the sparse table DS to understand the solution to the Lowest Common Ancestor (LCA) problem
Learn to find the lowest common ancestor in rooted trees using an Euler tour, depth tracking, and a sparse table for fast queries.
Welcome to this Graph Theory Algorithms course!
Graph theory is a fundamental branch of mathematics that deals with the study of graphs, networks, and their applications in real-world scenarios. This course is designed to equip you with the necessary skills and knowledge to understand, analyze, and solve problems related to graph theory.
In this course, you will receive a thorough introduction to graph theory algorithms as they apply to computer science. Throughout the videos, we will cover a range of topics, including how to represent and store graphs on a computer, common graph theory problems encountered in real-world scenarios, famous graph traversal algorithms like DFS and BFS, as well as the lazy and eager versions of Dijkstra's shortest path algorithm. Additionally, we will explore what a topological sort is, how to identify one, and its applications. You will also learn about detecting negative cycles and finding shortest paths using the Bellman-Ford and Floyd-Warshall algorithms, discovering bridges and articulation points in graphs, understanding and detecting strongly connected components using Tarjan's algorithm, and finally, solving the traveling salesman problem with dynamic programming.
Throughout the course, we will use a hands-on approach to teaching, with plenty of examples and exercises to reinforce your understanding of the material. By the end of this course, you will have a deep understanding of graph theory algorithms and be able to apply them to solve real-world problems.
So, whether you are a computer science student, a software developer, or just someone interested in the fascinating world of graph theory, this course is for you! Join today and take your first step towards mastering the art of graph theory algorithms.