| A lecture-by-lecture outline | |
|---|---|
| ECE 664 | |
| Computability, Complexity, and Formal Languages | |
| by | |
| Avi Kak | |
| Fall 2007 | |
| 1. | Why Study Computability, Formal Languages, and Complexity |
| 2. | Sets, Tuples, Cartesian Products, Partial and Total Functions, Predicates, Quantifiers, Proofs |
| PART 1: Computability | |
| 3. | The Minimalist (but all powerful) Programming Language S |
| 4. | Partially Computable Functions |
| 5. | Primitive Recursive Functions |
| 6. | Sixteen Building-Block PRC Functions |
| 7. | Minimalization, Pairing Functions, and Godel Numbers |
| 8. | Church's Thesis and Unsolvability of the Halting Problem |
| 9. | A Universal Program that can Execute Any Program and the Concept of Recursive Enumerability |
| 10. | Extending Computability Theory to Calculations on Strings, and The Minimalist (but all powerful) Language S_n for String Processing |
| 11. | The Post-Turing Language T for String Processing and the Equivalence of the Languages S, S_n, and T |
| 12. | Turing Machines |
| 13. | Languages Accepted by a Turing Machine, Recursive Sets vs. Recursively Enumerable Sets |
| 14. | String Computations with Productions and Processes |
| 15. | Post's Correspondence Problem |
| 16. | Phrase Structure Grammars and Context Sensitive Grammars |
| PART 2: Grammars and Automata | |
| 17. | Finite Automata and Regular Languages |
| 18. | Properties of Regular Languages |
| 19. | Regular Expressions and the Pumping Lemma |
| 20. | Context-Free Languages |
| 21. | Regular Languages, the Chomsky Normal Form, and Bar-Hillel's Pumping Lemma |
| 22. | Properties of Context-Free Languages |
| 23. | Bracket Languages and the Pushdown Automata |
| PART 3: The Theory of NP-Completeness | |
| 24. | Basic Vocabulary: Problem, Problem Instance, Algorithm, Input Length, Time Complexity Function |
| 25. | The Different Degrees of Intractability and The Nondeterministic Computer |
| 26. | Polynomial-time Reducibility and the class NP of Problems |
| 27. | Nondeterministic Algorithms and Nondeterministic Turing Machines for Solving Problems in class NP |
| 28. | The First and Foremost NP-Complete Problem: Satisfiability |
| 29. | The six basic NP-Complete Problems and NP-completeness proof for 3SAT |
| 30. | NP-Completeness Proofs for 3DM, Vertex Cover, Clique, and Partition |
| 31. | General Techniques for Proving NP-Completeness. (Examples of Proofs by Restriction: Subgraph Isomorphism, Knapsack, Multiprocessor Scheduling, and Bounded-Degree Spanning Tree) |
| 33. | NP-Completeness Proofs based on Local Replacement (Example: Proof for "Partition Into Triangles") |
| 34. | NP-Completeness Proofs based on Component Design (Example: Proof for "Minimum Tardiness Sequencing") |
| 35. | Reasoning about the Complexity of Subproblems of a given NP-Complete Problem (Subproblems of Precedence Constrained Scheduling, Graph 3-Colorability, etc.) |
| 36. | Strong-sense and Weak-sense NP-Completeness for Number Problems |
| 37. | Generalizing Polynomial Transformability to Turing Reducibility. Definition of NP-Hard. |
| 38. | Oracle Turing Machines for Going Beyond Class NP |
| 39. | Extending the Theory of NP-Completeness to Combinatorial Optimization Problems |
| 40. | Performance Guaranteed Approximation Algorithms for Solving NP-Hard Combinatorial Optimization Problems. (Bin Packing, Traveling Salesman Optimization, etc.) |
| 41. | Non-Approximable and the Easily-Approximable NP-Hard Optimization Problems (Graph Coloring Optimization Problem and the Knapsack Optimization Problem) |
| 42. | The classes NPI, Co-NP, P^NP and NP^NP of problems. The class #P of Enumeration Problems. |
| 43. | Storage considerations: The classes PSPACE, PSPACE-Complete, and PSPACE-hard. |