RICERCA OPERATIVA (Corso di Laurea in Ingegneria Informatica - Laurea Specialistica - 9 CFU) Prof. Raffaele Pesenti Scopo della Ricerca Operativa è fornire un approccio scientifico all'analisi dei problemi di gestione delle risorse e al decision making. A tal fine la Ricerca Operativa formula modelli logico-matematici e sviluppa metodi di soluzione su calcolatore per predire le conseguenze associate a scelte alternative e determinare quindi le decisioni ottime. In questo contesto il corso si articola nei temi fondamentali della modellazione di problemi, della loro trattabilità, dei metodi di soluzione tramite la programmazione lineare e non e l'ottimizzazione combinatoria. Obiettivo del corso è la presentazione della materia nei suoi aspetti metodologici, teorici ed applicativi al fine di fornire allo studente conoscenze su modelli e algoritmi di base. Al termine del corso lo studente dovrebbe avere acquisito competenze che gli permettano di affrontare i problemi reali sviluppando modelli e metodi anche originali. In particolare dovrebbe essere capace di partecipare alla progettazione o alla gestione di sistemi facendo in modo che essi operino nel modo più efficace ed efficiente in presenza di risorse limitate. Tutte le informazioni e le dispense del corso possono essere trovate sul sito http://www.unipa.it/~pesenti MODALITÀ DI ESAME L’esame prevede una prova scritta ed un colloquio oppure successivi accertamenti del profitto durante lo svolgimento del corso. PROGRAMMA DEL CORSO Problemi e modelli - Introduzione al problem solving: problemi reali e modelli matematici. Il concetto di sistema. Le difficoltà inerenti la raccolta dei dati. Approccio costruttivo e da template per lo sviluppo di modelli matematici. Regole pratiche per lo sviluppo dei modelli. Limiti dei modelli. Programmazione non lineare - Esistenza e caratterizzazione dei minimi. Ottimizzazione ad una dimensione. Ottimizzazione non vincolata: metodi del gradiente (massima discesa, Newton, quasi-Newton, gradiente coniugato), convergenza. Ottimizzazione vincolata: caratterizzazione dei minimi (caso vincolato), metodi del gradiente, metodi con funzioni di penalità, metodi barriera o a punto interno. Teoria della Complessità Computazionale - Concetto di istanza e dimensione di un'istanza. Definizione di complessità computazionale di un algoritmo. Problemi trattabili ed intrattabili, vari tipi di intrattabilità. Problemi decisionali, definizione delle classi P e NP. Concetto di algoritmo non deterministico. Classe Co-NP. Congettura sulla classe NP. Concetto di riduzione polinomiale. Il teorema di Cook: la classe dei problemi NP-completi. Alcuni esempi classici di problemi NP-completi. Algoritmi pseudopolinomiali. Problemi NP-hard, P-easy. Trattabilità della PL. Complessità degli algoritmi paralleli. Modelli lineari su reti: applicazioni, proprietà algoritmi - Definizioni base. Rappresentazione di una rete. Matrici di incidenza nodi-archi. Il problemi di flusso su reti: cammino minimo, massimo flusso, flusso a costo minimo, trasporto, assegnamento. Il problema dell'albero ricoprente di costo minimo e il concetto di metodo greedy. Reti CPM e PERT. Euristiche - Errori. Euristiche e algoritmi approssimati. Metaeuristiche costruttive: greedy, di disaggregazione, lagrangiane. Metaeuristiche migliorative: ricerca locale, tabù search, simulated annealing.