The student will encounter in concrete the concepts of: problems, models, formulations of operations research, but also of instances, algorithms, reductions and mappings among problems of the computer science field. The course will propose some models of operations research, at least the following: 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, divide 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 (Hamiltonian 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 2020-21 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, C. Stein||Introduzione agli Algoritmi e Strutture Dati (Edizione 2)||McGraw-Hill||2005||88-386-6251-7|
|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 (in full or in part) to the mark acquired at the exam by conducting projects aiming at improving aspects and/or materials of the course in a broad sense.
Up to and included the 2018/19 edition, the exam was taking place in a room by our department in Ca' Vignal.
In the 2019/20 edition (onset of COVID-19) the exams took place from remote, followed by an oral discussion meant only as a check and also as an opportunity for direct confrontation and exchange.
Since many details concerning the exams are subject to dynamic evolution and also determined in the exchanges of ideas and proposals inside the class, and we want to make sure no student gets lost, we redirect the student directly to the reference service site that we can maintain constantly updated:
We warmly advise every student to subscribe to the Telegram group for the current edition of the course and for the testing of the installations, configurations, and environments set up for the exam. All these resources can be conveniently accessed from the URL here above.
We underline a peculiarity of the Operations Research course, the only one in discrete mathematics at the bachelor: the approach and spirit with which you should approach the course and the exam, and what to deliver and elaborate in your answers to the exercises, is actually related to some deep methodological messages that we decided to place at the core of the course. The more the student adopts and interprets these approaches, the more he/she will be proactive in the course and in collaborating to any verification, the more enriching the course and the more fun the exam will be. This will be important in getting the most from the course and achieve full satisfaction and recognition at the exam.
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.