Algorithm Design and Analysis

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