Programación por Restricciones Clase 2 Camilo Rueda Universidad Javeriana-Cali Programación por RestriccionesClase 2-- p.1/16 CP Estrategia alternativa de programación Descansa sobre combinación de razonamiento y computación Restricción sobre variables: relación sobre sus dominios CSP: Un conjunto finito de restricciones Programación por RestriccionesClase 2-- p.2/16 CP Estrategia alternativa de programación Descansa sobre combinación de razonamiento y computación Restricción sobre variables: relación sobre sus dominios CSP: Un conjunto finito de restricciones El camino de la programación por restricciones: Formular el problema como CSP (modelamiento) Resolverlo usando: Métodos específicos de un dominio Métodos generales Programación por RestriccionesClase 2-- p.2/16 Resolver un CSP Determinar si tiene una solución (es consistente) Encontrar una solución Encontrar todas las soluciones Encontrar una solución optimal Encontrar todas las soluciones optimales Programación por RestriccionesClase 2-- p.3/16 Métodos específicos para un dominio Algoritmos especializados (resolvedores de restricciones) Ejemplos: Resolvedores de ecuaciones lineales Paquetes de programación lineal Implementación del algoritmo de unificación Programación por RestriccionesClase 2-- p.4/16 Métodos específicos para un dominio Algoritmos especializados (resolvedores de restricciones) Ejemplos: Resolvedores de ecuaciones lineales Paquetes de programación lineal Implementación del algoritmo de unificación Métodos generales Algoritmos de propagación de restricciones Métodos de búsqueda Programación por RestriccionesClase 2-- p.4/16 Características básicas de CP Proceso de programación de dos fases Generación de la representación del problema como CSP Resolverlo Representación flexible: Las restricciones se pueden agregar, remover o modificar Ofrece soporte en forma de built-ins: Resolvedores de restricciones Algoritmos de propagación métodos de búsqueda Programación por RestriccionesClase 2-- p.5/16 La noción de CSP Dados: Variables: Y = y1 , y2 , ..., yk Dominios: D1 , D2 , ..., Dk Restricción C sobre Y : Subconjunto de D1 × D2 × ... × Dk Dados: variables x1 , ..., xn , Dominios D1 , ..., Dn , Problema de satisfacción de restricciones (CSP): P = {C; x1 ∈ D1 , ..., xn ∈ Dn } C: restricciones, sobre subsecuencias de x1 , ..., xn (d1 , ..., dn ) ∈ D1 × ... × Dn es solución de P si para cada restricción C ∈ C sobre xi1 , ..., xim (di1 , ..., dim ) ∈ C Programación por RestriccionesClase 2-- p.6/16 Ejemplo: SEND+MORE=MONEY Reemplazar cada letra por un dígito, tal que: SEND + MORE MONEY Solución única: 9567 + 1085 10652 Variables: S, E, N, D, M, O, R, Y Dominios: [1.,9] para S, M [0.,9] para E, N, D, O, R, Y Programación por RestriccionesClase 2-- p.7/16 Alternativas para restricciones Una restricción de igualdad 1000.S + 100.E + 10.N + D 1000.M + 100.O + 10.R + E = 10000.M + 1000.O + 100.N + 10.E + Y 5 restricciones de igualdad Usar variables de carry, C1 , ..., C4 ∈ [0.,1] Programación por RestriccionesClase 2-- p.8/16 Alternativas para restricciones Una restricción de igualdad 1000.S + 100.E + 10.N + D 1000.M + 100.O + 10.R + E = 10000.M + 1000.O + 100.N + 10.E + Y 5 restricciones de igualdad Usar variables de carry, C1 , ..., C4 ∈ [0.,1] D + E = 10.C1 + Y , C1 + N + R = 10.C2 + E, C2 + E + O = 10.C3 + N , C3 + S + M = 10.C4 + O, C4 = M Programación por RestriccionesClase 2-- p.8/16 Alternativass para inecuaciones 1. 2. 3. 28 restricciones x 6= y para x, y ∈ {S, E, N, D, M, R, O, Y } (en orden) Una sola restricción AllDif f erent(x1 , ..., xn ) = {(d1 , ..., dn )|di 6= dj para i 6= j} Modelarlo como problema de programación entera: Transformar x 6= y en: x − y ≤ 10 − 11zx,y , y − x ≤ 11zx,y − 1, donde zx,y ∈ [0.,1] Desventaja: 28 nuevas variables Programación por RestriccionesClase 2-- p.9/16 ZEBRA Una calle tiene 5 casas de color diferente. Cinco hombres de diferente nacionalidad viven en ellas. Cada hombre tiene una profesión diferente. Cada hombre prefiere una bebida diferente. Cada uno tiene una mascota diferente Programación por RestriccionesClase 2-- p.10/16 ZEBRA (2) El inglés vive en la casa roja. El español tiene un perro El japonés es pintor. El italiano toma té El noruego vive en la primera casa de la izquierda El dueño de la casa verde bebe café La casa verde está a la derecha de la casa blanca El escultor cría caracoles. El diplomático vive en la casa amarilla Se toma leche en la casa del medio El noruego vive al lado de la casa azul. El violinista toma jugo de fruta El zorro está en la casa junto a la del médico El caballo está en la casa junto a la del diplomático Quién tiene la zebra? quién bebe agua? Programación por RestriccionesClase 2-- p.11/16 ZEBRA(3) 25 variables Nacionalidad: inglés, español, japonés, italiano, noruego mascota: perro, caracol, zorro, caballo, zebra profesión: pintor, escultor, diplomático, violinista, médico bebe: te, café, leche, jugo, agua color: roja, verde, blanca, amarilla, azul, Dominios: [1.,5] Restricciones: AllDif f erent(rojo, verde, blanca, amarilla, azul) AllDif f erent(ingles, espanol, ..., noruego) AllDif f erent(pintor, ..., medico) AllDif f erent(te, caf e, leche, jugo, agua) Programación por RestriccionesClase 2-- p.12/16 Restricciones Zebra(2) El inglés vive en la casa roja: ingles = rojo El español tiene un perro: espanol = perro El japonés es pintor: japones = pintor El italiano bebe té: italiano = te El noruego vive en la primera casa a la izquierda: noruego = 1 El dueño de la casa verde bebe café:verde = caf e la casa verde está a la derecha de la casa blanca: verde = blanco + 1 El escultor cría caracoles: escultor = caracol El diplomático vive en la casa amarilla: diplomatico = amarilla Se bebe leche en la casa del medio:leche = 3 El noruego vive al lado de la casa azul: |noruego − azul| = 1 El violinista bebe jugo:violinista = jugo Programación por RestriccionesClase 2-- p.13/16 Zebra restricciones(3) El zorro está en la casa al lado del médico:|zorro − medico| = 1 El caballo está en la casa al lado del diplomático: |diplomatico − caballo| = 1 Programación por RestriccionesClase 2-- p.14/16 Crucigrama 1 2 3 N N N N 4 5 6 N 7 N N 8 N Llenar con palabras de las siguientes: HOSES, LASER, SAILS, SHEET, STEER HEEL, HIKE, KEEL, KNOT, LINE AFT, ALE, EEL, LEE, TIE Programación por RestriccionesClase 2-- p.15/16 Crucigrama (2) Variables: x1 , ..., x8 Dominios: x7 ∈ {AF T, ALE, EEL, LEE, T IE}, etc. Restricciones: Una por cruce: C1,2 = {(HOSES, SAILS), (HOSES, SHEET ), (HOSES, ST EER), (LASER, SAILS), (LASER, SHEET ), (LASER, ST EER)}. etc Programación por RestriccionesClase 2-- p.16/16