Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase...

26
Programaci ´ on por restricciones clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci ´ on por restriccionesclase 8-- p.1/19

Transcript of Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase...

Page 1: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

Programacion porrestricciones

clase 8Camilo Rueda

Universidad Javeriana-Cali

Programacion por restriccionesclase 8-- p.1/19

Page 2: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 3: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 4: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 5: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 6: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 7: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 8: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 9: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 10: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 11: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 12: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 13: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 14: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 15: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 16: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 17: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 18: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 19: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 20: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 21: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 22: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 23: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 24: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

Ejemplo

8

HOSESLASERSAILSSHEETSTEER

HOSESLASERSAILSSHEETSTEER

HEELHIKEKEELKNOTLINE

HOSESLASERSAILSSHEETSTEER

AFTALEEELLEETIE

HEELHIKEKEELKNOTLINE

HOSESLASERSAILSSHEETSTEER

AFTALEEELLEETIE

1 2

34

5

7

6

Programacion por restriccionesclase 8-- p.19/19

Page 25: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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

Page 26: Programaci´on por restricciones clase 8atlas.puj.edu.co/~crueda/Restricciones/clase8.pdf · clase 8 Camilo Rueda Universidad Javeriana-Cali Programaci´on por restriccionesclase

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