This course covers problem-oriented algorithm design and analysis techniques. To this end, the instructor gives an overview of computational modell, complexity classes, polynomial-time reduction, and compete set of complexity classes. In addition to using computational complexity as a criterion, quality (accuracy and error rate) of output obtained from algorithms is also used as a criteria for designing algorithms for a variety of problems, while also performing theoretical analysis of the quality. The instructor will specifically show exponential time algorithms important for enumeration, typical randomized algorithms as examples of efficient algorithms, online algorithms for searching for good output from partial information, and greedy algorithms for problems with a special structure (general concept of independence), as well as perform theoretical analysis on them.
At the end of this course, students will be able to:
1) design and analyze algorithms
2) understand efficiency measure of algorithms (time complexity and space complexity)
3) understand accuracy measure of algorithms (approximation ratio and competitive ratio)
complexity, randomized algorithms, online algorithms, approximation algorithms, algebraic method, probabilistic method
✔ Specialist skills | Intercultural skills | Communication skills | ✔ Critical thinking skills | Practical and/or problem-solving skills |
Exercise problems are assigned (due next class) for homework every few classes to review the lesson content. The material is explained in the next lecture.
Course schedule | Required learning | |
---|---|---|
Class 1 | Computation model: Turing machine | Foundations on computation model |
Class 2 | Complexity Classes and polynomial-time reduction | Definition of complexity classes, Nodeterministic computation |
Class 3 | Natural NP-complete languages | Examples of natural NP complete languages |
Class 4 | [1] Randomized algorithms for equality of sequences [2] Randomized algorithms for matrix products | [1] Number of zeros of multivariate polynomials and (total) degree of multivariate polynomials [2] Orthogonality of nonzero vectors |
Class 5 | Randomized algorithms for maximum cut | Applications of linearity of expectations |
Class 6 | Derandomization for maximum cut | Applications of pairwise independence |
Class 7 | [1] Online algorithms for job assignment [2] Online algorithms for caching | Examples of online algorithms |
Class 8 | Greedy algorithms for minimum spaning trees | An example of greedy algorithm |
Class 9 | Greedy algorithms for Matroids | Characterization of greedy algoritthm |
Class 10 | Approximation algorithms and approximation classes | Approximation ratio and performance ratio |
Class 11 | Metric traveling salesperson problem | Application of minimum spanning trees and Euler cycle |
Class 12 | Maximum knapsack problem | Polynomial-time approximation scheme |
Class 13 | Inapproximablity | Separation among approximation classes |
Class 14 | Mathematical Tools for Analysis | Examples of the algebraic method and the probabilistic method |
To enhance effective learning, students are encouraged to spend approximately 100 minutes preparing for class and another 100 minutes reviewing class content afterwards (including assignments) for each class.
They should do so by referring to textbooks and other course material.
All materials are found on LMS(OCW-i) or are provides during class.
1. Fedor V. Fomin and Dieter Kratsch, Exact Exponential Algorithms, Springer, 2010
2. Stasys Jukna, External Combinatorics, Springer, 2001.
3. Allan Borodin and Ran El-Yaniv, Online Computation and Competitive Analysis, Cambridge Univ. Press, 1998.
4. Noga Alon and Joel H. Spencer, The Probabilistic Method, 3rd eds, Wiley, 2008.
Students' course scores are determined by solutions to several homework assignments.
No prerequisites are necessary, but basic knowledge on algorithms is expected.