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.

Slides:



Advertisements
Presentazioni simili
Premessa: si assume di aver risolto (correttamente
Advertisements

Strutture dati per insiemi disgiunti
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
Politecnico di Torino Tesi di Laurea
Linguaggi di programmazione
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Type Checking (1° parte)
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
Generazione di Piani attraverso Grafi di Pianificazione
Intelligenza Artificiale marco ernandes Gennaio – Aprile 2007.
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Dallalgoritmo minimax allalgoritmo alfa-beta. MINIMAX int minimax(stato, livello) { if((livello == max_livello) || condizione_uscita(stato)) { CAMMINO.
Capitolo 10 Tecniche algoritmiche 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.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Algoritmi e Strutture Dati (Mod. B)
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 (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Programmazione a vincoli: algoritmi di scheduling in OPL
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Programmazione Corso di laurea in Informatica
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Metodo della moltiplicazione

Radix-Sort(A,d) // A[i] = cd...c2c1
Passo 3: calcolo del costo minimo
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Algoritmi e Strutture Dati
Problemi con soddisfacimento dei vincoli
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
Sessione live Testing. Esercizio Quesito 1 Soluzione 1.
4/5/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Risoluzione delle collisioni con indirizzamento aperto Con la tecnica di indirizzamento aperto tutti gli elementi stanno nella tavola. La funzione hash.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2008/2009.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
Liste di Interi Esercitazione. Una variante Liste concatenate di Integers Non modificabile Costruttori per creare la lista vuota o un nodo Metodi d’istanza.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
1 Vincoli ‘Programming with constraints’ Capitolo 1.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Automi temporizzati.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Metodo di Cramer Dato il sistema lineare a due incognite per risolvere il sistema dobbiamo costruire 3 matrici. È detta matrice un qualsiasi gruppo di.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
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
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2013/2014.
ASD a.a.2010/2011- Lezione 12 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Backtracking/ Branch and Bound Lezione n°12.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2010/2011.
Esempio: Map-Coloring
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Transcript della presentazione:

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 su nodi e archi u Consistenza sui limiti u Consistenza generalizzata u Ottimizzazione per vincoli aritmetici

3 Vincoli a dominio finito u Una classe importante di problemi con vincoli u Usati per moellare problemi con vincoli che hanno a che fare con delle scelte: u es.: Scheduling, routing and timetabling u Il piu’ grande impatto industriale della programmazione con vincoli e’ stato su questi problemi

4 Problemi di soddisfazione con vincoli u Un problema di soddisfazione con vincoli (CSP) consiste di: u Un vincolo C su variabli x1,..., xn u Un dominio D che mappa ogni variabile xi ad un insieme finito di possibili valori d(xi) u E’ inteso come il vincolo

5 Colorazione di mappe Un CSP classico e’ il problema della colorazione di mappe in modo che regioni adiacenti non abbiamo lo tesso colore. Es.: puo’ la mappa dell’Australia essere colorata con 3 colori?

6 4-regine Piazzare 4 regine su una scacchiera 4 x 4 in modo che non si attacchino. Q1Q2Q3Q Quattro variabili Q1, Q2, Q3, Q4 che rappresentano la riga della regine in ogni colonna. Dominio di ogni variabile: {1,2,3,4} One solution! -->

7 4-regine I vincoli: Non sulla stessa riga: Non nella stessa diagonale up: Not nella stessa diagonale down:

8 Lo zaino del ladro Un ladro ha uno zaino con capacita’ 9, e deve scegliere cose da rubare in modo da fare un profitto di almeno 30 Quale dovrebbe essere il dominio delle variabili?

9 Risolutore con backtracking u Il modo piu’ semplice per risolvere csps e’ di enumerare le possibili soluzioni u Il risolutore con backtracking: u Enumera i valori per una variabile alla volta u Ad ogni passo, controlla che nessun vincolo primitivo sia violato u Assumiamo che satisfiable(c) ritorna false quando il vincolo primitivo c senza variabili e’ non soddisfacibile

10 Partial Satisfiable u Controlla se un vincolo e’ non soddisfacibile a causa di un vincolo primitivo senza variabili u Partial_satisfiable u Partial_satisfiable(c) u For ogni vincolo primitivo c in C u If vars(c) e’ vuoto u If satisfiable(c) = false return false u Return true

11 Backtrack Solve u Back_solve u Back_solve(c,d) partial_satisfiable u If vars(c) e’ vuoto return partial_satisfiable(c) u Sceglie x in vars(c) u For ogni valore d in d(x) u Sia C1 uguale a C con x rimpiazzato da d partial_satisfiable( u If partial_satisfiable(c1) then back_solve u If back_solve(c1,d) then return true u Return false

12 Backtracking Solve Choose var X domain {1,2} Choose var Y domain {1,2} partial_satisfiable partial_satisfiable false Choose var Z domain {1,2} Nessuna variabile, e false Variable X domain {1,2} Sceglie var Y dominio {1,2} Nessuna variabile, e false

13 Consistenza sui nodi e sugli archi u Idea di base: trovare un CSP equivalente all’originale con domini delle variabili piu’ piccoli u Esamina 1 vincolo primitivo alla volta u Node consistency: (vars(c)={x}) rimuove dal dominio di x ogni valore che non soddisfa c u Arc consistency: (vars(c)={x,y}) rimuove da d(x) valori per cui non c’e’ nessun valore in d(y) tale che (x,y) soddisfa c, e vice versa

14 Node Consistency u Un vincolo primitivo c e’ node consistent con dominio D se |vars(c)| !=1 o u Se vars(c) = {x} allora per ogni d in d(x) u X assegnato a d e’ una soluzione di c u Un CSP e’ consistente sui nodi se ogni vincolo primitivo e’ consistente sui nodi

15 Esempi CSP che non e’ consistente sui nodi (vedere Z): CSP che e’ consistente sui nodi: Il problema della colorazione della mappa e quello delle 4 regine sono consistenti sui nodi.

16 Ottenere la consistenza sui nodi u Node_consistent u Node_consistent(c,d) u For ogni vincolo primitivo c in C node_consistent_primitive u D := node_consistent_primitive(c, D) u Return D u Node_consistent_primitive u Node_consistent_primitive(c, D) u If |vars(c)| =1 then u Sia {x} = vars(c) u Return D

17 Consistenza sugli archi u Un vincolo primitivo c e’ consistente sugli archi con dominio D se |vars{c}| != 2 o u Vars(c) = {x,y} e per ogni d in d(x) esiste e in d(y) tale che u E in modo simile per y u Un CSP e’ consistente sugli archi se ogni vincolo primitivo e’ consistente sugli archi

18 Esempi CSP consiste sui nodi ma non sugli archi: Esempio: il valore 4 per X e X < Y. CSP equivalente ma consistente sugli archi: La colorazione della mappa e le 4 regine sono consistenti sugli archi.

19 Ottenere la consistenza sugli archi u Arc_consistent_primitive u Arc_consistent_primitive(c, D) u If |vars(c)| = 2 then u Return D u Rimuove valori che non sono arc-onsistent con c

20 Ottenere la consistenza sugli archi u Arc_consistent u Arc_consistent(c,d) u Repeat u W := d u For ogni vincolo primitivo c in C arc_consistent_primitive u D := arc_consistent_primitive(c,d) u Until W = D u Return D u Una versione molto naive

21 Usare la consistenza ui nodi e sugli archi u Possiamo costruire risolutori basati sui metodi di consistenza u Due tipi importanti di dominio: u False domain: alcune variabili hanno il dominio vuoto u Valuation domain: ogni variabile ha un solo valore nel dominio u  Estendere satisfiable a CSP con domini valutazione

22 Risolutore basato su consistenza su nodi e archi node_consistent u D := node_consistent(C,D) arc_consistent u D := arc_consistent(C,D) u if D e’ un dominio falso u return false u if D e’ un dominio valutazione u return satisfiable(C,D) u return unknown

23 Esempio Colorare l’Australia: con vincoli WA NT SA Q NSW V T Consistenza sui nodi

24 Esempio Colorare l’Australia: con vincoli WA NT SA Q NSW V T Consistenza sugli archi

25 Esempio Colorare l’Australia: con vincoli WA NT SA Q NSW V T Consistenza sugli archi

26 Esempio Colorare l’Australia: con vincoli WA NT SA Q NSW V T Consistenza sugli archi Risposta: unknown

27 Risolutore con backtracking u Possiamo combinare la consistenza con il backtracking u Applichiamo la consistenza sui nodi e sugli archi prima di iniziare la ricerca con backtracking, e dopo ogni assegnamento di un valore ad una variabile

28 Esempio di risolutore con backtracking Q1Q2Q3Q Nessun valore puo’ essere assegnato a Q3 in questo caso! Quindi, dobbiamo scegliere un altro valore per Q2.

29 Esempio Q1Q2Q3Q Non possiamo trovare nessun valore per Q4 in questo caso! Backtracking… Trovo un altro valore per Q3? No! backtracking, Trovo un altro valore per Q2? No! backtracking, Trovo un altro valore per Q1? Si, Q1 = 2

30 Esempio Q1Q2Q3Q

31 Esempio Q1Q2Q3Q

32 Esempio Colorare l’Australia: con vincoli WA NT SA Q NSW V T Enumerazione con backtracking Seleziona una var. con dominio con piu’ di 1 valore, T Aggiunge il vincolo Applica la consistenza Answer: true

33 Consistenza sui limiti u E I vincoli primitivi con piu’ di 2 variabili? u hyper-arc consistency: estende la consistenza sugli archi per un numero arbitrario di variabili u Sfortunatamente determinare la hyper-arc consistency e’ NP-hard u Qual e’ la soluzione?

34 Consistenza sui limiti u CSP aritmetici: i vincoli sono interi u range: [l..u] rappresenta l’insieme degli interi {l, l+1,..., u} u Idea: usare la consistenza sui numeri reali e guardare solo i punti finali (limiti superiori e inferiori) del dominio di ogni variabile u Definire min(D,x) come il minimo elemento nel dominio di x, simile per max(D,x)

35 Consistenza sui limiti u Un vincolo primitivo c e’ consistente sui limiti con dominio D se per ogni var x in vars(c) u Esistono numeri reali d1,..., dk per le rimanenti variabili x1,..., xk tali che u e’ una soluzione di c u E simile per u Un CSP aritmetico e’ consistente sui limiti se lo sono tutti i vincoli primitivi