Useful Links
Computer Science
Algorithms and Data Structures
Algorithms
1. Introduction to Algorithms
2. Data Structures
3. Algorithmic Design Paradigms
4. Sorting and Searching Algorithms
5. Graph Algorithms
6. Advanced Algorithm Topics
7. Complexity Theory
Algorithmic Design Paradigms
Brute-Force Approach
Exhaustive Search
Generating All Possibilities
Systematic Enumeration
Time Complexity Considerations
Space Complexity
When to Use Brute-Force
Small Problem Sizes
Correctness Verification
Baseline Solutions
Applications and Examples
Linear Search
Selection Sort
Traveling Salesperson Problem
Limitations
Exponential Time Complexity
Scalability Issues
Divide and Conquer
The Divide-and-Conquer Strategy
Problem Decomposition
Dividing the Problem
Balanced Division
Unbalanced Division
Conquering Subproblems
Base Cases
Recursive Solutions
Combining Solutions
Merge Operations
Result Aggregation
Design Steps
Problem Analysis
Division Strategy
Base Case Identification
Combination Method
Analysis of Divide-and-Conquer Algorithms
Recurrence Relations
Master Theorem Application
Time Complexity Analysis
Space Complexity Analysis
Classic Examples
Merge Sort
Division Process
Merging Process
Analysis
Quick Sort
Partitioning
Pivot Selection
Analysis
Binary Search
Maximum Subarray Problem
Closest Pair of Points
Strassen's Matrix Multiplication
Advantages and Disadvantages
Parallelization Potential
Memory Usage
Implementation Complexity
Greedy Algorithms
Greedy Strategy
Local Optimal Choices
Irrevocable Decisions
Hope for Global Optimum
Key Properties
Greedy-Choice Property
Verification Methods
Optimal Substructure
Relationship to Dynamic Programming
Greedy Algorithm Design Steps
Problem Analysis
Greedy Choice Identification
Subproblem Reduction
Correctness Proof
Proof Techniques
Exchange Arguments
Staying Ahead Arguments
Cut-and-Paste Arguments
Classic Problems
Activity Selection Problem
Problem Statement
Greedy Strategy
Correctness Proof
Fractional Knapsack Problem
Huffman Coding
Optimal Prefix Codes
Tree Construction
Encoding and Decoding
Minimum Spanning Tree
Kruskal's Algorithm
Prim's Algorithm
Single-Source Shortest Paths
Dijkstra's Algorithm
When Greedy Fails
Counterexamples
0/1 Knapsack Problem
Coin Change Problem
Approximation Algorithms
Performance Ratios
Greedy Approximations
Dynamic Programming
Core Concepts
Overlapping Subproblems
Identification
Subproblem Graphs
Optimal Substructure
Verification
Relationship to Greedy Algorithms
Implementation Approaches
Memoization
Top-Down Approach
Recursive Implementation
Cache Management
Space Complexity
Tabulation
Bottom-Up Approach
Table Construction
Iterative Solutions
Space Optimization
Design Process
Problem Characterization
Recursive Solution
Subproblem Identification
Recurrence Relation
Base Cases
Implementation Choice
Classic Problems
Fibonacci Numbers
Naive Recursion
Memoized Version
Tabulated Version
Space-Optimized Version
Longest Common Subsequence
Problem Definition
Recurrence Relation
Table Construction
Solution Reconstruction
0/1 Knapsack Problem
Problem Statement
Recurrence Relation
Implementation
Space Optimization
Edit Distance
Problem Definition
Operations
Recurrence Relation
Coin Change Problem
Minimum Coins
Number of Ways
Longest Increasing Subsequence
Matrix Chain Multiplication
Parenthesization Problem
Optimal Substructure
Implementation
Advanced Topics
Space Optimization Techniques
Printing Solutions
Multi-dimensional DP
DP on Trees
DP with Bitmasks
Backtracking
Backtracking Concept
State-Space Tree
Systematic Search
Pruning Unsuccessful Paths
Algorithm Structure
Recursive Framework
Choice Making
Constraint Checking
Backtrack Operation
Implementation Techniques
Explicit State Representation
Implicit State Representation
Pruning Strategies
Constraint Pruning
Bound Pruning
Classic Problems
N-Queens Problem
Problem Statement
State Representation
Constraint Checking
Solution Counting
Subset Sum Problem
Problem Definition
Backtracking Solution
Pruning Optimizations
Graph Coloring
Problem Statement
Backtracking Approach
Sudoku Solver
Hamiltonian Path Problem
Knight's Tour Problem
Optimization Techniques
Constraint Propagation
Variable Ordering
Value Ordering
Symmetry Breaking
Analysis
Worst-Case Complexity
Average-Case Analysis
Pruning Effectiveness
Branch and Bound
Core Concepts
State-Space Tree
Bounding Functions
Lower Bounds
Upper Bounds
Pruning Strategies
Bound-Based Pruning
Dominance Pruning
Algorithm Framework
Node Selection Strategies
Best-First Search
Depth-First Search
Breadth-First Search
Bound Calculation
Pruning Decisions
Implementation Details
Priority Queues
State Representation
Memory Management
Classic Problems
Traveling Salesperson Problem
Problem Statement
Bounding Functions
Implementation
0/1 Knapsack Problem
Fractional Relaxation
Bound Calculation
Job Assignment Problem
Integer Linear Programming
Comparison with Other Paradigms
vs Backtracking
vs Dynamic Programming
vs Greedy Algorithms
Previous
2. Data Structures
Go to top
Next
4. Sorting and Searching Algorithms