Teacher
|
BONIFACI VINCENZO
(syllabus)
1. Optimization and combinatorial optimization problems. Enumeration of solutions. 2. Basics of algorithm analysis. Computational tractability. Asymptotic order of growth. 3. Graphs. Graph connectivity and graph traversal. Graph bipartiteness. Connectivity in directed graphs. Directed acyclic graphs and topological ordering. 4. Greedy algorithms. Interval scheduling. Optimal caching. Shortest paths in a graph. Minimum spanning trees. 5. Divide and conquer. Mergesort. Counting inversions. Closest pair of points. 6. Dynamic programming. Weighted interval scheduling. Principles of dynamic programming. Subset sums and knapsacks. All-pairs shortest paths. Shortest paths and distance vector protocols. 7. Network flow. Maximum flow and the Ford-Fulkerson algorithm. Maximum flows and minimum cuts in a network. Augmenting paths. Bipartite matching. Disjoint paths in directed and undirected graphs. 8. Computational intractability. Polynomial-time reductions. Reductions via "gadgets". Efficient certification and the definition of NP. NP-complete problems. Covering, packing, partitioning, sequencing, and numerical problems. Other examples.
(reference books)
Jon Kleinberg, Eva Tardos. Algorithm Design. Pearson Education, 2013.
|