Derived from
|
20410626 IN440 - COMBINATORIAL OPTIMISATION in Computational Sciences LM-40 LIVERANI MARCO
(syllabus)
Notes on graph theory: graph, directed graph, tree, free and rooted tree, connection, strong connection, acyclicality; isomorphisms between graphs, planarity, Kuratowski's theorem, Euler's formula; coloring of graphs, Eulerian paths, Hamiltonian circuits. Review of algorithm theory and computational complexity: complexity classes, the class of NP, NP-complete, NP-hard problems. Problems of decision, search, enumeration and optimization; problems of nonlinear programming, convex programming, linear programming and integer linear programming; combinatorial optimization problems. Recalls on the elements of combinatorics. Optimization problems on graphs: visit of graphs, verification of fundamental properties, connection, presence of cycles, strongly connected components, topological ordering of a graph. Minimum spanning tree (Prim and Kruskal algorithms). Paths of minimum cost (Dijkstra and Bellman-Ford algorithms, dynamic programming technique, Floyd-Warshall algorithm, computation of the transitive closure of a graph). Networks and calculation of the maximum flow on a network, maximum flow / minimum cut theorem, Ford-Fulkerson algorithm, Edmonds-Karp algorithm, preflow algorithms, "push-relabel" algorithms. Partitioning problems of graphs, trees and paths into connected components, objective functions and algorithmic techniques. Stable marriage problem, generalizations and applications of the problem, Gale and Shapley algorithm. Huffman codes. Programming laboratory for the implementation of algorithms in Python language and with the help of Mathematica software.
(reference books)
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduction to algorithms"
Lecture notes and other teaching material in Italian provided by the teacher and made available on the course website (http://www.mat.uniroma3.it/users/liverani/IN440) and on the Microsoft Teams platform
|