Tema 5: Problemas de satisfacción de restricciones



Documentos relacionados
Problemas de Satisfacción de Restricciones

Restricciones. Inteligencia Artificial. Ingeniería Superior en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani

Satisfacción de Restricciones

Tema 3: Problemas de Satisfacción de Restricciones

Problemas de satisfacción de restricciones.

Resolución de Problemas

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Hoja de Problemas Tema 6 Búsqueda con estados estructurados: Restricciones

Capítulo 12: Indexación y asociación

Ingeniería en Informática

Mantenimiento Limpieza

SERVICIO DE CONSULTORÍA DE CALIDAD PARA CLÍNICAS DENTALES

Espacios generados, dependencia lineal y bases

Capitulo V Administración de memoria

OPERACIONES EN RÉGIMEN DE COMPUESTA

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1

Ampliación de Estructuras de Datos

Problemas de Satisfacción de Restricciones

NORMA ISO 9001:2008. SISTEMAS DE GESTIÓN DE CALIDAD. REQUISITOS

Una (muy) breve introducción a la teoría de la computación

Búsqueda heurística Prof. Constantino Malagón

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Estructuras de datos: Proyecto 2

Bases de datos en Excel

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

Problemas de satisfacción de restricciones. Javier Ramírez Rodríguez Departamento de Sistemas Universidad Autónoma Metropolitana

Capítulo 9. Archivos de sintaxis

Manual de la aplicación de seguimiento docente en la UJI

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

Ecuaciones de primer grado con dos incógnitas

El modelo de ciclo de vida cascada, captura algunos principios básicos:

CATÁLOGO DE INFERENCIAS

El palacio de la Alhambra: La primera expansión. El favor de los visires

DOMAIN NAME SYSTEM DNS

circuitos digitales Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso

Algoritmos sobre Grafos

Métodos Heurísticos en Inteligencia Artificial

Guía de Preparación de Muestras para PLASTICOS para el Software de Formulación de Datacolor

SEGUIMIENTO Y CONTROL DE PROYECTOS MÉTODO P.E.R.T. REVISADO Y ACTUALIZADO - ADDFORMACION

7. Conclusiones. 7.1 Resultados

Tipos Abstractos de Datos

PREPROCESADO DE DATOS PARA MINERIA DE DATOS

Elementos requeridos para crearlos (ejemplo: el compilador)

Descripción inicial del sistema. Descripción final del sistema. Estado 1 Estado 2 Estado n

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Análisis de los datos

Materia: Informática. Nota de Clases Sistemas de Numeración

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Gestión de la Prevención de Riesgos Laborales. 1

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

4.4.1 Servicio de Prevención Propio.

1. Que es un nombre de dominio? Es un conjunto de caracteres alfanuméricos utilizados para identificar una computadora determinada en Internet.

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

SEGURIDAD Y PROTECCION DE FICHEROS

Diseño de bases de datos Diapositiva 1

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322

GENERACIÓN DE TRANSFERENCIAS

Árboles AVL. Laboratorio de Programación II

Alineamiento. Cognitens-WLS400M

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

El proyecto realizado consiste en un resolutor de sudokus mediante CSP.

SISTEMAS Y MANUALES DE LA CALIDAD

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

MÉTODOS DE ELIMINACIÓN Son tres los métodos de eliminación más utilizados: Método de igualación, de sustitución y de suma o resta.

Resumen de técnicas para resolver problemas de programación entera Martes, 9 de abril. Enumeración. Un árbol de enumeración

Fundamentos del diseño 3ª edición (2002)

Aplicación de la inteligencia artificial a la resolución del problema de asignación de estudiantes del departamento de PDI

Operación 8 Claves para la ISO

DESARROLLO DE SOFTWARE DEFINICIÓN GENERAL DEL PROCESO GABY LORENA GUERRERO LEYDI ROCIO ERAZO PABLO FELIPE MIRANDA WALTER ALEXIS ANTE

Control Estadístico de Procesos

Generación de números aleatorios

Universidad Nacional de Quilmes Ing. en Automatización y Control Industrial Cátedra: Visión Artificial Agosto de 2005

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

PROBABILIDADES Y ESTADÍSTICA (C) Práctica 2

MANUAL DE AUTOMATRÍCULA

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS

Capítulo 2. Técnicas de procesamiento digital de imágenes y reconocimiento de patrones.

PARTE 3 ECUACIONES DE EQUIVALENCIA FINANCIERA T E M A S

Nota de Información al cliente Auditoría Multisede

Cap. 24 La Ley de Gauss

1. Objetivos. 2. Idea Principal. Teoría de Autómatas y Lenguajes Formales. Boletín de Autoevaluación 3: Cómo se minimiza un AFD?.

PROBABILIDADES Y ESTADÍSTICA (C) Práctica 2

1. Lección 10 - Operaciones Financieras - Introducción a los préstamos

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Estimado usuario. Tabla de Contenidos

Módulo Presupuesto SP 3.0

GUÍA METODOLÓGICA PARA LA REALIZACIÓN DE PROCEDIMIENTOS DOCUMENTADOS DE SISTEMAS DE GESTIÓN

Prácticas PGSI. Práctica 4. Gestión de las Cargas de Trabajo de los Recursos y Delimitaciones de Tareas

Manual de ayuda. Índice: 1. Definición.. Pág Conceptos básicos... Pág Navegación.. Pág Operativa más habitual.. Pág.

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Búsqueda Heurística IV

x

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

innovadora y simple tres etapas Inicial, Intermedia y Final

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

Transcripción:

Tema 5: Problemas de satisfacción de restricciones José Luis uiz eina José Antonio Alonso Franciso J. Martín Mateos María José Hidalgo Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Inteligencia Artificial I, 2012

Índice PSs: representación Backtracking Consistencia de arcos eparación heurística

Problema de Satisfacción de estricciones Un problema de satisfacción de restricciones (PS) viene definido por los siguientes elementos: Un conjunto finito de variables X 1,...,X n Un conjunto finito de dominios D i asociados a cada variable X i, especificando los posibles valores que puede tomar Un conjunto finito de restricciones C 1,...,C m, que definen una serie de propiedades que deben verificar los valores asignados a las variables Una solución al problema es una asignación de valores a las variables {X 1 = v 1,...,X n = v n } tal que v i D i y se verifican las restricciones Esta formulación permite una representación simple del problema, y el uso de heurísticas de propósito general, independientes del problema

Tipos de Problemas de Satisfacción de estricciones Clasificación según el tipo de restricciones: estricciones de obligación (hard constraints). estricciones de preferencia (soft constraints). Clasificación según los dominios: Dominios discretos (finitos o infinitos). Dominios continuos. Clasificación según el número de variables implicadas en las restricciones: estricciones binarias. estricciones múltiples.

Ejemplo: N reinas Situar N reinas en un tablero de ajedrez de tamaño N N de forma que no se den jaque mutuamente. Variables: V 1,...,V N Dominios: D i = {1,...,N} estricciones: Jaque horizontal: V i V j Jaque diagonal: V i V j i j Ejemplo (V 1 = 1, V 2 = 3): Problema con dominios finitos y restricciones binarias (de obligación).

Ejemplo: coloreado de mapas Usando tres colores (rojo,azul,verde) colorear el mapa de Andalucía: CO JA SE HU G MA AL CA Variables: Huelva, Cádiz, Sevilla, Córdoba, Málaga, Jaen, Granada, Almería Dominios: {rojo, azul, verde} estricciones: P Q, para cada par de provincias vecinas P y Q Problema con dominios finitos y restricciones binarias (de obligación).

Ejemplo: satisfacibilidad proposicional Problema SAT (para cláusulas): Dado un conjunto de variables proposicionales L = {p 1,...,p n } y un conjunto de cláusulas proposicionales {C 1,...,C m } formadas con los símbolos de L, determinar si existe una asignación de valores de verdad a los símbolos de L de manera que se satisfagan todan las cláusulas Variables: {p 1,...,p n } Dominios: {T, F} (booleanos) estricciones: {C 1,...,C m } Problema con dominios finitos y restricciones múltiples (de obligación). Problema NP-completo Por tanto, en el peor caso, no es posible resolver PSs con dominios finitos en tiempo polinomial (si P NP).

Ejemplo: criptoaritmética Asignar valores del 1 al 8 a cada letra de manera que: (C1 C2 C3) I D E A I D E A M E N T E Variables: I, D, E, A, M, N, T, C 1, C 2, C 3 Dominios: {1,...,8} para I, D, E, A, M, N, T y {0, 1} para C 1, C 2, C 3 estricciones: Primera suma: 2 A = (10 C 3 ) + E Segunda suma: (2 E) + C 3 = (10 C 2 ) + T Tercera suma: (2 D) + C 2 = (10 C 1 ) + N Cuarta suma: (2 I) + C 1 = (10 M) + E Problema con dominios finitos y restricciones múltiples (de obligación). +

Ejemplo: asignación de tareas Asignar tareas a empleados de acuerdo con su capacidad para desarrollarlas Tabla de capacidades (C i ): T 1 T 2 T 3 E 1 1 3 2 E 2 3 2 1 E 3 2 3 1 Variables: E i Dominios: D i = {T 1,...,T n } estricciones: Obtener la mejor n i=1 C i Problema con dominios finitos y restricciones múltiples (de preferencia).

Ejemplo: planificación de corte Encontrar la manera de situar patrones de corte en una pieza de cartón. Variables: P 1, P 2, P 3, P 4 (piezas) Dominios: Coordenadas en el plano. estricciones: Las piezas no deben superponerse. Problema con dominios continuos y restricciones binarias (de obligación).

Problemas de Satisfacción de estricciones En este tema, trataremos PSs: Con dominios finitos Con restricciones binarias de obligación Todo problema con restricciones múltiples se puede reducir a uno equivalente con restricciones binarias epresentación en forma de grafo de un PS: SE=CO CO CO=JA JA HU=SE SE SE=MA CO=MA CO=G JA=G HU HU=CA CA CA=SE CA=MA MA MA=G G G=AL AL

Implementación de la representación de un PS Variables: estructura con nombre + dominio Funciones de acceso: PS-VA-NOMBE y PS-VA-DOMINIO La variable global * VAIABLES* contiene a todas las variables del PS estricciones: estructura con los nombres de las variables involucradas + función Funciones de acceso: PS-EST-VAIABLES y PS-EST-FUNCION La variable global * ESTICCIONES* contiene todas las restricciones del PS

PS como problema de espacio de estados Estados: Asignaciones parciales (y consistentes con las restricciones) de valores a variables: {X i1 = v i1,...,x ik = v ik } Estado inicial: {} Estados finales: asignaciones completas Operadores: Asignar un valor (de su dominio) a una variable no asignada en el estado Aplicabilidad: la asignación resultante tiene que ser consistente Soluciones mediante búsqueda en profundidad Puesto que las soluciones están a una profundidad fija (igual al número de variables), profundidad es preferible a anchura

Simplificaciones en la búsqueda El orden en el que se aplican los operadores es irrelevante para la solución final (conmutatividad) Por tanto, los operadores puden reducirse a considerar las posibles asignaciones a una única variable no asignada El camino hacia la solución no es importante No necesitamos la estructura de nodo No necesitamos una representación explícita para los operadores No es posible repetir un estado durante la búsqueda: No es necesario realizar comprobaciones para evitar repeticiones Es decir, no es necesario tener una lista CEADOS con las asignaciones parciales ya analizadas

Búsqueda en profundidad para PS: implementación Estados: representados como listas de asociación Usaremos una función que elige la nueva variable a asignar (de entre las no asignadas) y otra función que va a ordenar los valores del dominio de la variable seleccionada: SELECCIONA-VAIABLE(ESTADO) ODENA-VALOES(DOMINIO) Función que calcula los sucesores: FUNCION PS-SUCESOES(ESTADO) 1. Hacer VAIABLE igual a SELECCIONA-VAIABLE(ESTADO) Hacer DOMINIO-OD igual ODENA-VALOES(PS-VA-DOMINIO(VAIABLE)) Hacer SUCESOES igual a vacío 2. Para cada VALO en DOMINIO-OD, Hacer NUEVO-ESTADO igual a la asignación obtenida ampliando ESTADO con VAIABLE=VALO Si NUEVO-ESTADO es consistente con *ESTICCIONES*, añadir NUEVO-ESTADO a SUCESOES 3. Devolver SUCESOES

Búsqueda en profundidad para PS: implementación FUNCION PS-BUSQUEDA-EN-POFUNDIDAD() 1. Hacer ABIETOS igual a la lista formada por la asignación vacía 2. Mientras que ABIETOS no esté vacía, 2.1 Hacer ACTUAL el primer estado de ABIETOS 2.2 Hacer ABIETOS el resto de ABIETOS 2.3 Si ACTUAL es una asignación completa 2.4.1 devolver ACTUAL y terminar. 2.4.2 en caso contrario, 2.4.2.1 Hacer NUEVOS-SUCESOES igual a PS-SUCESOES(ACTUAL) 2.4.2.2 Hacer ABIETOS igual al resultado de incluir NUEVOS-SUCESOES al principio de ABIETOS 3. Devolver FALLO.

Algoritmo de backtracking El algoritmo de búsqueda en profundidad anterior se suele llamar algoritmo de backtracking, aunque usualmente, se presenta de manera recursiva: FUNCION PS-BACKTACKING() 1. Devolver PS-BACKTACKING-EC({}) FUNCION PS-BACKTACKING-EC(ESTADO) 1. Si ESTADO es una asignación completa, devolver ESTADO y terminar 2. Hacer VAIABLE igual a SELECCIONA-VAIABLE(ESTADO) Hacer DOMINIO-OD igual ODENA-VALOES(PS-VA-DOMINIO(VAIABLE)) 3. Para cada VALO en DOMINIO-OD, 3.1 Hacer NUEVO-ESTADO igual a la asignación obtenida ampliando ESTADO con VAIABLE=VALO 3.2 Si NUEVO-ESTADO es consistente con *ESTICCIONES*: 3.2.1 Hacer ESULTADO igual a PS-BACKTACKING-EC(NUEVO-ESTADO) 3.2.2 Si ESULTADO no es FALLO, devolver ESULTADO y terminar 3. Devolver FALLO

Heurísticas en el algoritmo de backtracking En principio, Backtracking realiza una búsqueda ciega Búsqueda no informada, ineficiente en la práctica Sin embargo, es posible dotar al algoritmo de cierta heurística que mejora considerablemente su rendimiento Estas heurísticas son de propósito general Independientes del problema Sacan partido de la estructura especial de los PS Posibles mejoras heurísticas: Selección de nueva variable a asignar Orden de asignación de valores a la variable elegida Propagación de información a través de las restricciones Vuelta atrás inteligente en caso de fallo

Selección de la siguiente variable a asignar Incorporar heurística en la definición de SELECCIONA-VAIABLE(ESTADO) Heurística MV: seleccionar la variable con el menor número de valores en su dominio consistente con la asignación parcial actual Ejemplo: con la asignación (parcial) {Huelva = ojo, Sevilla = Azul, Malaga = ojo} la siguiente variable a asignar sería Cadiz o Cordoba (en ambos casos sólo hay un valor en sus dominios consistente con la asignación) Otra heurística: variable que aparece en el mayor número de restricciones (grado) Usada para desempatar MV

Ordenación de valores de la variable seleccionada Definición adecuada para la función ODENA-VALOES(DOMINIO) Considerar antes los que eliminen menos posibles valores de las variables por asignar

Comprobación hacia adelante (forward checking) Para cada estado, mantener información sobre los posibles valores para las variables que quedan por asignar: Cada vez que se asigna un nuevo valor a una variable, quitar del dominio de las variables por asignar, aquellos valores que no sean consistentes con el nuevo valor asignado Cuestiones técnicas: Cada nodo del árbol debe contener el estado junto la lista de valores posibles en las variables por asignar Muy fácil de usar en conjunción con la heurística MV

Ejemplo de (forward checking) en el coloreado de mapas Ejemplo (seleccionando variables en orden alfabético): {AL=} --> eliminar del dominio de G {AL=,CA=} --> eliminar de los dominios de HU, SE y MA {AL=,CA=,CO=A} --> eliminar A de los dominios de MA, SE y JA {AL=,CA=,CO=A,G=V} --> eliminar V de los dominios de JA y MA En este momento, Malaga no tiene ningún valor posible. Por tanto, no es necesario seguir explorando en el árbol Es decir, se ha detectado inconsistencia sin necesidad de asignar valores a Huelva y Jaen, y para cualquier extensión de la asignación parcial construida hasta el momento

Ejemplo: Backtracking+forward checking en 4-reinas

Propagación de restricciones La comprobación hacia adelante es un caso particular de propagación de restricciones: Propagar las implicaciones de las restricciones sobre una variable sobre otras variables existen técnicas más completas para propagar restricciones que la comprobación hacia adelante la propagación debe ser rápida: completitud vs rapidez La consistencia de arcos proporciona un método con un buen compromiso entre eficiencia y completitud

Consistencia de arcos En un PS, por arco entendemos un arco dirigido en el grafo que lo representa Equivalentemente, un arco es una restricción en la que hay una variable distinguida Notación: B > E, CO SE, V i V j i j Arco consistente respecto a un conjunto de dominios asociados a un conjunto de variables: Para cualquier valor del dominio asociado a la variable distinguida del arco, existen valores en los dominios de las restantes variables que satisfacen la restricción del arco Ejemplo: si SE y CO tienen ambas asignadas como dominio {rojo, verde}, el arco CO SE es consistente Ejemplo: si el dominio de SE es {rojo} y el de CO es {rojo, verde}, el arco CO SE no es consistente. Nota: el arco puede hacerse consistente eliminando rojo del dominio de CO

Idea intuitiva de AC-3 (consistencia de arcos) Objetivo: a partir de los dominios iniciales de las variables devolver un conjunto de dominios actualizado tal que todos los arcos del problema sean consistentes Actualización de dominios: Si un arco es inconsistente, podemos hacerlo consistente eliminando del dominio de la variable distinguida aquellos valores para los que no existen valores en los dominios de las restantes variables que satisfagan la restricción

Idea intuitiva de AC-3 (consistencia de arcos) evisión de arcos: si el dominio de una variable se actualiza, es necesario revisar la consistencia de los arcos en los que aparece la variable como variable no distinguida Criterio de parada: Todos los arcos son consistentes respecto a los dominios de las variables O algún dominio queda vacío (inconsistencia)

Consistencia de arcos (ejemplo) Planificación de las acciones de un robot (Poole, pag. 149): Un robot necesita planificar cinco actividades (A, B, C, D y E), donde cada actividad ha de comenzar en un momento en el tiempo (1, 2, 3, o 4) y dura exactamente una únidad de tiempo. estricciones: La actividad B no puede realizarse en el momento número 3. La actividad C no puede realizarse en el momento número 2. Las actividades A y B no pueden realizarse simultáneamente. Las actividades B y C no pueden realizarse simultáneamente. La actividad C ha de realizarse antes de la D. Las actividades B y D no pueden realizarse simultáneamente. Las actividades A y D han de realizarse simultáneamente. La actividad E ha de ser la primera.

Consistencia de arcos (ejemplo) epresentación como grafo: A 1 2 3 4 A = B B 1 4 2 A = D B = D B = C D 1 2 3 4 C < D C 1 3 4 E < A E < D E 1 2 3 4 E < C E < B

Consistencia de arcos (seguimiento del ejemplo) Variables y dominios Arcos pendientes de revisar (A 1 2 3 4) (B 1 2 4) (C 1 3 4) A B, A B, B C, B C, C < D, C < D, B D, B D, (D 1 2 3 4) (E 1 2 3 4) A = D, A = D, A > E, A > E, B > E, B > E, C > E, C > E, D > E, D > E (A 1 2 3 4) (B 1 2 4) (C 1 3) C < D, B D, B D, A = D, A = D, A > E, A > E, B > E, (D 1 2 3 4) (E 1 2 3 4) B > E, C > E, C > E, D > E, D > E, B C (A 1 2 3 4) (B 1 2 4) (C 1 3) B D, B D, A = D, A = D, A > E, A > E, B > E, B > E, (D 2 3 4) (E 1 2 3 4) C > E, C > E, D > E, D > E, B C, C < D (A 2 3 4) (B 1 2 4) (C 1 3) A = D, A > E, A > E, B > E, B > E, C > E, C > E, D > E, (D 2 3 4) (E 1 2 3 4) D > E, B C, C < D, A B (A 2 3 4) (B 1 2 4) (C 1 3) B > E, B > E, C > E, C > E, D > E, D > E, B C, C < D, (D 2 3 4) (E 1 2 3) A B, A > E (A 2 3 4) (B 2 4) (C 1 3) B > E, C > E, C > E, D > E, D > E, B C, C < D, A B, (D 2 3 4) (E 1 2 3) A > E, A B, B C, B D (A 2 3 4) (B 2 4) (C 3) C > E, D > E, D > E, B C, C < D, A B, A > E, A B, (D 2 3 4) (E 1 2 3) B C, B D, C < D (A 2 3 4) (B 2 4) (C 3) D > E, D > E, B C, C < D, A B, A > E, A B, B C, (D 2 3 4) (E 1 2) B D, C < D, B > E, C > E (A 2 3 4) (B 2 4) (C 3) B > E, C > E, C < D, B D, A = D, D > E (D 4) (E 1 2) (A 2 3 4) (B 2) (C 3) A = D, D > E, A B, B C, B D, B > E (D 4) (E 1 2) (A 4) (B 2) (C 3) D > E, A B, B C, B D, B > E, A B, A = D, A > E (D 4) (E 1 2) (A 4) (B 2) (C 3) (D 4) (E 1) A B, A = D, A > E, A > E, B > E, C > E, D > E (A 4) (B 2) (C 3) (D 4) (E 1)

Implementación del algoritmo AC-3 Arcos: estructura con los campos variable y restricción Funciones de acceso: ACO-VAIABLE y ACO-ESTICCION Generación de todos los arcos de un PS: FUNCION ACOS() 1. Hacer AC igual a vacío 2. Para cada ESTICCION es *ESTICCIONES* 2.1 Para cada VAIABLE en PS-EST-VAIABLES(ESTICCION) Añadir a AC el arco formado por VAIABLE+ESTICCION 3. Devolver AC Cálculo de dominio actualizado: FUNCION ACTUALIZA-DOMINIO(VAIABLE,ESTICCION,VAIABLES) 1. Hacer DOMINIO-ACTUAL igual al dominio de VAIABLE en VAIABLES Hacer NUEVO-DOMINIO igual a vacío 2. Para cada VALO en DOMINIO-ACTUAL hacer 2.1 Si para ese VALO de VAIABLE existe una asignación a las restantes variables de ESTICCION que satisfaga ESTICCION, incluir VALO en NUEVO-DOMINIO 3. Devolver NUEVO-DOMINIO

Implementación del algoritmo AC-3 FUNCION AC-3(VAIABLES) 1. Hacer ED igual a ACOS() 2. Mientras ED no sea vacío 2.1 Hacer ACTUAL el primero de ED y ED el resto de ED 2.2 Hacer VAIABLE igual a ACO-VAIABLE(ACTUAL) y ESTICCION igual ACO-ESTICCION(ACTUAL) 2.3 Hacer DOMINIO-ACTUAL igual al dominio de VAIABLE en VAIABLES 2.4 Hacer DOMINIO-NUEVO igual a ACTUALIZA-DOMINIO(VAIABLE,ESTICCION,VAIABLES) 2.5 Si DOMINIO-NUEVO y DOMINIO-ACTUAL son distintos, entonces 2.5.1 Actualizar (destructivamente) el dominio de ACTUAL en VAIABLES con NUEVO-DOMINIO 2.5.2 Incluir en ED todos los arcos de ACOS() en los que aparezca VAIABLE y ésta NO sea la variable distinguida del arco 2.6 Devolver VAIABLES Entrada: una lista de variables+dominios Salida: la lista de entrada, con los dominios actualizados (destructivamente) de manera que todos los arcos del PS son consistentes

Propiedades de AC-3 Complejidad en tiempo O(n 2 d 3 ) (en el caso de restricciones binarias), donde: n: número de variables d: máximo número de valores de un dominio La complejidad polinomial nos indica que sólo con AC-3 no es posible resolver un PS Pero puede combinarse con algún tipo de búsqueda Dos aproximaciones: Incorporar en el algoritmo de backtracking, como un paso de propagación de restricciones después de cada asignación Intercalar AC-3 con búsqueda

Búsqueda de soluciones mediante consistencia de arcos Posibles resultados tras aplicar AC-3: Existe un dominio vacío: no hay solución. Todos los dominios son unitarios: hay una solución. No hay dominios vacíos y al menos uno no es unitario: soluciones? Idea: romper un dominio no vacío en subdominios y aplicar AC-3 a los estados resultantes Esto se puede hacer de manera sistemática (búsqueda) Hasta que se obtiene un estado con todos los dominios unitarios (solución) O bien hasta que se detecta inconsistencia en todas las alternativas (no hay solución)

Búsqueda de soluciones mediante consistencia de arcos FUNCION BUSQUEDA-AC3() 1. Hacer ABIETOS igual a una lista cuyo único elemento es una copia de *VAIABLES* 2. Mientras que ABIETOS no esté vacía, 2.1 Hacer ACTUAL igual a AC3(PIMEO(ABIETOS)) 2.2 Hacer ABIETOS el resto de ABIETOS 2.3 Si no existen dominios vacíos en ACTUAL, 2.3.1 Si ACTUAL tiene todos los dominios unitarios, devolver ACTUAL y terminar 2.3.2 Si no, calcular los sucesores de ACTUAL y añadirlos a la lista de ABIETOS 3. Devolver FALLO. Detalles a concretar de la implementación: Sucesores: escoger un dominio no unitario y dividirlo de alguna manera (se puede incorporar heurística para la división y para el orden de sucesores) Gestión de la cola de abiertos: anchura o profundidad

Algoritmos de mejora iterativa para PSs Planteamiento como un problema de búsqueda local: Estados: asignaciones completas (consistentes o inconsistentes) Estado inicial escogido aleatoriamente Estados finales: soluciones al PS Generación de sucesor: elegir una variable y cambiar el valor que tiene asignado (usando cierta heurística y aleatoriedad)

Generación de sucesor mediante la heurística de mínimos conflictos Variable elegida para cambiar su valor: Aquella (distinta de la última modificada) que participa en más restricciones NO satisfechas en el estado (los empates se deshacen aleatoriamente) Nuevo valor elegido: El valor (distinto del que tenía) que produce el menor número de restricciones incumplidas Los empates se deshacen aleatoriamente

Implementación de reparación heurística con mínimos conflictos Nodo de búsqueda: estructura con la asignación actual y la última variable modificada FUNCION MIN-CONFLICTOS(MAX-ITEACIONES) 1. Hacer ACTUAL igual a un nodo con una asignación generada aleatoriamente. 2. Para I desde 1 hasta MAX-ITEACIONES hacer 2.1 Si la asignación de ACTUAL es una solución, devolverla y terminar. 2.2 Hacer VAIABLE igual a una variable (distinta de la última modificada) escogida aleatoriamente de entre aquellas que participan en el mayor número de restricciones incumplidas. 2.3 Hacer SUCESOES igual a la lista de nodos obtenidos cambiando en la asignación ACTUAL el valor de VAIABLE por cada uno de los posibles valores del dominio de VAIABLE en *VAIABLES* (excepto el correspondiente al valor que tenía en ACTUAL) 2.4 Hacer ACTUAL el nodo de SUCESOES escogido aleatoriamente de entre aquellos cuya asignación incumple el menor número de restricciones 3. Devolver FALLO

eparación heurística: ejemplo con N-reinas V1 V2 V3 V4 valor conflictos valor conflictos valor conflictos valor conflictos 1 3 1 3 1 3 1 3 1 2 1 2 4 0 1 2 1 2 2 1 4 0 1 1 3 1 2 1 4 0 1 0 3 0 1 1 4 0 1 1 3 0 1 0 4 0 2 0

Propiedades del algoritmo de reparación heurística No es completo Complejidad en tiempo: lineal en el número de iteraciones Aleatoriedad: en la asignación inicial y al deshacer empates eparación heurística tiene muy buenos resultados en algunos tipos de PSs: PSs cuyas soluciones están distribuidas uniformemente a lo largo del espacio de estados PSs en los que las restricciones pueden cambiar dinámicamente

Bibliografía ussell, S. y Norvig, P. Inteligencia Artificial (un enfoque moderno) (Pearson Educación, 2004). Segunda edición Cap. 5: Problemas de Satisfacción de estricciones. ussell, S. y Norvig, P. Artificial Intelligence (A Modern Approach) (Prentice Hall, 2010). Third Edition Cap. 6: Constraint Satisfaction Problems. Nilsson, N.J. Inteligencia artificial (una nueva síntesis) (McGraw Hill, 2000) Cap. 11 Métodos alternativos de búsqueda y otras aplicaciones. Poole, D.; Mackworth, A. y Goebel,. Computational Intelligence (A Logical Approach) (Oxford University Press, 1998) Cap. 4.7: Constraint Satisfaction Problems.