Sistemi con vincoli Docente: Francesca Rossi E-mail: [email protected] Docente: Francesca Rossi Sistemi con vincoli Scopo del corso Dare le nozioni di base della programmazione con vincoli Come rappresentare un problema reale con un insieme di vincoli Tecniche principali per risolverlo Approccio formale per un tipo di programmazione con molte applicazioni pratiche Docente: Francesca Rossi Sistemi con vincoli Struttura del corso Lezioni: Lunedi’ 14:30-16:30 Martedi’ 15:30-17:30 Mercoledi’ e Giovedi’ ore 11:30-13:30 Aula 1BC/50, Torre Archimede Lezioni ed esercizi in aula Docente: Francesca Rossi Sistemi con vincoli Materiale Principles of Constraint Programming, K. Apt, Cambridge University Press, 2003, Lucidi delle lezioni Sito del corso: www.math.unipd.it/˜frossi/vincoli2011.html Alcune parti dal libro Constraint processing, R. Dechter, Morgan Kauffman, 2003 Alcune parti dal libro Handbook of constraint programming, Elsevier, 2006 Alcune parti del libro Constraint networks, C. Lecoutre, Wiley, 2009 Esame: scritto + progetto e sua discussione Docente: Francesca Rossi Sistemi con vincoli Programmazione con vincoli Un approccio alternativo alla programmazione imperativa o ad oggetti. Variabili, ognuna con un insieme di possibili valori (dominio) Vincolo su una sequenza di variabili: una relazione sui loro domini. Problema di soddisfazione di vincoli (CSP): un insieme finito di vincoli. Docente: Francesca Rossi Sistemi con vincoli Programmazione con vincoli L’approccio della programmazione con vincoli alla programmazione: Formula il tuo problema come un CSP (modellazione). Risolvi la rappresentazione scelta usando metodi specifici del dominio, o metodi generali. Docente: Francesca Rossi Sistemi con vincoli Risolvere CSP Determinare se ha una soluzione (cioe’ se e’ consistente), Trovare una soluzione, Trovare tutte le soluzioni, Trovare una soluzione ottima, Trovare tutte le soluzioni ottime. Docente: Francesca Rossi Sistemi con vincoli Metodi specifici del dominio Algoritmi ”special purpose” (risolutori di vincoli). Esempi: Programma per risolvere sistemi di equazioni lineari, Package per programmazione lineare, Implementazione dell’algoritmo di unificazione. Docente: Francesca Rossi Sistemi con vincoli Metodi generali algoritmi di propagazione di vincoli, metodi di ricerca. Docente: Francesca Rossi Sistemi con vincoli Caratteristiche di base della programmazione con vincoli Programmazione in due fasi: Generazione della rappresentazione di un problema come un CSP Risoluzione di tale CSP. Rappresentazione flessibile: i vincoli possono essere aggiunti, tolti, o modificati. Docente: Francesca Rossi Sistemi con vincoli Applicazioni Sistemi grafici interattivi (per esprimere la coerenza geometrica) Problemi di ricerca operativa (vari problemi di ottimizzazione) Biologia molecolare (sequenzializzazione del DNA, costruzione di modelli 3D delle proteine) Applicazioni finanziarie Verifica circuiti Elaborazione del linguaggio naturale (costuzione di parser efficienti) Schedulazione di attivita’ di satelliti Generazione di programmi musicali radiofonici coerenti ... Docente: Francesca Rossi Sistemi con vincoli I vincoli sono ovunque Molti problemi reali si possono descrivere per mezzo di vincoli Un vincolo limita le possibilita’ in un certo insieme Esempio: costruire un orario delle lezioni Docente: Francesca Rossi Sistemi con vincoli I problemi di vincoli sono intrattabili Non ci sono algoritmi polinomiali deterministici per risolvere CSP generici Il problema CSP e’ NP-hard: a meno che P=NP (molto improbabile), non esistono tali algoritmi Quindi risolvere un generico CSP richiede tempo esponenziale In pratica, si cerca di trovare algoritmi efficienti per molte classi di CSP, sfruttando la struttura delle istanze del problema. Docente: Francesca Rossi Sistemi con vincoli Sommario del corso Esempi di problemi di soddisfazione di vincoli Nozioni di base della programmazione con vincoli Alcuni risolutori completi Nozioni di consistenza locale Alcuni risolutori incompleti Algoritmi di propagazione di vincoli Metodi di ricerca nello spazio delle soluzioni Docente: Francesca Rossi Sistemi con vincoli