The student encounters the concepts of: problems, models, formulations from operations research, but also of instances, algorithms, reductions and mappings among problems from the computer science field. The course will propose some models of operations research, among which: linear programming (LP), integer linear programming (ILP), max-flows and min-cuts, bipartite matchings and node covers, minimum spanning trees, shortest paths, Eulerian paths, and some models resorting on dynamic programming among which some knapsack variants. For all these models/problems, except PLI, the student will learn the solving algorithms, the properties on which they hinge, and how to conduct their execution.
However, besides and beyond this, the course aims at building a good and active relationship, practice, and acquaintance, with general mathematical methodologies and techniques (more typical of discrete math and for this reason not yet fully assimilated from our students) and some basic underpinnings of computer science. In particular, we insist on the dialog with problems and with the art/technique of conjecturing, no occasion is lost to spotlight where invariants and monovariants play a role in proofs, algorithms and data structures. We build up confidence with mathematical induction as an active tool for problem solving, and introducing the dialects of induction most voted to efficiency (divide et impera, recursion with memoization, dynamic programming). Some basic principles of informatics are underlined, like coding, algorithms, data structures, recursion as a counterpart of mathematical induction and of computability. (In some editions of the course first scratch introductions to numerability and computability have been offered). Coming to efficiency, our central perspective, the use of asymptotic notation is justified and adopted, the classes P, NP, coNP are introduced, and the concepts of good characterizations, good conjectures and good theorems are illustrated in length and complexity theory is advertised as a lively source of new methodologies in the art of facing problems and enquiry their intrinsic structural properties. Several aspects of the role and importance of the art of reducing one problem to another are discussed and clarified. The life cycle of a good conjecture, the workflow linking good conjectures and algorithms, the production and interpretation of counterexamples as a means of dialog with the problem, and the possible use of them in obtaining NP-completeness proofs, are all discussed, investigated and exemplified in action.
Explicit emphasis is constantly given to the role and use of certificates. Meanwhile these transversal and high competences of methodological interest and imprinting are delivered, the students is asked to learn and develop several concrete procedural competences, in particular within LP, and in an algorithmic treatment of graph theory, introduced as a versatile model and an intuitive and expressive language for the formulation of problems.
For a complete and detailed list of all these procedural competences delivered and requested, see the past exams and corrections over the various editions of the course.
The notions from computational complexity introduced in the course, and the attention to the languages of the certificates, will lead the student to recognize with more awareness the structure of a sound proof.
Dealing with instances, problems, models, both from the perspective of algorithms and of models and formulations, will enforce the attitude and competence in casting simple problems from the applications into mathematical models.
The knowledge of the paradigmatic results of linear programming theory (duality, complementary slackness, economic interpretation, sensitivity analysis) will provide the student with important tools in obtaining non-trivial insights on the practical problem from the model.
Operations Research offers quantitative methods and models for the optimal management of resources, and optimization of profits, services, strategies, procedures.
This course of Operations Research gets to Mathematical Programming
moving from Algorithmics and Computational Complexity.
After revisiting mathematical induction, recursion, divide et impera, with a curiosity driven problem solving approach, we insist on dynamic programming thinking which gets then exemplified in a few classical models of Operations Research and Computational Biology.
With emphasis on method and techniques, we get involved in formulating, encoding and modeling problems, conjecturing about them, reducing one to the other,
and well characterizing them.
The course offers an in-depth introduction to linear programming.
Following the historical path, we introduce graphs as for modeling,
and explore the basic fundamental results in combinatorial optimization and graph theory.
LIST OF TOPICS:
1. Basic Notions
2. Introduction to Algorithms and Complexity
analysis of a few algorithms
design techniques (recursion, divede et impera, recursion with memoization, dynamic programming, greedy)
complexity theory (P, NP, co-NP, good characterizations, good conjectures, examples of NP-completeness proofs)
3. Combinatorial Optimization Models
Problems on sequences
Problems on DAGs
4. Introduction to Graph Theory
graphs and digraphs as models
a few good characterizations (bipartite, Eulerian, acyclic, planar graphs)
a few NP-hard models (Hamilton cycles, cliques, colorability)
minimum spanning trees
5. Linear Programming (LP)
the LP and the ILP models (definition, motivations, complexity, role)
geometric method and view (feasibility space,
pivot, duality, dual variables, degeneracy, complementary slackness)
standard and canonical form
economic interpretation of the dual variables
BOOKS, NOTES AND OTHER DIDACTIC MATERIALS AND RESOURCES:
At the following page you find a list of available materials (books, notes, videos) about topics covered within the course:
If you find out further effective material help us enlarging this list.
TUTORING (IF AVAILABLE):
For the 2017-18 edition we are planning to introduce a tutor that will assist and guide the students in performing the exercises suggested during the class and in conducting practical experiences.
|Garey, M. R. and Johnson, D. S.||Computers intractability: a guide to the theory of NP-completeness||Freeman||1979||0-7167-1045-5|
|T. Cormen, C. Leiserson, R. Rivest||Introduction to algorithms (Edizione 1)||MIT Press||1990||0262031418|
|Robert J. Vanderbei||Linear Programming: Foundations and Extensions (Edizione 4)||Springer||2001||978-1-4614-7630-6|
At the end of the course, a written exam with various types of exercises and questions, and several opportunities to gather points to test and prove your preparation. You can add to the mark acquired at the exam by conducting projects aiming at improving aspects and/or materials of the course in a broad sense.
In preparing yourself for this exam,
take profit of the material (text and correction for each previous exam) available at the website of the course:
We also suggest to consult the three files:
prepararsi_esame.pdf, procedura_esame.pdf and dopo_esame.pdf
contained in folder 000-INFO-ESAME-000 contained, at the same page, among the folders of each previous exams. The approach and spirit with which you should elaborate your answers to the exercises is indeed related to some deep methodological messages at the core of the course, and it might turn difficult to achieve full satisfaction and recognizement at the exam without having adopted these approaches which can go easily overlooked.
There are 4 exam sessions each academic year (June, July, September, February). The exam is the very same regardless on whether you have attended or not the course. The archives of the past exams, the relative corrections, and the videos of the classes, all can help overcoming the difficulties of the non-attending student.