Você está na página 1de 155

UNIVERSIDAD CATÓLICA BOLIVIANA SAN PABLO

Unidad Académica Cochabamba


Carrera de Ingenierı́a de Sistemas

Algoritmos para Resolver


Problemas Sujetos a la Satisfacción de Restricciones

Rolando Lora Diez de Medina


rolando.lora@gmail.com

Septiembre 2004
Cochabamba - Bolivia
s
Contenido:

Contenido de la presentación
1. Introducción

2. Problemas sujetos a la satisfacción de restricciones (CSP’s)

3. Criterios de clasificación de CSP’s

4. Generación automatizada de crucigramas

5. Algoritmos para resolver CSP’s

6. Conclusiones

7. Referencias

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción:

Introducción

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (1)

Antecedentes (1)
Una gran variedad de problemas en Inteligencia Artificial y
otras áreas de la Informática pueden ser vistos como casos
especiales de Problemas sujetos a la Satisfacción de
Restricciones [KUM92].

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (1)

Antecedentes (1)
Una gran variedad de problemas en Inteligencia Artificial y
otras áreas de la Informática pueden ser vistos como casos
especiales de Problemas sujetos a la Satisfacción de
Restricciones [KUM92].
Por ejemplo: problemas de visión artificial, planeamiento
(scheduling), horarios (timetabling), etc.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (1)

Antecedentes (1)
Una gran variedad de problemas en Inteligencia Artificial y
otras áreas de la Informática pueden ser vistos como casos
especiales de Problemas sujetos a la Satisfacción de
Restricciones [KUM92].
Por ejemplo: problemas de visión artificial, planeamiento
(scheduling), horarios (timetabling), etc.
Los Problemas sujetos a la Satisfacción de Restricciones
(CSP’s) se estudian bajo un marco conceptual unificado que
permite utilizar una variedad de enfoques para resolverlos.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (1)

Antecedentes (1)
Una gran variedad de problemas en Inteligencia Artificial y
otras áreas de la Informática pueden ser vistos como casos
especiales de Problemas sujetos a la Satisfacción de
Restricciones [KUM92].
Por ejemplo: problemas de visión artificial, planeamiento
(scheduling), horarios (timetabling), etc.
Los Problemas sujetos a la Satisfacción de Restricciones
(CSP’s) se estudian bajo un marco conceptual unificado que
permite utilizar una variedad de enfoques para resolverlos.
La ventaja de utilizar un marco conceptual unificado radica en
la posibilidad de utilizar algoritmos que resuelvan el problema
general (CSP) y que a su vez puedan resolver cualquier
problema que pueda ser modelado como CSP.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (2)

Antecedentes (2)
El estudio de los problemas sujetos a la satisfacción de
restricciones fue iniciado por Montanari en 1974.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (2)

Antecedentes (2)
El estudio de los problemas sujetos a la satisfacción de
restricciones fue iniciado por Montanari en 1974.
Montanari utilizó un marco formal para describir ciertos
problemas combinatorios que surgieron trabajando en
tratamiento de imágenes.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (2)

Antecedentes (2)
El estudio de los problemas sujetos a la satisfacción de
restricciones fue iniciado por Montanari en 1974.
Montanari utilizó un marco formal para describir ciertos
problemas combinatorios que surgieron trabajando en
tratamiento de imágenes.
Al poco tiempo, se descubrió que el marco utilizado por
Montanari era aplicable a una diversidad de problemas en
muchas áreas de estudio.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Introducción: Antecedentes (2)

Antecedentes (2)
El estudio de los problemas sujetos a la satisfacción de
restricciones fue iniciado por Montanari en 1974.
Montanari utilizó un marco formal para describir ciertos
problemas combinatorios que surgieron trabajando en
tratamiento de imágenes.
Al poco tiempo, se descubrió que el marco utilizado por
Montanari era aplicable a una diversidad de problemas en
muchas áreas de estudio.
En esta presentación se verá lo que son los problemas sujetos
a la satisfacción de restricciones y se estudiará dos tipos de
algoritmos para resolver CSP’s: algoritmos sistemáticos de
búsqueda (basados en backtracking) y algoritmos de
consistencia.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s):

Problemas sujetos a la satisfacción de


restricciones

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Definición CSP (1)

Definición CSP (1)


Un problema sujeto a la satisfacción de restricciones P se define
por una tupla (X , D, C ), donde X es un conjunto finito de n
variables {x1 , ..., xn }, D es un conjunto finito de dominios, cada
cual asociado a una variable {D(x1 ), ..., D(xn )}, y C es un conjunto
de restricciones aplicadas a subconjuntos de variables en X .

X D C

x1 d1
x2 d2 c1
x3 d3 c3
x5 d5
x4 d4 c4
d6 c2
x6
x7 d7

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Definición CSP (1)

Definición CSP (1)


Un problema sujeto a la satisfacción de restricciones P se define
por una tupla (X , D, C ), donde X es un conjunto finito de n
variables {x1 , ..., xn }, D es un conjunto finito de dominios, cada
cual asociado a una variable {D(x1 ), ..., D(xn )}, y C es un conjunto
de restricciones aplicadas a subconjuntos de variables en X .

X D C

x1 d1
x2 d2 c1
x3 d3 c3
x5 d5
x4 d4 c4
d6 c2
x6
x7 d7

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Definición CSP (2)

Definición CSP (2)


El dominio de una variable es el conjunto de valores que pueden
ser asignados a ella. Se utilizará el término “etiqueta” a la
asignación de un valor, de su respectivo dominio, a una variable.
Una solución a P es la asignación de un valor ai ∈ Di a xi ,
1 ≤ i ≤ n que satisface todas las restricciones. Si dicha solución
no existe se dice que no es posible satisfacer el problema.

D d5

d1
d2 v8 v1
d3 v9
d5 v3
v7
d4 v2 v4
d6
d7 v5 v6

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Definición CSP (2)

Definición CSP (2)


El dominio de una variable es el conjunto de valores que pueden
ser asignados a ella. Se utilizará el término “etiqueta” a la
asignación de un valor, de su respectivo dominio, a una variable.
Una solución a P es la asignación de un valor ai ∈ Di a xi ,
1 ≤ i ≤ n que satisface todas las restricciones. Si dicha solución
no existe se dice que no es posible satisfacer el problema.

D d5 Solución

d1 (x1, v8)
d2 v8 (x2, v1) (x4, v5)
d3 v9
d5 v3
v7 (x3, v2)
d4 v2 v4 (x6, v9)
d6 (x5, v3)
d7 v5 v6 (x7, v1)

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Definición CSP (3)

Definición CSP (3)


Finalmente C es un conjunto finito de restricciones y cada
restricción c ∈ C es un par (W , Q), donde W = {w1 , ..., wk } es un
subconjunto ordenado de X ,y Q ⊆ D(w1 ) × · · · × D(wk ) es un
predicado sobre esas variables.

C ci = (W , Q)
W = {x1 , x2 , x3 }
c1
Q = {(v1 , v1 , v1 ), (v1 , v1 , v2 )...}
c3
c4
c2

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia


Problema: Dado el mapa de Bolivia, se desea colorear cada
departamento de manera que dos departamentos vecinos tengan
asignados colores distintos. Los colores permitidos son: rojo,
amarillo y verde.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia


Problema: Dado el mapa de Bolivia, se desea colorear cada
departamento de manera que dos departamentos vecinos tengan
asignados colores distintos. Los colores permitidos son: rojo,
amarillo y verde.

x9

x8
x4
x1 x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia


Problema: Dado el mapa de Bolivia, se desea colorear cada
departamento de manera que dos departamentos vecinos tengan
asignados colores distintos. Los colores permitidos son: rojo,
amarillo y verde.
X = {x1 , ..., x9 }
x9

x8
x4
x1 x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia


Problema: Dado el mapa de Bolivia, se desea colorear cada
departamento de manera que dos departamentos vecinos tengan
asignados colores distintos. Los colores permitidos son: rojo,
amarillo y verde.
X = {x1 , ..., x9 }
x9
D(xi ) = {rojo, amarillo, verde} con
x8 1≤i ≤9
x4
x1 x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia


Problema: Dado el mapa de Bolivia, se desea colorear cada
departamento de manera que dos departamentos vecinos tengan
asignados colores distintos. Los colores permitidos son: rojo,
amarillo y verde.
X = {x1 , ..., x9 }
x9
D(xi ) = {rojo, amarillo, verde} con
x8 1≤i ≤9
x4
x1 x7
x5
x2
x6
x3 Tarija

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia


Problema: Dado el mapa de Bolivia, se desea colorear cada
departamento de manera que dos departamentos vecinos tengan
asignados colores distintos. Los colores permitidos son: rojo,
amarillo y verde.
X = {x1 , ..., x9 }
x9
D(xi ) = {rojo, amarillo, verde} con
x8 1≤i ≤9
x4
W = {x3 , x2 , x6 } y
x1 x7
Q = {(r , a, v ), (r , v , a), ..., (v , a, r )}
x5
x2
x6
x3 Tarija

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia


Problema: Dado el mapa de Bolivia, se desea colorear cada
departamento de manera que dos departamentos vecinos tengan
asignados colores distintos. Los colores permitidos son: rojo,
amarillo y verde.
X = {x1 , ..., x9 }
R
D(xi ) = {rojo, amarillo, verde} con
V 1≤i ≤9
A W = {x3 , x2 , x6 } y
R A
Q = {(r , a, v ), (r , v , a), ..., (v , a, r )}
V
V
¿Cómo encontramos la solución?
A
R

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Representación gráfica de un CSP

Representación gráfica de un CSP


Un CSP puede ser representado gráficamente utilizando un
grafo en el que los nodos representan las variables y los arcos
las relaciones existentes entre ellas.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Representación gráfica de un CSP

Representación gráfica de un CSP


Un CSP puede ser representado gráficamente utilizando un
grafo en el que los nodos representan las variables y los arcos
las relaciones existentes entre ellas.

x9

x8
x4
x1 x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Problemas sujetos a la satisfacción de restricciones (CSP’s): Representación gráfica de un CSP

Representación gráfica de un CSP


Un CSP puede ser representado gráficamente utilizando un
grafo en el que los nodos representan las variables y los arcos
las relaciones existentes entre ellas.

x9 {R, A, V}

{R, A, V}
x8 {R, A, V}

x4
{R, A, V}

x7
{R, A, V}
x1
{R, A, V}
x5
x2 {R, A, V}

x6
{R, A, V}
x3 {R, A, V}

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s:

Criterios de clasificación de CSP’s

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios finitos

Según tipo de variables: Variables con dominios finitos


Son aquellos problemas que involucran variables discretas con
dominios que están compuestos por un número finito de
valores.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios finitos

Según tipo de variables: Variables con dominios finitos


Son aquellos problemas que involucran variables discretas con
dominios que están compuestos por un número finito de
valores.
Problemas:
Coloreo de mapas
TSP
Construcción de Crucigramas

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios finitos

Según tipo de variables: Variables con dominios finitos


Son aquellos problemas que involucran variables discretas con
dominios que están compuestos por un número finito de
valores.
Problemas:
Coloreo de mapas
TSP
Construcción de Crucigramas
Este conjunto de problemas incluye a un grupo de problemas
muy importantes que son los CSP’s booleanos. Por ejemplo:
3SAT.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios finitos

Según tipo de variables: Variables con dominios finitos


Son aquellos problemas que involucran variables discretas con
dominios que están compuestos por un número finito de
valores.
Problemas:
Coloreo de mapas
TSP
Construcción de Crucigramas
Este conjunto de problemas incluye a un grupo de problemas
muy importantes que son los CSP’s booleanos. Por ejemplo:
3SAT.
Es posible construir el conjunto de restricciones enumerando
las asignaciones válidas.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: El problema de las ocho reinas

El problema de las ocho reinas


1 2 3 4 5 6 7 8

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: El problema de las ocho reinas

El problema de las ocho reinas


1 2 3 4 5 6 7 8

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: El problema de las ocho reinas

El problema de las ocho reinas


1 2 3 4 5 6 7 8

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: El problema de las ocho reinas

El problema de las ocho reinas


1 2 3 4 5 6 7 8

7
Q1 = (1,1)
Q2 = (2,3)
8
Q3 = nil

Un enfoque consistirı́a en que las variables representen a las reinas.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: El problema de las ocho reinas

El problema de las ocho reinas


1 2 3 4 5 6 7 8

C1-1 = true
7 C2-3 = true
C5-5 = false
. ..

. ..

8
C8-8 = false

En un enfoque alternativo, las variables podrı́an representar a las casillas.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios infinitos

Según tipo de variables: Variables con dominios infinitos


Son aquellos problemas que involucran variables discretas con
dominios que se componen de un número infinito de valores.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios infinitos

Según tipo de variables: Variables con dominios infinitos


Son aquellos problemas que involucran variables discretas con
dominios que se componen de un número infinito de valores.
Por ejemplo: Todos aquellos problemas cuyas variables tienen
como dominio el conjunto de los números enteros.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios infinitos

Según tipo de variables: Variables con dominios infinitos


Son aquellos problemas que involucran variables discretas con
dominios que se componen de un número infinito de valores.
Por ejemplo: Todos aquellos problemas cuyas variables tienen
como dominio el conjunto de los números enteros.
Dado que no es posible describir las restricciones enumerando
las asignaciones válidas, es necesario utilizar un lenguaje de
definición de restricciones

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Según tipo de variables: Variables con dominios infinitos

Según tipo de variables: Variables con dominios infinitos


Son aquellos problemas que involucran variables discretas con
dominios que se componen de un número infinito de valores.
Por ejemplo: Todos aquellos problemas cuyas variables tienen
como dominio el conjunto de los números enteros.
Dado que no es posible describir las restricciones enumerando
las asignaciones válidas, es necesario utilizar un lenguaje de
definición de restricciones
Existen algoritmos especiales para resolver este tipo de CSP’s
cuando las restricciones son lineales y las variables enteras.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Tipos de restricciones

Tipos de restricciones
Restricciones unarias
Restringen los valores que pueden ser
asignados a una variable.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Tipos de restricciones

Tipos de restricciones
Restricciones unarias
Restringen los valores que pueden ser x9
asignados a una variable.
x8
x4
x1 x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Tipos de restricciones

Tipos de restricciones
Restricciones unarias
Restringen los valores que pueden ser x9
asignados a una variable.
x8
x4
x1
x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Tipos de restricciones

Tipos de restricciones
Restricciones unarias
Restringen los valores que pueden ser x9
asignados a una variable.
Restricciones binarias
x8
Son aquellas que relacionan dos
x4
variables. x1
x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Tipos de restricciones

Tipos de restricciones
Restricciones unarias
Restringen los valores que pueden ser x9 col(X 1) ≠ col(X 4)
asignados a una variable.
Restricciones binarias
x8
Son aquellas que relacionan dos
x4
variables. x1
x7
x5
x2
x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Criterios de clasificación de CSP’s: Tipos de restricciones

Tipos de restricciones
Restricciones unarias
allDiff(col(X
x9 1 ), col(X 4 ), col(X 5 ))
Restringen los valores que pueden ser
asignados a una variable.
Restricciones binarias
x8
Son aquellas que relacionan dos
x4
variables. x1
x7
Restricciones de alto orden x5
Son aquellas que relacionan a tres o x2
más variables. x6
x3

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas:

Generación automatizada de crucigramas

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Problema de la construcción de crucigramas

Problema de la construcción de crucigramas


Definición: Dada una matriz de dimensiones N × M compuesta
por unos y ceros, y un conjunto finito de palabras, el problema de
la construcción de crucigramas consiste en asignar letras a todas
aquellas casillas marcadas con cero tal que las secuencias máximas,
tanto horizontales como verticales, de estas casillas contengan
palabras válidas.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Problema de la construcción de crucigramas

Problema de la construcción de crucigramas


Definición: Dada una matriz de dimensiones N × M compuesta
por unos y ceros, y un conjunto finito de palabras, el problema de
la construcción de crucigramas consiste en asignar letras a todas
aquellas casillas marcadas con cero tal que las secuencias máximas,
tanto horizontales como verticales, de estas casillas contengan
palabras válidas.

0 1 1 1

D.R.A.E
0 0 0 1

0 1 0 1

0 0 0 0

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Problema de la construcción de crucigramas

Problema de la construcción de crucigramas


Definición: Dada una matriz de dimensiones N × M compuesta
por unos y ceros, y un conjunto finito de palabras, el problema de
la construcción de crucigramas consiste en asignar letras a todas
aquellas casillas marcadas con cero tal que las secuencias máximas,
tanto horizontales como verticales, de estas casillas contengan
palabras válidas.

0 1 1 1

D.R.A.E
0 0 0 1

0 1 0 1

0 0 0 0

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Problema de la construcción de crucigramas

Problema de la construcción de crucigramas


Definición: Dada una matriz de dimensiones N × M compuesta
por unos y ceros, y un conjunto finito de palabras, el problema de
la construcción de crucigramas consiste en asignar letras a todas
aquellas casillas marcadas con cero tal que las secuencias máximas,
tanto horizontales como verticales, de estas casillas contengan
palabras válidas.

0 1 1 1 O

D.R.A.E
0 0 0 1 B O A

0 1 0 1 R L

0 0 0 0 A R A R

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por letra

Modelo de instanciación por letra


Cada celda abierta se modela como una variable.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por letra

Modelo de instanciación por letra


Cada celda abierta se modela como una variable.
El dominio de cada variable se compone por las letras del
alfabeto.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por letra

Modelo de instanciación por letra


Cada celda abierta se modela como una variable.
El dominio de cada variable se compone por las letras del
alfabeto.
Las restricciones recaen sobre conjuntos de variables que
forman palabras.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por letra

Modelo de instanciación por letra


Cada celda abierta se modela como una variable.
El dominio de cada variable se compone por las letras del
alfabeto.
Las restricciones recaen sobre conjuntos de variables que
forman palabras.
1 2 3

4 5

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por letra

Modelo de instanciación por letra


Cada celda abierta se modela como una variable.
El dominio de cada variable se compone por las letras del
alfabeto.
Las restricciones recaen sobre conjuntos de variables que
forman palabras.
1 2 3 X = {x1 , x2 , ..., x21 }
X1 X2 X3
D(xi ) = {a, ..., z}
4 5
X4 X5 X6 X7 X8
{(x1 , x2 , x3 ), (x8 , x13 , x18 )}
6
X9 X10 X11 X12 X13

7
X14 X15 X16 X17 X18

8
X19 X20 X21

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por palabra

Modelo de instanciación por palabra


Cada conjunto de celdas destinadas a albergar una palabra se
modela como una variable.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por palabra

Modelo de instanciación por palabra


Cada conjunto de celdas destinadas a albergar una palabra se
modela como una variable.
El dominio de cada variable se compone de palabras del
diccionario.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por palabra

Modelo de instanciación por palabra


Cada conjunto de celdas destinadas a albergar una palabra se
modela como una variable.
El dominio de cada variable se compone de palabras del
diccionario.
Las restricciones recaen sobre pares de variables.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por palabra

Modelo de instanciación por palabra


Cada conjunto de celdas destinadas a albergar una palabra se
modela como una variable.
El dominio de cada variable se compone de palabras del
diccionario.
Las restricciones recaen sobre pares de variables.
1 2 3

4 5

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por palabra

Modelo de instanciación por palabra


Cada conjunto de celdas destinadas a albergar una palabra se
modela como una variable.
El dominio de cada variable se compone de palabras del
diccionario.
Las restricciones recaen sobre pares de variables.
1 2 3 X = {1h, 1v , 2v , ..., 8h}
D(xi ) = {w ∈ Dict, longitud(w ) =
4 5
longitud(xi )}
6

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Modelo de instanciación por palabra

Modelo de instanciación por palabra


Cada conjunto de celdas destinadas a albergar una palabra se
modela como una variable.
El dominio de cada variable se compone de palabras del
diccionario.
Las restricciones recaen sobre pares de variables.
1 2 3 8h

4 5 1h
1v

2v
6
3v 7h
7 4h

6h
8 5v

4v

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”
Mayor número de variables, ya
que se utiliza una para cada
celda abierta.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”
Mayor número de variables, ya El número de variables se reduce
que se utiliza una para cada considerablemente.
celda abierta.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”
Mayor número de variables, ya El número de variables se reduce
que se utiliza una para cada considerablemente.
celda abierta.
Los dominios son relativamente
pequeños. Se componen de las
letras del alfabeto que se utiliza.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”
Mayor número de variables, ya El número de variables se reduce
que se utiliza una para cada considerablemente.
celda abierta.
Los dominios son relativamente Los dominios para cada variable
pequeños. Se componen de las pueden ser en muchos casos
letras del alfabeto que se utiliza. muy grandes.
xi , len(xi ) = 7 → |D(xi )| > 12, 000

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”
Mayor número de variables, ya El número de variables se reduce
que se utiliza una para cada considerablemente.
celda abierta.
Los dominios son relativamente Los dominios para cada variable
pequeños. Se componen de las pueden ser en muchos casos
letras del alfabeto que se utiliza. muy grandes.
xi , len(xi ) = 7 → |D(xi )| > 12, 000

Las restricciones son más


difı́ciles de modelar, ya que
recaen sobre conjuntos
ordenados de variables que
forman palabras.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”
Mayor número de variables, ya El número de variables se reduce
que se utiliza una para cada considerablemente.
celda abierta.
Los dominios son relativamente Los dominios para cada variable
pequeños. Se componen de las pueden ser en muchos casos
letras del alfabeto que se utiliza. muy grandes.
xi , len(xi ) = 7 → |D(xi )| > 12, 000

Las restricciones son más Las restricciones se pueden


difı́ciles de modelar, ya que modelar de manera intuitiva.
recaen sobre conjuntos
ordenados de variables que
forman palabras.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Generación automatizada de crucigramas: Caracterı́sticas de los modelos “por letra” y “por palabra”

Caracterı́sticas de ambos modelos


Modelo “por letra” Modelo “por palabra”
Mayor número de variables, ya El número de variables se reduce
que se utiliza una para cada considerablemente.
celda abierta.
Los dominios son relativamente Los dominios para cada variable
pequeños. Se componen de las pueden ser en muchos casos
letras del alfabeto que se utiliza. muy grandes.
xi , len(xi ) = 7 → |D(xi )| > 12, 000

Las restricciones son más Las restricciones se pueden


difı́ciles de modelar, ya que modelar de manera intuitiva.
recaen sobre conjuntos
ordenados de variables que
forman palabras.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s:

Algoritmos para resolver CSP’s

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: El enfoque “generar y probar”

El enfoque “generar y probar”


Consiste en generar todas las posibles asignaciones de valores
a las variables y probar si se satisfacen todas las restricciones.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: El enfoque “generar y probar”

El enfoque “generar y probar”


Consiste en generar todas las posibles asignaciones de valores
a las variables y probar si se satisfacen todas las restricciones.
1 2 3

4 5

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: El enfoque “generar y probar”

El enfoque “generar y probar”


Consiste en generar todas las posibles asignaciones de valores
a las variables y probar si se satisfacen todas las restricciones.
1 2 3 Por letra: 2721

4 5

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: El enfoque “generar y probar”

El enfoque “generar y probar”


Consiste en generar todas las posibles asignaciones de valores
a las variables y probar si se satisfacen todas las restricciones.
1 2 3 Por letra: 2721

4 5
Por palabra: |D3 |4 × |D5 |6
donde:
6 D3 = {w ∈ D, long (w ) = 3}
D5 = {w ∈ D, long (w ) = 5}
7

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: El enfoque “generar y probar”

El enfoque “generar y probar”


Consiste en generar todas las posibles asignaciones de valores
a las variables y probar si se satisfacen todas las restricciones.
1 2 3 Por letra: 2721

4 5
Por palabra: |D3 |4 × |D5 |6
donde:
6 D3 = {w ∈ D, long (w ) = 3}
D5 = {w ∈ D, long (w ) = 5}
7
Revisando mil millones de posibles
8 soluciones por segundo:

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: El enfoque “generar y probar”

El enfoque “generar y probar”


Consiste en generar todas las posibles asignaciones de valores
a las variables y probar si se satisfacen todas las restricciones.
1 2 3 Por letra: 2721

4 5
Por palabra: |D3 |4 × |D5 |6
donde:
6 D3 = {w ∈ D, long (w ) = 3}
D5 = {w ∈ D, long (w ) = 5}
7
Revisando mil millones de posibles
8 soluciones por segundo:
Por letra: 3.6 × 1011 siglos (≈ 3
veces la edad del universo).

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: El enfoque “generar y probar”

El enfoque “generar y probar”


Consiste en generar todas las posibles asignaciones de valores
a las variables y probar si se satisfacen todas las restricciones.
1 2 3 Por letra: 2721

4 5
Por palabra: |D3 |4 × |D5 |6
donde:
6 D3 = {w ∈ D, long (w ) = 3}
D5 = {w ∈ D, long (w ) = 5}
7
Revisando mil millones de posibles
8 soluciones por segundo:
Por letra: 3.6 × 1011 siglos (≈ 3
veces la edad del universo).
Por palabra: 1.2 × 1015 siglos (*).

(*) En el DRAE existen 470 palabras de tres letras y 6570 de cinco letras.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos

Algoritmos
Entre las técnicas utilizadas para resolver problemas sujetos a la
satisfacción de restricciones, se puede identificar dos familias de
algoritmos, cada cual con caracterı́sticas importantes:

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos

Algoritmos
Entre las técnicas utilizadas para resolver problemas sujetos a la
satisfacción de restricciones, se puede identificar dos familias de
algoritmos, cada cual con caracterı́sticas importantes:
Algoritmos sistemáticos de búsqueda

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos

Algoritmos
Entre las técnicas utilizadas para resolver problemas sujetos a la
satisfacción de restricciones, se puede identificar dos familias de
algoritmos, cada cual con caracterı́sticas importantes:
Algoritmos sistemáticos de búsqueda
Determinan si una solución al problema existe buscando en
todo el espacio de soluciones.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos

Algoritmos
Entre las técnicas utilizadas para resolver problemas sujetos a la
satisfacción de restricciones, se puede identificar dos familias de
algoritmos, cada cual con caracterı́sticas importantes:
Algoritmos sistemáticos de búsqueda
Determinan si una solución al problema existe buscando en
todo el espacio de soluciones.
La búsqueda se realiza de una manera ordenada lo cual
asegura la completitud de los algoritmos.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos

Algoritmos
Entre las técnicas utilizadas para resolver problemas sujetos a la
satisfacción de restricciones, se puede identificar dos familias de
algoritmos, cada cual con caracterı́sticas importantes:
Algoritmos sistemáticos de búsqueda
Determinan si una solución al problema existe buscando en
todo el espacio de soluciones.
La búsqueda se realiza de una manera ordenada lo cual
asegura la completitud de los algoritmos.
Algoritmos de consistencia

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos

Algoritmos
Entre las técnicas utilizadas para resolver problemas sujetos a la
satisfacción de restricciones, se puede identificar dos familias de
algoritmos, cada cual con caracterı́sticas importantes:
Algoritmos sistemáticos de búsqueda
Determinan si una solución al problema existe buscando en
todo el espacio de soluciones.
La búsqueda se realiza de una manera ordenada lo cual
asegura la completitud de los algoritmos.
Algoritmos de consistencia
La tarea fundamental de estos algoritmos es forzar ciertos
niveles de consistencia en la red de restricciones del problema.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos

Algoritmos
Entre las técnicas utilizadas para resolver problemas sujetos a la
satisfacción de restricciones, se puede identificar dos familias de
algoritmos, cada cual con caracterı́sticas importantes:
Algoritmos sistemáticos de búsqueda
Determinan si una solución al problema existe buscando en
todo el espacio de soluciones.
La búsqueda se realiza de una manera ordenada lo cual
asegura la completitud de los algoritmos.
Algoritmos de consistencia
La tarea fundamental de estos algoritmos es forzar ciertos
niveles de consistencia en la red de restricciones del problema.
Por lo general se utilizan en una fase de pre-tratamiento,
complementados por algoritmos de backtracking.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp
2: si f es una asignación total en P entonces
3: resp ← f
4 5 4: c/cont
5: resp ← Unsat
6: v ← escogerVariable(P)
6 7: para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
8: si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
13: fin si
14: retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp
2: si f es una asignación total en P entonces
3: resp ← f
4 5 4: c/cont
5: resp ← Unsat
6: v ← escogerVariable(P)
6 7: para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
8: si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
13: fin si
14: retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
E 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
R 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E N A Z 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E N A Z 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E C L A 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R V 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E C L A 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R V 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
E 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
R 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E C L A 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R V 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E 13:
14:
fin si
retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking

Backtracking
1 2 3
1: Backtracking (P, f ) → resp

H 2:
3:
si f es una asignación total en P entonces
resp ← f
4 5 4: c/cont
T E C L A 5: resp ← Unsat
6: v ← escogerVariable(P)
6 7:
I R V 8:
para todo (x ∈ Dv ) mientras (resp = Unsat ) hacer
si (f ∪ {(v , x)}) satisface las restricciones de P entonces

7 9: f ← f ∪ {(v , x)}
C O C H E 10: resp ← Backtracking (P, f )
11: fin si
8 12: fin para
E C O 13: fin si
14: retornar resp

Orden: 7h, 1v, 4v,


4h, 5v, 8h, 2v, 3v, ...

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Análisis del algoritmo de Backtracking

Análisis del algoritmo de Backtracking


Backtracking posee un mecanismo de resolución de conflictos
ineficiente lo que deriva en un conjunto de anomalı́as
conocidas como trashing [BAK95].

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Análisis del algoritmo de Backtracking

Análisis del algoritmo de Backtracking


Backtracking posee un mecanismo de resolución de conflictos
ineficiente lo que deriva en un conjunto de anomalı́as
conocidas como trashing [BAK95].
Este conjunto de anomalı́as tiene dos posibles causas:
inconsistencia de nodo o falta de consistencia de
arco [KUM92].

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Análisis del algoritmo de Backtracking

Análisis del algoritmo de Backtracking


Backtracking posee un mecanismo de resolución de conflictos
ineficiente lo que deriva en un conjunto de anomalı́as
conocidas como trashing [BAK95].
Este conjunto de anomalı́as tiene dos posibles causas:
inconsistencia de nodo o falta de consistencia de
arco [KUM92].
La inconsistencia de nodo radica en que si existe una
restricción unaria que impide la asignación de cierto valor de
Di a xi , entonces la asignación de este valor a la variable en
cuestión produce una violación inmediata.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Análisis del algoritmo de Backtracking

Análisis del algoritmo de Backtracking


Backtracking posee un mecanismo de resolución de conflictos
ineficiente lo que deriva en un conjunto de anomalı́as
conocidas como trashing [BAK95].
Este conjunto de anomalı́as tiene dos posibles causas:
inconsistencia de nodo o falta de consistencia de
arco [KUM92].
La inconsistencia de nodo radica en que si existe una
restricción unaria que impide la asignación de cierto valor de
Di a xi , entonces la asignación de este valor a la variable en
cuestión produce una violación inmediata.
La inconsistencia de arco ocurre cuando una variable tiene
valores en su dominio que al ser asignados causan que el
problema se vuelva inconsistente.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking dinámico

Backtracking dinámico
1 2 3
1: BacktrackingDinamico(P, ) → f
2: f ←∅
3: Ex ← ∅ para todo x ∈ X
4 5 4: mientras f 6= X hacer
5: i ← escogerVariable() {i ∈ X − f }
6: Ei ← Ei ∪ (f , v )
6 7: S ← D i − Ei
8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
7 10: f ← f ∪ (i, v )
11: c/cont
8 12: E ← variables(Ei )
13: si E = ∅ entonces
14: retornar Unsat
15: c/cont
16: Sea (j, vj ) la últ. entrada en f vinculada a una var. de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asig.) las expl. asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking dinámico

Backtracking dinámico
1 2 3
1: BacktrackingDinamico(P, ) → f

H 2:
3:
f ←∅
Ex ← ∅ para todo x ∈ X
4 5 4: mientras f 6= X hacer
T E C L A 5: i ← escogerVariable() {i ∈ X − f }
6: Ei ← Ei ∪ (f , v )
6 7: S ← D i − Ei
I R V 8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
7
C O C H E 10:
11:
f ← f ∪ (i, v )
c/cont
8 12: E ← variables(Ei )
E 13: si E = ∅ entonces
14: retornar Unsat
15: c/cont
16: Sea (j, vj ) la últ. entrada en f vinculada a una var. de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asig.) las expl. asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking dinámico

Backtracking dinámico
1 2 3
1: BacktrackingDinamico(P, ) → f

H 2:
3:
f ←∅
Ex ← ∅ para todo x ∈ X
4 5 4: mientras f 6= X hacer
T E C L A 5: i ← escogerVariable() {i ∈ X − f }
6: Ei ← Ei ∪ (f , v )
6 7: S ← D i − Ei
I R V 8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
7
C O C H E 10:
11:
f ← f ∪ (i, v )
c/cont
8 12: E ← variables(Ei )
E C O 13: si E = ∅ entonces
14: retornar Unsat
15: c/cont
16: Sea (j, vj ) la últ. entrada en f vinculada a una var. de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asig.) las expl. asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking dinámico

Backtracking dinámico
1 2 3
1: BacktrackingDinamico(P, ) → f

H 2:
3:
f ←∅
Ex ← ∅ para todo x ∈ X
4 5 4: mientras f 6= X hacer
T E C L A 5: i ← escogerVariable() {i ∈ X − f }
6: Ei ← Ei ∪ (f , v )
6 7: S ← D i − Ei
I R V 8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
7
C O C H E 10:
11:
f ← f ∪ (i, v )
c/cont
8 12: E ← variables(Ei )
E C O 13: si E = ∅ entonces
14: retornar Unsat
15: c/cont
16: Sea (j, vj ) la últ. entrada en f vinculada a una var. de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asig.) las expl. asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking dinámico

Backtracking dinámico
1 2 3
1: BacktrackingDinamico(P, ) → f

H 2:
3:
f ←∅
Ex ← ∅ para todo x ∈ X
4 5 4: mientras f 6= X hacer
T E C L A 5: i ← escogerVariable() {i ∈ X − f }
6: Ei ← Ei ∪ (f , v )
6 7: S ← D i − Ei
I R V 8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
7
C O C H E 10:
11:
f ← f ∪ (i, v )
c/cont
8 12: E ← variables(Ei )
E 13: si E = ∅ entonces
14: retornar Unsat
15: c/cont
16: Sea (j, vj ) la últ. entrada en f vinculada a una var. de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asig.) las expl. asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking dinámico

Backtracking dinámico
1 2 3
1: BacktrackingDinamico(P, ) → f
2: f ←∅
3: Ex ← ∅ para todo x ∈ X
4 5 4: mientras f 6= X hacer
T E C L A 5: i ← escogerVariable() {i ∈ X − f }
6: Ei ← Ei ∪ (f , v )
6 7: S ← D i − Ei
I V 8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
7
C O C H E 10:
11:
f ← f ∪ (i, v )
c/cont
8 12: E ← variables(Ei )
13: si E = ∅ entonces
14: retornar Unsat
15: c/cont
16: Sea (j, vj ) la últ. entrada en f vinculada a una var. de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asig.) las expl. asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Backtracking dinámico

Backtracking dinámico
1 2 3
1: BacktrackingDinamico(P, ) → f
L 2:
3:
f ←∅
Ex ← ∅ para todo x ∈ X
4 5 4: mientras f 6= X hacer
T E C L A 5: i ← escogerVariable() {i ∈ X − f }
6: Ei ← Ei ∪ (f , v )
6 7: S ← D i − Ei
I J V 8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
7
C O C H E 10:
11:
f ← f ∪ (i, v )
c/cont
8 12: E ← variables(Ei )
S 13: si E = ∅ entonces
14: retornar Unsat
15: c/cont
16: Sea (j, vj ) la últ. entrada en f vinculada a una var. de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asig.) las expl. asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Caracterı́sticas de Backtracking dinámico

Caracterı́sticas de Backtracking dinámico


Fue propuesto el año 1993 por Ginsberg [GIN93].

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Caracterı́sticas de Backtracking dinámico

Caracterı́sticas de Backtracking dinámico


Fue propuesto el año 1993 por Ginsberg [GIN93].
Fue el primer algoritmo “agresivo” de backtracking que se
mantenı́a polinomial en espacio.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Caracterı́sticas de Backtracking dinámico

Caracterı́sticas de Backtracking dinámico


Fue propuesto el año 1993 por Ginsberg [GIN93].
Fue el primer algoritmo “agresivo” de backtracking que se
mantenı́a polinomial en espacio.
Resuelve conflictos de manera “inteligente”. Conserva el
trabajo intermedio.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Caracterı́sticas de Backtracking dinámico

Caracterı́sticas de Backtracking dinámico


Fue propuesto el año 1993 por Ginsberg [GIN93].
Fue el primer algoritmo “agresivo” de backtracking que se
mantenı́a polinomial en espacio.
Resuelve conflictos de manera “inteligente”. Conserva el
trabajo intermedio.
Goza de la propiedad de “descomposición”.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Caracterı́sticas de Backtracking dinámico

Heurı́sticas para guiar la búsqueda

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Heurı́sticas

Heurı́sticas
En la mayorı́a de los casos, el performance de los algoritmos
de búsqueda no depende solamente de los algoritmos que se
utilicen sino también del conocimiento especı́fico que se tenga
sobre cada problema. Este conocimiento puede ser utilizado
para guiar la búsqueda de una manera más eficiente.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Heurı́sticas

Heurı́sticas
En la mayorı́a de los casos, el performance de los algoritmos
de búsqueda no depende solamente de los algoritmos que se
utilicen sino también del conocimiento especı́fico que se tenga
sobre cada problema. Este conocimiento puede ser utilizado
para guiar la búsqueda de una manera más eficiente.
Sin embargo, es posible resolver CSP’s sin tener
conocimientos especı́ficos sobre un problema. Para esto se
utilizan métodos de propósito general que responden a las
siguiente interrogantes:

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Heurı́sticas

Heurı́sticas
En la mayorı́a de los casos, el performance de los algoritmos
de búsqueda no depende solamente de los algoritmos que se
utilicen sino también del conocimiento especı́fico que se tenga
sobre cada problema. Este conocimiento puede ser utilizado
para guiar la búsqueda de una manera más eficiente.
Sin embargo, es posible resolver CSP’s sin tener
conocimientos especı́ficos sobre un problema. Para esto se
utilizan métodos de propósito general que responden a las
siguiente interrogantes:
¿Qué variable debe ser asignada a continuación?

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Heurı́sticas

Heurı́sticas
En la mayorı́a de los casos, el performance de los algoritmos
de búsqueda no depende solamente de los algoritmos que se
utilicen sino también del conocimiento especı́fico que se tenga
sobre cada problema. Este conocimiento puede ser utilizado
para guiar la búsqueda de una manera más eficiente.
Sin embargo, es posible resolver CSP’s sin tener
conocimientos especı́ficos sobre un problema. Para esto se
utilizan métodos de propósito general que responden a las
siguiente interrogantes:
¿Qué variable debe ser asignada a continuación?
¿En qué orden se deberı́an asignar los valores a cada
variable?

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Heurı́sticas

Heurı́sticas
En la mayorı́a de los casos, el performance de los algoritmos
de búsqueda no depende solamente de los algoritmos que se
utilicen sino también del conocimiento especı́fico que se tenga
sobre cada problema. Este conocimiento puede ser utilizado
para guiar la búsqueda de una manera más eficiente.
Sin embargo, es posible resolver CSP’s sin tener
conocimientos especı́ficos sobre un problema. Para esto se
utilizan métodos de propósito general que responden a las
siguiente interrogantes:
¿Qué variable debe ser asignada a continuación?
¿En qué orden se deberı́an asignar los valores a cada
variable?
¿Qué implicaciones trae la asignación de una variable al
resto del problema?

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

Solución parcial: {(X1 = verde), (X4 = amarillo)}

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

Error en la asignación: col(X8 ) = col(X1 )

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

Error en la asignación: col(X8 ) = col(X4 )

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

Solución parcial: {(X1 = verde), (X4 = amarillo), (X8 = rojo)}

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

El nodo X8 es inconsistente

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

Eliminamos valores inconsistentes en el dominio de X8

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

Utilizamos la misma metologı́a con el resto de las variables


(forward checking)
Rolando Lora Diez de Medina Algoritmos para resolver CSP’s
s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

S.P.: {(X1 = verde), (X4 = amarillo), (X3 = rojo)}

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

S.P.: {(X1 = verde), (X4 = amarillo), (X3 = rojo), (X7 = rojo)}

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

¿Que variable convendrı́a instanciar a continuación?

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

X5 y X8 tienen los dominios más restringidos


(MRV o MCV)
Rolando Lora Diez de Medina Algoritmos para resolver CSP’s
s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

Se instancia la variable X8 y se actualizan los dominios de X7


y X9
Rolando Lora Diez de Medina Algoritmos para resolver CSP’s
s
Algoritmos para resolver CSP’s: Coloreo del mapa de Bolivia

Coloreo del mapa de Bolivia

x9

x8
x4
x1
x7
x5
x2
x6
x3

“Forward checking” y “MRV” resuelven el problema sin


necesidad de volver atrás
Rolando Lora Diez de Medina Algoritmos para resolver CSP’s
s
Algoritmos para resolver CSP’s: Elección de variables

Elección de variables y orden en la asignación de valores


La heurı́stica de selección de variable más utilizada en la
práctica se denomina: “Most Constrained First” también
conocida como “Minimum Remaining Values” o “Fail First”.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Elección de variables

Elección de variables y orden en la asignación de valores


La heurı́stica de selección de variable más utilizada en la
práctica se denomina: “Most Constrained First” también
conocida como “Minimum Remaining Values” o “Fail First”.
“Most Constrained First” escoge la variable con dominio más
restringido para instanciarla a continuación.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Elección de variables

Elección de variables y orden en la asignación de valores


La heurı́stica de selección de variable más utilizada en la
práctica se denomina: “Most Constrained First” también
conocida como “Minimum Remaining Values” o “Fail First”.
“Most Constrained First” escoge la variable con dominio más
restringido para instanciarla a continuación.
Una alternativa a “MRV” es la heurı́stica de grado (“Degree
Heuristic”). Ésta escoge la variable que más restringe al
problema (aquella involucrada con mayor número de variables
en la red de restricciones).

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Elección de variables

Elección de variables y orden en la asignación de valores


La heurı́stica de selección de variable más utilizada en la
práctica se denomina: “Most Constrained First” también
conocida como “Minimum Remaining Values” o “Fail First”.
“Most Constrained First” escoge la variable con dominio más
restringido para instanciarla a continuación.
Una alternativa a “MRV” es la heurı́stica de grado (“Degree
Heuristic”). Ésta escoge la variable que más restringe al
problema (aquella involucrada con mayor número de variables
en la red de restricciones).
La heurı́stica de grado es menos usada para guiar la búsqueda.
Generalmente es más útil para escoger la primera variable a
instanciar en el problema.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Propagación de información a través de las restriciones

Propagación de información a través de las restriciones


“Forward Checking ” es una heurı́stica que ayuda a propagar
información a través de las restricciones.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Propagación de información a través de las restriciones

Propagación de información a través de las restriciones


“Forward Checking ” es una heurı́stica que ayuda a propagar
información a través de las restricciones.
Cada vez que asigna un valor a una variable, “Forward
Checking ” actualiza los dominios de las variables relacionadas
eliminando los valores inconsistentes.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Propagación de información a través de las restriciones

Propagación de información a través de las restriciones


“Forward Checking ” es una heurı́stica que ayuda a propagar
información a través de las restricciones.
Cada vez que asigna un valor a una variable, “Forward
Checking ” actualiza los dominios de las variables relacionadas
eliminando los valores inconsistentes.
El uso de “Forward Checking ” junto a la heurı́stica de
selección “MCF ” aseguran una búsqueda eficiente. Esta
búsqueda, detectará las inconsistencias del problema muy
rápido permitiendo cambiar la dirección de la misma cuando
sea necesario.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Orden en la asignación de valores

Orden en la asignación de valores


Una vez que la variable a instanciar es seleccionada, la
heurı́stica “Least Coinstraining Value” puede ser utilizada
para asignarle un valor.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Orden en la asignación de valores

Orden en la asignación de valores


Una vez que la variable a instanciar es seleccionada, la
heurı́stica “Least Coinstraining Value” puede ser utilizada
para asignarle un valor.
La heurı́stica “LCV ” consiste en asignar el valor que elimina
menos valores al aplicar “Forward Checking ” a las variables
relacionadas.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Orden en la asignación de valores

Orden en la asignación de valores


Una vez que la variable a instanciar es seleccionada, la
heurı́stica “Least Coinstraining Value” puede ser utilizada
para asignarle un valor.
La heurı́stica “LCV ” consiste en asignar el valor que elimina
menos valores al aplicar “Forward Checking ” a las variables
relacionadas.
En general, la heurı́stica tratará de mantener un buen grado
de flexibilidad a asignaciones consecuentes de valores a
variables.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos de Consistencia

Algoritmos de Consistencia

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Algoritmos para resolver CSP’s: Algoritmos de Consistencia

Algoritmos de Consistencia
j

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Conclusiones:

Conclusiones

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Conclusiones: Conclusiones

Conclusiones (1)
En base a los resultados obtenidos es posible afirmar que se
ha cumplido con los objetivos planteados. El sistema
generador de crucigramas reúne las caracterı́sticas necesarias
para la obtención de crucigramas de alta calidad.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Conclusiones: Conclusiones

Conclusiones (1)
En base a los resultados obtenidos es posible afirmar que se
ha cumplido con los objetivos planteados. El sistema
generador de crucigramas reúne las caracterı́sticas necesarias
para la obtención de crucigramas de alta calidad.
El estudiar el problema de la construcción de crucigramas
utilizando como enfoque el marco teórico correspondiente a
las problemas sujetos a la satisfacción de restricciones
(CSP’s), ha sido muy beneficioso.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Conclusiones: Conclusiones

Conclusiones (1)
En base a los resultados obtenidos es posible afirmar que se
ha cumplido con los objetivos planteados. El sistema
generador de crucigramas reúne las caracterı́sticas necesarias
para la obtención de crucigramas de alta calidad.
El estudiar el problema de la construcción de crucigramas
utilizando como enfoque el marco teórico correspondiente a
las problemas sujetos a la satisfacción de restricciones
(CSP’s), ha sido muy beneficioso.
Se ha propuesto un indicador de complejidad basado en las
caracterı́sticas de una cuadrı́cula dada. Los resultados
experimentales han ratificado el buen comportamiento de este
indicador por lo que podrı́a ser utilizado para la clasificación
de cuadrı́culas según complejidad.

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Referencias:

Referencias
Artificial Intelligence: A modern aproach, Stuart Russell y
Peter Norvig
http://aima.cs.berkeley.edu/

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Referencias:

Referencias
Artificial Intelligence: A modern aproach, Stuart Russell y
Peter Norvig
http://aima.cs.berkeley.edu/
Citeseer: scientific literature digital library
http://citeseer.ist.psu.edu/

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Referencias:

Referencias
Artificial Intelligence: A modern aproach, Stuart Russell y
Peter Norvig
http://aima.cs.berkeley.edu/
Citeseer: scientific literature digital library
http://citeseer.ist.psu.edu/
Dynamic Backtracking, technical report 1996, Matthew
Ginsberg

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Referencias:

Referencias
Artificial Intelligence: A modern aproach, Stuart Russell y
Peter Norvig
http://aima.cs.berkeley.edu/
Citeseer: scientific literature digital library
http://citeseer.ist.psu.edu/
Dynamic Backtracking, technical report 1996, Matthew
Ginsberg
MIT Open Courseware, material relacionado a IA
http://ocw.mit.edu

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Referencias:

Referencias
Artificial Intelligence: A modern aproach, Stuart Russell y
Peter Norvig
http://aima.cs.berkeley.edu/
Citeseer: scientific literature digital library
http://citeseer.ist.psu.edu/
Dynamic Backtracking, technical report 1996, Matthew
Ginsberg
MIT Open Courseware, material relacionado a IA
http://ocw.mit.edu

Otros recursos: Google

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s


s
Bibliografia:

Bibliografia

BAKER, Andrew
1995 Intelligent Backtracking on Constraint Satisfaction
Problems: Experimental and Theorical Results.
Tesis Doctoral, Universidad de Oregon
GINSBERG, Mathew et al.
1990 Search Lessons Learned from Crossword Puzzles.
En Artificial Intelligence
GINSBERG, Matthew
1993 Dynamic Backtracking.
En Artificial Intelligence Research, págs. 25–46
KUMAR, Vipin
1992 Algorithms for Constraint Satisfaction Problems: A
Survey.
En AI Magazine, tomo 13 págs. 32–44
Rolando Lora Diez de Medina Algoritmos para resolver CSP’s
s
Bibliografia:

RUSSELL, Stuart y NORVIG, Peter


1995 Artificial Intelligence, A Modern Aproach.
Prentice Hall

Rolando Lora Diez de Medina Algoritmos para resolver CSP’s

Você também pode gostar