1 Vincoli ‘Programming with constraints’ Capitolo 1.

Slides:



Advertisements
Presentazioni simili
Equazioni differenziali
Advertisements

Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Sintassi (prima parte)
Linguaggi di programmazione
Capitolo 8 Sistemi lineari.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006.
Linguaggi di Programmazione (AA 2002/2003)
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Generazione di Piani attraverso Grafi di Pianificazione
RB-alberi (Red-Black trees)
Alberi binari di ricerca
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Iterazione enumerativa (for)
1 Capitolo 2: Semplificazione, Ottimizzazione e Implicazione.
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
Il problema del dizionario
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
EQUAZIONI DI PRIMO GRADO
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
mosaic manipola oggetti primitivi (ruota e unisci) regole:
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
Metodo della moltiplicazione
Strutture dati per insiemi disgiunti
Algoritmi e Strutture Dati
Passo 3: calcolo del costo minimo
Ispezione lineare La funzione hash h(k,i) si ottiene da una funzione hash ordinaria h'(k) ponendo L’esplorazione inizia dalla cella h(k,0) = h'(k) e continua.
Algoritmi e Strutture Dati
Euristiche: algoritmi costruttivi e di ricerca locale
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Problemi con soddisfacimento dei vincoli
EQUAZIONI DI PRIMO GRADO
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Cammini minimi da un sorgente
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2008/2009.
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
1 Capitolo 3: Vincoli a dominio finito. 2 Vincoli a dominio finito u Problemi di soddisfazione di vincoli u Un risolutore con backtracking u Consistenza.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi Agostino Poggi Stefano Cagnoni.
Esercitazione 14 Marzo Esercizio dell’altra volta Definire un tipo di dato Abbonato i cui oggetti descrivono le informazioni relative ad un abbonato.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
1 Un esempio con iteratore: le liste ordinate di interi.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Diagrammi a blocchi.
Informatica e Informatica di Base
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
L’algebra della logica delle proposizioni
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Le funzioni.
6. LIMITI Definizione - Funzioni continue - Calcolo dei limiti
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2011/2012.
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli
Algoritmi e Strutture Dati Luciano Gualà
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2013/2014.
Transcript della presentazione:

1 Vincoli ‘Programming with constraints’ Capitolo 1

2 Vincoli u Cosa sono i vincoli? u Modellare i problemi reali u Risolvere un problema con vincoli u Vincoli sugli alberi u Altre classi di vincoli u Proprieta’ della soluzione di problemi con vincoli

3 Vincoli Variabile: un place holder per valori Simboli di funzione: mapping di valori a valori Simboli di relazione: relazioni tra valori

4 Vincoli Vincolo primitivo: relazione con argomenti Vincolo: congiunzione di vincoli primitivi

5 Soddisfacibilita’ Valutazione: un assegnamento di valori a variabili Soluzione: valutazione che soddisfa i vincoli

6 Soddisfacibilita’ Soddisfacibile: vincolo che ha una soluzione Non soddisfacibile: vincolo che non ha una soluzione soddisfacibile Non soddisfacibile

7 Vincoli e modello a stati Stato: variabili con valori da un dominio Test per il goal: vincoli che specificano le combinazioni permesse di valori per delle variabili

8 Esempio N-regine: Variabili Q1, …, Qn Domini Di = {1,…,n} Vincoli di non attacco

9 Esempio Cripto-aritmetica: Es.: SEND+MORE=MONEY Variabili S,E,N,D,M,O,R,Y Domini Di = {0,1,…,9} Vincoli: M  0, S  0, somma, all-different

10 Esempio Colorazione di mappe: In modo che stati adiacenti non abbiamo lo stesso colore Variabili stati S1, …, Sn Domini: insieme dei colori Vincoli: all-different

11 Esempi reali Problemi di assegnamento: Es.: chi insegna quale classe Problemi di orario: quale classe e’ in quale orario? Configurazioni hardware Spreadsheets Scheduling di trasporti Scheduling di attivita’

12 Albero di ricerca Nodo: rappresenta uno stato (variabili con domini di lavori) Goal: assegnamento di valori a tutte le variabili tale che i vincoli siano soddisfatti Stato iniziale: nessuna variabile istanziata Funzione successore: istanziazione di una variabile Lo stesso per tutti i problemi con vincoli

13 Ricerca o no? Strategie di ricerca viste prima: tutte applicabili ai problemi con vincoli Euristiche specifiche per i problemi con vincoli (per scelta della variabile da istanziare e scelta del valore per la variabile, cioe’ la scelta del nodo da espandere) Classi di problemi con vincoli che non hanno bisogno di ricerca  risolvibili polinomialmente

14 Vincoli come sintassi u I vincoli sono stringhe di simboli u L’ordine non importa u Ma alcuni algoritmi dipendono dall’ordine

15 Vincoli equivalenti Due vincoli diversi possono rappresentare la stessa informazione Due vincoli sono equivalenti se hanno lo stesso insieme di soluzioni

16 Modellare con i vincoli u I vincoli descrivono il comportamento idealizzato di oggetti nel mondo reale

17 Modellare con i vincoli start foundations interior walls exterior walls chimney roof doors tiles windows

18 Soddisfazione di vincoli u Dato un vincolo C, due domande u soddisfazione: ha una soluzione? u soluzione: trovare una soluzione, se ce n’e’ una u La prima domanda e’ piu’ di base u Un risolutore di vincoli risponde al problema della soddisfazione

19 Soddisfazione di vincoli u Come rispondiamo a questa domanda? u Approccio piu’ semplice: tentare tutte le valutazioni

20 Soddisfazione di vincoli u Il metodo enumerativo non funziona con i numeri reali u Una versione piu’ intelligente sara’ usata per vincoli a dominio finito u Come risoviamo i vincoli sui reali? u Ricordiamo l’eliminazione di Gauss-Jordan dalle scuole medie

21 Eliminazione di Gauss-Jordan u Scegliamo un equazione c da C u Riscriviamo c nella forma x = e u Rimpiazziamo x, ovunque appaia in C, con e u Continuiamo finche’ u Tutte le equazioni sono nella forma x = e u O una equatione e’ equivalente a d = 0 (d != 0) u Ritorniamo true nel primo caso, altrimenti false

22 Gauss-Jordan: Esempio 1 Rimpiazza X con 2Y+Z-1 Rimpiazza Y con -1 Ritorna false

23 Gauss-Jordan: Esempio 2 Rimpiazza X con 2Y+Z-1 Rimpiazza Y con -1 Forma risolta : vincoli in questa forma sono soddisfacibili

24 Forma risolta u Variabile non parametrica: appare sulla sinistra di un’equazione u Variabile parametrica: appare sulla destra di alcune equazioni u Soluzione: scegli i valori dei parametri e determina i non-parametri

25 Vincoli sugli alberi u Rappresentano dati strutturati u Costruttori sugli alberi: stringa di caratteri u cons, node, null, widget, f u Costante: construttore o numero u Albero: u Una costante e’ un albero u Un construttore con una lista di > 0 alberi e’ un albero u Disegnato con il costruttore sopra i figli

26 Esempi order(part(77665, widget(red, moose)), quantity(17), date(3, feb, 1994)) cons(red,cons(blue,con s(red,cons(…))))

27 Vincoli sugli alberi u Altezza di un albero: u Una costante ha altezza 1 u Un albero con figli t1, …, tn ha altezza uno piu’ della massima altezza degli alberi t1,…,tn u Albero finito: ha altezza finita u Esempi: altezza 4 e altezza

28 Termini u Un termine e’ un albero con variabili che sostituiscono i sottoalberi u Termine: u Una costante e’ un termine u Una variabile e’ un termine u Un costruttore con una lista di > 0 termini e’ un termine u Disegnato con il costruttore sopra i figli u Equazione di termini: s = t (s,t termini)

29 Esempi di termini order(part(77665, widget(C, moose)), Q, date(3, feb, Y)) cons(red,cons(B,cons(r ed,L)))

30 Risolutore per vincoli sugli alberi u Assegnare alberi a variabili in modo che I due termini siano uguali u Es.: cons(R, cons(B, nil)) = cons(red, L) u Simile al metodo di Gauss-Jordan u Inizia con un insieme di equazioni di termini C e un insieme vuoto di equazioni di termini S u Continua finche’ C e’ vuoto o ritorna false

31 Soluzione di vincoli sugli alberi u unify u unify(C) u Rimuove l’equazione c da C u case x=x: non fa niente u case f(s1,..,sn)=g(t1,..,tn): return false u case f(s1,..,sn)=f(t1,..,tn): u aggiunge s1=t1,.., sn=tn a C u case t=x (x variabile): aggiunge x=t a C u case x=t (x variabile): aggiunge x=t a S u sustituisce t per x ovunque in C e S

32 Esempio CS Come Gauss-Jordan, le variabili sono parametri o non- parametri. Una soluzione e’ ottenuta settando I parametri (T) ad un qualsiasi valore.

33 Un caso particolare u C’e’ una soluzione per X = f(X) ? u NO! u Se l’altezza di X nella soluzione e’ n u allora f(X) ha altezza n+1 u Occurs check: u Prima di sostituire t per x u Controlla che x non appare in t

34 Altri domini di vincoli u Ce ne sono molti: u Vincoli booleani u Vincoli di sequenze u Mondo dei blocchi u Molti altri, di solito collegati a una qualche struttura matematica

35 Vincoli booleani Usati per modellare circuiti, … Circuito per l’or esclusivo Vincolo booleano che descrive il circuito

36 Vincoli booleani Vincolo che modella il circuito con variabili per i guasti Vincolo che modella che solo un gate e’ guasto Comportamento osservato: Soluzione:

37 Risolutore per vincoli booleani Sia m il numero di vincoli primitivi in C epsilon e’ tra 0 e 1 e determina il grado di incompletezza for i := 1 to n do genera una valutazione random sulle variabili in C if la valutazione soddisfa C then return true endif endfor return unknown

38 Vincoli booleani u Il risoluote booleano puo’ ritornare unknown u E’ incompleto (non risponde a tutte le domande) u E’ polinomiale in tempo, mentre un risolutore completo e’ esponenziale (a meno che P = NP)

39 Vincoli sul mondo dei blocchi Gli oggetti possono essere sul pavimento o su un altro oggetto. La fisica dice quali posizioni sono stabili. I vincoli primitivi sono, per es., red(X), on(X,Y), not_sphere(Y). pavimento I vincoli non sono solo matematici

40 Vincoli sul mondo dei blocchi Una soluzione e’ una figura con una annotazione che dice quale variabile e’ quale blocco Y X Z

41 Definizione di risolutore u Un risolutore di vincoli e’ una funzione solv che prende un vincolo C e ritorna true, false o unknown in dipendenza dal fatto se il vincolo e’ soddifacibile u se solv(C) = true allora C e’ soddisfacibile u se solv(C) = false allora C e’ non soddisfacibile

42 Proprieta’ dei risolutori u Vogliamo risolutori che hanno certe proprieta’ u well-behaved: u basati su insiemi: la risposta dipende solo dall’insieme dei vincoli primitivi u monotonici: se il risolutore fallisce per C1 allora fallisce anche per C1 /\ C2 u indipendenti dal nome delle variabili: il risolutore da’ la stessa risposta indipendentemente dal nome delle variabili

43 Proprieta’ dei risolutori u La proprieta’ piu’ stringente che possiamo chiedere u completezza:A un risolutore e’ completo se ritorna sempre la risposta true o false (mai unknown)

44 Sommario sui vincoli u I vincoli sono usati per modellare il comportamento del mondo reale u Un risolutore di vincoli determina se un vincolo ha una soluzione u Aritmetica reale e vincoli sugli alberi u Proprieta’ dei risolutori