Alcuni risolutori incompleti

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