Sie sind auf Seite 1von 10

Divulgacin o

Un algoritmo sencillo de Sudokus de 9 9


Armando Cabrera Pacheco, Edwin Meneses Rodr guez y Roger Pacheco Castro Facultad de Matemticas a Universidad Autnoma de Yucatn o a kabrez@gmail.com, edwin.meneses.r@gmail.com, matbnt@gmail.com
recibido: 15 de junio de 2009 aceptado: 2 de julio de 2009
resumen El objetivo de este trabajo fue dise ar un algoritmo sencillo para n generar Sudokus iniciales de 9 9 con solucin unica con distintos o niveles de dicultad. Este trabajo revisa la literatura para conocer las fronteras del conocimiento sobre este tpico de investigacin. Se o o hall una lista de Sudokus iniciales de orden m = 64 con solucin o o unica, dicho orden es el mximo encontrado hasta la fecha. A partir a de los elementos de esta lista, los cuales fueron llamados elementos bsicos, se cre un algoritmo sencillo de entender e implementar a o para generar Sudokus iniciales con solucin unica. o 1. Introduccion

El Sudoku es un tipo especial de Cuadro latino, y abundaremos en detalles ms adelante. Este ultimo apareci en la literatura rabe, hace aproximadaa o a mente 700 aos (vase la pgina The Internet ENCYCLOPEDIA OF SCIENCE en la n e a seccin GAMES & PUZZLES). Como rompecabezas el Cuadro latino de nn cono
Este trabajo es la traduccin al espa ol del original desarrollado en el marco del concurso Mathematical o n Contest in Modeling 2008 realizado por el COMAP del 14 al 18 de febrero de 2008, obteniendo el resultado de Mencin Honor o ca.

19

A. CABRERA PACHECO, E. MENESES RODR IGUEZ Y R. PACHECO CASTRO

siste en asignar n s mbolos distintos (generalmente los nmeros enteros del u 1 al n) a una matriz cuadrada de tamao nn de modo que cada uno de los n n s mbolos ocupe exactamente una celda en cada rengln y cada columna. o Esta clase de rompecabezas fue redescubierta por Euler [17071783] un siglo despus, durante sus investigaciones sobre objetos combinatorios. e El primer Sudoku que aparece en la literatura fue publicado en 1974 por el arquitecto francs Howard Garns (Number Place, Dell Magazine, eua, e 1974). Este rompecabezas obtuvo gran popularidad en Japn en 1986, pero o no fue hasta el ao 2004 cuando logr una popularidad a nivel mundial. En n o los Estados Unidos de Amrica, Garns lo denomin Number place, por otra e o parte, en Japn se dio a conocer como Suuji wa dokushin, que se puede o traducir como: Los nmeros deben estar solos; nalmente, desde 1997, se u le conoce con el nombre de Sudoku, como abreviacin de su nombre japons o e (vase http://www.freesudokupuzzle.org). e La presentacin ms conocida del Sudoku es una matriz cuadrada de o a tamao 9 9. Sin embargo, existe una generalizacin natural a una man o triz de tamao n2 n2 , donde n es un nmero natural (Frank, 2005). n u Existen algunas variantes del Sudoku, como por ejemplo: el Sudoku samurai, el Sudoku or, el Sudoku mariposa, el Sudoku asesino, etctera (vase e e www.cross-plus-a.com/sudoku.htm). Nos restringiremos a considerar el Sudoku comn. u Generalmente para construir un Sudoku de 99 se consideran los nmeros u naturales del 1 al 9, sin embargo es posible construirlos utilizando nueve s mbolos distintos. Esta construccin puede ser llevada por medio de ordeo nadores a partir de generadores; otra forma para construir estos rompecabezas es la japonesa, que es hecha a mano debido a que se piensa que un Sudoku hecho a mano es ms entretenido que el generado por algn a u algoritmo (vase la pgina NIKOLI Co., Ltd.). e a La razn principal por la cual muchas personas son atra o das por el Sudoku es que a pesar de que las reglas son simples, el razonamiento para lograr el camino correcto hacia la solucin puede ser muy dif o cil, como veremos en los siguientes prrafos. a
2. Teor matematica del Sudoku a

A continuacin se denirn algunos conceptos utiles para entender e impleo a mentar el algoritmo. 2.1. Deniciones bsicas a La siguiente denicin fue tomada de Springer Online Reference Works: o
20

UN ALGORITMO SENCILLO DE SUDOKUS DE 9 9

Denicin 2.1. Un Cuadro latino es una matriz cuadrada de n n en o la cual cada la y cada columna son permutaciones de los elementos de S = {1, 2, . . . , n} para n > 1. Es posible denir ms de una relacin de equivalencia sobre el conjunto a o de Cuadros latinos para una n ja. Una de ellas es la siguiente: decimos que dos Cuadros latinos son equivalentes si uno de ellos puede ser obtenido permutando las las o columnas, o renombrando las entradas del otro. A continuacin deniremos lo que se entender en este trabajo por Suo a doku, que ciertamente, es un subconjunto del conjunto de Cuadros latinos de 9 9. Denicin 2.2. Un Sudoku es una matriz cuadrada de 9 9 subdividida o en nueve submatrices de 3 3, tambin denominadas cajas (como se e muestra en la gura 1), en cuyas celdas se encuentran nmeros del conjunto u A = {1, 2, . . . , 9}, de tal forma que cada la, cada columna y cada caja contiene uno y slo uno de los elementos del conjunto A. o
9 3 5 6 7 1 8 4 2 7 2 1 4 5 8 6 9 3 6 8 4 2 9 3 5 1 7 2 1 8 7 6 9 4 3 5 4 6 7 3 1 5 9 2 8 3 5 9 8 2 4 1 7 6 8 7 3 1 4 6 2 5 9 5 4 6 9 3 2 7 8 1 1 9 2 5 8 7 3 6 4

FIGURA 1. Sudoku.

Denicin 2.3. Decimos que dos Sudokus son equivalentes si uno de ellos o puede ser transformado en otro por medio de composiciones de las siguientes transformaciones: Permutacin de los d o gitos 1, 2, . . . , 9. Reexin. o Rotacin (0 , 90 , 180 y 270 ). o Permutacin de las columnas 1 a 3, 4 a 6 7 a 9. o o Permutacin de las las 1 a 3, 4 a 6 7 a 9. o o
21

De manera similar a lo ocurrido con los Cuadros latinos y debido a que los Sudokus son un caso especial de stos, es posible denir una relacin de e o equivalencia sobre los Sudokus.

A. CABRERA PACHECO, E. MENESES RODR IGUEZ Y R. PACHECO CASTRO

Denicin 2.4. Un Sudoku inicial se obtiene al eliminar m nmeros en las o u celdas de un Sudoku. El nmero m es el orden del Sudoku inicial (1 m u 81). Decimos que un Sudoku inicial est bien denido si y slo si existe una a o unica forma de llenar las celdas vac para alcanzar un Sudoku. as
5 4 8 6 3 5 4 6 2 1 8 4 6 6 8 5 8 4 5 7 6 3 6 7

8 4 5 6

4 5

5 8 6 7 3

9 4 5

7 8 1

4 2 6 7 2 9 5 4

FIGURA 2. Sudoku inicial de orden m = 32.

2.2. Generacin de Sudokus iniciales o Hallar en la literatura algoritmos que resuelven Sudokus iniciales no es complicado. De hecho, existen varios algoritmos utiles para resolverlos. El reto es crear un algoritmo que genere Sudokus iniciales bien denidos. Parece no existir, en la literatura, un mtodo simple para determinar cuando un e Sudoku inicial est bien denido sin necesidad de resolverlo, lo cual coma plica la creacin de algoritmos para generar Sudokus iniciales con solucin o o unica. En la literatura se encuentran algunos resultados que podr ser utiles an para generar Sudokus iniciales bien denidos. Por ejemplo, usando geometr algebraica, un Sudoku inicial es transformado en un problema de polia nomios cuya solucin se alcanza utilizando bases de Grbner. Este mtodo o o e puede determinar si el Sudoku inicial tiene solucin, y en caso armativo o devuelve una solucin (Gago-Vargas y cols., Sudokus and Grbner Bases: Not o o Only a Divertimento). Es evidente que el problema que se plantea en los prrafos anteriores es a un reto y bien puede involucrar matemticas avanzadas. a El objetivo es generar un algoritmo sencillo para generar Sudokus iniciales bien denidos con diferentes niveles de dicultad. 2.3. Algoritmos para generar y resolver Sudokus iniciales En la literatura existen muchos algoritmos para generar y resolver Sudokus Iniciales. A continuacin, se expone una breve explicacin de algunos de o o ellos.

22

UN ALGORITMO SENCILLO DE SUDOKUS DE 9 9

Algoritmos para resolver Sudokus iniciales: Marcha atrs. Consiste en asignar un valor aleatorio a una celda a vac vericando que dicha asignacin cumpla con las condiciones a, o del Sudoku, de lo contrario, devuelve el Sudoku inicial original e intenta con un valor distinto. Este algoritmo itera este mtodo cone servando los valores que cumplen las condiciones del Sudoku. Es costoso en trminos de tiempo (vase Wikipedia). e e Programacin lineal. Transforma el Sudoku inicial en un problema de o programacin, con una funcin maximizadora (Bartlett y Langville, o o An Integer Programming Model for the Sudoku Problem). Algoritmos para generar Sudokus inciales: Fuerza bruta. Genera una matriz de 9 9 y asigna los s mbolos del conjunto {1, 2, . . . , 9} aleatoriamente, despus comprueba si la mae triz resultante es un Sudoku. En el momento en que encuentra un Sudoku, procede a eliminar el nmero de celdas requeridas por el u usuario, vericando despus de cada eliminacin si la matriz resule o tante es un Sudoku inicial bien denido (Bartlett y Langville, An Integer Programming Model for the Sudoku Problem). Mtodo simtrico. Para un Sudoku predenido elimina celdas en la e e matriz triangular superior. Cuando las celdas estn completamente a determinadas las reeja por la diagonal y elimina las correspondientes celdas en la matriz triangular inferior para obtener un Sudoku inicial (Lee, 2006.). Estos algoritmos pueden llegar a ser muy lentos (Marcha atrs y Fuerza a bruta) y complicados (Programacin lineal). o El objetivo de este trabajo recae en dise ar un algoritmo sencillo y fcil de n a entender que permita generar Sudokus con diferentes niveles de dicultad. Partiremos de una coleccin de Sudokus iniciales bien denidos, que segn o u la literatura son aceptados como de orden mximo, y por medio de un a algoritmo de solucin, que se detallar ms adelante, se obtendr un Sudoku o a a a inicial bien denido con el nivel de dicultad deseado.
3. Algoritmo

3.1. Objetivo Generar, de forma sencilla, Sudokus iniciales bien denidos de orden m (0 < m < 64) con diferentes niveles de dicultad.
23

A. CABRERA PACHECO, E. MENESES RODR IGUEZ Y R. PACHECO CASTRO

3.2. Anlisis del Problema a Considerando la existencia de algoritmos y la dicultad para determinar si el Sudoku inicial dado est bien denido, se encontr que puede resula o tar muy complicado crear un algoritmo sencillo (Hayet, Complejidad de los problemas, y Mancini, Sudoku game theory, models and algorithms). Es evidente que las transformaciones entre los Sudokus iniciales bien denidos preservan la buena denicin de stos. Por lo tanto, de un solo o e Sudoku inicial bien denido, podemos obtener un gran n mero de Sudokus u inciales bien denidos (de hecho, solamente con las permutaciones obtenemos 9! por cada Sudoku inicial), de tal forma que si no supisemos que son e equivalentes, ser muy dif percatarse cuando dos Sudokus son equivaa cil lentes a simple vista. Entonces, de una peque a lista de Sudokus iniciales n bien denidos, podemos obtener una gran cantidad de Sudokus iniciales bien denidos. Debido al gran inters que este juego ha generado en la gente, se ha e intentado determinar cul es el mximo orden de un Sudoku inicial bien a a denido. Aunque este misterio no se ha resuelto, existe una lista de 47621 rompecabezas de este tipo de orden m = 64 (vase Minimum Sudoku), la cual es e de gran utilidad para desarrollar un algoritmo que genere Sudokus iniciales bien denidos. Partiremos de esta lista para generar los Sudokus iniciales bien denidos, considerando que, m = 64 es el orden mximo que se admite. a 3.3. Procedimiento General Con base en la lista de Sudokus iniciales bien denidos de orden m = 64, se procedi de la siguiente manera: o 1. Se cre una peque a base de datos con elementos de dicha lista, llao n mamos a estos elementos, elementos bsicos. a 2. El algoritmo toma aleatoriamente un elemento bsico y lo modica a para obtener un Sudoku inicial bien denido equivalente con el nivel de dicultad deseado. Para alcanzar esto, se encontr un algoritmo desarrollado en Matlab, el o cual genera Sudokus iniciales simtricos y adems proporciona una solucin e a o paso a paso del rompecabezas (Fasino, A "light" Sudoku Generator and Helper). Del anlisis del algoritmo, se concluy que la funcin (hint) que detera o o mina la solucin paso a paso no es complicada, de esta forma podr ser util o a para nuestro proyecto. La funcin bsicamente consiste en dos estrategias: o a La primera estrategia intenta responder la pregunta Qu nmero e u puede ocupar esta posicin?. o
24

UN ALGORITMO SENCILLO DE SUDOKUS DE 9 9

La segunda estrategia es preguntar Dnde puede ir el nmero N en o u esta la (o columna, o caja)?. Si alguna de las preguntas anteriores tiene solucin unica, el algoritmo o asigna el valor correspondiente. Este trabajo consisti en seleccionar un elemento bsico de la base de o a datos, transformarlo y con ayuda de la funcin anterior completar el Suo doku inicial bien denido hasta el punto deseado. Esto ultimo resulta de utilidad para determinar el grado de dicultad. Como resultado, se obtiene un algoritmo fcil y rpido que garantiza la unicidad de la solucin. a a o 3.4. El Algoritmo Como un primer paso, se denen los niveles de dicultad. Se considera que los elementos bsicos son los Sudokus iniciales bien denidos aceptados a en la literatura como orden mximo. El nivel de dicultad se dene como a muestra la siguiente tabla:
Nivel de Dicultad Orden

Fcil a Medio Dif cil Muy Dif cil

0 a 35 36 a 50 51 a 63 64

El algoritmo es el siguiente: 1. El usuario determina el nivel de dicultad. 2. Se selecciona aleatoriamente un elemento de la base de datos. 3. Una rotacin aleatoria y una permutacin aleatoria se aplican al eleo o mento bsico. a 4. Si el nivel mximo de dicultad es escogido, imprime el elemento bsico a a transformado; de otro modo se aplica la funcin hint a dicho eleo mento las veces que se necesite hasta que el Sudoku inicial alcance el orden deseado de acuerdo al nivel de dicultad requerido, y nalmente, imprime el Sudoku inicial bien denido resultante. 3.5. Ejemplos Para cada nivel de dicultad se muestra un Sudoku inicial bien denido generado por el algoritmo, con su correspondiente solucin. o
25

A. CABRERA PACHECO, E. MENESES RODR IGUEZ Y R. PACHECO CASTRO

8 5

2 3

9 1

4 8 5 6 1 3 9 2

3 5 8

8 5 5 2 8 5 8

7 9 1 5 2 4 8 3 6

5 6 2 8 3 7

3 4 8

2 7 5

8 5 7 4 1 2 9 6 3

2 3 6 7 8 9 1 5 4

9 1 4 3 6 5 7 2 8

4 8 5 6 7 1 3 9 2

6 7 9 2 4 3 5 8 1

1 2 3 9 5 8 6 4 7

7 9 1 5 2 4 8 3 6

5 6 2 8 3 7 4 1 9

3 4 8 1 9 6 2 7 5

(a) Nivel fcil a

(b) Solucin o

3 9

2 3 9 4

9 5 3 1

8 8 4 9 3 9 3 9 1 3 7 9 1 5

9 6

5 3

9 (a) Nivel medio

3 5 8 7 1 2 4 9 6

7 2 1 6 9 4 8 5 3

4 9 6 5 8 3 7 2 1

2 6 3 8 7 5 1 4 9

9 7 5 3 4 1 6 8 2

8 1 4 2 6 9 3 7 5

1 8 2 9 3 7 5 6 4

5 3 7 4 2 6 9 1 8

6 4 9 1 5 8 2 3 7

(b) Solucin o

2 6 4 1 5 9 5 7 4 (a) Nivel dif cil 8 2 5 3 9 5 6 7 6 9

5 4 9 2 8 7 6 1 3

8 7 1 4 3 6 9 2 5

2 3 6 1 9 5 7 8 4

4 1 2 6 5 8 3 9 7

7 6 5 3 1 9 8 4 2

9 8 3 7 4 2 5 6 1

6 9 4 5 2 3 1 7 8

1 5 7 8 6 4 2 3 9

3 2 8 9 7 1 4 5 6
26

(b) Solucin o

UN ALGORITMO SENCILLO DE SUDOKUS DE 9 9

2 9

4 1 6 3 9 2 3 6 5 2 5 9 (a) Nivel muy dif cil 7 6

2 6 1 7 5 4 3 9 8

7 4 5 8 9 3 1 6 2

3 9 8 6 1 2 7 4 5

4 8 2 1 7 6 5 3 9

9 7 6 2 3 5 8 1 4

1 5 3 4 8 9 2 7 6

5 1 4 9 2 7 6 8 3

6 2 7 3 4 8 9 5 1

8 3 9 5 6 1 4 2 7

(b) Solucin o

4. Conclusiones

Se realiz un anlisis de la historia y la teor matemtica detrs del Sudoku o a a a a y los algoritmos existentes para generar Sudokus con solucin unica. Se o observ que estos algoritmos son muy complicados y computacionalmente, o poco ecientes. Para simplicar el proceso de generacin de Sudokus con solucin unica, o o se estudi una subcoleccin de Sudokus iniciales de orden m = 64, que o o fueron llamados elementos bsicos. Dichos elementos se conformaron en a una base de datos de Sudokus iniciales con solucin unica. Este puede ser o un trabajo laborioso, que puede ser considerado como una debilidad de la forma en la que el algoritmo funciona; sin embargo, de unos cuantos representantes de clases de Sudokus denidas por la relacin de equivalencia de o la seccin 2.1, podemos generar una enorme cantidad de Sudokus distino tos, pero matemticamente equivalentes. Ms an, se catalog el nivel de a a u o dicultad de un Sudoku de acuerdo al orden de ste, siendo que mientras e mayor orden se tiene una mayor dicultad, como se observ en la seccin 3. o o Claramente, este proceso puede ser generalizado a Sudokus de dimensiones mayores; lo unico necesario es un conjunto inicial de Sudokus con solucin unica. o Con este algoritmo sencillo se garantiza la unicidad de la solucin, que o es una condicin necesaria para la creacin de Sudokus vlidos. o o a
5. Referencias
[1] [2] [3] [4] [5]
27

The Internet ENCYCLOPEDIA OF SCIENCE: GAMES & PUZZLES. http://www.freesudokupuzzle.org Frank, R., Mathematics in Sudoku, (otoo de 2005). n http://www.cross-plus-a.com/sudoku.htm NIKOLI Co., Ltd.

A. CABRERA PACHECO, E. MENESES RODR IGUEZ Y R. PACHECO CASTRO

[6] Springer Online Reference Works. [7] Gago-Vargas, J., Hartillo-Hermoso, I., Martin-Morales, J., y Ucha-Enriquez, J. M., Sudokus and Grbner Bases: Not Only a Divertimento. o [8] Wikipedia [9] Bartlett, Andrew C., y Langville, Amy N., An Integer Programming Model for the Sudoku Problem. [10] Lee, Wei-Meng, Programming Sudoku, Apress, 2006. [11] Hayet, J.B., Complejidad de los problemas. [12] Mancini, Simona, Sudoku Game Theory, Models and Algorithms. [13] Minimum Sudoku. [14] Fasino, Dario, A light Sudoku Generator and Helper.

28

Das könnte Ihnen auch gefallen