Está en la página 1de 38

Esquema Global

Razonamiento 1. Introduccin
- Definiciones
- Ejemplos
con
2. Mtodos de Resolucin
- Bsqueda
Restricciones - Inferencia
- Mtodos hbridos

Tutorial IBERAMIA 2002 3. Modelizacin


- Primal / dual
- Restricciones globales
Javier Larrosa
Dep. LSI, UPC, Barcelona - Programacin con restricciones

Pedro Meseguer 4. Restricciones Blandas


IIIA, CSIC, Bellaterra
- Modelos
- Algoritmos
Esquema Satisfaccin de Restricciones

Introduccin Definicin: CSP o constraint satisfaction problem ,


Definiciones definido por una terna (X, D, C )
Ejemplos
X = { X1, X2, . . ., Xn } variables

Metodos de resolucin D = { D1, D2, . . ., Dn } dominios


Bsqueda: C = { C1, C2, . . ., Cr } restricciones
Generar y testear
Dada una restriccin Ci ,
Backtracking
Backjumping var(Ci ) = {Xi1,..., Xik } relaciona k variables
(restriccin k-aria)
Inferencia rel(Ci ) Di1 Di2 . . . Dik tuplas de valores
Consistencia de arcos permitidos
Consistencia de caminos incompleta
K-consistencia
Problemas libres de backtracking completa Solucin: asignacin de valores a variables
Consistencia adaptativa satisfaciendo todas las restricciones

Algoritmos hbridos Complejidad:


Forward Checking
Really Full Lookahead - NP-completo
Maintaining Arc Consistency - algoritmos de coste exponencial
Heursticas (caso peor)
Inters de los CSP Car sequencing problem

Relevancia: Cadena de montaje de coches


Problemas reales como CSPs:
Car sequencing problem
Asignacin de recursos (scheduling)
Diseo de bloques (BIBDs) FAROS ANTINIEBLA X X

TECHO SOLAR X X X
Para la IA: CLIMATIZADOR X X
Restricciones: formal general de
representacin del conocimiento
Satisfaccin de restricciones: razonamiento
automtico
Ejemplos: Area techo solar Area climatizador
SAT
Capacidad 3/5 Capacidad 2/3
razonamiento temporal
razonamiento basado en modelos
Formulacin:
Especializacin: variables: n coches a producir
tipo de dominios: dominios: modelos de coche
discretos / continuos restricciones: capacidad de las reas
finitos / infinitos
tipo de restricciones: Caractersticas:
binarias / n-arias CSP no binario, discreto y finito
Asignacin de recursos Restricciones binarias

Job-shop scheduling CSP binario:


n jobs, cada uno con m operaciones, { X1, X2, . . ., Xn } variables
m recursos, cada operacin necesita un recurso
de forma exclusiva durante un tiempo { D1, D2, . . ., Dn } dominios discretos y finitos
precedencia entre las operaciones de cada job, { Rij } restricciones binarias
Se pueden realizar los n jobs en tiempo D?

R2 R1 R3 var(Rij ) = {Xi , Xj}


A1 A2 A3
rel(Rij ) = {valores permitidos para Xi y Xj}
R1 R2 R3 Rij simtrica
0 B1 B2 B3 D

R1 R3 R2
C1 C2 C3
Solucin: asignacin de valores a variables
tiempo satisfaciendo todas las restricciones.
Formulacin:
variables: operaciones
Generalidad: todo problema n-ario se puede formular
dominios: tiempos de inicio de cada operacion como un problema binario [Rossi et al, 90]
restricciones:
Ejemplos:
precedencia entre las operaciones de un job
Coloreado de grafos
exclusividad de cada recurso en el tiempo
Satisfacibilidad booleana (SAT)
Caractersticas:
N-reinas, crucigramas, criptoaritmtica
CSP binario, discreto y finito (acotado por D)
N-reinas Coloreado de grafos

Definicin: posicionar n reinas en un tablero de Definicin: Dado un grafo,


ajedrez n n, de forma que no se ataquen. n nodos
m colores,
asignar un color a cada nodo de forma que no haya
dos nodos adyacentes con el mismo color.

Colores
n =5

Formulacin: 1 reina por fila


variables: reinas, Xi reina en la fila i-sima
dominios: columnas posibles {1, 2, . . . , n}
restricciones: no colocar dos reinas en
la misma columna Formulacin:
la misma diagonal variables: nodos
rel(Rij)= {(a,b)| ab |i -j||a -b|} dominios: colores posibles
restricciones: nodos adyacentes
Caractersticas:
CSP binario, discreto y finito Caractersticas:
existe un mtodo de solucin constructivo CSP binario, discreto y finito
Generacin de crucigramas Restricciones temporales

Definicin: Dada una rejilla y un diccionario, construir Definicin: dado un conjunto de sucesos que ocurren
un crucigrama legal. en intervalos temporales con ciertas
relaciones, encontrar una asignacin
temporal consistente.
C O L 4 palabras de 1 letra
O 4 palabras de 3 letras X1 X2 [30, 40] X3
2 palabras de 5 letras [10, 20] [60, )
Z

[10, 20]
X4
Formulacin: [20, 30][40, 50]
variables: grupo de casillas para una palabra
(slots) [60, 70] X5
dominios: palabras del diccionario con la
longitud adecuada Formulacin:
restricciones: misma letra en la interseccin de variables: sucesos
dos palabras dominios: intervalo temporal para cada suceso
restricciones: distancia temporal permitida entre
Caractersticas:
sucesos; relaciones temporales
CSP binario, discreto y finito (dominios
antes, despus, solapado, etc.
grandes)

Caractersticas:
CSP binario, contnuo e infinito
Grafo de restricciones Esquema

Grafo de restricciones: Introduccin


{ Xi } nodos Definiciones
Ejemplos
{ Di } dominios en los nodos
{ Rij } arcos etiquetados
Metodos de resolucin
X1 Bsqueda:
Coloreado de mapas azul, rojo Generar y testear
Backtracking
azul, rojo
X2 Backjumping
azul azul
azul,
rojo, azul, Inferencia
X3
verde verde X4 Consistencia de arcos
azul, rojo, azul, verde Consistencia de caminos incompleta
verde
K-consistencia
Problemas libres de backtracking completa
4-reinas
X1 X2 Consistencia adaptativa
1 2 3 4
X1 1,2,3,4 1,2,3,4
Algoritmos hbridos
X2
Forward Checking
X3
Really Full Lookahead
X4 1,2,3,4 1,2,3,4 Maintaining Arc Consistency
X3 X4
Heursticas
Generar y testear Bsqueda con backtracking

Algoritmo: generacin y test de todas las Estrategia:


asigaciones totales posibles. Construir una solucin parcial : asignacin parcial
1. Generar una asignacin total. que satisface las restricciones de las variables
2. Comprobar si es solucin. Si es, stop, sino ir a 1 involucradas.

Extender la solucin parcial, incluyendo una


Ejemplo: 4-reinas variable cada vez hasta una solucin total

Si no se puede extender backtracking


- cronolgico: se elimina la ltima decisin
- no cronolgico: se elimina una decisin
anterior
.... Tipos de variables:
pasadas solucin parcial, tienen valor asignado
futuras solucin parcial, no tienen valor asignado
Eficiencia: actual, variable en curso
es muy poco eficiente Tipos de restricciones:
genera muchas asignaciones CP restricciones entre pasadas
que violan la misma restriccin CPF restricciones entre pasadas y futuras
CF restricciones entre futuras
CX restricciones que involucran var X
rbol de bsqueda Recorrido del rbol de bsqueda

Espacio de estados: representable por un rbol Recorrido primero en profundidad: preorden


raz: asignacin vaca en cada nivel se asigna una nueva variable
a cada nivel asociamos una variable variable actual
sucesores de un nodo: todos los valores de la variables
variable asociada a ese nivel pasadas (asignadas), P
futuras (sin asignar), F
4 variables / 4 valores X1
X1
pasadas

X2
X2

X3 ... ... ... ...


X3 ... ... ... ... futuras

... ... ... ...


X4 ... ... ... ... X4

visitada por visitar


asignacion total asignacion parcial nodo actual

Si nodo actual (P) inconsistente:


Arbol de bsqueda: subrbol sucesor no contiene soluciones
contiene todos los estados no se visita se poda
recorrido exhaustivo mtodo completo ventaja con respecto a generar y testear
Backtracking BT recursivo

BT = DFS + consistencia(P)
funcion bt(x variable): booleano
DFS: bsqueda primero en profundidad para todo aD(x) hacer
x a
si test(x,pasadas)
consistencia(P): Si P es consistente, continua pasadas pasadas + {x}
sino, backtracking si bt(siguiente(x)) retorna CIERTO
sino pasadas pasadas - {x}
retorna FALSO
consistencia(P): es suficiente con comprobar que
actual es consistente con variables anteriores

funcion test(x variable,P conjunto):booleano

pasadas para todo yP hacer


si (val(x),val(y)) rel(Rxy) retorna FALSO
retorna CIERTO

... ... ... ...


futuras

... ... ... ...

nodos inconsistentes nodo


actual
Problemas del backtracking Backtracking cronolgico

Visin local: la variable actual slo se compara X1


con las variables pasadas X2
Situacin: (1, a) incompatible con (n , _) X3
X4
X5
X1 a b
X6
X7
X8
...

Xn Arbol de bsqueda:

X1
BT: recorrer el subrbol {X2 , ..., Xn }
1
(1/m del rbol total) para darse cuenta X2
de que a no esta en la solucin. 3
BT: enumera
Alternativas: X3 exhaustivamente
5
detectar que a es incompatible con Dn todas las
X4 asignaciones
-- antes de la bsqueda 2
parciales
-- al asignar a X5 consistentes
4
backtracking no cronolgico:
X6
-- saltar directamente de Xn a X1
Backjumping Backjumping dirigido por conflictos

X1 Conjunto conflicto de Xj :
X2 - var pasadas incompatibles con algun valor de Xj
X3
X1 {} conjunto
X4 conflicto
X2 1 1 {1}
X5
X3 1 2 1 2 {1, 2}
X6 bloqueo
X4 1 {1}
X7
X5 1 4 2 {1, 2, 4}
X8
X6 1 3 2 4 3 1 2 3 {1, 2, 3, 4}
Observacin: X7
- cambiar el valor de X5 no elimina el bloqueo X8
- backtracking sobre una variable anterior: X4
Proceso :
X1
- backjumping (Xj) = max conjunto conflicto(Xj)
1
X2
3 X1, X2,. . . , Xi , . . ., Xj ,. . . ,Xn
X3 Backjumping:
5 - salta a una variable - tras backjump de Xj a Xi ,
X4 responsable del bloqueo conjunto conflicto (Xi ) = conjunto conflicto (Xi )
2 - no enumera aquellas
X5 asignaciones parciales {conjunto conflicto (Xj ) - Xi }
4 que no conducen a - se transpasan a Xi los conflictos de Xj con
X6 ninguna solucin variables anteriores a Xi
Esquema Propagacin de restricciones

Introduccin Restricciones:
Definiciones explcitas: definicin del problema
Ejemplos implcitas: inducidas por la accin de las explcitas

Metodos de resolucin
Propagacin: hace explcitas las restricciones implcitas
Bsqueda:
Generar y testear
X1 R12:(a,b) (b,c) X2
Backtracking a, b, c a, b, c
Backjumping
R13:
Inferencia (a,c)
(c,b)
Consistencia de arcos a, b, c X3
Consistencia de caminos incompleta
K-consistencia
Problemas libres de backtracking completa
Consistencia adaptativa
X1 R12:(a,b) (b,c) X2
Algoritmos hbridos a, b, c a, b, c
Forward Checking
R13: R23:
Really Full Lookahead (b,c)
(a,c)
Maintaining Arc Consistency (c,b)
Heursticas a, b, c X3
Microestructura Microestructura

X1 X2 X1 X2
a a a a

b b b b

c c c c

X3 X3
a b c a b c

valores compatibles
valores compatibles
no se pueden extender
a una solucin global
Reduccin de problemas Consistencia de arcos

Propagacin: Una restriccin Rij es arco consistente direccional


P genera un P = P + restricciones implcitas (de i a j) ssi para todo valor aDi existe bDj tal
P es equivalente a P, SOL(P) = SOL(P ) que (a, b)rel(Rij )
P se reduce a P
Una restriccin Rij es arco consistente si es arco
Total: consistente direccional en los dos sentidos
consistencia global
sintetiza una nica restriccin global Un problema es arco consistente ssi todas sus
tuplas permitidas = soluciones restricciones lo son.
coste temporal exponencial

Xk
Parcial: a b c
consistencia local
P es ms fcil de resolver que P
|espacio estados P| > |espacio de estados P | Xi Xj
a a
si Di = , final, no hay solucin
coste polinmico b b
preproceso antes de bsqueda con backtracking
c c
intercalado con bsqueda con backtracking
Filtrado por consistencia de arcos AC-1: Algoritmo consistencia de arcos
Idea: si para a Di no existe b Dj tal que (a, b)rel(Rij ), funcion revise (i,j variable): booleano;
se puede eliminar a de Di porque a no estar en delete FALSO
ninguna solucin. para cada aDi hacer
si no hay bDj tq.(a,b)rel(Rij)
Di Di - a
Filtrado de dominios por consistencia de arcos: se
delete CIERTO
eliminan los valores responsables de la arco retorna delete
inconsistencia.
X1
Coloreado de grafos:
X2 azul, rojo
procedimiento AC-1 ()
azul Q {(i,j)|(i,j) arcos(G), ij}
/* Rij aporta dos arcos a Q (i,j) y (j,i)*/

X4 repetir
X3 azul, rojo, cambio FALSO
verde azul, verde
para cada (i,j)Q hacer
cambio revise(i,j) o cambio
X1 hasta no (cambio)

X2 azul, rojo
PUNTO /* variables globales
FIJO azul

G: grafo de restriccioens
X4
{Di}: dominios de las variables */
X3 azul, rojo,
verde azul, verde
AC-3: Algoritmo consistencia de arcos Consistencia de caminos

Un par de valores ((i, a) (j, b)), tal que (a, b)rel(Rij ),


a, b, c, . revise(k,m)
. es camino consistente ssi para todo Xk , ik, jk,
Xk Xm existe cDk tal que,

Xp (a, c)rel(Rik) y (c, b)rel(Rkj )

Xq Xr
Un par de variables (Xi , Xj) es camino consistente
revise(k,m) borra b y c de Dk
ssi todo par de valores (a, b)rel(Rij ) es camino
Qu arcos hay que revisitar? Aquellos que han consistente.
dejado de ser arco consistentes por el borrado Un problema P es camino consistente ssi todo
de b y c. par de variables es camino consistente.

(k,_): no, si era arco consistente, Xk


a b
lo sigue siendo tras el borrado
(_,k): si, pueden convertirse en arco
inconsistentes por el borrado

procedimiento AC-3 (G)


Q {(i,j)|(i,j) arcos(G), ij} Xi Xj
a a
mientras Q hacer
selecciona y borra un arco (k,m) de Q
si revise(k,m) entonces b b
Q:=Q {(i,k)|(i,k) arcos(G),ik,im}
N-reinas y consistencia local Representacin matricial

N-REINAS: para N=4 es arco consistente Rij Di Dj ; definicin conjuntista

X1 Para cualquier valor


Dominios discretos y finitos:
X2 de Xi existe un valor
de Xj consistente - ordenar valores
X3 (cada reina restringe - representacin matricial de la restriccin
X4 3 posiciones)
rij, ab = 1 si (a, b) Rij
0 si (a, b) Rij
N-REINAS: para N=4 es no es camino
consistente
X1 4-REINAS
1 2 3 4
No hay valor
X2
posible para X3 X1
X3
X2
X4
X3
X4
Consistencia
de caminos
1 2 3 4
X1 Soluciones: 1 0 0 1 1
X2 r12 = 2 0 0 0 1
X3 3 1 0 0 0
4 1 1 0 0
X4
Operaciones con restricciones Consistencia local y operadores

Interseccin de restricciones: Consistencia de arcos: rii = rii & rij rjj rji
Rij rii
Xi Xj
Rij Xi Xj rjj
rij
Rij
rii

Rij = Rij Rij rij, kl = rij, kl rij, kl


- genera restricciones unitarias (filtra dominios)
rij = rij & rij - se alcanza cuando rii = rii

Consistencia de caminos:
Composicin de restricciones: rij = rij & rik rkk rkj
Xk
Rik Rkj
rkk
Xk
Xi Xj rik rkj
Rij
rij
Xi Xj
rel(Rij)= {(a, b)|c_Dk, (a, c) rel(Rik,), (c, b)rel(Rkj)} rij

rij = rik rkj rij, pq = t=1,.., m (rik, pt rkj, tq) - genera restricciones binarias
- se alcanza cuando rij = rij
PC-1: Algoritmo consistencia caminos PC-2: Algoritmo consistencia caminos

procedimiento PC-1 () funcion revise (i,j,k variable)


Yn {rij}; Z Yij & Yik * Ykk * Ykj
repetir si Z=Yij retorna FALSO
Y0 Yn; sino
para k 1 hasta n hacer Yij Z
para i i hasta n hacer retorna CIERTO
para j 1 hasta n hacer
Yijk Yijk-1 & Yikk-1 * Ykkk-1 * Ykjk-1;
hasta Y =Y0;
n funcion related_paths (i,k,j variable)
{rij} Yn; Sa {(i,j,m)|(imn),mj}
{(m,i,j)|(1mj),mi}
{(j,i,m)|(j<mn)}
{(m,j,i)|(1mi)}
Sb {(p,i,m)|(1pm), (1mn),
/* variables globales
(p=i=m), (p=m=k)}
rij: representaciones matriciales si i<j retorna Sa
de las restricciones */ sino retorna Sb

procedimiento PC-2 ()
Q:={(i,k,j)|(ij), (i=k=j)}
mientras Q hacer
selecciona y borra camino (i,k,j) de Q
si revise(i,k,j)
Q Q related_paths(i,k,j);
K-Consistencia K-consistencia: Ejemplo

K-Consistencia: X2

- dado un subconjunto de k-1 variables asignadas rojo, azul


{X1, X2,. . . , Xk-1} consistente;
- para cualquier Xk existe d Dk tal que
{X1,X2,. . ., Xk } es consistente.
X1 X3

rojo
K-Consistencia: generalizacin rojo
2-consistencia: consistencia de arcos
3-consistencia: consistencia de caminos
K= n, propagacin total
K-consistencia no implica K-consistencia fuerte

K-Consistencia fuerte: Ejemplo:


J-consistente, para 1 J K - Es 3-consistente: para cualquier par de dos
variables con valores consistentes, existe un
valor consistente para la tercera
Algoritmos para K-consistencia fuerte:
Freuder 82, Cooper 89
- No es 2-consistente: arco X2 - X1
Complejidad: O(exp K)
Problemas libres de backtracking Consistencia Direccional
Orden de variables: { X1, X2,. . . , Xn} Consistencia Direccional:
Anchura de un nodo: # arcos a nodos anteriores - grafo ordenado, {X1, X2,.. , Xn},
Anchura de una ordenacin: maxi {anchura Xi } - consistencia local siguiendo el orden:
Anchura de un grafo: min anchura ordenaciones - consistencia de arcos direccional:
X1 de Xi a Xj, i < j

X1 X2 X3 X4 - consistencia de caminos direccional:


X2
(Xi, Xj), camino de Xi, a Xj siguiendo orden
anchura = 2
X3 X4 TEOREMA: un grafo de anchura 1 y consistencia
de arcos direccional: es libre de backtracking.
TEOREMA: Dado un orden de variables con [Dechter y Pearl 88]
anchura K, el problema se puede resolver sin
Algoritmos:
backtracking si el nivel de consistencia fuerte es
DAC: ptimo, O(nm2), [Dechter y Pearl 88]
mayor que K. [Freuder 82]
DPC: O(n3m3), [Dechter y Pearl 88]
Algoritmos:
Grafos regulares de anchura 2:
Mnima anchura de un grafo: O(n2)
K-consistencia: O(exp k). No cambian su anchura tras DPC
Aade arcos extras, aumenta la anchura Deteccin: O(n) [Arnborg 85]
No aade arcos para anchura 1
Los rboles tienen anchura 1
Estructura de rbol = libre de backtracking,
tras consistencia de arcos
Consistencia Adaptativa Consistencia Adaptativa

Problema P, variable X, CX: restricciones sobre X


Consistencia adaptativa:
- grafo ordenado, {X1, X2,.. , Xn}, IDEA:
- anchura de Xi es wi - Sustituir CX por c
eliminacin
- consistencia direccional wi + 1 en Xi - c resume el efecto de CX sobre P de variable
(consistencia adaptada a la anchura). - c no menciona X
entonces X se puede eliminar

TEOREMA: un grafo ordenado con consistencia PROCESO:


adaptativa es libre de backtracking. problemas P -> P -> P -> . -> P(n-1
[Dechter y Pearl 88] variables n n-1 n-2 1

SOLUCION:
Algoritmo: - S(n-1 solucin de P(n-1
A-C: [Dechter y Pearl 88]
O(n exp(W*+ 1)) W*: anchuraresultante - S(n-2 solucin de P(n-2 a partir de S(n-1
Aade arcos extras, aumenta la anchura
-...

Cota superior: [Tarjan y Yannakakis 84]


- S solucin de P a partir de S
Calculable en O(n + e)
Ejemplo: 4-reinas (x1)
Eliminacin de Variable

Para eliminar var X: proyecta


x join
Cx x1 x2 x1 x2 x1 x2
Join todas las restricciones Cx c
x3 x4 x3 x4 x3 x4
Sustituir Cx por c x
c
Proyectar la variable x fuera c c
x1 x2 x3 x4 x1 x2 x3 x4
Sustituir c por c x 1 3 2 2 3 1 4 4
1 3 2 3 3 1 4 2
1 3 4 2 3 1 4 1
Si existe c var(c) = var(c), c c c
c 1 3 4 3 3 1 2 4
1 4 2 2 3 1 2 2
1 4 2 3 3 1 2 1
1 4 4 2 4 2 3 3
1 4 4 3 4 2 3 2
2 4 1 1 4 2 1 3
2 4 1 3 4 2 1 2
Para obtener la solucin: 2 4 1 4 4 1 3 3
2 4 3 1 4 1 3 2
2 4 3 3 4 1 1 3
2 4 3 4 4 1 1 2
Variables se procesan en orden inverso

Se asigna a X un valor consistente con variables


anteriores, y con restricciones intermedias
totalmente asignadas
Ejemplo: 4-reinas (x2)
Ejemplo: 4-reinas (x3)

join proyecta
join proyecta

x1 x2 x1 x2 x1 x2 x1 x2 x1 x2 x1 x2

x3 x4 x3 x4 x3 x4 x3 x4 x3 x4
x3 x4

x3 x4
4 2
x2 x3 x4 x3 x4 1 3
1 3 2 3 2
1 4 2 4 2
1 4 4 4 4
4 2 3 2 3
4 1 3 1 3
4 1 1 1 1
Ejemplo: Todas las soluciones 4-reinas Ejemplo: Todas las soluciones 4-reinas

x4 x3 x2 x1
x4 x3 x2 x1
SOLUCION 1: 2 4 1 3
SOLUCION 2: 3 1 4 2

x4
2 x4
3 2
3

x3 x4
4 2 x3 x4
1 3 x1 x2 x3 x4 x1 x2 x3 x4 4 2
1 3 2 2 3 1 4 4 1 3 x1 x2 x3 x4 x1 x2 x3 x4
1 3 2 3 3 1 4 2 1 3 2 2 3 1 4 4
1 3 4 2 3 1 4 1 1 3 2 3 3 1 4 2
1 3 4 3 3 1 2 4 1 3 4 2 3 1 4 1
1 4 2 2 3 1 2 2 1 3 4 3 3 1 2 4
1 4 2 3 3 1 2 1 1 4 2 2 3 1 2 2
1 4 4 2 4 2 3 3
x2 x3 x4 1 4 4 3 4 2 3 2
1
1
4
4
2
4
3
2
3
4
1
2
2
3
1
3
1 3 2 2 4 1 1 4 2 1 3 x2 x3 x4 1 4 4 3 4 2 3 2
1 4 2 2 4 1 3 4 2 1 2 1 3 2 2 4 1 1 4 2 1 3
1 4 4 2 4 1 4 4 1 3 3 1 4 2 2 4 1 3 4 2 1 2
4 2 3 2 4 3 1 4 1 3 2 1 4 4 2 4 1 4 4 1 3 3
4 1 3 2 4 3 3 4 1 1 3 4 2 3 2 4 3 1 4 1 3 2
4 1 1 2 4 3 4 4 1 1 2 4 1 3 2 4 3 3 4 1 1 3
4 1 1 2 4 3 4 4 1 1 2
Esquema Algoritmos Hbridos

Introduccin Combinacin: bsqueda + propagacin


Definiciones
Ejemplos Bsqueda: BT (DFS)

Metodos de resolucin
Propagacin: en cada nodo
Bsqueda:
- propaga el efecto de la asignacin actual
Generar y testear
- bloqueo: rama sin soluciones
Backtracking
- objetivo: anticipar la deteccin de bloqueos
Backjumping
- si bloqueo backtracking

Inferencia
Consistencia de arcos nodo
Consistencia de caminos actual
incompleta
K-consistencia
Problemas libres de backtracking
completa
Consistencia adaptativa anticipa
el bloqueo
Algoritmos hbridos
Forward Checking
Really Full Lookahead Compromiso:
Maintaining Arc Consistency + evito visitar un nmero multiplicativo de nodos
Heursticas - coste de la anticipacin en cada nodo
6 reinas 6 reinas

Hay solucin en los descendientes de este nodo?

No hay solucin. Ultima variable sin valores factibles.

Anticipacin:
eliminar columnas y diagonales prohibidas
eliminar valores de dominios futuros
bloqueo dominio vaco
Esquema de anticipacin Forward checking

1. Bsqueda: FC = BT + AC(CPF)
1. Variable actual Xi Di = {a, b, c}
2. Asignacin Xi a Di = {a } AC(CPF) : eliminar en dominios futuros valores
incompatibles con las variables pasadas
2. (Consistencia entre pasadas)

3. Tras asignar ( reduccin de dominio) FC = BT + AC(CPF)


consistencia local
parte / todo el problema BT = DFS + consistencia(P)
nivel de consistencia
si algn dominio futuro vaco FC = DFS + consistencia(P) + AC(CPF)
bloqueo
backtracking
sino, se contina la bsqueda AC(CPF) consistencia(P)
tras AC(CPF) en dominios de F slo
Compromiso coste / beneficio hay valores consistentes con P
coste, beneficio con
tamao parte localmente consistente cuando se tome una nueva variable de F, esta
nivel de consistencia tendr todos sus valores consistentes con P
crecimiento desigual
compromiso ptimo: FC = DFS + AC(CPF)
depende del problema
en general, consistencia de arcos
FC: Ejemplo Forward checking

FC = DFS + AC(CPF)

P = {X1, X2, . . ., Xi }
AC(CPF) = AC(CX1) + AC(CX2) + ... + AC(CXi )

AC(CPF)
en cada nodo AC(Cactual)
acumular resultados a lo largo de la rama actual:
AC(Cactual) poda dominos futuros
sucesores de actual heredan dominios
4 nodos futuros podados

AC(CX1)
valor asignado AC(CX2)

valor podado AC(Cactual)

valor usado sin xito


Forward checking Algoritmo FC
FC = DFS + AC(Cactual)
funcion FC(i variable): booleano
para cada afactibles[i] hacer
AC(Cactual): efecto lateral Xi a
poda en dominios futuros si i=N solucin retorna CIERTO
sino
backtracking: restaurar valores podados tras si forward(i,a)
la asignacin de la variable actual si FC(i+1) retorna CIERTO
restaurar(i)
retorna FALSO

funcion forward(i variable,a valor): booleano


para toda j=i+1 hasta N hacer
vacio CIERTO
para cada bfactibles[j] hacer
restaura(X4,2) si (a,b)Rij vacio FALSO
sino eliminar b de factible[j]
aadir b a podado[j]
si vacio retorna FALSO
retorna CIERTO

procedimiento restaura(i variable)


para toda j=i+1 hasta N hacer
restaura(X3,5) para todo bpodado[j] hacer
si Xi resposable filtrado b
eliminar b de podado[j]
anadir b a factible[j]
Really full lookahead RFL: Ejemplo

RFL = FC + AC(F)

RFL = DFS + AC(Cactual) + AC(CF)

AC(CF): AC (2,3)
poda extra en dominios futuros
despus de AC(Cactual)

RFL / FC: AC (3,4)


mayor nivel de poda:

poda(RFL) poda(FC)

coste extra:
AC (2,3)
AC(CF)

adecuado para
restricciones duras
problemas esparsos

Traza AC, 1 solo nodo


Algoritmo RFL Maintaining arc consistency
funcion RFL(i variable): booleano
para cada afactible[i] hacer Cantes restricciones antes de asignar actual
Xi a Cdespues restricciones despus de asignar actual
si i=N retorna CIERTO
sino
si ac-forward(i,a)
si RFL(i+1) retorna CIERTO
restaura(i) MAC = DFS + AC(Cantes) + AC(Cdespues)

funcion ac-forward(i variable,a valor): bool


retorna forward(i,a) AND AC(F) MAC: en cada nodo
funcion AC (F conjunto): booleano /* AC3 */ antes de la asignacin, convierte el
Q {(i,j)|i,jF,(i,j) arcos(G),ij} subproblema actual en arco consistente,
mientras Q hacer
selecciona y borra un arco (k,m) de Q
si revise(k,m) entonces
AC(Cantes)
si factibles[i]= retorna FALSO
sino Q Q {(i,k)|i,kF,
(i,k) arcos(G),ik,im}
retorna CIERTO despus de la asignacin, como RLF,
funcion revise (i,j variable): booleano
delete FALSO AC(Cdespues) = AC(Cactual) + AC(CF)
para cada afactibles[i] hacer
si no hay bfactibles[j] tq.(a,b)rel(Rij)
borra a de factibles[i]
delete CIERTO
retorna delete MAC = DFS + AC(Cantes) + AC(Cactual) + AC(CF)

/* funcion forward
procedimiento restaura como en FC */
MAC: Ejemplo MAC: rbol de bsqueda

Arbol de bsqueda:
binario
en cada nivel
X1 = 1 una variable Xi
dos opciones: a, a
se puede cambiar de variable sin
agotar los valores
en cada nodo, arco consistencia del
subproblema actual
AC(X 1 1)

Xi=a Xia

Xj=b Xjb Xk=c Xkc

Xj=d Xjd Xi=f Xif


Algoritmo MAC Ordenacin de variables
funcion MAC(i variable): booleano
mientras factibles[i] hacer Ordenacin esttica de variables: cada nivel del rbol
a extrae(factibles[i]) de bsqueda se asocia con una variable
Xi a /* Xi en P */
si i=N retorna CIERTO X1
sino
si ac-forward(i,a) X2
si MAC(i+1) retorna CIERTO
restaura(i) X3 ... ...
aadir a a usados[i] ... ...
Xi /* Xi en F */ X4 ... ... ... ...
si refutar(i,a) salir bucle
para cada ausados[i] hacer
restaura_refutar(i,a)
anadir a factibles[i] No es necesaria para que el rbol de bsqueda sea
retorna FALSO exhaustivo.
Es necesario que cada nodo se asocie con una
funcion refutar(i variable,a valor): booleano variable para la generacin de sucesores.
retorna AC(F)

procedimiento restaura_refutar(i variable,


a valor) X1
para toda j=i+1 hasta N hacer
para todo bpodados[j] hacer X2 X3 X4 X4
si refutacion de (i,a) resp. filtrado b
X3 X X X2
eliminar b de podados[j] ... 4 ... 3 ... ...
aadir b a factibles[j]
X4 X2
... X2 ... ... X3 ...
/* funcion ac-forward
funcion AC
procedimiento restaura Diferentes variables en el mismo nivel:
ordenacin dinmica de variables
Iguales a los de RFL */
Heurstica: seleccin de variable Ejemplo: 6 reinas

En nodo q qu variable asignar a continuacin?

1. Hay solucin en descendientes(q)


cualquier variable es adecuada

2. No hay solucin en descendientes(q)


asignar la variable que antes descubre
que no hay solucin

En general, qu situacin es ms frecuente?


Salvo problemas triviales, situacin 2
Mayor esfuerzo del algoritmo: salir de
subproblemas sin solucin

Suponemos situacin 2:
asignar primero aquella variable que,
aparentemente, antes nos conduce a un fallo
(principio fail-first)

Heurstica dominios mnimos: 4 nodos


asignar primero la variable con
menor nmero de valores factibles para detectar que no hay
solucin con (1,2) (6,6)
Ejemplo Heurstica: seleccin de valor

En nodo q qu valor asignar a continuacin?

1. Hay solucin en descendientes(q)


un valor que mantenga la resolubilidad
del nodo sucesor

2. No hay solucin en descendientes(q)


cualquier valor es adecuado

Suponemos situacin 1:

asignar primero aquella valor que,


aparentemente, antes nos conduce al xito
(principio success-first)

Heurstica anticipacin valores:

asignar primero el valor que es consistente


6 nodos con mayor nmero de valores factibles del
resto de variables

para detectar que no hay


solucin con (1,2) (6,6)
Coste heursticas

Compromiso coste / beneficio:


coste: suma de costes de clculo en cada nodo
beneficio en todo el rbol
sale a cuenta si coste < beneficio

Dominios mnimos y anticipacin:


Dominios mnimos: exige calcular el nmero de
valores factibles
Algoritmos de anticipacin: calculan los valores
factibles
Anticipacin obtiene dominios mnimos sin coste
adicional

Evaluacin de las heursticas:


Evaluacin emprica
Esfuerzo computacional
constraint checks / tiempo CPU

Resultados empricos, 20 reinas, 1 solucin


BT 25.428.842 cc
FC 2.398.022 cc
FC+dom min 4.144 cc

También podría gustarte