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
Computational Complexity Theory
Introduction to Complexity Theory
Tractable vs Intractable Problems
Practical Implications
Asymptotic vs Concrete Complexity
Decision Problems
Encoding Schemes
Language Recognition
Complexity Classes
Time Complexity Classes
Space Complexity Classes
The Class P
Examples of P Problems
Closure Properties
The Class NP
Nondeterministic Algorithms
Examples of NP Problems
Certificates and Verification
Relationship Between P and NP
Other Important Classes
PSPACE
EXPTIME
Co-NP
Polynomial-Time Reductions
Properties of Reductions
Many-One Reductions
Turing Reductions
NP-Completeness
Definition of NP-Hard
Definition of NP-Complete
The Cook-Levin Theorem
Proving NP-Completeness
Steps in a Proof
Reduction Techniques
Common Reduction Patterns
Examples of NP-Complete Problems
Boolean Satisfiability
3-CNF Satisfiability
Clique Problem
Independent Set
Vertex Cover
Hamiltonian Cycle
Traveling Salesperson Problem
Subset Sum
Partition Problem
Graph Coloring
Coping with NP-Completeness
Approximation Algorithms
Parameterized Algorithms
Exponential-Time Algorithms
Heuristics and Metaheuristics
Previous
9. String Matching Algorithms
Go to top
Next
11. Advanced Topics in Algorithm Design