Alcuni risolutori incompleti Alcuni risolutori incompleti Obbiettivi Introdurre risolutori incompleti per vincoli di uguaglianza e disuguaglianza, vincoli Booleani, vincoli lineari su intervalli di interi e su domini finiti di interi, vincoli aritmetici su intervalli interi, vincoli aritmetici sui reali. Alcuni risolutori incompleti Regole di uguaglianza Consideriamo vincoli di uguaglianza e disuguaglianza su domini arbitrari. EQUALITY 1 hx = x ; x ∈ Di h ; x ∈ Di EQUALITY 2 hx = y ; x ∈ Dx , y ∈ Dy i hx = y ; x ∈ Dx ∩ Dy , y ∈ Dx ∩ Dy i Alcuni risolutori incompleti Regole di Disuguaglianza DISEQUALITY 1 hx 6= x ; x ∈ Di h ; x ∈ ∅i DISEQUALITY 2 hx 6= y ; x ∈ Dx , y ∈ Dy i h ; x ∈ Dx , y ∈ Dy i dove Dx ∩ Dy = ∅, DISEQUALITY 3 hx = 6 y ; x ∈ D, y = ai h ; x ∈ D − {a}, y = ai dove a ∈ D, e simile con x 6= y rimpiazzato da y 6= x. Alcuni risolutori incompleti Risultato di caratterizzazione Teorema Un CSP con solo vincoli di uguaglianza e disuguaglianza e’ consistente sugli iperarchi sse e’ chiuso sotto le applicazioni delle regole EQUALITY 1-2 e DISEQUALITY 1-3. Esempio: < x = y , x 6= y ; x ∈ {0, 1}, y ∈ {0, 1} > Questo CSP e’ chiuso rispetto alle regole ma non e’ risolto. Alcuni risolutori incompleti Vincoli Booleani Variabili Booleane: dominio: {0, 1}. Espressione di dominio Booleana: x ∈ D con D ⊆ {0, 1}. Espressione Booleana: costruita da variabili Booleane usando ¬ (negazione), ∧ (congiunzione) e ∨ (disgiunzione). Vincolo Booleano: s=t dove s, t sono espressioni Booleane. Alcuni risolutori incompleti Vincoli Booleani semplici x = y, ¬x = y , x ∧ y = z, x ∨ y = z. Alcuni risolutori incompleti Regole Regole di trasformazione Riducono i vincoli Booleani a vincoli semplici Esempio x ∧s=z x ∧ y = z, s = y dove s non e’ una variabile o e’ ≡ a x o z. Regole per vincoli semplici Esempio hx ∧ y = z ; x ∈ Dx , y ∈ Dy , z ∈ {1}i h ; x ∈ Dx ∩ {1}, y ∈ Dy ∩ {1}, z ∈ {1}i Possiamo scriverlo come: x ∧ y = z, z = 1 → x = 1, y = 1. Alcuni risolutori incompleti Regole BOOL EQU EQU EQU EQU 1 2 3 4 x x x x = y, x = y, y = y, x = y, y NOT NOT NOT NOT 1 2 3 4 ¬x ¬x ¬x ¬x =1→y =1→x =0→y =0→x = y, x = y, x = y, y = y, y =1 =1 =0 =0 =1→y =0→y =1→x =0→x =0 =1 =0 =1 Alcuni risolutori incompleti Regole BOOL AND AND AND AND AND AND OR OR OR OR OR OR 1 2 3 4 5 6 1 2 3 4 5 6 x x x x x x ∧ ∧ ∧ ∧ ∧ ∧ y y y y y y = z, x = z, x = z, y = z, x = z, y = z, z = 1, y = 1 → z = 1, z = 0 → y = 1, z = 0 → x =0→z =0 =0→z =0 = 1 → x = 1, y x x x x x x ∨ ∨ ∨ ∨ ∨ ∨ y y y y y y = z, x = z, x = z, x = z, y = z, y = z, z =1→z =1 = 0, y = 0 → z = 0, z = 1 → y = 0, z = 1 → x =1→z =1 = 0 → x = 0, y Alcuni risolutori incompleti =1 =0 =0 =1 =0 =1 =1 =0 Risultato di caratterizzazione Teorema Un CSP Booleano non fallito e’ consistente sugli iperarchi sse e’ chiuso sotto le applicazioni delle regole BOOL. Esempio: < x ∧ y = z; x ∈ {0, 1}, y ∈ {0, 1}, z = 0 > Questo CSP e’ chiuso rispetto alle regole ma non e’ risolto. Alcuni risolutori incompleti Vincoli lineari su intervalli di interi Consideriamo il linguaggio con due costanti 0 e 1, la funzione unaria meno “−”, due funzioni binarie “+” e “−”. Espressione lineare: un termine in questo linguaggio. Vincolo lineare: una formula s op t, dove s e t sono espressioni lineari e op ∈ {<, ≤, =, 6=, ≥, >}. Alcuni risolutori incompleti Vincoli lineari su intervalli di interi Abbreviazioni: Termini della forma a n, termini della forma 1| + .{z . . + 1} n volte . . + x} |x + .{z n volte a nx e lo stesso per −1 e −x. Alcuni risolutori incompleti Regole di disuguaglianza semplice SIMPLE DISEQUALITY 1 hx 6= y ; x ∈ [a..b], y ∈ [c..d]i h ; x ∈ [a..b], y ∈ [c..d]i dove b < c o d < a SIMPLE DISEQUALITY 2 hx 6= y ; x ∈ [a..b], y = ai h ; x ∈ [a + 1..b], y = ai SIMPLE DISEQUALITY 3 hx 6= y ; x ∈ [a..b], y = bi h ; x ∈ [a..b − 1], y = bi Alcuni risolutori incompleti Riduzione dei domini per vincoli di differenza Esempio intuitivo Consideriamo 3x + 4y − 5z ≤ 7 con x ∈ [lx ..hx ], y ∈ [ly ..hy ], z ∈ [lz ..hz ]. Riscriviamolo come 7 − 4y + 5z x≤ 3 Un qualsiasi valore di x che lo soddisfa soddisfa anche x≤ 7 − 4ly + 5hz 3 Cerchiamo soluzioni intere, quindi x ≤⌊ 7 − 4ly + 5hz ⌋ 3 Quindi possiamo ridurre [lx ..hx ] a [lx ..min(⌊ 7−4ly +5hz ⌋, hx )]. 3 Alcuni risolutori incompleti Regola generale per vincoli con ≤ LINEAR INEQUALITY: P P h i ∈POS ai xi − i ∈NEG ai xi ≤ b ; x1 ∈ [l1 ..h1 ], . . ., xn ∈ [ln ..hn ]i P P h i ∈POS ai xi − i ∈NEG ai xi ≤ b ; x1 ∈ [l1′ ..h1′ ], . . ., xn ∈ [ln′ ..hn′ ]i dove per j ∈ POS lj′ := lj , hj′ := min(hj , ⌊αj ⌋), per j ∈ NEG lj′ := max(lj , ⌈βj ⌉), hj′ := hj e αj := βj := b− P −b + i ∈POS−{j} ai li + aj P i ∈POS ai li − aj P i ∈NEG a i hi P i ∈NEG −{j} ai hi Alcuni risolutori incompleti Riduzione dei domini per vincoli con = LINEAR EQUALITY: P P h i ∈POS ai xi − i ∈NEG ai xi = b ; x1 ∈ [l1 ..h1 ], . . ., xn ∈ [ln ..hn ]i P P h i ∈POS ai xi − i ∈NEG ai xi = b ; x1 ∈ [l1′ ..h1′ ], . . ., xn ∈ [ln′ ..hn′ ]i dove per j ∈ POS: lj′ := max(lj , ⌈γj ⌉), hj′ := min(hj , ⌊αj ⌋), e per j ∈ NEG : lj′ := max(lj , ⌈βj ⌉), hj′ := min(hj , ⌊δj ⌋), e P P b − i ∈POS−{j} ai li + i ∈NEG ai hi αj := aj P P −b + i ∈POS ai li − i ∈NEG −{j} ai hi βj := aj P P b − i ∈POS−{j} ai hi + i ∈NEG ai li γj := aj P P −b + i ∈POS ai hi − i ∈NEG −{j} ai li δj := aj Alcuni risolutori incompleti Vincoli con < I vincoli s < t si possono rimpiazzare con s ≤ t e s 6= t. Alcuni risolutori incompleti Esempio: SEND + MORE = MONEY All’inizio: [S,E,N,D,M,O,R,Y] ∈ [0..9] Dopo la propagazione di vincoli: S = 9, E ∈ [4..7], N ∈ [5..8], D ∈ [2..8], M = 1, O = 0, R ∈ [2..8], Y ∈ [2..8]. 1. Usiamo le regole di trasformazione per trasformare il vincolo “SEND + MORE = MONEY”: 9000 · M + 900 · O + 90 · N + Y (91 · E + D + 1000 · S + 10 · R) = 0. 2. Applichiamo la regola di riduzione LINEAR EQUALITY : S = 9, E ∈ [0..9], N ∈ [0..9], D ∈ [0..9], M = 1, O ∈ [0..1], R ∈ [0..9], Y ∈ [0..9]. Usarla ancora non cambia niente. Alcuni risolutori incompleti 3. Applichiamo la regola SIMPLE DISEQUALITY a M 6= O per concludere O = 0. 4. Usiamo ripetutamente M = 1, O = 0, S = 9 e le regole di SIMPLE DISEQUALITY. Alla fine otteniamo S = 9, E ∈ [2..8], N ∈ [2..8], D ∈ [2..8], M = 1, O = 0, R ∈ [2..8], Y ∈ [2..8]. 5. 5 iterazioni della regola LINEAR EQUALITY portano a E ∈ [2..7], N ∈ [3..8], E ∈ [3..7], N ∈ [3..8], E ∈ [3..7], N ∈ [4..8], E ∈ [4..7], N ∈ [4..8], E ∈ [4..7], N ∈ [5..8]. Gli altri domini non sono modificati. La derivazione stabilizzante consiste di 24 passi. Il problema stabile non e’ risolto. Alcuni risolutori incompleti Vincoli aritmetici su intervalli interi Consideriamo il linguaggio con due costanti 0 e 1, la funzione unaria meno “−”, tre funzioni binarie “+”, “−”, e “·” (nuova). Vincolo aritmetico: una formula s op t, dove s e t sono termini e op ∈ {<, ≤, =, 6=, ≥, >}. Esempio x 5 · y 2 · z 4 + 3x · y 3 · z 5 ≤ 10 + 4x 4 · y 6 · z 2 − y 2 · x 5 · z 4 e’ un vincolo aritmetico. Alcuni risolutori incompleti Approccio basato su vincoli aritmetici atomici Vincolo aritmetico atomico: un vincolo lineare, x · y = z. Nota Ogni vincolo aritmetico puo’ essere ridotto ad una sequenza di vincoli atomici. Esempio regola di trasformazione Σni=1 mi op b Σni=1 vi op b, m1 = v1 , . . ., mn = vn dove v1 , . . ., vn sono variabili ausiliarie. Alcuni risolutori incompleti Moltiplicazione di intervalli X , Y insiemi di interi. moltiplicazione: X · Y := {x · y | x ∈ X , y ∈ Y }, Nota X , Y intervalli interi. X · Y non e’ necessariamente un intervallo. Esempio: [0..2] · [1..2] = {0, 1, 2, 4}. A: insieme di interi piu’ piccolo intervallo ⊇ A int(A) := Z se esiste altrimenti. Alcuni risolutori incompleti Regola per la moltiplicazione 1 MULTIPLICATION 1 hx · y = z ; x ∈ Dx , y ∈ Dy , z ∈ Dz i hx · y = z ; x ∈ Dx , y ∈ Dy , z ∈ Dz ∩ int(Dx · Dy )i Esempio Consideriamo hx · y = z ; x ∈ [0..2], y ∈ [1..2], z ∈ [4..6]i. int([0..2] · [1..2]) = [0..4] e [4..6] ∩ [0..4] = [4..4], quindi otteniamo hx · y = z ; x ∈ [0..2], y ∈ [1..2], z ∈ [4..4]i. Alcuni risolutori incompleti Regole per la moltiplicazione 2,3 Divisione di intervalli: Z /Y = {x ∈ Z | ∃y ∈ Y ∃z ∈ Z x · y = z}. Nota Z , Y intervalli interi. Z /Y non e’ necessariamente un intervallo. Esempio: [3..5]/[−1..2] = {−5, −4, −3, 2, 3, 4, 5}. MULTIPLICATION 2 hx · y = z ; x ∈ Dx , y ∈ Dy , z ∈ Dz i hx · y = z ; x ∈ Dx ∩ int(Dz /Dy ), y ∈ Dy , z ∈ Dz i MULTIPLICATION 3 hx · y = z ; x ∈ Dx , y ∈ Dy , z ∈ Dz i hx · y = z ; x ∈ Dx , y ∈ Dy ∩ int(Dz /Dx ), z ∈ Dz i Alcuni risolutori incompleti Esempio Consideriamo hx · y = z ; x ∈ [1..20], y ∈ [9..11], z ∈ [155..161]i. Applicando la regola MULTIPLICATION 2 abbiamo hx · y = z ; x ∈ [16..16], y ∈ [9..11], z ∈ [155..161]i dato che [155..161]/[9..11]) = [16..16] e [1..20] ∩ int([16..16]) = [16..16]. Applicando la regola MULTIPLICATION 3 otteniamo hx · y = z ; x ∈ [16..16], y ∈ [10..10], z ∈ [155..161]i dato che [155..161]/[16..16] = [10..10] e [9..11] ∩ int([10..10]) = [10..10]. Applicando la regola MULTIPLICATION 1 abbiamo hx · y = z ; x ∈ [16..16], y ∈ [10..10], z ∈ [160..160]i dato che [16..16] · [10..10] = [160..160] Alcuni risolutori incompleti e [155..161] ∩ int([160..160]) = [160..160]. Esempio Consideriamo hx · y = z ; x ∈ [3..10], y ∈ [−2..2], z ∈ [−155..161]i. Applicando la regola MULTIPLICATION 1 abbiamo hx · y = z ; x ∈ [3..10], y ∈ [−2..2], z ∈ [−20..20]i dato che int([3..10] · [−2..2]) = [−20..20] e [−155..161] ∩ [−20..20] = [−20..20]. Ora nessuna regola modifica i domini perche’ [−20..20] = int([3..10] · [−2..2]) [3..10] ⊆ int([−20..20]/[−2..2]) = Z [−2..2] ⊆ int([−20..20]/[3..10]) = [−6..6] Quindi il CSP e’ chiuso sotto l’applicazione delle regole. Alcuni risolutori incompleti