Useful Links
Computer Science
Algorithms and Data Structures
Algorithm Design and Analysis
1. Introduction to Algorithms
2. Algorithm Analysis
3. Brute-Force and Exhaustive Search
4. Divide and Conquer
5. Greedy Algorithms
6. Dynamic Programming
7. Backtracking and Branch-and-Bound
8. Graph Algorithms
9. String Matching Algorithms
10. Computational Complexity Theory
11. Advanced Topics in Algorithm Design
Graph Algorithms
Graph Representations
Adjacency Matrix
Representation
Space Complexity
Time Complexity for Operations
Advantages and Disadvantages
Adjacency List
Representation
Space Complexity
Time Complexity for Operations
Advantages and Disadvantages
Edge List
Representation
Use Cases
Choosing Appropriate Representation
Graph Traversal
Breadth-First Search
Algorithm Description
Implementation with Queue
Time and Space Complexity
Applications
Shortest Path in Unweighted Graphs
Connected Components
Bipartiteness Testing
Level-Order Traversal
Depth-First Search
Algorithm Description
Recursive Implementation
Iterative Implementation
Time and Space Complexity
Applications
Topological Sort
Strongly Connected Components
Cycle Detection
Path Finding
Comparison of BFS and DFS
Topological Sorting
Problem Statement
DFS-Based Algorithm
Kahn's Algorithm
Strongly Connected Components
Kosaraju's Algorithm
Tarjan's Algorithm
Minimum Spanning Trees
Problem Statement
Properties of MST
Kruskal's Algorithm
Algorithm Description
Union-Find Data Structure
Implementation
Analysis
Prim's Algorithm
Algorithm Description
Priority Queue Implementation
Analysis
Comparison of Algorithms
Applications of MST
Single-Source Shortest Paths
Problem Statement
Dijkstra's Algorithm
Algorithm Description
Priority Queue Implementation
Correctness Proof
Analysis
Limitations with Negative Weights
Bellman-Ford Algorithm
Algorithm Description
Handling Negative Weights
Detecting Negative Cycles
Analysis
Shortest Paths in DAGs
Topological Order Approach
Algorithm Description
Analysis
Single-Source Longest Paths
All-Pairs Shortest Paths
Problem Statement
Floyd-Warshall Algorithm
Dynamic Programming Approach
Algorithm Description
Analysis
Path Reconstruction
Johnson's Algorithm
Reweighting Technique
Using Dijkstra's Algorithm
Analysis
Matrix Multiplication Approach
Maximum Flow
Flow Networks
Definitions and Terminology
Capacity Constraints
Flow Conservation
The Ford-Fulkerson Method
Residual Networks
Augmenting Paths
Max-Flow Min-Cut Theorem
The Edmonds-Karp Algorithm
BFS for Finding Paths
Analysis
Push-Relabel Algorithm
Preflow and Height Functions
Push and Relabel Operations
Applications of Maximum Flow
Bipartite Matching
Edge Connectivity
Circulation Problems
Previous
7. Backtracking and Branch-and-Bound
Go to top
Next
9. String Matching Algorithms