Programación por restricciones clase 10 Camilo Rueda Universidad Javeriana-Cali Programación por restriccionesclase 10-- p.1/23
Consistencia local Nodo consistencia Arco consistencia hiper-arco consistencia arco consistencia direccional Camino consistencia Camino consistencia direccional k-consistencia k-consistencia fuerte consistencia relacional Programación por restriccionesclase 10-- p.2/23
Nodo consistencia Un CSP es nodo consistente si para toda variable x, toda restricción unaria sobre x coincide con su dominio Ejemplos: Suponga que C no contiene restricciones unarias: < C, x 1 0,..., x n 0; x 1 N,..., x n N > es nodo consistente < C, x 1 0,..., x n 0; x 1 N,..., x n 1 N, x n Z > NO es nodo consistente NODO_CONS : < C; x D > < C; x C D > Programación por restriccionesclase 10-- p.3/23
Arco consistencia Una restricción C sobre x, y, con dominios X, Y (o sea, C X Y ) es arco consistente si a X b Y. (a, b) C b Y a X. (a, b) C un CSP es arco consistente si todas sus restricciones binarias lo son Ejemplos: < x < y; x [2.,6], y [3.,7] > es arco consistente < x < y; x [2.,7], y [3.,7] > no es arco consistente Programación por restriccionesclase 10-- p.4/23
Consideraciones Arco consistencia no implica consistencia Ejemplo: x = y, x y; x {a, b}, y {a, b} > Consistencia no implica arco consistencia Ejemplo: < x = y; x {a, b}, y {a} > Para algunos CSP s, arco consistencia SI implica consistencia Programación por restriccionesclase 10-- p.5/23
Reglas de prueba de AC AC1 : < C; x D x, y D y > < C; x D x, y D y > donde D x = {a D x b D y. (a, b) C} AC2 : < C; x D x, y D y > < C; x D x, y D y > donde D y = {b D y a D x. (a, b) C} NOTA: Un CSP es arco consistente ssi es cerrado bajo aplicación de AC1 y AC2 Programación por restriccionesclase 10-- p.6/23
Hiper-arco consistencia Una restricción C sobre x 1,..., x n, con dominios D 1,..., D n es hiper-arco consistente si i [1..n] a D i d C. a = d[x i ] un CSP es hiper-arco consistente si todas sus restricciones lo son Ejemplos: < x y = z; x = 1], y {0, 1}, z {0, 1} > es hiper-arco consistente < x y = z; x {0, 1}, y {0, 1}, z = 1 > no es hiper-arco consistente Programación por restriccionesclase 10-- p.7/23
Reglas de prueba de HAC HAC : < C; x 1 D 1,..., x n D n > < C;..., x i D i,... > donde C es restricción sobre x 1,..., x n y, para i [1..n], D i = {a D i d C. a = d[x i ]} NOTA: Un CSP es hiper-arco consistente ssi es cerrado bajo aplicación de HAC Programación por restriccionesclase 10-- p.8/23
Arco consistencia direccional Asumir un ordenamiento sobre las variables Una restricción C sobre x, y con dominios D x, D y es direccionalmente arco consistente c.ra. si a D x. b D y. (a, b) C, cuando x y b D y. a D x. (a, b) C, cuando y x Un CSP es arco consistente direccional si todas sus restricciones lo son. Ejemplo: < x < y; x [2.,7], y [3.,7] > es: NO arco consistente, direccionalmente arco consistente c.r.a. y x NO direccionalmente arco consistente c.r.a. x y Programación por restriccionesclase 10-- p.9/23
AC direccional (2) Definición: P es el problema P con las variables ordenadas de acuerdo a Ejemplo: Sea P el poblema x < y, y = z; x [2.,10], y [3.,7], z [3.,6] >, con y x z, entonces: P es: < y > x, y = z; y [3.,7], x [2.,10], z [3.,6] > NOTA: Un CSP P es direccionalmente arco consistente ssi el CSP P es cerrado bajo aplicación de la regla AC1 Programación por restriccionesclase 10-- p.10/23
Limitaciones de AC El problema: < x < y, y < z, z < x; x, y, z 1.,100000 > es inconsistente. Cuando se aplica AC1, se obtiene: < x < y, y < z, z < x; x 1.,99999, y, z 1.,100000 >, etc. Desventajas: Demasiados pasos El número de pasos depende del tamaño de los dominios Puede resolverse directamente: Usar transitividad de <. Camino consistencia generaliza este razonamiento a relaciones binarias arbitrarias. Programación por restriccionesclase 10-- p.11/23
CSP s normalizados Un CSP está normalizado si existe a lo sumo una restricción C x,y sobre x, y, para cada par de variables x, y. Para dos relaciones binarias R, S, recuerde que: R 1 = {(b, a) (a, b) R} (transposición) R; S = {(a, b) c. ((a, c) R (c, b) S} (composición) Programación por restriccionesclase 10-- p.12/23
Camino consistencia Un CSP normalizado es camino consistente si para cada subconjunto {x, y, z} de sus variables, se tiene que, C x,z C x,y ; C y,z De manera equivalente, un CSP normalizado es camino consistente ssi para cada subsecuencia x, y, z de sus variables: C x,y C x,z ; C 1 y,z C x,z C x,y ; C y,z C y,z C 1 x,y; C x,z Programación por restriccionesclase 10-- p.13/23
Camino consistencia: Ej < x < y, y < z, x < z; x [0.,4], y [1.,5], z [6.,10] > es camino consistente: C x,y = {(a, b) a < b, a [0.,4], b [1.,5]} C x,z = {(a, c) a < c, a [0.,4], c [6.,10]} C y,z = {(b, c) b < c, c [6.,10], b [1.,5]} Programación por restriccionesclase 10-- p.14/23
Camino consistencia: Ej2 < x < y, y < z, x < z; x [0.,4], y [1.,5], z [5.,10] > NO es camino consistente: C x,z = {(a, c) a < c, a [0.,4], c [5.,10]} y para 4 [0.,4] y 5 [5.,10], no hay b [1.,5] tal que 4 < b b < 5 Programación por restriccionesclase 10-- p.15/23
CC, Reglas CC1 : C x,y, C x,z, C y,z C x,y, C x,z, C y,z Donde C x,y = C x,y C x,z ; C 1 y,z CC2 : C x,y, C x,z, C y,z C x,y, C x,z, C y,z Donde C x,z = C x,z C x,y ; C y,z CC3 : C x,y, C x,z, C y,z C x,y, C x,z, C y,z Donde C y,z = C y,z C 1 x,y; C x,z Programación por restriccionesclase 10-- p.16/23
CC direccional Un CSP normalizado es direccionalmente camino consistente si para cada subconjunto {x, y, z} de sus variables, se tiene que, C x,z C x,y ; C y,z cuando x, z y De manera equivalente, un CSP normalizado es direccionalmente camino consistente ssi para cada subsecuencia x, y, z de sus variables: C x,y C x,z ; C 1 y,z cuando x, y z C x,z C x,y ; C y,z cuando x, z y C y,z C 1 x,y; C x,z cuando y, z x Programación por restriccionesclase 10-- p.17/23
CCD: Ej < x < y, y < z, x < z; x [0.,4], y [1.,5], z [5.,10] > Entonces, C x,y = {(a, b) a < b, a [0.,4], b [1.,5]} C x,z = {(a, c) a < c, a [0.,4], c [5.,10]} C y,z = {(b, c) b < c, c [5.,10], b [1.,5]} Es direccionalmente CC con respecto al orden en que x, y z Es direccionalmente CC con respecto al orden en que y, z x Un CSP es direccionalmente CC c.r.a ssi P es cerrado bajo aplicación de la regla CC1 Programación por restriccionesclase 10-- p.18/23
Instanciación Instanciación: Función que asigna un valor de su dominio a cada variable de un subconjunto de las variables de P Notación: {(x 1, d 1 ),..., (x k, d k )} La instanciación I = {(x 1, d 1 ),..., (x k, d k )} satisface C (sobre variables x 1,..., x k ) si (d 1,..., d k ) C Denotamos I Y, con Y dom(i), la restricción de I a Y I con dominio X es consistente si para toda restricción C (sobre variables Y, con Y X) de P, se tiene que I Y satisface C. Una I consistente, con k variables, se dice k-consistente. I es solución a P si es consistente y dom(i) = V ars(p) Programación por restriccionesclase 10-- p.19/23
Ejemplo Considere: P =< x < y, y < z, x < z; x [0.,4], y [1.,5], z [5.,10] > y sea I = {(x, 0), (y, 5), (z, 6)} I {x, y} = {(x, 0), (y, 5)} satisface x < y I {x, z} = {(x, 0), (z, 6)} satisface x < z I {y, z} = {(y, 5), (z, 6)} satisface y < z O sea que I es 3-consistente y solución a P Programación por restriccionesclase 10-- p.20/23
k consistencia Un CSP es 1-consistente si es nodo consistente Un CSP es k-consistente (para k > 1) si cada instanciación (k 1)-consistente puede extenderse a una instanciación k consistente, sin importar cuál nueva variable se escoja. Observar que: Un CSP nodo consistente es arco consistente si es 2-consistente Un CSP binario, normalizado y nodo consistente, es camino consistente si es 3-consistente Programación por restriccionesclase 10-- p.21/23
k consistencia (2) Existe un CSP que es (k 1)-consistente, pero no k-consistente < x y, x z, y z; x [0.,1], y [0.,1], z [0.,1] >, para k = 3 Existe un CSP que no es (k 1)-consistente, pero es k-consistente < x 1 x 2, x 1 x 3 ; x 1 {a, b}, x 2 = a, x 3 = a,...x k = a >, La instanciación (k 2)-consistente {(x 1, a), (x 4, a), (x 5, a),..., (x k, a) no puede extenderse, pero toda instanciación (k 1)-consistente es extendible. Programación por restriccionesclase 10-- p.22/23
Tarea implemente nodo, arco y camino consistencia. Pruebe los efectos de los anterior en SEND+MORE=MONEY Programación por restriccionesclase 10-- p.23/23