Vincoli Programming with constraints Capitolo 1 1 Vincoli

  • Slides: 43
Download presentation
Vincoli ‘Programming with constraints’ Capitolo 1 1

Vincoli ‘Programming with constraints’ Capitolo 1 1

Vincoli Cosa sono i vincoli? u Modellare i problemi reali u Risolvere un problema

Vincoli 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 u 2

Vincoli Variabile: un place holder per valori Simboli di funzione: mapping di valori a

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

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

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

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

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

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

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

Vincoli e modello a stati Stato: variabili con valori da un dominio Test per

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 7

Esempio N-regine: • Variabili Q 1, …, Qn • Domini Di = {1, …,

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

Esempio Cripto-aritmetica: • Es. : SEND+MORE=MONEY • Variabili S, E, N, D, M, O,

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 9

Esempio Colorazione di mappe: • In modo che stati adiacenti non abbiamo lo stesso

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

Esempi reali • Problemi di assegnamento: • Es. : chi insegna quale classe •

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’ 11

Albero di ricerca • Nodo: rappresenta uno stato (variabili con domini di lavori) •

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 12

Ricerca o no? • Strategie di ricerca viste prima: tutte applicabili ai problemi con

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 13

Vincoli equivalenti Due vincoli diversi possono rappresentare la stessa informazione Due vincoli sono equivalenti

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

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

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

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

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

Soddisfazione di vincoli u Dato un vincolo C, due domande u soddisfazione: ha una

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 La prima domanda e’ piu’ di base u Un risolutore di vincoli risponde al problema della soddisfazione u 18

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

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

Soddisfazione di vincoli Il metodo enumerativo non funziona con i numeri reali u Una

Soddisfazione di vincoli 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 u 20

Eliminazione di Gauss-Jordan Scegliamo un equazione c da C u Riscriviamo c nella forma

Eliminazione di Gauss-Jordan 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 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 21

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

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

Gauss-Jordan: Esempio 2 Rimpiazza X con 2 Y+Z-1 Rimpiazza Y con -1 Forma risolta:

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

Forma risolta Variabile non parametrica: appare sulla sinistra di un’equazione u Variabile parametrica: appare

Forma risolta 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 u 24

Vincoli sugli alberi u u Rappresentano dati strutturati Costruttori sugli alberi: stringa di caratteri

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

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

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

Vincoli sugli alberi u Altezza di un albero: u Una costante ha altezza 1

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

Termini Un termine e’ un albero con variabili che sostituiscono i sottoalberi u Termine:

Termini Un termine e’ un albero con variabili che sostituiscono i sottoalberi u Termine: u 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) 28

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

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

Risolutore per vincoli sugli alberi u u u Assegnare alberi a variabili in modo

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

Soluzione di vincoli sugli alberi u unify(C) unify u Rimuove l’equazione c da C

Soluzione di vincoli sugli alberi u unify(C) unify u Rimuove l’equazione c da C u case x=x: non fa niente u case f(s 1, . . , sn)=g(t 1, . . , tn): return false u case f(s 1, . . , sn)=f(t 1, . . , tn): u aggiunge s 1=t 1, . . , 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 31

Esempio C S Come Gauss-Jordan, le variabili sono parametri o non-parametri. Una soluzione e’

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

Un caso particolare C’e’ una soluzione per X = f(X) ? u NO! u

Un caso particolare C’e’ una soluzione per X = f(X) ? u NO! u 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 33

Altri domini di vincoli u Ce ne sono molti: u Vincoli booleani u Vincoli

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 34

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

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

Vincoli booleani Vincolo che modella il circuito con variabili per i guasti Vincolo che

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

Risolutore per vincoli booleani Sia m il numero di vincoli primitivi in C epsilon

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 37

Vincoli booleani Il risoluote booleano puo’ ritornare unknown u E’ incompleto (non risponde a

Vincoli booleani 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) u 38

Vincoli sul mondo dei blocchi pavimento I vincoli non sono solo matematici Gli oggetti

Vincoli sul mondo dei blocchi pavimento I vincoli non sono solo matematici 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). 39

Vincoli sul mondo dei blocchi Una soluzione e’ una figura con una annotazione che

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

Definizione di risolutore u Un risolutore di vincoli e’ una funzione solv che prende

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 41

Proprieta’ dei risolutori u u Vogliamo risolutori che hanno certe proprieta’ well-behaved: u u

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

Proprieta’ dei risolutori La proprieta’ piu’ stringente che possiamo chiedere u completezza: A un

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

Sommario sui vincoli I vincoli sono usati per modellare il comportamento del mondo reale

Sommario sui vincoli 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 u 44