Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase...
Transcript of Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase...
Programacion porrestricciones
clase 8Camilo Rueda
Universidad Javeriana-Cali
Programacion por restriccionesclase 8-- p.1/19
Resolvedores completos(cont)
Ecuaciones lineales sobre reales
• Alfabeto• Cada real es una constante. Para cada real r, una función
unaria r.
• Símbolo binario de función +
• Expresiones lineales y ecuaciones• Expresiones: un término en este alfabeto• Ecuaciones: s = t, para s, t expresiones lineales
Programacion por restriccionesclase 8-- p.2/19
Formas normalesAsumir un ordenamiento ≺ sobre las variables
• Expresiones lineales en forma normal:∑n
i=1 aixi + r, donde n ≥ 0 y x1, ..., xn ordenadas c.r.a ≺
• Ecuaciones lineales en forma pivotex = t, si x 6∈ V ar(t) y t en forma normal
• cada ecuación puede reescribirse (normaliza) en una únicaecuación lineal en forma normal
Ejemplo: 3x− 1,2 ∗ (2 + 2,5y)− 2x + 5 se reescribe en forma normal:
x− 3y + 2,6
Programacion por restriccionesclase 8-- p.3/19
Formas normales (2)• La ecuación z = 2x + 3y + 4 es su propia forma pivote
• La ecuación 4x + 3,5y = 3x− 1,2 ∗ (2 + 2,5y)− 2x + 5 normalizaen:3x + 6,5y = 2,6 y tiene dos formas pivote:x = −6,5
3 y + 2,63 , y = − 3
6,5x + 2,63
• La ecuación x + 1 + y = x + y + 1 normaliza en 0 = 0, luego notiene forma pivote
Programacion por restriccionesclase 8-- p.4/19
Sustituciones• Sustituciones: proyecciones finitas de variables en expresiones
lineales en forma normal.Se asigna a cada variable x una expresión lineal en su dominio,diferente de x.
• Aplicación de una sustitución a una expresión lineal: Como enunificación
• Dadas: sustituciones θ, η, θη es su composición:η(x) = norm((xθ)η)
• θ es unificador de s = t si sθ = tθ normaliza a 0 = 0
• UMA: Definido como antes
Programacion por restriccionesclase 8-- p.5/19
Formas pivote• Tres tripos de formas pivote:
1. 0 = 0
2. 0 = r, con r un real distinto de 0
3.∑n
i=1 aixi = r, donde n > 0
• Formas pivote de ecuaciones lineales• cada ecuación e normaliza a su forma normal• Si es del tipo 1 o 2, no tiene forma pivote• Si es de la forma 3, entonces cada ecuación
xj =∑
i∈[1..j−1]∪[j+1..n]−ai
ajxi + r
aj
es un forma pivote de e
Programacion por restriccionesclase 8-- p.6/19
Sistema de pruebanorm(s): Forma normal de s, estand(s = t) ≡ norm(s) = norm(t)
ELIMINAR :s = v
si s=v normaliza en 0 = 0
FALLA :s = v
⊥
si s=v normaliza en 0 = r y r 6= 0
Programacion por restriccionesclase 8-- p.7/19
Sistema de prueba (cont)
SUSTITUCION :s = v, E
x = t, estand(E{x/t})
donde x = t es forma pivote de s = t
Note que no se exige que x ∈ E
Programacion por restriccionesclase 8-- p.8/19
Ejemplo{x− y = 1,−x + y = 1, x = 0}
aplicar sustitución:
{−y = 1,−x + y = 1, x = 0}
Aplicar sustitución {x = −2, y = x + 1, x = 0}
Aplicar sustitución 0 = −2, y = x + 1, x = 0
Aplicar FALLA: {⊥, y = x + 1, x = 0}
Programacion por restriccionesclase 8-- p.9/19
Ejemplo{x− y = 1,−x + y = 1, x = 0}
aplicar sustitución: {−y = 1,−x + y = 1, x = 0}
Aplicar sustitución
{x = −2, y = x + 1, x = 0}
Aplicar sustitución 0 = −2, y = x + 1, x = 0
Aplicar FALLA: {⊥, y = x + 1, x = 0}
Programacion por restriccionesclase 8-- p.9/19
Ejemplo{x− y = 1,−x + y = 1, x = 0}
aplicar sustitución: {−y = 1,−x + y = 1, x = 0}
Aplicar sustitución {x = −2, y = x + 1, x = 0}
Aplicar sustitución
0 = −2, y = x + 1, x = 0
Aplicar FALLA: {⊥, y = x + 1, x = 0}
Programacion por restriccionesclase 8-- p.9/19
Ejemplo{x− y = 1,−x + y = 1, x = 0}
aplicar sustitución: {−y = 1,−x + y = 1, x = 0}
Aplicar sustitución {x = −2, y = x + 1, x = 0}
Aplicar sustitución 0 = −2, y = x + 1, x = 0
Aplicar FALLA:
{⊥, y = x + 1, x = 0}
Programacion por restriccionesclase 8-- p.9/19
Ejemplo{x− y = 1,−x + y = 1, x = 0}
aplicar sustitución: {−y = 1,−x + y = 1, x = 0}
Aplicar sustitución {x = −2, y = x + 1, x = 0}
Aplicar sustitución 0 = −2, y = x + 1, x = 0
Aplicar FALLA: {⊥, y = x + 1, x = 0}
Programacion por restriccionesclase 8-- p.9/19
Eliminación Gauss-Jordan• Reglas de prueba LIN
• Toda aplicación de SUSTITUCION es global, con la condiciónx ∈ V ar(E)
TEOREMA:
• Gauss-Jordan siempre termina
• Si E tiene solución, GJ termina con un conjunto de ecuacionesque determina un UMA de E
• De lo contrario, GJ termina con un conjunto que contiene ⊥
Programacion por restriccionesclase 8-- p.10/19
Ejemplo
−x1 + x2 + x3 + 2x4 − x5 = 4
x1 + x2 − x3 − 4x4 + 3x5 = 0
x1 − x2 + x3 − 3x5 = 2
x1 = x2 + x3 + 2x4 − x5 − 4
2x2 − 2x4 + 2x5 = 4
2x3 + 2x4 − 4x5 = 6
etc.
Programacion por restriccionesclase 8-- p.11/19
Ejemplo
−x1 + x2 + x3 + 2x4 − x5 = 4
x1 + x2 − x3 − 4x4 + 3x5 = 0
x1 − x2 + x3 − 3x5 = 2
x1 = x2 + x3 + 2x4 − x5 − 4
2x2 − 2x4 + 2x5 = 4
2x3 + 2x4 − 4x5 = 6
etc.
Programacion por restriccionesclase 8-- p.11/19
Eliminación Gaussiana• Fase hacia adelante: Tomar repetidamente la primera ecuación
aún no considerada de la izquierda• Si ELIMINAR aplicable: elimine la ecuación y considere la
siguiente• Si FALLA aplicable: termine• Si SUSTITUCION aplicable: Aplicarla tomando como E el
conjunto de ecuaciones a la derecha de la actual.
• Fase hacia atrás
• Tomar la siguiente ecuación aún no considerada, de la derecha
• Aplicar SUSTITUCION, tomando como E el conjunto deecuaciones a la izquierda de la actual.
Programacion por restriccionesclase 8-- p.12/19
Consistencia local• Nodo consistencia
• Arco consistencia
• hiper-arco consistencia
• arco consistencia direccional
• Camino consistencia
• Camino consistencia direccional
• k-consistencia
• k-consistencia fuerte
• consistencia relacional
Programacion por restriccionesclase 8-- p.13/19
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, x1 ≥ 0, ..., xn ≥ 0; x1 ∈ N , ..., xn ∈ N > es nodoconsistente
• < C, x1 ≥ 0, ..., xn ≥ 0; x1 ∈ N , ..., xn−1 ∈ N , xn ∈ Z > NO esnodo consistente
NODO_CONS :< C; x ∈ D >
< C; x ∈ C ∩D >
Programacion por restriccionesclase 8-- p.14/19
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 loson
• Ejemplos:< x < y; x ∈ [2.,6], y ∈ [3.,7] > es arco consistente< x < y; x ∈ [2.,7], y ∈ [3.,7] > no es arco consistente
Programacion por restriccionesclase 8-- p.15/19
Consideraciones• Arco consistencia no implica consistencia
Ejemplo: x = y, x 6= y; x ∈ {a, b}, y ∈ {a, b} >
• Consistencia no implica arco consistenciaEjemplo: < x = y; x ∈ {a, b}, y ∈ {a} >
• Para algunos CSP’s, arco consistencia SI implica consistencia
Programacion por restriccionesclase 8-- p.16/19
Reglas de prueba de AC
AC1 :< C; x ∈ Dx, y ∈ Dy >
< C; x ∈ D′
x, y ∈ Dy >
donde D′
x = {a ∈ Dx | ∃b ∈ Dy . (a, b) ∈ C}
AC2 :< C; x ∈ Dx, y ∈ Dy >
< C; x ∈ Dx, y ∈ D′
y >
donde D′
y = {b ∈ Dy | ∃a ∈ Dx . (a, b) ∈ C}
NOTA: Un CSP es arco consistente iff es cerrado bajo aplicación de
AC1 y AC2
Programacion por restriccionesclase 8-- p.17/19
Ejemplo: Crucigrama
1 2 3
N N N
N 4 5
6 N 7
8
N N N
HOSES, LASER, SAILS,SHEET, STEER, HEEL, HIKE, KEEL, KNOT,
LINE, AFT, ALE, EEL, LEE, TIE
Programacion por restriccionesclase 8-- p.18/19
Ejemplo
8
HOSESLASERSAILSSHEETSTEER
HOSESLASERSAILSSHEETSTEER
HEELHIKEKEELKNOTLINE
HOSESLASERSAILSSHEETSTEER
AFTALEEELLEETIE
HEELHIKEKEELKNOTLINE
HOSESLASERSAILSSHEETSTEER
AFTALEEELLEETIE
1 2
34
5
7
6
Programacion por restriccionesclase 8-- p.19/19
Hiper-arco consistencia• Una restricción C sobre x1, ..., xn, con dominios D1, ..., Dn es
hiper-arco consistente si• ∀i ∈ [1..n]∀a ∈ Di ∃d ∈ C . a = d[xi]
• ∀b ∈ Y ∃a ∈ X . (a, b) ∈ C
• 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-arcoconsistente< x ∧ y = z; x ∈ {0, 1}, y ∈ {0, 1}, z = 1 > no es hiper-arcoconsistente
Programacion por restriccionesclase 8-- p.20/19
Reglas de prueba de HAC
HAC :< C; x1 ∈ D1, ..., xn ∈ Dn >
< C; ..., xi ∈ D′
i, ... >
donde C es restricción sobre x1, ..., xn y, para i ∈ [1..n],D′
i = {a ∈ Di | ∃d ∈ C . a = d[xi]}
NOTA: Un CSP es hiper-arco consistente iff es cerrado bajo aplicación
de HAC
Programacion por restriccionesclase 8-- p.21/19