Title: Inteligencia Artificial
1Inteligencia Artificial
- 2.3 Problemas de Satisfacción de Restricciones
2Introducción
- Anteriormente se vio que los problemas pueden
resolverse buscando en un espacio de estados. - Estos estados pueden evaluarse por heurísticas
específicas para el dominio y probados para
verificar si son estados meta. - Desde el punto de vista del algoritmo de
búsqueda, cada estado es una caja negra sin
estructura interna discernible. - Solo es accesada por las rutinas específicas del
problema (la función de sucesor, la función
heurística y la prueba de meta).
3Introducción
- En los problemas de satisfacción de restricciones
(PSR), los estados y la prueba de meta siguen a
una representación estándar, estructurada y muy
simple. - Los algoritmos de búsqueda pueden ser definidos
de tal manera que tomen ventaja de la estructura
de los estados y usen heurísticas de propósito
general en vez de específicas del problema, para
permitir la solución de problemas grandes.
4Introducción
- Tal vez lo más importante es que la
representación estándar de la prueba de meta
revela la estructura del problema mismo. - Esto lleva a los métodos para descomposición de
problemas y a un entendimiento de la conexión
íntima entre la estructura del problema y la
dificultad para resolverlo.
5Problemas de Satisfacción de Restricciones
- Un problema de satisfacción de restricciones (o
PSR) se define por un conjunto de variables, X1,
X2, , Xn, y un conjunto de restricciones, C1,
C2, , Cm. - Cada variable Xi tiene un dominio no vacío Di de
posibles valores. - Cada restricción Ci involucra algún subconjunto
de las variables y especifica las combinaciones
permisibles de valores de ese subconjunto.
6Problemas de Satisfacción de Restricciones
- Un estado del problema se define por una
asignación de valores a alguna o todas las
variables, Xi vi, Xj vj, . - Una asignación que no viola ninguna restricción
es llamada consistente o legal. - Una asignación completa es una en la cual cada
variable es mencionada. - Una solución a un PSR es una asignación completa
que satisface todas las restricciones.
7Problemas de Satisfacción de Restricciones
- Problema Colorear el mapa de Australia, usando
los colores rojo, verde o azul, de tal forma que
dos regiones vecinas no tengan el mismo color.
Territorio del Norte
Queensland
Australia del Oeste
Australia del Sur
Nueva Gales del Sur
Victoria
Tasmania
8Problemas de Satisfacción de Restricciones
- Formulación como PSR
- Variables las regiones de Australia
- AO (Australia del Oeste)
- TN (Territorio del Norte)
- Q (Queensland)
- NGS (Nueva Gales del Sur)
- V (Victoria)
- AS (Australia del Sur)
- T (Tasmania)
9Problemas de Satisfacción de Restricciones
- Formulación como PSR
- Dominios El dominio de cada variable es el
conjunto rojo, verde, azul. - Restricciones Las restricciones requieren que
regiones vecinas tengan distintos colores. Por
ejemplo, las combinaciones permisibles para AO y
TN son los pares - (rojo, verde), (rojo, azul), (verde, rojo),
(verde, azul), (azul, rojo), (azul, verde) - Esta restricción puede representarse como AO ? TN.
10Problemas de Satisfacción de Restricciones
- Formulación como PSR
- Solución Hay muchas soluciones posibles, como
- AO rojo, TN verde, Q rojo, NGS verde, V
rojo, AS azul, T rojo
11Problemas de Satisfacción de Restricciones
- Es útil visualizar un PSR como un grafo de
restricciones. - Los nodos del grafo corresponden a las variables
del problema, y los arcos corresponden a las
restricciones.
TN
Q
AO
AS
NGS
V
T
12Problemas de Satisfacción de Restricciones
TN
- Es útil visualizar un PSR como un grafo de
restricciones. - Los nodos del grafo corresponden a las variables
del problema, y los arcos corresponden a las
restricciones.
Q
AO
AS
NGS
V
T
13Problemas de Satisfacción de Restricciones
- Tratar un problema como un PSR tiene importantes
beneficios - La representación de estados en un PSR sigue un
patrón estándar (un conjunto de variables con
valores asignados), por lo que la función de
sucesor y la prueba de meta pueden ser escritos
de una manera genérica que se aplica a todos los
PSR. - Se pueden desarrollar heurísticas efectivas que
no requieren experiencia adicional específica del
dominio. - La estructura del grafo de restricciones puede
usarse para simplificar el proceso de solución en
algunos casos, dando una reducción exponencial en
complejidad.
14Problemas de Satisfacción de Restricciones
- A un PSR se le puede hacer una formulación
incremental como un problema de búsqueda estándar
de la siguiente manera - Estado inicial La asignación vacía , en la
cual todas las variables están sin asignar. - Función de sucesor Un valor puede ser asignado a
una variable sin asignar, siempre y cuando no
entre en conflicto con variables previamente
asignadas. - Prueba de meta La asignación actual está
completa. - Costo de ruta Un costo constante (por ejemplo,
1) para cada paso.
15Problemas de Satisfacción de Restricciones
- Cada solución debe ser una asignación completa y
por lo tanto tiene una profundidad n si hay n
variables. - Por esta razón, los algoritmos de búsqueda
primero en profundidad son populares para los
PSR. - También ocurre que la ruta por la cual se alcanza
una solución es irrelevante. Por lo tanto,
también se puede usar una formulación de estado
completo, en la cual cada estado es una
asignación completa que puede satisfacer o no las
restricciones. Los métodos de búsqueda local
trabajan bien con esta formulación.
16Problemas de Satisfacción de Restricciones
- El tipo más simple de PSR involucra variables que
son discretas y tienen dominios finitos. - Los problemas de coloreo de mapas son de este
tipo. Incluso el problema de las 8 reinas puede
plantearse como PSR - Variables Q1, , Q8 (Posiciones de cada reina en
las columnas 1, , 8). - Dominios Cada variable tiene el dominio 1, 2,
3, 4, 5, 6, 7, 8. - Los PSR de dominios finitos incluyen a los PSR
booleanos, cuyas variables son verdadero o falso.
17Problemas de Satisfacción de Restricciones
- Las variables discretas pueden también tener
dominios infinitos, por ejemplo, el conjunto de
los números enteros, o el conjunto de todas las
cadenas de caracteres. - Por ejemplo, cuando se requieren programar
trabajos de construcción en el calendario, la
fecha de inicio de cada trabajo es una variable,
y sus valores posibles es el número de días
enteros a partir de la fecha actual. - Con dominios infinitos, ya no es posible
describir las restricciones enumerando todas las
combinaciones de valores permisibles.
18Problemas de Satisfacción de Restricciones
- Con dominios infinitos, se debe usar entonces un
lenguaje de restricciones. - Por ejemplo, si Trabajo1 toma 5 días, y debe
preceder a Trabajo3, entonces necesitaríamos un
lenguaje de restricciones de desigualdades
algebraicas tal como - InicioTrabajo1 5 ? InicioTrabajo3
- Existen algoritmos de solución especiales para
las restricciones lineales de variables enteras
(restricciones como la anterior, en la que cada
variable aparece sólo en forma lineal).
19Problemas de Satisfacción de Restricciones
- Puede demostrarse que no existe un algoritmo para
resolver restricciones no lineales generales
sobre variables enteras. - En algunos casos, se puede reducir los problemas
de restricciones enteras a problemas de dominio
finito simplemente acotando los valores de todas
las variables. Ejemplo poniendo una cota
superior igual a la de duración total de todos
los trabajos a ser programados.
20Problemas de Satisfacción de Restricciones
- Los PSR con dominios continuos son muy comunes en
el mundo real y son ampliamente estudiados en el
campo de la investigación de operaciones. Por
ejemplo, la programación de experimentos en el
Telescopio Espacial Hubble, que requiere una
medición muy precisa del tiempo para las
observaciones, para el inicio y fin de cada
observación, y el manejo de variables continuas
que deben obedecer una variedad de restricciones
astronómicas, de precedencia y de energía. - La categoría mejor conocida de PSR de dominio
continuo es la de los problemas de programación
lineal, donde las restricciones deben ser
desigualdades lineales formando una región
convexa.
21Problemas de Satisfacción de Restricciones
- Los problemas de programación lineal pueden ser
resueltos en tiempo polinomial en el número de
variables. También se han estudiado otros
problemas con diferentes tipos de restricciones y
funciones objetivo (programación cuadrática,
programación cónica de segundo orden, etc.)
22Problemas de Satisfacción de Restricciones
- Los tipos de restricciones que se pueden tener
son - Restricciones unarias restringen el valor de una
sola variable. - Ejemplo A la gente de Australia del Sur no le
gusta el color verde. AS ? verde - Cada restricción unaria puede eliminarse
simplemente preprocesando el dominio de la
variable correspondiente para eliminar cualquier
valor que viole la restricción. - Restricciones binarias relacionan dos variables.
- Ejemplo Australia del Sur y Nueva Gales del Sur
no pueden tener el mismo color. AS ? NGS - Un PSR binario es uno que tiene sólo
restricciones binarias, y se puede representar
con un grafo de restricciones.
23Problemas de Satisfacción de Restricciones
- Las restricciones de alto orden involucran tres o
más variables. Un ejemplo familiar de esto lo
representan los problemas de criptoaritmética.
T W O T W O F O U R
24Problemas de Satisfacción de Restricciones
- El hecho de que cada letra representa un dígito
diferente se puede representar mediante una
restricción de seis variables TodasDif (F, T, U,
W, R, O), o puede ser representado por la
colección de restricciones binarias F ? T, F ?
U, , R ? O. - Las restricciones de adición de las cuatro
columnas también involucran varias variables - O O R 10 ? X1
- X1 W W U 10 ? X2
- X2 T T O 10 ? X3
- X3 F
- X1, X2 y X3 son variables auxiliares que
representan el dígito (0 o 1) acarreado a la
siguiente columna.
25Problemas de Satisfacción de Restricciones
- Las restricciones de alto orden se pueden
representar en un hipergrafo de restricciones
F
T
U
W
R
O
X3
X2
X1
26Problemas de Satisfacción de Restricciones
- Cada restricción de alto orden, con dominio
finito, puede reducirse a un conjunto de
restricciones binarias, si se introducen las
variables auxiliares suficientes. Es por eso que
se estudian preferentemente problemas sólo con
restriccines binarias. - Hasta ahora se han descrito sólo restricciones
absolutas (cualquier asignación completa que
viole alguna de ellas, se descarta como
solución). - Muchos PSR del mundo real incluyen restricciones
de preferencia, indicando cuales soluciones son
preferibles. Estas restricciones pueden ser
codificadas como costos sobre las asignaciones de
variables individuales.
27Búsqueda backtracking para los PSR
- Usando la formulación antes mencionada para PSR,
cualquier algoritmo de búsqueda visto
anteriormente puede ser usado para resolverlos. - Suponiendo que se usa búsqueda primero por
amplitud, el factor de ramificación en el nivel
superior es nd, en el siguiente nivel es (n
1)d, y así sucesivamente para los n niveles. Se
genera un árbol de n!dn hojas.
28Búsqueda backtracking para los PSR
- Sin embargo, todos los PSR tienen la propiedad de
la conmutatividad. - Un problema es conmutativo si el orden de
aplicación de cualquier conjunto dado de acciones
no tiene efecto en la salida. - Por lo tanto, todos los algoritmos de búsqueda en
PSR generan sucesores considerando las posibles
asignaciones para sólo una variable en cada nodo
del árbol de búsqueda.
29Búsqueda backtracking para los PSR
- La búsqueda backtracking es una búsqueda primero
en profundidad que elige valores para una
variable a la vez y regresa (backtraks)
cuando a una variable no le quedan valores
legales para asignarle.
30Búsqueda backtracking para los PSR
AO rojo
AO verde
AO azul
AO rojo TN verde
AO rojo TN azul
AO rojo TN verde Q rojo
AO rojo TN verde Q rojo
31Búsqueda backtracking para los PSR
- La búsqueda backtracking simple es un algoritmo
no informado, asi que no se espera que sea
efectivo para problemas grandes.
32Búsqueda backtracking para los PSR
Problema Back- Tracking BTMVR Forward Checking FC MVR Conflictos Min.
USA (gt1,000K) (gt1,000K) 2K 60 64
n-Reinas (gt40,000K) 13,500K (gt40,000K) 817K 4K
Cebra 3,859K 1K 35K 0.5K 2K
Aleatorio 1 415K 3K 26K 2K
Aleatorio 2 942K 27K 77K 15K
K miles de chequeos de consistencia, ( ) no
halló solución
33Búsqueda backtracking para los PSR
- Los métodos de propósito general se hacen las
siguientes preguntas - Qué variable debe asignarse en seguida, y en que
orden deben intentarse los valores? - Cuáles son las implicaciones de las asignaciones
actuales de variables para las otras variables
sin asignar? - Cuando una ruta falla (es decir, un estado es
alcanzado en el cual una variable no tiene
valores legales) Puede la búsqueda evitar
repetir esta falla en rutas subsecuentes?
34Búsqueda backtracking para los PSR
- Orden de las variables y de los valores
- Por default, la siguiente variable a asignar se
selecciona de una lista estática de variables que
rara vez produce una búsqueda eficiente. - La idea intuitiva de elegir la variable que tenga
el mínimo de valores legales es llamada la
heurística del mínimo de valores remanentes
(MVR). También se le llama la de la variable
más restringida o de falla-primero, porque
selecciona la variable que probablemente pronto
causará una falla, podando el árbol de búsqueda.
35Búsqueda backtracking para los PSR
- Orden de las variables y de los valores
- La heurística MVR no ayuda en absoluto para
elegir la primera region a colorear del mapa de
Australia, porque inicialmente cada región tiene
tres colores legales. - En este caso, la heurística de grado es
utilizada. Intenta reducir el factor de
ramificación para elecciones futuras
seleccionando la variable que está involucrada en
el mayor número de restricciones. AS tiene grado
5, las otras tiene 2 o 3, y T tiene 0. - La heurística de MVR es una guía más poderosa,
pero la heurística de grado puede ser muy útil
para romper empates.
36Búsqueda backtracking para los PSR
- Orden de las variables y de los valores
- Una vez que una variable ha sido seleccionada, el
algoritmo debe decidir en qué orden examinar sus
valores. - Para esto, la heurística del valor menos
restrictivo puede ser efectiva en algunos casos. - Esta heurística prefiere el valor que elimine la
menor cantidad de valores posibles de las
variables vecinas en el grafo de restricciones. - Por ejemplo, si se ha asignado AOrojo, TNverde,
y se tiene que elegir Q. Si se elige azul, esto
elimina el último valor legal que podíamos
asignarle a AS. Por lo tanto, según la heurística
del valor menos restrictivo, se debe asignar
Qrojo. - La idea es contar siempre con la mayor
flexibilidad posible para las asignaciones de
variables subsecuentes.
37Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Hasta ahora solo se han considerado las
restricciones sobre una variable solo cuando la
variable se elige para asignarle valor. - Observando algunas restricciones un poco antes
durante la búsqueda, o incluso antes de que la
búsqueda comience, se puede reducir drásticamente
el espacio de búsqueda.
38Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Forward checking
- Cuando una variable X es asignada, el proceso FC
observa a cada variable sin asignar Y que esté
conectada a X por una restricción y borra del
dominio de Y cualquier valor que sea
inconsistente con el valor elegido para X.
39Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Forward checking
AO TN Q NGS V AS T
Dominios Iniciales RVA RVA RVA RVA RVA RVA RVA
Después que AOrojo R VA RVA RVA RVA VA RVA
Después que Qverde R A V R A RVA A RVA
Después que Vazul R A V R A --- RVA
40Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Propagación de restricciones
- Aunque FC detecta muchas inconsistencias, no las
detecta todas. - En la tabla anterior, puede verse que cuando AO
es rojo y Q es verde, tanto TN como AS son
forzados a ser azules. Sin embargo, estos dos
últimos son adyacentes y por lo tanto, no pueden
tener el mismo color. FC no detecta esto como una
inconsistencia, porque no mira más allá. - La propagación de restricciones es el término
general para propagar las implicaciones de una
restricción sobre una variable en otras variables.
41Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Propagación de restricciones
- La idea de consistencia de arco proporciona un
método rápido de propagación de restricciones que
es sustancialmente más fuerte que FC. - Arco se refiere al arco dirigido en el grafo de
restricciones, por ejemplo, el arco que va de AS
a NGS. - Dados los dominios actuales de AS y NGS, el arco
es consistente si, para cada valor x de AS, hay
algún valor y de NGS que sea consistente con x. - En el renglón 3 de la tabla, se puede ver que el
arco de AS a NGS es consistente, pero el arco
inverso de NGS a AS no lo es. Este arco puede
hacerse consistente borrando el valor azul del
dominio de NGS.
42Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Propagación de restricciones
- La verificación de consistencia de arco puede ser
aplicada tanto como un paso de preprocesamiento
antes de empezar la búsqueda, o como un paso de
propagación (como FC) después de cada asignación
durante la búsqueda. - En cualquiera de los dos casos, el proceso debe
ser aplicado repetidamente hasta que no quede
ninguna inconsistencia, ya que la eliminacion de
una de ellas puede crear otras nuevas. - El algoritmo completo para consistencia de arco
es llamado AC-3.
43Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Propagación de restricciones
- Formas más fuertes de propagación se pueden
definir usando la notación llamada
k-consistencia. - Un PSR es k-consistente si, para cualquier
conjunto de k-1 variables y para cualquier
asignación consistente a esas variables, un valor
consistente puede siempre ser asignado a
cualquier k-ésima variable. - Por lo tanto, 1-consistencia significa que cada
variable individual es consistente por sí misma
esto es también llamado consistencia de nodo.
2-consistencia es lo mismo que consistencia de
arco. 3-consistencia significa que cualquier par
de variables adyacentes puede siempre ser
extendida a una tercera variable vecina, lo que
se llama consistencia de ruta.
44Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Propagación de restricciones
- Un grafo es fuertemente k-consistente si es
k-consistente y además es también
(k-1)-consistente, (k-2)-consistente, y así
hasta llegar a 1-consistente. - Si se tiene un problema con n nodos, y se hace
fuertemente n-consistente, entonces el problema
se puede resolver sin backtracking. - Sin embargo, cualquier algoritmo para establecer
la n-consistencia debe tomar tiempo exponencial
en n en el peor caso.
45Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Manejo de restricciones especiales
- Ejemplo, la restricción TodasDiferentes dice que
todas las variables involucradas deben tener
valores diferentes. - Una forma simple de detectar la inconsistencia de
esta restricción es si hay m variables
involucradas en la restricción, y si ellas tienen
n posibles valores distintos cada una, y m gt n,
entonces la restricción no puede ser satisfecha.
46Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Manejo de restricciones especiales
- Tal vez la restricción de alto orden más
importante es la restricción de recursos, algunas
veces llamada restricción cuandomucho. - Por ejemplo, sean PA1, , PA4 las cantidades de
personal asignado a cada una de 4 tareas. La
restricción de que no se asignen más de 10
personas en total se escribe como cuandomucho(10,
PA1, PA2 PA3, PA4). - Una inconsistencia puede detectarse simplemente
checando la suma de los valores mínimos de los
dominios actuales. Por ejemplo, si cada variable
tiene el dominio 3,4,5,6, la restricción
cuandomucho no puede ser satisfecha.
47Búsqueda backtracking para los PSR
- Propagando información a través de las
restricciones - Manejo de restricciones especiales
- Para problemas grandes limitados en recursos,
como problemas de logística involucrando miles de
personas o cientos de vehículos, usualmente no es
posible representar el dominio de cada variable
como un conjunto de enteros y reducirlo
gradualmente con los métodos de verificación de
consistencia. - Lo que se hace en estos casos es representar los
dominios por medio de límites superiores e
inferiores, y manejarlos por propagación de
límites.
48Búsqueda backtracking para los PSR
- Backtracking inteligente mirando hacia atrás.
- Cuando una rama de la búsqueda falla, el
algoritmo de BT regresa a la variable precedente
e intenta un nuevo valor para ella. - Esto es llamado Backtracking cronológico.
- Qué pasaría si en el problema de Australia se
hubiera elegido un orden de instanciación fijo Q,
NGS, V, T, AS, AO, TN? Supón que ya se ha
generado la asignación Qrojo, NGSverde,
Vazul, Trojo. Cuando se intenta asignar la
siguiente variable, AS, todo falla. Regresar y
cambiar el valor a T no soluciona el problema.
49Búsqueda backtracking para los PSR
- Backtracking inteligente mirando hacia atrás.
- Un enfoque más inteligente que el BT es regresar
hasta una de las variables del conjunto que
causaron la falla. Este conjunto es llamado el
conjunto conflicto. - El conjunto conflicto para la variable X es el
conjunto de variables previamente asignadas que
están conectadas a X por restricciones. - El conjunto conflicto para AS es Q,NGS,V.
50Búsqueda backtracking para los PSR
- Backtracking inteligente mirando hacia atrás.
- El método backjumping regresa a la variable más
reciente en el conjunto conflicto. En este caso,
BJ brincaría sobre Tasmania y buscaría un nuevo
valor para V. - El algoritmo FC puede crear el conjunto conflicto
mientras realiza su búsqueda (simplemente
almacena lo que elimina). - BJ ocurre cuando cada valor en el dominio está en
conflicto con la asignación actual FC detecta
esto antes y previene que la búsqueda llegue a un
nodo así. Por lo tanto, cada rama podada por BJ
es también podada por FC, así que son
redundantes.
51Búsqueda backtracking para los PSR
- Backtracking inteligente mirando hacia atrás.
- BJ nota la falla cuando el dominio de una
cariable queda vacío, pero en muchos casos una
rama está perdida mucho antes de que esto ocurra. - Ejemplo, cuando se hace la asignación parcial
AOrojo, NGSrojo. Si se intenta Trojo, y
luego se asignan TN, Q, V, AS, ninguna asignación
funciona para estas últimas. - A dónde hacer backtrack? BJ no puede funcionar,
porque TN SÍ tiene valores consistentes con las
variables asignadas precedentes. TN no tiene un
conjunto conflicto completo. - Esto lleva a una noción más profunda del conjunto
conflicto si el conjunto de variables
precedentes que causaron TN, junto con cualquier
variable subsecuente, no tienen solución
consistente. - A este algoritmo se le llama backjumping dirigido
por conflictos.
52Búsqueda local para PSR
- Los algoritmos de búsqueda local son efectivos
para resolver muchos PSR. - Usan una formulación de estado completo el
estado inicial asigna un valor a cada variable, y
la función sucesor usualmente trabaja cambiando
el valor de una variable a la vez. - El problema de las 8 reinas puede plantearse de
dos formas - Poner las 8 reinas en las 8 columnas al azar, y
mover luego cada reina a lo largo de su columna. - Poner las 8 reinas, una por columna en una
permutación de las 8 columnas, y luego generar
sucesores intercambiando dos reinas de columna.
53Búsqueda local para PSR
- Para elegir un nuevo valor para una variable, la
heurística más obvia es seleccionar el valor que
resulte en el número mínimo de conflictos con
otras variables la heurística de conflictos
mínimos.
54La estructura de los problemas
- La única manera en la que podemos esperar tratar
con el mundo real es, posiblemente,
descomponiéndolo en muchos subproblemas. - Por ejemplo, analizando el problema de colorear
Australia para identificar su estructura, un
hecho sobresale Tasmania no está conectado al
continente. - Intuitivamente, es obvio que colorear Tasmania y
colorear el continente son subproblemas
independientes. - Cualquier solución para el continente, combinada
con cualquier solución para Tasmania, proporciona
una solución para el mapa entero.
55La estructura de los problemas
- La independencia puede ser confirmada simplemente
observando los componentes conectados del grafo
de restricciones. - Los subproblemas completamente independientes son
muy deseables, pero raros. - En la mayoría de los casos, los subproblemas de
un CSP están conectados. El caso más simple es
cuando el grafo de restricciones forma un árbol
cualquier par de variables está conectado a lo
mucho por una ruta.
56La estructura de los problemas
E
A
D
B
F
C
Grafo de restricciones de un PSR estructurado
como árbol
57La estructura de los problemas
- Cualquier PSR estructurado como árbol puede ser
resuelto en un tiempo lineal en el número de
variables.
58La estructura de los problemas
- El algoritmo es el siguiente
- PASO 1 Elija cualquier variable como la raíz del
árbol, y ordene las variables desde la raíz hasta
las hojas de tal forma que el padre de cada nodo
en el árbol lo preceda en el ordenamiento.
Etiquete las variables X1, , Xn en orden. Ahora,
cada variable, excepto la raíz, tiene exactamente
una variable padre.
59La estructura de los problemas
A
B
C
E
D
F
Un ordenamiento lineal de las variables
consistente con el árbol con A como raíz
60La estructura de los problemas
- PASO 2 Variando los valores de j desde n hasta 2
(disminuyendo de 1 en 1), aplique verificación de
consistencia de arco al arco (Xi, Xj), donde Xi
es el padre de Xj, removiendo valores del
DOMINIOXi conforme sea necesario. - PASO 3 Variando los valores de j desde 1 hasta n
(aumentando de 1 en 1), asigne cualquier valor
para Xj consistente con el valor asignado para
Xi, donde Xi es el padre de Xj.
61La estructura de los problemas
- Ahora que se tiene un algoritmo eficiente para
árboles, se puede considerar si grafos de
restricciones más generales pueden reducirse a
árboles de alguna manera. - Hay dos maneras principales de hacer esto, una
basada en remover nodos y otra basada en colapsar
varios nodos juntos en uno.
62La estructura de los problemas
- El primer enfoque involucra asignar valores a
algunas variables de tal manera que las variables
restantes formen un árbol. - Considera el grafo de restricciones para
Australia. Si se pudiera eliminar Australia del
Sur, el grafo se convertiría en un árbol.
63La estructura de los problemas
TN
TN
Q
Q
AO
AO
AS
NGS
NGS
V
V
T
T
Grafo de Restricciones Original
Grafo de Restricciones después de quitar AS
64La estructura de los problemas
- Afortunadamente, esto se puede hacer fijando un
valor para AS y borrando de los dominios de las
otras variables cualquier valor que sea
inconsistente con el valor elegido para AS. - Ahora, cualquier solución para el PSR después de
que AS y sus restricciones fueron removidas será
consistente con el valor elegido para AS. - El árbol restante puede se resuelto con el
algoritmo para árboles ya mencionado.
65La estructura de los problemas
- El segundo enfoque está basado en la construcción
de una descomposición en árbol del grafo de
restricciones en un conjunto de subproblemas
conectados. - Cada subproblema se resuelve independientemente,
y las soluciones resultantes son combinada. - Como cualquier algoritmo del tipo
divide-y-vencerás, éste trabaja bien si ningún
subproblema es demasiado grande.
66La estructura de los problemas
TN
TN
Q
AO
AS
AS
Q
AS
NGS
Una descomposición en árbol del grafo del
restricciones del problema del coloreo de
Australia
AS
NGS
V
T
67La estructura de los problemas
- Una descomposición en árbol debe satisfacer los
siguientes tres requerimientos - Cada variable en el problema original aparece en
por lo menos uno de los subproblemas. - Si dos variables están conectadas por una
restricción en el problema original, deben
aparecer juntas (con su restricción) en por lo
menos uno de los subproblemas. - Si una variable aparece en dos subproblemas en el
árbol que se está creando, debe aparecer en cada
subproblema que forme parte de la ruta que
conecta a los dos primeros subproblemas.
68La estructura de los problemas
- Los problemas se resuelven independientemente. Si
cualquiera de los subproblemas no tiene solución,
entonces sabemos que el problema completo tampoco
tiene solución. - Si todos los subproblemas se pueden resolver, se
intenta construir entonces una solución global al
problema.