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