Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso 20062007
Tema 5: Problemas de
satisfacci
on de restricciones
Jos
e A. Alonso Jim
enez
Carmen Graciani Daz
Francisco J. Martn Mateos
Jos
e L. Ruiz Reina
Universidad de Sevilla
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.1
Problema de Satisfacci
on de Restricciones
x
Un problema de satisfacci
on de restricciones (PSR) viene definido por
los siguientes elementos:
u
Un conjunto finito de restricciones C1, . . . , Cm, que definen una serie de propiedades
que deben verificar los valores asignados a las variables
Una soluci
on al problema es una asignaci
on de valores a las variables
{X1 = v1, . . . , Xn = vn} tal que vi Di y se verifican las restricciones
Esta formulaci
on permite una representaci
on simple del problema, y el
uso de heursticas de prop
osito general, independientes del problema
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.2
Clasificaci
on seg
un el tipo de restricciones:
u
Restricciones de obligaci
on (hard constraints).
Clasificaci
on seg
un los dominios:
u
Dominios continuos.
Clasificaci
on seg
un el n
umero de variables implicadas en las restricciones:
u
Restricciones binarias.
Restricciones m
ultiples.
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.3
Ejemplo: N reinas
x
Variables: V1, . . . , VN
Dominios: Di = {1, . . . , N }
R
R
Restricciones:
u
Jaque horizontal: Vi 6= Vj
V1 = 1, V2 = 3
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.4
JA
SE
HU
GR
AL
MA
CA
Variables: Huelva,
Granada, Almeria
Cadiz,
Sevilla,
Cordoba,
M alaga,
J aen,
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.5
Dominios: {T , F } (booleanos)
Problema NP-completo
u
Por tanto, en el peor caso, no es posible resolver PSRs con dominios finitos en
tiempo polinomial (si P 6= N P ).
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.6
Ejemplo: criptoaritm
etica
x
Restricciones:
(C1 C2 C3)
I D E A
+
I D E A
M E N T E
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.7
Ejemplo: asignaci
on de tareas
x
Variables: Ei
Restricciones:
u
Obtener la mejor
Pn
i=1 Ci
T1
1
3
2
T2
3
2
3
T3
2
1
1
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.8
Ejemplo: planificaci
on de corte
x
Restricciones:
u
IA-I 20062007
Cc Ia
Problemas de satisfacci
on de restricciones
5.9
Problemas de Satisfacci
on de Restricciones
x
HU=SE
HU
CO
CO=JA
JA
CO=GR
SE
JA=GR
SE=MA
CA=SE
CO=MA
MA
MA=GR
GR
GR=AL
AL
HU=CA
CA
IA-I 20062007
CcIa
CA=MA
Problemas de satisfacci
on de restricciones
5.10
Implementaci
on de la representaci
on de un PSR
x
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.11
Estados:
u
Estado inicial: {}
Operadores:
u
Aplicabilidad: la asignaci
on resultante tiene que ser consistente
Soluciones mediante b
usqueda en profundidad
u
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.12
Simplificaciones en la b
usqueda
x
Por tanto, los operadores puden reducirse a considerar las posibles asignaciones a
una u
nica variable no asignada
El camino no es importante
u
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.13
B
usqueda en profundidad para PSR: implementaci
on
x
Funci
on que elige la nueva variable a asignar (de entre las no asignadas):
u
Funci
on que ordena los valores a asignar:
u
SELECCIONA-VARIABLE(ESTADO)
ORDENA-VALORES(DOMINIO)
Funci
on que calcula los sucesores:
FUNCION PSR-SUCESORES(ESTADO)
1. Hacer VARIABLE igual a SELECCIONA-VARIABLE(ESTADO)
Hacer DOMINIO-ORD igual ORDENA-VALORES(PSR-VAR-DOMINIO(VARIABLE))
Hacer SUCESORES igual a vac
o
2. Para cada VALOR en DOMINIO-ORD,
Hacer NUEVO-ESTADO igual a la asignaci
on obtenida ampliando
ESTADO con VARIABLE=VALOR
Si NUEVO-ESTADO es consistente con *RESTRICCIONES*,
a~
nadir NUEVO-ESTADO a SUCESORES
3. Devolver SUCESORES
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.14
B
usqueda en profundidad para PSR: implementaci
on
FUNCION PSR-BUSQUEDA-EN-PROFUNDIDAD()
1. Hacer ABIERTOS igual a la lista formada por la asignaci
on vac
a
2. Mientras que ABIERTOS no est
e vac
a,
2.1 Hacer ACTUAL el primer estado de ABIERTOS
2.2 Hacer ABIERTOS el resto de ABIERTOS
2.3 Si ACTUAL es una asignaci
on completa
2.4.1 devolver ACTUAL y terminar.
2.4.2 en caso contrario,
2.4.2.1 Hacer NUEVOS-SUCESORES igual a PSR-SUCESORES(ACTUAL)
2.4.2.2 Hacer ABIERTOS igual al resultado de incluir
NUEVOS-SUCESORES al principio de ABIERTOS
3. Devolver FALLO.
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.15
B
usqueda en profundidad para PSR: ejemplos
x
8 reinas:
>
>
>
>
>
(load "psr-alg-comun.lsp")
(load "psr-busqueda-en-profundidad")
(load "psr-n-reinas")
(n-reinas 8)
(psr-busqueda-en-profundidad)
((8 . 4) (7 . 2) (6 . 7) (5 . 3) (4 . 6) (3 . 8) (2 . 5) (1 . 1))
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.16
Algoritmo de backtracking
x
El algoritmo de b
usqueda en profundidad anterior se suele llamar algoritmo de backtracking
u
FUNCION PSR-BACKTRACKING()
Devolver PSR-BACKTRACKING-REC({})
FUNCION PSR-BACKTRACKING-REC(ESTADO)
1. Si ESTADO es una asignaci
on completa, devolver ESTADO y terminar
2. Hacer VARIABLE igual a SELECCIONA-VARIABLE(ESTADO)
Hacer DOMINIO-ORD igual ORDENA-VALORES(PSR-VAR-DOMINIO(VARIABLE))
3. Para cada VALOR en DOMINIO-ORD,
3.1 Hacer NUEVO-ESTADO igual a la asignaci
on obtenida ampliando
ESTADO con VARIABLE=VALOR
3.2 Si NUEVO-ESTADO es consistente con *RESTRICCIONES*, hacer:
3.2.1 RESULTADO igual PSR-BACKTRCKING-REC(NUEVO-ESTADO)
3.2.2 Si RESULTADO no es FALLO, devolver RESULTADO y terminar
3. Devolver FALLO
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.17
B
usqueda no informada, ineficiente en la pr
actica
Sin embargo, es posible dotar al algoritmo de cierta heurstica que mejora considerablemente su rendimiento
u
Selecci
on de nueva variable a asignar
Orden de asignaci
on de valores a la variable elegida
Propagaci
on de informaci
on a trav
es de las restricciones
Vuelta atr
as inteligente en caso de fallo
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.18
Selecci
on de variables y ordenaci
on de valores
x
Definici
on adecuada de la funci
on SELECCIONA-VARIABLE(ESTADO)
u
Heurstica MRV:
seleccionar la variable con el menor n
umero de valores en su dominio consistente
con la asignaci
on parcial actual
u Ejemplo:
u
Con la asignaci
on (parcial) {Huelva=Rojo, Sevilla=Azul, Malaga=Rojo},
la siguiente variable a asignar ser
a Cadiz o Cordoba (en ambos
casos s
olo hay un valor en sus dominios consistente con la asignaci
on)
x
Ordenaci
on de valores a asignar (funci
on ORDENA-VALORES(DOMINIO))
u
Considerar antes los que eliminen menos posibles valores de las variables por asignar
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.19
Comprobaci
on hacia adelante (forward checking)
x
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
-->
-->
-->
-->
eliminar
eliminar
eliminar
eliminar
R
R
A
V
del dominio de GR
de los dominios de HU, SE y MA
de los dominios de MA, SE y JA
de los dominios de JA y MA
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.20
Ejemplo: N-reinas
x
R
R
R
R
R
R
R
R
R
R
R
R
R
R
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.21
Propagaci
on de restricciones
x
Cuestiones t
ecnicas sobre la comprobaci
on hacia adelante:
u
Muy f
acil de usar en conjunci
on con la heurstica MRV
La comprobaci
on hacia adelante es un caso particular de propagaci
on
de restricciones:
u
Propagar las implicaciones de las restricciones sobre una variable sobre otras variables
existen t
ecnicas m
as completas para propagar restricciones que la comprobaci
on
hacia adelante
la propagaci
on debe ser r
apida: completitud vs rapidez
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.22
Consistencia de arcos
x
Notaci
on: B > E, CO 6= SE, |Vi Vj | =
6 |i j|
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
on del
arco
Ejemplo: si SE tiene como dominio {rojo} y CO tiene como dominio {rojo, verde},
el arco CO 6= SE no es consistente
En este u
ltimo caso, el arco puede hacerse consistente eliminando rojo del dominio
de CO
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.23
Objetivo:
u
devolver un conjunto de dominios actualizado tal que todos los arcos del problema
sean consistentes
Actualizaci
on de dominios:
u
Revisi
on de arcos:
u
Criterio de parada:
u
Todos los arcos son consistentes respecto a los dominios de las variables
O alg
un dominio queda vaco (inconsistencia)
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.24
Planificaci
on 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 u
nidad de tiempo. Restricciones:
u
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.25
Representaci
on como grafo:
A
A=B
1 2
3 4
A=D
1
2
4
B=D
B=C
1 2
3 4
C<D
E<D
E
E<A
IA-I 20062007
CcIa
1
3 4
E<C
1 2
3 4
E<B
Problemas de satisfacci
on de restricciones
5.26
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.27
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.28
Implementaci
on del algoritmo AC-3
x
Generaci
on de todos los arcos de un PSR:
FUNCION ARCOS()
1. Hacer ARC igual a vac
o
2. Para cada RESTRICCION es *RESTRICCIONES*
2.1 Para cada VARIABLE en PSR-RESTR-VARIABLES(RESTRICCION)
A~
nadir a ARC el arco formado por VARIABLE+RESTRICCION
3. Devolver ARC
C
alculo de dominio actualizado:
FUNCION ACTUALIZA-DOMINIO(VARIABLE,RESTRICCION,VARIABLES)
1. Hacer DOMINIO-ACTUAL igual al dominio de VARIABLE en VARIABLES
Hacer NUEVO-DOMINIO igual a vac
o
2. Para cada VALOR en DOMINIO-ACTUAL hacer
2.1 Si para ese VALOR de VARIABLE existe una asignaci
on a las
restantes variables de RESTRICCION que satisfaga RESTRICCION,
incluir VALOR en NUEVO-DOMINIO
3. Devolver NUEVO-DOMINIO
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.29
Implementaci
on del algoritmo AC-3
x
Algoritmo AC-3
u
FUNCION AC-3(VARIABLES)
1. Hacer RED igual a ARCOS()
2. Mientras RED no sea vac
o
2.1 Hacer ACTUAL el primero de RED y RED el resto de RED
2.2 Hacer VARIABLE igual a ARCO-VARIABLE(ARCO) y
RESTRICCION igual ARCO-RESTRICCION(ARCO)
2.3 Hacer VIEJO-DOMINIO igual al dominio de VARIABLE en VARIABLES
2.4 Hacer NUEVO-DOMINIO igual a ACTUALIZA-DOMINIO(VARIABLE,RESTRICCION,VARIABLES)
2.5 Si NUEVO-DOMINIO y VIEJO-DOMINIO son distintos, entonces
2.5.1 Actualizar el dominio de VARIABLE en VARIABLES con NUEVO-DOMINIO
2.5.2 Incluir en RED todos los arcos de ARCOS() en los que aparezca
VARIABLE y esta NO sea la variable distinguida del arco
2.6 Devolver VARIABLES
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.30
Propiedades de AC-3
x
n: n
umero de variables
d: m
aximo n
umero de valores de un dominio
Por tanto, s
olo con AC-3 no es posible resolver un PSR
u
Dos aproximaciones:
u
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.31
B
usqueda de soluciones mediante consistencia de arcos
x
Hasta que se detecta inconsistencia en todas las alternativas (no hay soluci
on)
Hasta que se obtiene un estado con todos los dominios unitarios (soluci
on)
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.32
B
usqueda de soluciones mediante consistencia de arcos
FUNCION BUSQUEDA-AC3()
1. Hacer ABIERTOS igual a una lista cuyo
unico elemento es
una copia de *VARIABLES*
2. Mientras que ABIERTOS no est
e vac
a,
2.1 Hacer ACTUAL igual a AC3(PRIMERO(ABIERTOS))
2.2 Hacer ABIERTOS el resto de ABIERTOS
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~
nadirlos
a la lista de ABIERTOS
3. Devolver FALLO.
x
Gesti
on de la cola de abiertos: anchura o profundidad
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.33
Consistencia de arcos
x
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.34
Generaci
on de sucesor: elegir una variable y cambiar el valor que tiene asignado
(usando cierta heurstica y aleatoriedad)
Generaci
on de sucesor mediante la estrategia de mnimos conflictos
u
Valor elegido: aquel valor (distinto del que tena) que produce el menor n
umero de
restricciones incumplidas (los empates se deshacen aleatoriamente)
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.35
Algoritmo de reparaci
on heurstica (mnimos conflictos)
x
Pseudoc
odigo:
FUNCION MIN-CONFLICTOS(MAX-ITERACIONES)
1. Hacer ACTUAL igual a un nodo con una asignaci
on generada aleatoriamente.
2. Para I desde 1 hasta MAX-ITERACIONES hacer
2.1 Si la asignaci
on de ACTUAL es una soluci
on, devolverla y terminar.
2.2 Hacer VARIABLE igual a una variable (distinta de la
ultima
modificada) escogida aleatoriamente de entre aquellas que
participan en el mayor n
umero de restricciones incumplidas.
2.3 Hacer SUCESORES igual a la lista de nodos obtenidos cambiando
en la asignaci
on de ACTUAL el valor de VARIABLE por cada uno de
los posibles valores del dominio de VARIABLE en *VARIABLES*
(excepto el correspondiente al valor que ten
a en ACTUAL)
2.4 Hacer ACTUAL el nodo de SUCESORES escogido aleatoriamente de
entre aquellos cuya asignaci
on incumple el menor n
umero de restricciones
3. Devolver FALLO
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.36
Reparaci
on heurstica: ejemplos
x
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.37
Reparaci
on heurstica: ejemplos
x
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.38
Comparaci
on de los tres algoritmos:
x
Ejemplo: N-reinas
N
4
8
12
backtracking
arcos
min-conflictos (media sobre 10 pruebas)
tiempo espacio tiempo espacio tiempo
espacio
0.04
84064
0.06
73968
0.08
97019
6.18
9967912
3.17
2792464
2.27
2953025
51.16 75282044 22.71 16295860 16.96
20217256
Reparaci
on heurstica tiene muy buenos resultados en algunos tipos de
PSRs:
u
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.39
Bibliografa
x
Cap. 11 M
etodos alternativos de b
usqueda y otras aplicaciones.
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.40
Inteligencia Artificial I
Curso 20062007
Tema 5 (anexo):
Implementaciones en Lisp
Universidad de Sevilla
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.41
Representaci
on de PSRs
x
Representaci
on de las variables:
Representaci
on de las restricciones:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.42
CcIa
Problemas de satisfacci
on de restricciones
5.43
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.44
CcIa
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))
(eq x y))))))
Problemas de satisfacci
on de restricciones
5.45
Soluci
on a PSRs mediante b
usqueda en profundidad (I)
x
Estados finales:
Sucesores:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.46
Soluci
on a PSRs mediante b
usqueda en profundidad (II)
x
Asignaci
on de nuevas variables:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.47
Soluci
on a PSRs mediante b
usqueda en profundidad (III)
x
Eliminaci
on de asignaciones inconsistentes:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.48
Soluci
on a PSRs mediante b
usqueda en profundidad (y IV)
x
B
usqueda en profundidad:
(defun psr-busqueda-en-profundidad ()
(let ((abiertos (list nil)))
(loop until (null abiertos) do
(setf actual (first abiertos))
(setf abiertos (rest abiertos))
(cond ((es-asignacion-completa actual)
(return actual))
(t (setf nuevos-sucesores (bpr-sucesores actual))
(setf abiertos (append nuevos-sucesores abiertos)))))))
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.49
Selecci
on de variables y ordenaci
on de valores:
Backtracking recursivo:
CcIa
Problemas de satisfacci
on de restricciones
5.50
Consistencia de arcos
x
Arco = Restricci
on + Variable
(defun arcos ()
(loop for restriccion in *restricciones* append
(loop for var in (psr-restr-variables restriccion) collect
(crea-arco :variable var :restriccion restriccion))))
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.51
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.52
Obtenci
on de arcos cuya consistencia es discutible:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.53
Actualizaci
on de dominios (restricciones binarias):
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.54
Tests de existencia:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.55
B
usqueda de soluciones mediante consistencia de arcos (I)
x
B
usqueda por consistencia de arcos:
(defun busqueda-ac3 ()
(let ((abiertos (list (copia-lista-variables-psr *variables*)))
(actual nil))
(loop until (null abiertos) do
(setf actual (ac3 (first abiertos)))
(setf abiertos (rest abiertos))
(cond ((hay-dominio-vacio actual)
nil)
((dominios-unitarios actual)
(return actual))
(t (setf abiertos
(append (cda-sucesores actual) abiertos)))))))
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.56
B
usqueda de soluciones mediante consistencia de arcos (II)
x
Comprobaci
on de dominios vacos:
Generaci
on de sucesores:
CcIa
Problemas de satisfacci
on de restricciones
5.57
B
usqueda de soluciones mediante consistencia arcos (y III)
x
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.58
Reparaci
on heurstica (mnimos conflictos) (I)
x
Nodo:
Funci
on principal:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.59
Reparaci
on heurstica (mnimos conflictos) (II)
x
Construcci
on del nodo inicial:
(defun crea-nodo-inicial ()
(crea-nodo-minc
:estado
(loop for var in *variables* collect
(crea-variable :nombre (psr-var-nombre var)
:dominio (list (first (psr-var-dominio var)))))
:ultima-modificada nil))
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.60
Reparaci
on heurstica (mnimos conflictos) (III)
x
N
umero de conflictos de un estado:
Comprobaci
on de restricciones (binarias):
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.61
Reparaci
on heurstica (mnimos conflictos) (IV)
x
Generaci
on de sucesores de un nodo gsat:
CcIa
Problemas de satisfacci
on de restricciones
5.62
Reparaci
on heurstica (mnimos conflictos) (V)
x
Selecci
on aleatoria de una variable conflictiva:
(V1 . . . Vi . . . Vn) = ((V1 . . . Vi1) Vi (Vi+1 . . . Vn))
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.63
Reparaci
on heurstica (mnimos conflictos) (VI)
x
Selecci
on aleatoria de una variable conflictiva:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.64
Reparaci
on heurstica (mnimos conflictos) (VII)
x
N
umero de restricciones incumplidas por una variable:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.65
Reparaci
on heurstica (mnimos conflictos) (y VIII)
x
Selecci
on del nodo menos conflictivo:
IA-I 20062007
CcIa
Problemas de satisfacci
on de restricciones
5.66