Академический Документы
Профессиональный Документы
Культура Документы
Cochabamba – Bolivia
Febrero 2004
TRIBUNAL EXAMINADOR
................................. .................................
Dr. Davor Pavisic Mgr. Marı́a Consuelo Puente
Profesor Guı́a Profesora Relatora
................................. .................................
Mgr. Marı́a Consuelo Puente Dr. René Santa Cruz
Directora de Carrera Rector Regional
ÍNDICE GENERAL
1. INTRODUCCIÓN 1
1.1. Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2. Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . 3
1.3. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Alcance y limitaciones . . . . . . . . . . . . . . . . . . . . . . . . 4
4. EL COMPILADOR DE CRUCIGRAMAS 37
iii
4.1. Análisis de crucigramas construidos manualmente . . . . . . . 37
4.1.1. Reglas básicas para la construcción de crucigramas . 38
4.1.2. Muestreo de indicadores de calidad para cuadrı́culas 39
4.2. Indicadores adicionales de decisión . . . . . . . . . . . . . . . . . 44
4.3. Diseño del compilador . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3.1. Adaptación de backtracking dinámico . . . . . . . . . . 47
4.4. Pruebas preliminares . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.5. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.5.1. Escenario primero: variedad de cuadrı́culas . . . . . . 52
4.5.2. Escenario segundo: variación en el diccionario . . . . 53
5. EL SISTEMA 58
5.1. Análisis de requerimientos . . . . . . . . . . . . . . . . . . . . . . 58
5.1.1. Requerimientos funcionales . . . . . . . . . . . . . . . . . 58
5.1.2. Requerimientos no funcionales . . . . . . . . . . . . . . 61
5.2. Arquitectura candidata . . . . . . . . . . . . . . . . . . . . . . . . 62
5.3. Diseño de la base de datos . . . . . . . . . . . . . . . . . . . . . . 64
5.3.1. Modelamiento conceptual . . . . . . . . . . . . . . . . . . 65
5.3.2. Modelo entidad-relación . . . . . . . . . . . . . . . . . . . 66
5.4. Módulo formateador de crucigramas . . . . . . . . . . . . . . . 69
5.4.1. Formatos gráficos de alta calidad . . . . . . . . . . . . . 70
5.4.2. Formateo de crucigramas con LaTeX . . . . . . . . . . 70
5.5. Módulo compilador de crucigramas . . . . . . . . . . . . . . . . 72
5.6. Implementación del sistema . . . . . . . . . . . . . . . . . . . . . 73
5.7. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.7.1. Población de la base de datos . . . . . . . . . . . . . . . 73
5.7.2. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
CONCLUSIONES Y RECOMENDACIONES 79
BIBLIOGRAFÍA 82
iv
ANEXOS
A. Modelos ORM 1
B. Cuadrı́culas 10
C. Crucigramas 41
v
ÍNDICE DE FIGURAS
vi
5.10.Evolución hacia la solución cuadrı́cula 43 . . . . . . . . . . . . . 75
5.11.Evolución hacia la solución cuadrı́cula 61 . . . . . . . . . . . . . 76
5.12.Desempeño de la cuadrı́cula 43 . . . . . . . . . . . . . . . . . . . 77
5.13.Desempeño de la cuadrı́cula 69 . . . . . . . . . . . . . . . . . . . 78
vii
ÍNDICE DE TABLAS
viii
Resumen
El pasatiempo consiste en llenar una cuadrı́cula, utilizando una letra por casilla,
con palabras que puedan ser leı́das en sentido horizontal o vertical y cuyo significado
se sugiere mediante claves. La cuadrı́cula se compone parcialmente de casillas nulas,
aquellas que no albergarán ninguna letra, y casillas abiertas, denominadas también
celdas abiertas. La caracterı́stica principal de los crucigramas radica en que algunas
celdas abiertas, en muchos casos todas, son utilizadas para formar una palabra ver-
tical y otra horizontal. Esta caracterı́stica, inherente en los crucigramas, de cruzar
palabras, permite a las personas la obtención de pistas sobre las palabras incompletas
a medida que se vaya resolviendo el resto de la cuadrı́cula.
1
crear crucigramas simples utilizando una computadora. Su trabajo, publicado en
el artı́culo Computer Construction of Crossword Puzzles using Precedence Relation-
ships [MAZ76], fue retomado por otros informáticos, quienes desarrollaron nuevas
metodologı́as desde entonces.
1.1. Problema
2
1.2. Objetivos
1.3. Justificación
3
especı́ficas.
Los usuarios del sistema podrán realizar un seguimiento de sus crucigramas, con
la posibilidad de descargar cualquiera de ellos en formato final de impresión.
4
El sistema permitirá la administración de usuarios, temas, palabras, claves,
cuadrı́culas y crucigramas.
La generación del producto final no será inmediata, por lo que el cliente reci-
birá una notificación por correo electrónico con la dirección donde podrá rea-
lizar la descarga respectiva.
5
CAPÍTULO 2
PROBLEMAS SUJETOS A LA SATISFACCIÓN DE RESTRICCIONES
El presente capı́tulo pretende cubrir una pequeña parte del marco teórico nece-
sario para conseguir resolver satisfactoriamente el desarrollo del compilador de cru-
cigramas. Se comenzará definiendo formalmente el problema de la construcción de
crucigramas, luego se identificará las caracterı́sticas más importantes de este proble-
ma y se estudiará lo que son los problemas sujetos a la satisfacción de restricciones.
Se finalizará el capı́tulo planteando algunos algoritmos que pueden ser utilizados
para resolver el tipo de problemas citado.
6
SISTEMA GENERADOR DE CRUCIGRAMAS PERSONALIZADOS
C A S A
F O R A N A
A R O C A N
S U C R E Ñ A
A L E A D O
Crucigrama (lógico) A N S A
Compilador Claves
BD
Requisitos
Requisitos
- Geometría
Crucigrama (gráfico) Interfaz Web INTERNET
- Complejidad
- Temas
Figura 2.1: Esquema general del sistema basado en los objetivos que se desean lograr. Se
destaca el acceso a través de Internet y una arquitectura candidata basada en tres módulos
independientes.
7
El estudio de los problemas NP-Completos genera mucho interés, debido a que
una diversidad de problemas cotidianos de gran importancia han sido clasificados
como NP-Completos. Lo interesente es que la teorı́a indica que si resolvemos un
problema NP-Completo en tiempo polinomial, entonces todos los problemas de esta
clase tienen una solución en tiempo polinomial.
Definición 2.1 Dada una matriz de dimensiones N × M compuesta por 1’s y 0’s, y
un conjunto finito de palabras, el problema de la construcción de crucigramas consiste
en asignar letras a todas aquellas casillas marcadas con 0 tal que las secuencias
máximas, tanto horizontales como verticales, de estas casillas contengan palabras
válidas.
Para fines prácticos del presente trabajo basta mencionar que el problema de
la construcción de crucigramas es NP-Completo. Los primeros en comprobarlo fue-
ron Lewis y Papadimitriu en los años setenta, quienes utilizaron la metodologı́a de
reducción, reduciendo el problema Cobertura exacta por 3-Conjuntos al problema
dado [GAR79].
8
un problema NP-Completo, es un problema sujeto a la satisfacción de restricciones.
Existe un marco teórico unificado que permite el estudio de los problemas sujetos
a la satisfacción de restricciones. Esto ha contribuido a lograr avances importantes
en la resolución de este tipo de problemas.
9
2.2.1. Definiciones básicas
|Q|
T =
|D(x1 ) × · · · × D(xk )|
10
x9 R
V
x8
x4
A
x1 x7 R A
x5 V
x2 V
x6 A
x3 R
(a) Mapa de Bolivia con la respectiva (b) Una posible solución al problema de
asignación de variables. coloreo de un mapa
Figura 2.2: Mapa de Bolivia utilizado como ejemplo para entender el modelo de problemas
sujetos a la satisfacción de restricciones. En la primera figura se observa una posible asignación
de variables, y en la segunda una solución satisfactoria al problema.
Se logra distinguir que para este problema, el conjunto de variables X está repre-
sentado por los departamentos a los cuales se desea asignar un color. Formalmente:
X = {x1 , ..., x9 } donde xi representa a uno de los nueve departamentos de Bolivia.
Como solo es posible utilizar tres colores, entonces D(xi ) = {rojo, amarillo, verde}
con 1 ≤ i ≤ 9.
Se construyen las restricciones en base a la tabla 2.1. Por ejemplo para el de-
partamento de Tarija, en base a la definición 2.2, se tiene que: W = {x3 , x2 , x6 } y
Q = {(r, a, v), (r, v, a), ..., (v, a, r)}. Como se empieza a apreciar, en gran parte de los
problemas reales, calcular explicitamente el sub-conjunto de D(w1 ) × · · · × D(wk )
que satisface una restricción dada puede resultar una tarea muy costosa (sobre to-
do cuando existen más variables relacionadas, como en el caso de Cochabamba). Se
procede de la misma manera para modelar las demás restricciones.
Una vez concluida esta etapa, se deberá realizar la búsqueda de una asignación
de variables que no viole ninguna restricción. Esta búsqueda permitirá encontrar una
o más soluciones al problema o, caso contrario, afirmar que no existe una manera
11
Departamento Variable Departamentos vecinos
Cochabamba x1 x2 , x4 , x5 , x6 , x7 , x8
Sucre x2 x1 , x3 , x6 , x7
Tarija x3 x2 , x6
La Paz x4 x1 , x5 , x8 , x9
Oruro x5 x1 , x2 , x3 , x4 , x6
Potosı́ x6 x1 , x2 , x5
Santa Cruz x7 x1 , x2 , x3 , x8
Beni x8 x1 , x4 , x7 , x9
Pando x9 x4 , x8
satisfactoria de asignar valores a las variables. Para el ejemplo planteado, una posible
solución puede ser observada en la figura 2.2b.
De los 27 elementos que componen este conjunto solamente los siguientes 6 elementos
{(r, a, v), (r, v, a), (a, r, v), (a, v, r), (v, r, a), (v, a, r)} se componen de colores diferen-
tes. Esta relación permite medir la rigidez de la restricción. Según la definición 2.3:
T = 6/27. Se puede deducir que las restricciones cuya rigidez se aproxima al valor
de 1 son mucho más holgadas que las que se hallan cercanas al 0.
12
Figura 2.3: Hipergrafo que representa la relación entre variables y restricciones del ejem-
plo 2.2.1. Se tomaron en cuenta solamente las restricciones correspondientes a La Paz, Santa
Cruz, Tarija y Pando por lo que el hipergrafo representa parcialmente la red de restricciones
del problema.
13
Departamento Variable Restricciones
Cochabamba x1 {(x1 , x2 ), (x1 , x4 ), (x1 , x5 ), (x1 , x6 ), (x1 , x7 ), (x1 , x8 )}
Sucre x2 {(x2 , x1 ), (x2 , x3 ), (x2 , x6 ), (x2 , x7 )}
Tarija x3 {(x3 , x2 ), (x3 , x6 )}
La Paz x4 {(x4 , x1 ), (x4 , x5 ), (x4 , x8 ), (x4 , x9 )}
Oruro x5 {(x5 , x1 ), (x5 , x2 ), (x5 , x3 ), (x5 , x4 ), (x5 , x6 )}
Potosı́ x6 {(x6 , x1 ), (x6 , x2 ), (x6 , x3 ), (x6 , x5 )}
Santa Cruz x7 {(x7 , x1 ), (x7 , x2 ), (x7 , x8 )}
Beni x8 {(x8 , x1 ), (x8 , x4 ), (x8 , x7 ), (x8 , x9 )}
Pando x9 {(x9 , x4 ), (x9 , x8 )}
Cuadro 2.2: Tabla de departamentos de Bolivia y el conjunto de restricciones que recaen sobre
cada uno de ellos.
14
Figura 2.4: Grafo que representa la relación entre variables y restricciones del ejemplo 2.2.1
Una manera directa de resolver un CSP consiste en generar todas las posibles
asignaciones de valores a las variables y probar si se satisfacen todas las restricciones.
Este enfoque se denomina generar y probar y constituye la manera más ineficiente de
afrontar la resolución de un problema de estas caracterı́sticas. Un cálculo aproximado
del tiempo que tomarı́a construir crucigramas utilizando este método se encuentra
en el siguiente capı́tulo.
Algoritmos de consistencia
15
Algoritmo 2.1 Backtracking es el algoritmo sistemático más sencillo para resolver CSP’s.
Recibe como parámetros un problema sujeto a la satisfacción de restricciones y un conjunto
de pares, inicialmente vacı́o, que representa asignaciones a variables. El algoritmo devuelve un
conjunto de pares que contiene asignaciones válidas a las variables del problema o UNSAT en
caso de que no exista una solución.
1: Backtracking(P, f ) → resp
2: si f es una asignación total en P entonces
3: resp ← f
4: c/cont
5: resp ← UNSAT
6: v ← escogerV ariable(P )
7: para todo (x ∈ Dv ) mientras (resp = UNSAT ) hacer
8: si (f ∪ {(v, x)}) satisface las restricciones de P entonces
9: f ← f ∪ {(v, x)}
10: resp ← Backtracking(P, f )
11: fin si
12: fin para
13: fin si
14: retornar resp
16
podrá ser extendida a una final.
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 cada vez que backtracking asigne
ese valor resultará en una violación inmediata de tal restricción. Esto se soluciona
eliminando todos los valores de Di que están restringidos a xi .
17
Algoritmo 2.2 Backjumping lleva a cabo una resolución de conflictos de manera inteligente,
lo que le permite reducir significativamente la cantidad de trashing que efectúa backtracking.
Pese a eso no elimina por completo esta anomalı́a.
1: Backjumping(P, f ) → (f 0 , Γ)
2: si f es una asignación total en P entonces
3: retornar (f, φ)
4: c/cont
5: v ← escogerV ariable(P )
6: resp ← UNSAT
7: Γ←φ
8: para todo (x ∈ Dv ) hacer
9: si (f ∪ {(v, x)}) satisface las restricciones de P entonces
10: f ← f ∪ {(v, x)}
11: (resp, Γ0 ) ← Backjumping(P, f )
12: c/cont
13: Γ0 ← Conjunto de variables que forman parte del conflicto
14: fin si
15: si resp 6= UNSAT entonces
16: retornar (resp, φ)
17: c/cont si v ∈ / Γ0 entonces
18: retornar (UNSAT , Γ0 )
19: c/cont
20: Γ ← Γ ∪ (Γ0 − {v})
21: fin si
22: fin para
23: fin si
24: retornar (UNSAT , Γ)
18
debido a que al deshacer el trabajo intermedio pierde información relevante que
podrı́a ser utilizada para evitar caer en errores repetidamente.
19
v a la variable i. Dada una solución parcial P , de denotará P al conjunto de variables
asignadas por P .
En base a las definiciones 2.4 y 2.5 es posible plantear el algoritmo 2.3, que es, ex-
cluyendo algunas diferencias de forma y notación, la versión original de backtracking
dinámico según la propusiese Ginsberg el año 93.
Una caracterı́stica muy importante del algoritmo es que conserva el trabajo in-
termedio. Esto se debe a que resuelve conflictos basado en las explicaciones de elimi-
nación, lo que hace que elementos de la solución parcial ajenos al conflicto no sean
modificados. Esto aunque tales variables hayan sido asignadas en medio de la variable
identificada como origen del conflicto y la variable que sufrió las consecuencias.
20
Algoritmo 2.3 Backtracking dinámico fue propuesto por Ginsberg el año 1993. En promedio
tiene un performance mejor a backjumping debido a que retiene información relevante necesaria
para resolver conflictos.
1: BacktrackingDinamico(P, ²) → f
2: f ←∅
3: Ex ← ∅ para todo x ∈ X
4: mientras f 6= X hacer
5: i ← escogerV ariable() {i ∈ X − f }
6: Ei ← Ei ∪ ²(f, v)
7: S ← Di − Ei
8: si S 6= ∅ entonces
9: v ← escogerElemento(S)
10: f ← f ∪ (i, v)
11: c/cont
12: E ← variables(Ei )
13: si E = ∅ entonces
14: retornar UNSAT
15: c/cont
16: Sea (j, vj ) la última entrada en f vinculada a una variable de E
17: Eliminar (j, vj ) de f
18: Eliminar (de las variables asignadas) las explicaciones asociadas a j
19: Ej ← Ej ∪ (vj , E ∩ f )
20: fin si
21: fin si
22: fin mientras
23: retornar f
Pese a todo, backtracking dinámico está muy lejos de ser el algoritmo “perfecto”
que la comunidad de cientı́ficos espera encontrar algún dı́a. Si bien tiene cualidades
muy interesantes y ha sido probado en la práctica, el algoritmo tiene algunos pro-
blemas también. En el artı́culo The hazards of fancy backtracking [BAK95], Baker
demuestra que para algunos problemas backtracking dinámico tiene un performance
peor comparado con casos promedio resueltos por otros algoritmos. En el mismo
artı́culo se estudia las causas de este comportamiento y se propone una variación
interesante.
21
La amenaza más grande al realizar búsquedas utilizando backtracking dinámico,
es la denominada anomalı́a del error temprano. Esta anomalı́a, presente también en
todos los algoritmos de backtracking citados, dificulta una recuperación a tiempo de
errores cometidos al principio, pero que causarán conflictos mucho más adelante en la
búsqueda. El hecho de cometer un error muy temprano (cuando las restricciones están
relajadas todavı́a), conduce a intentar resolver un problema que será inconsistente
a mediano o largo plazo. Eso sin mencionar que una vez hallada la inconsistencia,
regresar y enmendar el error puede ser una tarea muy larga.
Por tal motivo, Ginsberg y McAllester propusieron el año 1994 el algoritmo deno-
minado partial order dynamic backtracking. Este algoritmo no se limita a volver atrás
cronológicamente en la solución parcial, sino que permite la evaluación de cualquier
variable en cualquier punto. Esta modificación elimina la posibilidad de que un error
temprano afecte significativamente a la búsqueda.
22
(a) Grafo de restricciones que (b) Grafo obtenido luego de
representa una solución forzar la consistencia de
parcial al ejemplo 2.2.1 arco entre (x8 , x9 ) y
(x8 , x4 ).
La figura 2.5a representa una instancia en la solución del ejemplo 2.2.1. Se puede
apreciar que x1 , x4 , x7 y x9 ya tienen valores asignados. El arco (x9 , x8 ) es consistente
según la definición 2.6, pero el arco (x8 , x9 ) no lo es debido a que para el color rojo
no existe un color en x9 que satisfaga la restricción. Para arreglar esta inconsistencia
basta eliminar de D(x8 ) el color rojo. Si, de la misma manera, hacemos consistente
el arco (x8 , x4 ) obtenemos el grafo de la figura 2.5b donde claramente vemos que se
ha violado la restricción entre (x1 , x8 ).
23
Algoritmo 2.4 AC–3 (Arc Consistency) propuesto por Mackworth el año 1977, permite
forzar la consistencia de arco en una red de restricciones.
1: AC–3(G)
2: Q ← {(xi , xj )} ∈ arcos(G), i 6= j
3: mientras Q 6= ∅ hacer
4: (xk , xm ) ← escogerArcoEliminando(Q)
5: si revisarConsistencia(xk , xm ) entonces
6: Q ← Q ∪ {(xi , xk ), (xi , xk ) ∈ arcos(G), i 6= k ∧ i 6= m}
7: fin si
8: fin mientras
1: revisarConsistencia(xi , xj )
2: borrado ← FALSE
3: para todo vi ∈ D(xi ) hacer
4: si no existe vj ∈ D(xj ) tal que (vi , vj ) es consistente entonces
5: eliminarV alor(vi , D(xi ))
6: borrado ← TRUE
7: fin si
8: fin para
9: retornar borrado
24
resuelto en tiempo polinomial. Dentro del contexto de las redes de restricciones, un
problema es fácil cuando un algoritmo como backtracking puede resolverlo sin volver
atrás [DEC92].
Con el fin de lograr tal objetivo, se han realizado investigaciones para tratar de
encontrar cuál es el nivel de consistencia que asegura una búsqueda lineal. Dichas
investigaciones fundamentan la tratabilidad de un problema en base al concepto
de ancho inducido de un grafo (referirse a [BAK95] y [DEC92]). En base a dicho
concepto, es posible analizar la complejidad de un problema e incluso identificar
cuál podrı́a ser el orden de instanciación fijo de variables que optimice la resolución
del mismo.
Sin embargo, recalcando lo citado unos párrafos atrás, el tiempo requerido para
lograr niveles de consistencia altos en problemas cotidianos, puede hacer ineficiente
este enfoque. Por tal motivo, en la práctica se han obtenido los mejores resultados
combinando niveles de consistencia básicos con algoritmos agresivos de backtrac-
king.
25
CAPÍTULO 3
GENERACIÓN AUTOMATIZADA DE CRUCIGRAMAS
Como se puede apreciar en la definición 2.1 la matriz compuesta por 1’s y 0’s
corresponde a la cuadrı́cula del crucigrama. Donde cada 1 se denomina celda cerrada
(debido a que no albergará ninguna letra) y cada 0 se denomina celda abierta. A
partir de esta aclaración derivan las siguientes dos definiciones [JEN97].
26
de celdas abiertas que tiene.
En el capı́tulo anterior se vió, de manera general, lo que son los problemas sujetos
a la satisfacción de restricciones. A su vez se formalizó (ver definición 2.1) el proble-
ma de la construcción de crucigramas. A continuación se desarrollará la manera de
modelar el problema citado como un CSP.
27
(a) Cuadrı́cula de cuatro (b) Hipergrafo de (c) Grafo de
palabras. restricciones restricciones
correspondiente a la correspondiente a
cuadrı́cula planteada la cuadrı́cula
y el modelo de planteada y el
instanciación por modelo de
letra. instanciación por
palabra.
Figura 3.1: Ejemplo de una cuadrı́cula de cuatro palabras y dos posibles representaciones
gráficas basadas en el número de variables sobre las que recae la restricción.
28
cuadrı́cula fuese algo más estricta, por ejemplo con 13 celdas abiertas, tomarı́a más
de un siglo revisar todas las combinaciones.
Este modelo, también denominado dual, considera que cada palabra es una va-
riable. Es decir X = {W1 , W2 , W3 , W4 } con el respectivo dominio:
Suponiendo que el diccionario utilizado cuente con 500 palabras de tamaño 3 y 1000
de tamaño 4, y utilizando la misma capacidad de cómputo establecida en la anterior
sección, encontrar todas las posibles soluciones tomarı́a aproximadamente 4 minutos.
Utilizando diccionarios y cuadrı́culas más grandes, el enfoque se vuelve intratable.
29
El paradigma declarativo se basa en modelar el problema de una manera lógica
y dejar que el motor de inferencia encuentre la solución o soluciones a ciertos ob-
jetivos trazados. Los motores de inferencia utilizan algoritmos similares a los vistos
en la sección 2.3, pero de manera interna. Las experiencias rescatadas hasta el mo-
mento indican que los entornos de programación de restricciones lógicas no son tan
eficientes al resolver problemas con gran número de varibles y restricciones. Uno de
los últimos intentos, documentados, de construir crucigramas utilizando este para-
digma se llevó a cabo el año 1997 por Gary Meehan y Peter Gray utilizando CHIP
(veáse [MEE97]). Las conclusiones no fueron muy prometedoras debido a que en com-
paración con trabajos realizados años antes, el enfoque declarativo obtuvo tiempos
experimentales mayores en la construcción de crucigramas.
3.3. Diccionario
30
Figura 3.2: Distribución de longitudes de palabra en el diccionario de la Real Academia de la
Lengua Española
31
Figura 3.3: Número total de veces que aparece cada letra en el diccionario
32
Figura 3.4: Relación frecuencia/posición de las letras {i, a, n} en palabras de doce caracteres.
Definición 3.3 Sea P (l, n, c) la probabilidad de que una palabra de longitud l con-
tenga el caracter c en la posición n, siendo P (l, n, ?) = 1 donde ? representa un
caracter todavı́a no instanciado; el número aproximado de palabras que emparejan
con un patrón dado es:
l
Y
Np (l, c) ≈ T (l) × P (l, i, ci )
i=1
33
Figura 3.5: Distribución letra/posición para palabras de dieciseis caracteres.
34
Pico No Letra/posición Ejemplos
1 A(11) transitoriamente, cronológicamente, presidencialismo, etc
2 E(13) alternativamente, desalumbramiento, sistemáticamente, etc
3 E(16) desnaturalizarse, contraproducente, cronológicamente, etc
4 M(12) astronómicamente, condicionalmente, tradicionalmente, etc
5 N(14) descarrilamiento, descomulgamiento, estadı́sticamente, etc
6 T(15) antiimperialista, atrincheramiento, fotolitografista, etc
Cuadro 3.1: Descripción de los picos más altos en la distribución letra/posición de la figura 3.5
que fueron asignados a las variables con las que comparte restricciones. La definición
utilizada en el desarrollo del ejemplo, permite evaluar, aproximadamente, la cardi-
nalidad del conjunto de palabras asignables a una variable. Este método resulta ser
muy eficiente de computar pero algo inexacto.
35
Figura 3.6: Los árboles de búsqueda digitales tienen como caracterı́stica el compartir prefijos,
lo que los convierte en una estructura de datos ideal para obtener un rápido acceso al diccionario
con muy pocos requerimientos de memoria.
36
CAPÍTULO 4
EL COMPILADOR DE CRUCIGRAMAS
Finalmente se plantea el diseño del compilador según todos los objetivos a cum-
plir.
37
Los estilos utilizados en las publicaciones nombradas anteriormente son muy dife-
rentes entre sı́ y representan a toda una cultura en el mundo de los crucigramas. Se
dice, por ejemplo, que los crucigramas ingleses son mucho más complejos que los
americanos. Sin embargo, éstos últimos son mucho más exigentes en cuanto al nivel
de calidad de la cuadrı́cula. Los españoles por su lado se enfocan mucho más en las
palabras que contiene el crucigrama y el nivel cultural que exige.
Por lo general, un crucigrama debe cumplir ciertos requisitos antes de ser enviado
a un medio de comunicación para su posterior publicación. Éstos varı́an según el
medio, en algunos casos son muy estrictos mientras que en otros demasiado flexibles.
Las reglas básicas para la construcción de crucigramas, aplicadas por la gran mayorı́a
de medios de publicación y constructores de crucigramas, son las que siguen1 :
4. No utilizar palabras o frases inventadas. Cada respuesta deberá tener una re-
ferencia en el diccionario o ser de uso común en el vocabulario.
5. Procurar que las dimensiones de la cuadrı́cula sean impares (15 × 15, 17 × 17,
etc).
38
Caracterı́stica London Times NY Times Geniograma
Cuadrı́cula simétrica simétrica -
Mı́nima longitud de palabra 3 3 1
Grado de Integración < 100 % 100 % < 100 %
Densidad de la cuadrı́cula > 80 % > 80 % -
Tipo de claves Crı́pticas Directas Directas
Cuadro 4.1: Comparación entre las caracterı́sticas generales de los crucigramas ingleses, ame-
ricanos y bolivianos.
del tipo de variantes que pueden existir, se compara en la tabla 4.1 las caracterı́sticas
generales entre un grupo representativo de crucigramas.
Analizando los datos obtenidos, no es sorpresa que todos los crucigramas ame-
ricanos tengan un grado de integración igual al 100 %, esto es consecuencia de una
regla impuesta por los medios de publicación. Sı́ llama la atención que tanto la den-
sidad promedio máxima como la mı́nima correspondan a crucigramas publicados en
Bolivia y que además eran construidos por la misma persona; el señor Mario Lara
Carrasco. Sin embargo se aprecia que este indicador (el de densidad) es correspondido
por el grado de integración en ambos casos.
39
Publicación Muestras Densidad ( %) Integración ( %) P LP
New York Times 15×15 1716 84.25 100.00 5.12
Crossword Sinergy 15×15 1273 84.12 100.00 5.05
New York Times 25×25 12 84.05 100.00 5.61
Sun Times 15×15 1405 83.40 100.00 4.97
Boston Globe 21×21 94 83.34 100.00 5.21
Washington Post 21×21 74.05 83.21 100.00 5.24
New York Times 21×21 74.35 83.14 100.00 5.26
New York Times 23×23 16 82.94 100.00 5.26
Sun Times 21×21 235 82.52 100.00 5.07
Philadelphia Inquirer 21×21 75 82.10 100.00 5.05
Los Tiempos 13×15 12 81.45 100.00 -
Laragrama 14×16 30 68.62 91.11 -
Geniograma 16×18 30 85.21 74.04 -
40
Figura 4.1: Gráfico que representa los porcentajes de densidad e integración de la muestra
tomada de laragramas. Se puede apreciar que ambos indicadores, aparentemente, no guardan
relación entre sı́, pero se mantienen dentro de un rango estable.
grado de integración del 100 % y una densidad muy baja (menor al 50 %). La red
de restricciones que representa el problema, si bien puede ser bastante estricta, es
significativamente más pequeña que la red de una cuadrı́cula de dimensiones simila-
res pero con una densidad mayor. Esto se debe principalmente a que en la medida
que aumenta la densidad de una cuadrı́cula existe una tendencia a que aumente el
número de variables del problema, esto con el fin de mantenerlo tratable. La validez
de esta afirmación radica en el hecho de que pueden existir dos cuadrı́culas de dimen-
siones iguales, densidades iguales y grados de integración iguales pero con diferente
disposición de celdas cerradas, lo que derivarı́a en un diferente número de palabras
y posiblemente en que una de ellas sea solucionable y la otra no.
Por ejemplo, en la figura 4.2 se presenta dos cuadrı́culas, ambas con una densidad
de 81.33 %, un grado de integración total y dimensiones similares. La única variación
que existe entre las dos radica en la disposición de las celdas cerradas, la cual incide
directamente en el número de palabras que albergará cada una. En el caso de la
41
(a) Cuadrı́cula 15x15, densidad 81.33 % y (b) Cuadrı́cula 15x15, densidad 81.33 % y
80 palabras. 86 palabras.
Figura 4.2: Dos cuadrı́culas de similares dimensiones, igual densidad y grado de integración,
que difieren solamente en el número de palabras. Esto se debe a la particular disposición de
celdas cerradas en cada caso.
42
Figura 4.3: Cuadrı́cula de 15x15, 80 % de densidad y grado de integración total, en la que la
disposición de las celdas hace que el problema se torne sumamente complejo.
Definición 4.1 Dada una cuadrı́cula G, con una densidad igual a d, número de
columnas C, número de filas F , promedio de longitudes de palabra LP y número
de palabras igual a P , la complejidad de la misma puede ser obtenida mediante la
relación:
d × C × F × LP
XG =
2×P
43
En [DEC92] y [BAK95] se profundiza sobre este concepto.
Para lograr que los crucigramas generados por el sistema sean competitivos a
todo nivel, es necesario asegurar que los contenidos de la base de datos (palabras
y claves) sean de muy alta calidad. Pero no sólo eso, también se necesita plantear
algunos indicadores adicionales que permitan seleccionar temáticamente, según los
requisitos del usuario, las palabras a utilizarse y permitan clasificar a los crucigramas
según su complejidad.
En el capı́tulo introductorio (veáse sección 1.4) se plantea que el usuario final po-
drá elegir el grado de complejidad que desea para su crucigrama final. Este paráme-
tro de decisión puede resultar muy conflictivo, ya que la complejidad es un concepto
relativo a la persona que la evalúe. Además surge una pregunta muy importante:
44
¿Dónde reside la complejidad en un crucigrama? Inicialmente se podrı́a pensar que
reside tanto en las palabras como en las claves. Pero también es posible afirmar que
reside en la cuadrı́cula y la manera en la que están cruzadas las palabras.
Definición 4.2 (Complejidad léxica palabra) Valor que califica una palabra a
partir de su composición. El rango de este indicador es de 1..100 y se lo calcula en
base a los siguientes criterios.
Longitud
Letras utilizadas
Posición de las letras
Definición 4.4 (Complejidad claves) Valor asociado a una clave, con rango:
1..100, que identifica la complejidad de la clave en función a la palabra que refe-
rencia. Para calificar la complejidad de una clave se tomarán en cuenta algunos de
los siguientes criterios:
45
labras cuyas caracterı́sticas, estadı́sticamente, no favorecen a la construcción de un
crucigrama en particular. Por ejemplo palabras que usen algunas las letras {k, x, y}
podrı́an ser penalizadas debido a que se reducen las posibilidades de encontrar pala-
bras que crucen con el patrón que vaya a formarse.
Por otro lado, los indicadores complejidad general palabra y complejidad claves
son obtenidos a partir de una clasificación realizada por los usuarios administradores
del sistema. Se utilizan en el proceso de selección de palabras que irá a utilizar el
compilador en la construcción de un crucigrama.
DB Tiene el fin de implementar funciones que sirvan de interfaz entre los datos
(diccionario, crucigramas, claves, etc) y cualquier sub-módulo que necesite uti-
lizarlos.
46
Celda Cuadrícula
Número de Columnas
Elemento Backtracks
Número de Filas
Variable Variable
Horizontal Vertical
Puntero Celdas
Figura 4.4: Estructuras de datos correspondientes a una celda y una cuadrı́cula respectiva-
mente. Se puede observar que en una celda se almacena información adicional al elemento
albergado.
47
Nodo Variable
ID Longitud
Fila Columna
Dirección Explicaciones
Puntero Siguiente
Puntero Anterior
Figura 4.5: Estructura de datos orientada a albergar una variable del problema utilizando el
enfoque “por palabra”. Los elementos son: Un identificador único de variable, las coordenadas
de la cuadrı́cula donde reside el primer elemento de la variable, la longitud de la palabra, la
dirección (horizontal o vertical), una bandera que indica si el caracter puede ser modificado y
punteros que permiten la inclusión de la variable en una lista doblemente enlazada.
48
Cuadrícula
Número de Columnas
Número de Filas
Puntero Celdas
CSP
Puntero a Cuadrícula
Puntero a Variables
Número de Variables
0 1 n
Figura 4.6: Estructura de datos compuesta que representa un problema sujeto a la satisfacción
de restricciones. Se puede observar que el CSP se compone de una cuadrı́cula (que impone
las restricciones), un conjunto de variables y, adicionalmente, conviene conocer el número de
variables que tiene el problema. Los dominios se representan utilizando la cuadrı́cula y se los
calcula en base al diccionario.
La consistencia del problema se logra de manera implı́cita debido a que los do-
minios de cada variable se obtienen dinámicamente según el estado de la cuadrı́cula.
De entrada esto asegura la consistencia de nodo, ya que el dominio está compuesto
por valores válidos solamente. La consistencia de arco se logra utilizando una técni-
ca denominada “look ahead” o mirar para adelante. “Look ahead” implica revisar,
antes de hacer una asignación definitiva, si es que las variables afectadas no reducen
la cardinalidad de sus dominios a cero. En la práctica, la técnica descrita puede ser
lograda de dos maneras: Exacta (calculando los tamaños de los dominios afectados)
y estadı́stica (utilizando tablas precomputadas que aproximen la cardinalidad de los
dominios afectados). Nuevamente la definición 3.3 puede ser utilizada para realizar
el “look ahead” estadı́stico.
49
No t[s] tmax [s] tmin [s] bt btmax btmin
1 10.88 51.04 1.57 187 416 33
2 10.51 25.24 1.96 285 525 33
3 11.23 34.92 2.96 279 494 64
4 14.23 33.87 1.70 293 627 87
5 11.33 45.63 1.80 234 732 56
6 12.93 37.58 3.65 227 496 32
7 6.32 18.32 1.85 223 715 42
8 10.69 39.59 5.40 217 459 78
9 16.57 142.54 1.77 287 681 46
10 28.84 96.38 4.50 527 1074 190
cuadrı́cula. Para esto se podrı́a ordenar a las palabras candidatas según la suma del
número de palabras asignables en cada variable que se verı́a afectada por esta asig-
nación. En cada uno de estos procedimientos se introducirán elementos aleatorios
que permitan diversificar las soluciones a una cuadrı́cula.
Sobre cada una de estas diez cuadrı́culas se realizaron 25 pruebas en las que
el compilador utilizó el algoritmo de iterative sampling para evitar dedicar mucho
tiempo a soluciones inconsistentes desde el principio. Los resultados pueden obser-
varse en la tabla 4.3. Algunos crucigramas obtenidos experimentalmente pueden ser
observados en la sección de anexos del presente documento.
50
De los resultados obtenidos se puede notar que en promedio, backtracking diná-
mico resolvió gran parte de los problemas reconsiderando decisiones menos de 500
veces. Tomando en cuenta que las cuadrı́culas que se utilizaron se caracterizan por te-
ner un grado de complejidad relativamente alto, las pruebas reflejan que el problema
de la construcción de crucigramas ha sido resuelto satisfactoriamente.
4.5. Pruebas
51
utilizando una variedad de cuadrı́culas y un diccionario preestablecido para todas
las muestras. El segundo escenario tiene como objetivo conocer el comportamiento
del compilador cuando el tamaño del diccionario varı́a.
La tabla 4.4 refleja los resultados obtenidos en las pruebas. La primera columna
corresponde al identificador interno de la cuadrı́culas en la base de datos, seguida
de la densidad, número de variables, número de muestras solucionadas, tiempo de
procesador promedio y número de backtracks necesarios para alcanzar la solución.
El orden de presentación de los resultados es ascendente y se basa en el promedio de
backtracks. No se encontró ninguna solución a las cuadrı́culas: 87, 85, 90 y 88.
52
a las que no se encontró solución en la primera ronda de pruebas corresponden a
las cuatro que tienen los indicadores de complejidad más altos. Además, se puede
observar que los valores de complejidad de tales cuadrı́culas se hallan en un rango
muy elevado (superior a 700), mientras que los indicadores de complejidad para las
cuadrı́culas que fueron solucionadas oscilan entre 500 y 600.
Posteriormente se realizó una segunda vuelta de pruebas sobre las diez cuadrı́cu-
las más complejas solamente. La única variación fue que se permitió al compilador
realizar hasta un máximo de cien mil backtracks por muestra. En estas pruebas,
cuyos resultados no se encuentran en este documento por ser menos relevantes, se
encontraron soluciones satisfactorias a todas las cuadrı́culas exceptuando la 87 y la
90.
53
Para cada muestra se utilizó un incremento del 5 % en el tamaño del diccionario,
con respecto a la anterior. Se permitió al compilador realizar un máximo de diez mil
backtracks.
Los resultados, que pueden observarse en la tabla 4.6, encierran algunas carac-
terı́sticas muy importantes. La más interesante radica en el hecho de que no se
encontraron soluciones utilizando diccionarios con menos de veinticinco mil entra-
das. A partir de diccionarios con más de treinta mil palabras el comportamiento del
compilador parece ser más uniforme y no se observa una caı́da en el rendimiento a
medida que la cardinalidad del diccionario crece.
Hay que notar que la cuadrı́cula utilizada para las pruebas corresponde a una
publicación real de alta calidad y con indicadores relativamente altos. Este puede
ser el motivo por el que no pueda ser solucionada utilizando diccionarios pequeños
y aplicando las restricciones de utilización de recursos. Se ha visto que existen al-
gunos compiladores de crucigramas (comerciales) que tienden a diseñar cuadrı́culas
con ciertas particularidades que se adapten mejor a un diccionario construido es-
pecialmente. Por ejemplo, una cuadrı́cula en la que abundan las palabras de tres
letras, será mejor resuelta con un diccionario de similares caracterı́sticas. En el caso
del presente trabajo se desea un compilador lo suficientemente genérico para poder
trabajar con cualquier cuadrı́cula y cualquier diccionario sin hacer uso de particu-
laridades preestablecidas que puedan ser beneficiosas al momento de resolver un
problema. En realidad se busca resolver los problemas más complejos que se pueda,
dando por sentado que todos aquellos problemas sencillos que se encuentren en el
camino se resolverán sin mayor inconveniente.
54
algo similar. El punto importante radica en que si la cardinalidad de la unión de los
conjuntos de palabras correspondientes a cada uno de los temas, escogidos por el
usuario, no es lo suficientemente grande (por ejemplo mayor a treinta mil elementos)
se corre el riesgo de que no se halle solución al problema.
55
Id d |X| |S| t[s] bt Id d |X| |S| t[s] bt
69 80.44 % 84 10 3.05 107 28 80.44 % 78 10 15.70 255
33 80.44 % 84 10 2.94 117 91 79.56 % 82 10 6.49 256
50 73.33 % 86 10 2.36 121 59 78.67 % 82 10 9.45 257
82 78.67 % 86 10 4.29 132 19 79.56 % 84 10 7.16 258
34 80.44 % 84 10 3.69 151 78 80.44 % 78 10 12.12 259
44 75.11 % 82 10 3.11 159 77 76.44 % 80 10 7.51 270
23 76.89 % 84 10 3.94 160 65 78.67 % 82 10 8.79 271
48 67.56 % 72 10 5.60 163 42 80.44 % 82 10 7.18 273
29 80.00 % 86 10 7.82 165 76 79.11 % 84 10 7.20 275
73 78.22 % 88 10 8.97 167 32 79.56 % 78 10 9.64 276
68 80.44 % 82 10 4.26 169 83 82.22 % 78 10 12.38 280
75 79.11 % 84 10 5.98 169 31 77.78 % 82 10 8.32 283
45 76.89 % 82 10 3.63 178 46 82.22 % 86 10 7.74 299
49 75.11 % 86 10 4.42 178 63 81.78 % 84 10 8.48 301
74 74.67 % 80 10 4.50 179 25 80.89 % 84 10 7.96 304
71 81.78 % 88 10 4.35 185 79 79.56 % 81 10 9.20 313
38 82.22 % 84 10 7.11 199 36 81.33 % 84 10 7.03 315
21 81.33 % 82 10 9.79 204 70 80.44 % 86 10 7.87 315
51 76.44 % 84 10 6.75 206 30 80.44 % 78 10 12.49 317
37 77.33 % 88 10 5.40 208 80 81.33 % 80 10 7.24 318
67 78.67 % 88 10 3.56 208 35 82.22 % 82 10 11.47 319
18 80.44 % 84 10 4.82 211 60 77.78 % 86 10 5.51 326
43 76.44 % 80 10 4.99 212 72 80.44 % 78 10 10.05 330
22 79.56 % 80 10 7.19 218 26 80.00 % 82 10 7.94 333
61 80.44 % 84 10 5.14 223 64 80.89 % 88 10 11.29 363
56 79.11 % 84 10 3.91 225 40 82.67 % 84 10 10.70 366
92 80.44 % 82 10 9.93 227 20 79.11 % 84 10 9.53 379
17 79.56 % 82 10 8.92 228 24 80.00 % 84 10 9.74 387
54 80.44 % 82 10 4.69 228 89 81.33 % 82 10 12.81 388
58 79.56 % 84 10 4.51 234 27 81.33 % 86 10 7.89 389
39 81.33 % 82 10 11.59 237 66 80.44 % 82 10 8.47 402
16 79.56 % 84 10 5.28 239 57 81.33 % 80 8 30.87 427
62 79.56 % 82 10 5.65 240 84 84.00 % 78 9 28.91 444
81 77.78 % 82 10 10.28 252 55 81.78 % 84 9 16.52 471
47 79.11 % 84 10 10.47 254 86 83.11 % 78 1 45.20 1268
Cuadro 4.4: Resultados de las pruebas exhaustivas realizadas al compilador. En las tablas
figuran 70 cuadrı́culas a las que se halló por lo menos una solución junto con los indicadores
promedio de eficiencia. Los resultados se ordenan según el número de backtracks promedio (bt)
que se realizaron al resolver cada instancia del problema.
56
Id d |X| XC bt
87 82.22 % 54 1173.67 -
85 85.78 % 70 760.20 -
90 84.89 % 70 744.52 -
88 86.67 % 72 733.54 -
84 84.00 % 78 587.13 444
86 83.11 % 78 574.76 1268
83 82.22 % 78 562.53 280
Cuadro 4.5: Las seis cuadrı́culas más complejas según el indicador de complejidad propuesto.
Los resultados de las pruebas ratificaron la complejidad de estas cuadrı́culas.
Id |Dict| t[s] bt
828 4166 - -
829 8332 - -
830 12498 - -
831 16663 - -
832 20829 - -
833 24995 - -
834 29160 321.00 9527
835 33326 30.60 916
836 37492 12.60 412
837 41657 156.00 3876
838 45823 6.84 300
839 49989 19.20 731
840 54155 8.56 462
841 58320 7.89 443
842 62486 26.10 1082
843 66652 94.00 1404
844 70817 36.10 2246
845 74983 23.80 607
846 79149 313.00 3837
847 83314 7.69 250
Cuadro 4.6: Resultados de las pruebas realizadas utilizando distintas variaciones del diccio-
nario. Se puede observar que con diccionarios que tienen menos de veinticinco mil entradas,
uniformemente repartidas, el compilador no pudo encontrar soluciones en el tiempo de ejecución
permitido.
57
CAPÍTULO 5
EL SISTEMA
En base a los objetivos del proyecto se puede determinar una lista inicial de
requerimientos que el sistema debe cumplir. Estos permiten modelar el sistema desde
una perspectiva de actores y casos de uso.
58
Adm. Diccionario
Adm. Configuración
Adm. Usuarios
Adm. Cuadrículas
Adm. Solicitudes
Cliente.- Representa al conjunto de personas y/o entidades que serán los usuarios
finales del sistema.
Los casos de uso elementales del actor administrador engloban las posibles inter-
acciones que puede tener el administrador con el sistema (ver figura 5.1). Se detalla
cada caso de uso a continuación:
59
Adm. Claves Adm. Diccionario
Constructor
un pedido.
Generar Reportes.- Es uno de los casos de uso más importantes del sistema. Invo-
lucra la generación de reportes y estadisticas referentes a solicitudes, usuarios,
diccionario, etc.
Los usuarios constructores tienen acceso a una porción más limitada del sistema
que los usuarios administradores. Los dos casos de uso que los caracterizan son los
que siguen (ver figura 5.2):
60
Solicitar
Adm. Crucigramas Crucigramas
Cliente
Por último, el actor cliente es aquel que representa al usuario que accederá a los
servicios prestados por el sistema. Los casos de uso de este actor se describen en las
siguientes lı́neas (ver figura 5.3):
61
citan a continuación:
El sistema deberá ser capaz de funcionar bajo entornos con mediana capacidad
de procesamiento.
Debido a las caracterı́sticas del sistema, entre las más importantes el hecho de que
vaya a funcionar en Internet, y a los requisitos no funcionales, como ser seguridad y
estabilidad, se plantea una arquitectura de tres capas como la arquitectura candidata
para desarrollar el sistema.
Los sistemas de tres capas son muy seguros y eficaces y, combinados con el enfoque
cliente-servidor, permiten reducir al mı́nimo los requisitos básicos de hardware y
software en las plataformas cliente.
62
Presentación
SERVIDOR WEB
DBMS
Datos
Figura 5.4: Arquitectura de tres capas. La capa inferior corresponde a la base de datos,
la intermedia se denomina nivel de aplicación y la última corresponde al servidor web que
interactuará con las solicitudes de los clientes.
Apache SSL.- Servidor web con importantes caracterı́sticas, como ser: eficiencia,
63
seguridad, flexibilidad, etc. El servidor Apache funcionará en el nivel más alto
del sistema.
LATEX.- Formateador de textos que será utilizado para dar formato gráfico final a
los crucigramas generados.
Los requisitos de software necesarios para acceder al sistema como cliente son los
que siguen:
Navegador Web HTTP 1.1 (Mozilla, Opera, Firefox, IE, etc.) con JavaScript
instalado, soporte para Cookies y soporte para SSL.
64
Owner
clue_type (id_us er_acct)
C ategory
(id_category)
C lue
(id_clue)
length
Word
(id_word))
s core_human
entry
s core_human
s core_s yntax
entry
Figura 5.5: Diagrama Objeto-Rol que modela conceptualmente el diccionario y las claves del
sistema.
65
bra corresponda a muchas categorı́as y que alguna categorı́a contenga más de
una palabra.
Palabra - Clave Palabra es referenciada por una o más claves, una clave corres-
ponde a una palabra.
66
param us er_acct
PK id_param PK id_us er_ac c t
privilege role_privilege
PK id_privilege PK id_role_privilege
Figura 5.6: Modelo entidad-relación correspondiente a usuarios del sistema. El modelo repre-
senta los distintos tipos de usuario, asi como la asignación de roles y privilegios para controlar
los niveles de acceso.
terı́sticas del usuario. Por ejemplo, el rol “cliente” hace referencia al usuario
final del sistema, el cual podrá realizar solicitudes personalizadas para la ge-
neración de crucigramas. Otro rol es el denominado “constructor”, este tipo
de usuario dedicará sus esfuerzos a mantener la base de datos amplia y con-
sistente. Gran porcentaje de la calidad de los crucigramas obtenidos recae en
este tipo de usuario. Finalmente existe un rol que identifica a los usuarios
“administradores” del sistema.
Diccionario Es el núcleo del sistema sobre el cual se realizan las distintas tareas
(figura 5.7). En primera instancia, está compuesto por las palabras, las cua-
les están acompañadas de un conjunto de indicadores de calidad que serán
utilizados por el compilador. Cada palabra puede estar asociada con muchas
categorı́as lo que permite obtener un subconjunto de palabras correspondientes
a un número limitado de temas.
De la misma manera, cada palabra puede estar asociada a muchas claves, las
que tendrán distintos niveles de complejidad y habrán sido propuestas por un
67
category word us er_acct
word_category
PK id_word_c ategory clue
PK id_clue
F K 1,U1 id_word
F K 2,U1 id_c ategory
entry
FK 1 id_word
s c ore_human
clue_type
FK 2 id_us er_ac c t
Figura 5.7: Modelo entidad-relación que representa como se almacenan las palabras en la
BD. Se puede apreciar la relación entre claves y palabras como también ciertos indicadores de
calidad que permitirán generar crucigramas con distintos niveles de complejidad.
usuario constructor.
68
cros s word_s olution cros s word us er_acct
PK id_c ros s word_s olution PK id_c ros s word PK id_us er_ac c t
69
relevante, sobre todo en función al trabajo que se hizo en el módulo compilador.
Existen dos tipos de formatos gráficos, los basados en mapas de imagen y los
basados en vectores. Los formatos basados en mapas de imagen almacenan la infor-
mación referente a la imagen considerando que la misma está definida por una matriz
de puntos llamados pixels. Cada pixel contiene información sobre el color que repre-
senta en la imagen, el mismo que está limitado por la cantidad de bits que componen
el pixel. Por otro lado, los gráficos basados en vectores tienen la caracterı́stica de estar
formados por un conjunto de lı́neas y figuras que se definen matemáticamente.
Los gráficos basados en vectores, al no estar ligados a una resolución fija (entre
otras cosas), se convierten en el tipo de formato ideal para obtener crucigramas de
alta calidad. De los diversos formatos que existen con esta caracterı́stica, se deci-
dió que el sistema cuente con la posibilidad de descargar los crucigramas generados
ya sea en formato EPS o PDF. El primero es un formato, basado en el lenguaje de
impresión Postscript, reconocido por la mayor parte de aplicaciones orientadas a la
ilustración y ampliamente utilizado por editores en medios de publicación escrita.
Por su parte, el formato PDF, basado también en Postscript, se adapta mejor a las
necesidades de los usuarios, de obtener impresiones finales de sus crucigramas de ma-
nera fácil y directa. Todas aquellas personas que no requieran de la realización de un
trabajo de edición posterior a la obtención del crucigrama, optarán por este último
formato. La elección de estos formatos garantiza un equilibrio entre la portabilidad
y la flexibilidad de los crucigramas generados por el sistema.
70
TeX
LaTeX
DVI
dvips dvipdfm
PS
PDF
PDF
gs
EPS
EPS
Figura 5.9: A partir de un archivo fuente de LaTeX, se procesa el respectivo archivo DVI el
cual se convierte posteriormente al formato requerido por el usuario.
71
el código fuente que permita generar archivos PDF o EPS.
Nativamente LATEX solamente produce archivos DVI, los cuales se utilizan para
realizar la respectiva impresión del documento. Por ende es necesario transformar
este tipo de archivo a los formatos requeridos. Esta tarea es inmediada utilizando
pequeños utilitarios que vienen incluidos con cualquier distribución de LATEX mo-
derna. El proceso de conversión según el tipo de archivo requerido se ilustra en la
figura 5.9.
Una vez que se realizaron las pruebas respectivas al módulo compilador de cru-
cigramas (veáse anterior capı́tulo), se procedió a realizar la integración del mismo
con el sistema. Se vió conveniente utilizar como interfaz de comunicación entre éste
y el núcleo, a la base de datos directamente. De esta manera el compilador puede
funcionar como una aplicación independiente.
72
de ochenta mil palabras y una cuadrı́cula promedio de 15x15, no exceden los 10Mb.
5.7. Pruebas
Una vez llevada a cabo la integración, las pruebas se limitaron a simular todos
los casos de uso definidos en el análisis con el fin de depurar mejor el prototipo final.
Se utilizó una base de datos de mediana calidad y se pudo tener acceso a algunos de
los resultados estadı́sticos generados por el sistema.
73
Academia de la Lengua Española en su versión completa. Inicialmente se tuvo acceso
a las palabras únicamente. Luego se encontró la manera de automatizar un proceso
de captura de significados utilizando el conjunto de palabras, un robot web imple-
mentado para el caso y el diccionario electrónico de la Real Academia disponible en
lı́nea en Internet. Habiendo obtenido estos datos, se procedió a aplicar heurı́sticas
sencillas que automaticen el proceso de generación de claves para las más de sesenta
mil palabras.
Concluida esta etapa se contó con una base de datos con mayor calidad a la que se
tenı́a prevista, por lo que los resultados a las pruebas realizadas demostraron que es
posible obtener crucigramas que requieran muy poco trabajo previo a la publicación
final. Sin lugar a dudas, una base de datos de muy alta calidad podrı́a contribuir
a generar crucigramas muy similares a aquellos construidos sin intervención de la
tecnologı́a.
5.7.2. Resultados
74
Evolución hacia la solución
100
80
Porcentaje solucionado
60
40
20
0
0 200 400 600 800 1000 1200
Número de backtrack
bilidad de utilizar claves mejor elaboradas, hecho que deriva del formato utilizado
(Americano), compensa en cierta manera el uso de palabras complejas. Esto debido a
que en algunos casos las claves pueden ser más descriptivas. Unos pocos observaron
que resolver crucigramas con este formato resulta algo más incómodo que resover
crucigramas como los que circulan en nuestro medio. En especial cuando existen un
gran número de claves.
A su vez, el hecho de que los crucigramas fuesen obtenidos casi sin intervención
humana causó cierta sorpresa e interés en el tema.
75
Evolución hacia la solución
100
80
Porcentaje solucionado
60
40
20
0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Número de backtrack
algunos gráficos obtenidos a partir de los resultados, que reflejan caracterı́sticas im-
portantes del proyecto.
76
450
Curva de aproximación
Muestra vs Backtracks
400
350
300
Backtracks necesarios
250
200
150
100
50
0
0 1 2 3 4 5 6 7 8 9
Número de muestra
Figura 5.12: Gráfico de desempeño correspondiente a la cuadrı́cula 43. Se observa que la mayor
parte de las veces el compilador requirió menos de 300 backtracks para resolver la cuadrı́cula.
77
200
Curva de Aproximación
Muestra vs Backtracks
150
Backtracks necesarios
100
50
0
0 1 2 3 4 5 6 7 8 9
Número de muestra
78
CONCLUSIONES Y RECOMENDACIONES
79
la elección de temas y complejidad reducirı́a notablemente la cardinalidad del dic-
cionario y el problema podrı́a tornarse intratable. Por esto, se ha visto conveniente
combinar las entradas de diccionario personalizadas con otros elementos (que tal vez
no corresponden a las caracterı́sticas propuestas por el usuario) con el fin de man-
tener la cardinalidad del diccionario dentro de los márgenes que aseguren resultados
exitosos.
Por último, se debe recordar que si bien el sistema cumple con los objetivos
planteados, la calidad de los crucigramas generados dependerá, ahora por completo,
de la calidad de los datos. Si la base de datos es mantenida por usuarios expertos,
que se dedican a diversificar e introducir elementos cuidadosamente seleccionados,
entonces, en combinación con el sistema, se podrán producir crucigramas de muy
alta calidad competitivos con aquellos publicados por medios prestigiosos.
Trabajo futuro
80
genéticos en el modelo de instanciación por letra.
81
BIBLIOGRAFÍA
[Cru02] Cruciverb.com
2002. Basic Rules of Crossword Construction. Sitio Web
82
[HAL98a] HALPIN, Terry
1998 Data modeling in UML and ORM revisited. En EMMSAD
83
[RUS95] RUSSELL, Stuart y NORVIG, Peter
1995 Artificial Intelligence, A Modern Aproach. Prentice Hall
84
ANEXO A
MODELOS ORM
1
ANEXO B
CUADRÍCULAS
10
Cuadrı́cula 51
Dimensiones: 15x15
Densidad: 76.44%
Número de Palabras: 84
PLP: 4.09
Indicador de Complejidad: 419.25
1 2 3 4 5 6 7 8 9 10 11
12 13 14 15
16 17 18
19 20 21 22
23 24 25 26
27 28 29 30 31 32 33 34
35 36 37 38
39 40
41 42 43 44 45 46 47
48 49 50 51
52 53 54
55 56 57 58 59 60 61
62 63 64 65 66
67 68 69
70 71 72
11
Grafo de Restricciones: Cuadrı́cula 51
72h 9h
60v 9v
66v 61v 10v 11v
45v 7v
64v 6v
68h 14h
71h 21h 8v
63v 57h 4h
63h 17h
58v 4v
44v 5v
52v 13v
42v 20v
39h
62h 27h
48h 16h
67h 55h 19h 12h
62v 56v 3v 1v
55v 2v
70h 1h
12
Cuadrı́cula 55
Dimensiones: 15x15
Densidad: 81.78%
Número de Palabras: 84
PLP: 4.38
Indicador de Complejidad: 479.83
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16
17 18 19
20 21 22 23
24 25 26 27 28 29 30
31 32 33 34
35 36 37
38 39 40 41 42 43
44 45 46
47 48 49 50 51
52 53 54 55
56 57 58 59
60 61 62 63 64 65 66 67
68 69 70
71 72 73
13
Grafo de Restricciones: Cuadrı́cula 55
68h
56h 62v
58v
71h
53v
47v
48v 38h
60h
61h
49v 69h72h 35h
57h
52h
27v 1v
44v 39h 14h
24h 5v 1h 3v
17h
44h 6v
21v 20h 4v
36v
45v 50h
28v
46h 32h
43v 37v
41h 41v 33v
42v 36h
46v 54h
51h
59h 40h
65v
66v
12v
11v 13v
11h
23h 19h
16h
14
Cuadrı́cula 57
Dimensiones: 15x15
Densidad: 81.33%
Número de Palabras: 80
PLP: 4.57
Indicador de Complejidad: 523.24
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16
17 18 19
20 21 22 23
24 25 26
27 28 29 30 31 32 33 34 35
36 37 38 39
40 41 42 43 44
45 46 47 48 49
50 51 52 53
54 55 56
57 58 59 60 61 62 63
64 65 66 67 68
69 70 71
72 73 74
15
Grafo de Restricciones: Cuadrı́cula 57
1v
2v
3v
1h 17h 14h
20h
36h
40h 4v
41v
28v 21v
45h
27v 24h
29v 10h
5v
50h 27h 13v
11v 19h
25v 7v
12v
54h 46v
5h 16h
6v 10v
37h 18h
51v 22h
15h
8v
42h 30v
55v
65h 9v
57h 47h
57v 73h
64h 38v
70h 26h
23v
58v
43v
72h 60v
59v
64v 52h 31h
66v 34v
69h 56h 35v
48v 39h
33v
32v
53v 44h
49h
61h
71h
74h 67h
62v
63v
68v
16
Cuadrı́cula 74
Dimensiones: 15x15
Densidad: 74.67%
Número de Palabras: 80
PLP: 4.20
Indicador de Complejidad: 441.02
1 2 3 4 5 6 7 8 9 10 11
12 13 14 15
16 17 18
19 20 21
22 23 24 25
26 27 28 29 30
31 32 33 34
35 36 37 38 39 40
41 42 43 44
45 46 47 48
49 50 51 52
53 54 55 56 57 58
59 60 61 62 63 64
65 66 67
68 69 70
17
Grafo de Restricciones: Cuadrı́cula 74
30v
35v
52v
66h
27h
63v 60h 21v
25h
49h 20h
62v 46h
61v 10v
69h 53h
47v 11v
15v 9v
8v
46v 8h
18h
56v 54v 55v
53v 15h
65h 59h
68h
18
Cuadrı́cula 75
Dimensiones: 15x15
Densidad: 79.11%
Número de Palabras: 84
PLP: 4.23
Indicador de Complejidad: 449.03
1 2 3 4 5 6 7 8 9
10 11 12 13 14
15 16 17
18 19 20 21
22 23 24
25 26 27 28 29 30 31 32 33
34 35 36 37 38
39 40 41 42 43 44
45 46 47 48 49 50
51 52 53 54 55
56 57 58 59
60 61 62 63 64 65 66 67
68 69 70 71
72 73 74
75 76 77
19
Grafo de Restricciones: Cuadrı́cula 75
39h
72h
68h 45h
25v
75h 62v 51h 26v
46v
27v 10h
61v
25h 1h
60v 15h
52v
34h 1v
60h 2v
56h 11v 3v
19v
35v
18h
57v 40h
63v 22h
41v
12v
47h
4v
69h
73h 53h 23v
70v 76h 4h 5v
28h
48v 12h16h
54v
29v
59v
36h
58h 6v
42h 13v
64h
43v 37v
67v 49h
21v 8v
74h 55h
77h
71h 7v
33v
14v
31v 30h 9v
7h
32v
38h 14h
17h
44h
20
Cuadrı́cula 82
Dimensiones: 15x15
Densidad: 78.67%
Número de Palabras: 86
PLP: 4.12
Indicador de Complejidad: 423.61
1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16
17 18 19
20 21 22 23 24
25 26 27
28 29 30
31 32 33 34 35 36 37 38 39
40 41 42
43 44 45 46 47
48 49 50 51
52 53 54 55 56 57 58
59 60 61 62 63
64 65 66 67 68
69 70 71
72 73 74 75
21
Grafo de Restricciones: Cuadrı́cula 82
42h
39v 37v
38v
16h
71h 36h 19h
47h
68h
10h
12v
75h 58v 11v
56v 10v
24v
57v 47v
23h
63h
27h
55h
30h 7h
50h
74h 9v
27v
51v 46v
30v
8v
7v
67v
62v
41h 14h 15v 22h
34h 18h
65h 45h
60h 61v 70h
35v 6v
5v
60v
66v
29v
26v 4v
49v 45v 4h
73h 28h
48h
25h
52h
20h
59h
21v 2v
44v
52v 1v
54v 3v 17h
53v
64h
13h
43h 31h
69h 1h
72h
33v
31v 32v
40h
22
Cuadrı́cula 83
Dimensiones: 15x15
Densidad: 82.22%
Número de Palabras: 78
PLP: 4.74
Indicador de Complejidad: 562.53
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16
17 18 19
20 21 22 23
24 25 26
27 28 29 30 31 32 33
34 35 36
37 38 39
40 41 42 43 44
45 46 47
48 49
50 51 52 53 54 55 56
57 58 59 60 61
62 63 64
65 66 67
23
Grafo de Restricciones: Cuadrı́cula 83
52v
62h 51v
65h 50v
57h
50h 59v
40h 60v
37h 41v
46v
66h
29v 58h
27h 28v 53v
38v 63h
27v
34h 48h 49v
45h
1h
4v
14h 17h 53h 54v
21v 42h
49h 56v 55v
38h 30v
25v
26v
1v 3v 24h
35h 43v 61h 64h
2v 20h
44v
67h
5v 30h 43h
25h 31v
5h 9v
6v 33v 47h
15h 32v
18h
23v
7v 10v 39h
22h 36h
8v
16h
19h
11v13v
10h
12v
24
Cuadrı́cula 84
Dimensiones: 15x15
Densidad: 84%
Número de Palabras: 78
PLP: 4.85
Indicador de Complejidad: 587.13
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16
17 18 19
20 21 22
23 24 25
26 27 28 29 30 31
32 33 34 35
36 37 38 39 40
41 42 43 44 45
46 47 48
49 50 51 52
53 54 55 56 57 58
59 60 61
62 63 64
65 66 67
25
Grafo de Restricciones: Cuadrı́cula 84
59h
65h
62h 55v
53v
54v
49h 56v
57v
42v
47v
41h 53h
63h
60h
36h 66h
33v 38v
32v 46h 50v
34v
48v 43h
4v 17h
20h 3v
1h 39v
37h 34h
14h 32h
27v
26h
2v 50h 28v
48h 5h
1v 45v 23h 21v
18h
5v 9v
24v 15h
44h 6v 7v
27h 8v
52v 51v
21h
29v
25h
30v 31v 22v
67h 58h
61h 10v 12v
11v
64h 13v
35h
40h
10h
61v
16h 19h
26
Cuadrı́cula 85
Dimensiones: 15x15
Densidad: 85.78%
Número de Palabras: 70
PLP: 5.51
Indicador de Complejidad: 760.20
1 2 3 4 5 6 7 8 9 10 11
12 13 14
15 16
17 18 19 20
21 22 23
24 25 26
27 28 29
30 31
32 33 34 35 36 37 38
39 40 41
42 43 44
45 46 47
48 49 50 51
52 53
54 55
27
Grafo de Restricciones: Cuadrı́cula 85
8v
20h
6h
14h
16h
9v
10v11v
6v 45h
7v
14v
42h 34v
23h
26h 29h 33v
39h 32v
32h
18h 22h
25h 48h
23v 26v 40v
29v 22v 52h 54h 49v
40h 25v 28v
30h 43v
43h
53h
50h 12v
47h
15h 1v
12h
2v
24h
55h 44v
47v 21h
51v
3v 17h
5v 4v
1h
28
Cuadrı́cula 86
Dimensiones: 15x15
Densidad: 83.11%
Número de Palabras: 78
PLP: 4.79
Indicador de Complejidad: 574.76
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16
17 18 19
20 21 22
23 24 25 26
27 28 29 30 31
32 33 34 35 36 37
38 39 40 41 42 43
44 45 46 47 48
49 50 51 52
53 54 55 56 57
58 59 60 61 62
63 64 65 66 67
68 69 70
71 72 73
29
Grafo de Restricciones: Cuadrı́cula 86
66v 2v
67v
1v
65h 1h
70h 73h 32h 17h
14h
71h 38h
53h
53v 68h
48h 23h
55v 44h 23v
63h 43h 3v 18h
52v 24v 4v
54v
35v
59v 39v 6v
45v 31v
7v 15h
58h 8v
57h 37v 27h 22v 5v
34h 20h
49h 36v 5h
60v 50v 21v
61v
62v 30v 9v 25h
47v
51v
56h 29v 10v 12v
64h 28v 13v
72h 41v 46h 11v
33h 9h
69h 42v
40h 16h19h
26h
30
Cuadrı́cula 88
Dimensiones: 15x15
Densidad: 86.67%
Número de Palabras: 72
PLP: 5.42
Indicador de Complejidad: 733.53
1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 16
17 18
19 20 21 22
23 24 25 26
27 28 29 30 31
32 33 34 35 36
37 38 39 40
41 42
43 44 45 46 47 48
49 50 51 52 53 54 55
56 57 58 59
60 61 62 63
64 65
66 67
31
Grafo de Restricciones: Cuadrı́cula 88
63v
67h 59h
65h62h
58v
52v 48v
53v 54v 47v 46v
57h 55h
51h
57v
45h
61v
34v 66h
40v 60h64h
44h
29h 26v
42h
33v 50v
32h
37v
30v 39v
38v
35v 37h 56h
25h 21v
49h 43h
28v
26h 41h
6v 24v
5v 8v 20h
13v 12v
14v
7v 27h
36h
15h 22h
23h
1h
1v 9h 31h
17h
3v 16h18h 11v
4v 2v 9v
19h 10v
32
Cuadrı́cula 89
Dimensiones: 15x15
Densidad: 81.33%
Número de Palabras: 82
PLP: 4.46
Indicador de Complejidad: 498.03
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16
17 18 19
20 21 22 23 24
25 26 27 28
29 30 31 32 33 34
35 36 37 38 39
40 41 42 43
44 45 46 47
48 49 50
51 52 53 54 55 56
57 58 59 60 61 62 63
64 65 66 67 68
69 70 71
72 73 74
33
Grafo de Restricciones: Cuadrı́cula 89
1v
1h
14h
17h 3v
20h 2v
58v
4v 21v
57h 35h
57v 40h 25h
69h
35v
72h 36v
29h
65v
64h 37v
26v 10v
44h 30v
48h
38h 19h
45v
28v 13v
31v 10h
46h 32h
51h 16h
41h 12v
41v 39h
11v
23v 34v
39v 24h
53v
42v 27h 33v
52v 43h
59h 49h
73h
47h
70h
7v 15h
62h
18h
56v 74h 6v
68h 5h
55v 71h
5v
63v
34
Cuadrı́cula 90
Dimensiones: 15x15
Densidad: 84.89%
Número de Palabras: 70
PLP: 5.46
Indicador de Complejidad: 744.52
1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 16
17 18
19 20 21
22 23 24 25 26
27 28 29
30 31 32 33 34 35 36
37 38 39
40 41 42
43 44 45
46 47 48 49 50 51
52 53 54 55 56
57 58 59 60
61 62
63 64
35
Grafo de Restricciones: Cuadrı́cula 90
27h
27v 22h
19h
30h 4v
40h 3v
2v 5v
37h
1v
63h
57h
61h 7v
1h
31v 17h
15h
46v 6v 8v
47v
48v
46h
44v
52h
23h
43h 9v
45h
10h 16h 18h
36v
36
Cuadrı́cula 92
Dimensiones: 15x15
Densidad: 80.44%
Número de Palabras: 70
PLP: 4.41
Indicador de Complejidad: 487.20
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16
17 18 19
20 21 22 23 24
25 26
27 28 29 30 31 32 33
34 35 36 37
38 39 40 41
42 43 44
45 46 47 48
49 50
51 52 53 54 55 56 57
58 59 60 61 62
63 64 65
66 67 68
37
Grafo de Restricciones: Cuadrı́cula 92
20h
3v
1v
2v
1h
14h 4v
27v
17h
63h 42h
53v 66h 34h 5v
38h
51v 58h
27h 25v
52v
29v
46v 28v 22v 25h
51h 21h
47v
49h
45h
6v
43v
35v 7v
60v
64h
59h 43h
67h 30v 15h
39h 35h 6h
18h
8v
54v
31v 9v
50v
30h
26h
24v
54h 23h
50h 48v 33v 10v
32v
12v
41v 48h
19h 11v
40h
40v 44h 10h 13v
36h 16h
65h
37v
62v 68h
61h
57v
55v
56v
55h
38
Cuadrı́cula 87
Dimensiones: 15x15
Densidad: 82.22%
Número de Palabras: 54
PLP: 6.85
Indicador de Complejidad: 1173.66
1 2 3 4 5 6 7 8 9 10 11
12 13 14
15 16
17 18
19 20
21 22
23 24
25
26 27 28 29 30 31 32 33 34
35 36 37
38 39 40
41 42
43 44
45 46
47 48
39
Grafo de Restricciones: Cuadrı́cula 87
11v
10v 40v
7h 18h 39h
16h 20h 42h 46h
14h
22h 44h 48h
8v 37h 34v
7v 9v 16v 32v 33v
14v
31v 30v
24v
23h
26h
25h
4v 3v
5v 29v 27v
2v 13v
6v 21h 26v28v
1v 35v
36v
40
ANEXO C
CRUCIGRAMAS
41