Sudoku backtracking

Sudoku backtracking
Información sobre la plantilla
Sudoku.jpg
Concepto:Es un rompecabezas matemático basado en la búsqueda de la combinación numérica perfecta. El término proviene de la lengua japonesa (数独, sūdoku).


Sudoku. Entretenimiento que se inicia en los Estados Unidos y se populariza en Japón en 1986. Desde aquí se produce su innegable salto al ámbito internacional en el 2005, fecha en que numerosos periódicos lo comienzan a publicar en su sección de pasatiempos. El juego es una parrilla de crucigrama de 9 x 9 con 81 cuadritos que se agrupan en nueve cuadrados interiores con una dimensión de 3 x 3. Si la solución al juego es única, el Sodoku está bien planteado.
Es fácil de explicar y desarrolla el razonamiento lógico, en eso radica su popularidad y el hecho de que hoy cientos de páginas Web contienen información sobre como resolverlos.

Antecedentes históricos

Su inicio se sitúa en la ciudad de Nueva York (EEUU) en los últimos años de la década de 1970. Creado por el diseñador de puzzles Walter Mackey, de la empresa Dell, especializada en la elaboración de rompecabezas, quien le da el nombre de “Number Place” (El lugar de los números).
Por primera vez sale a la luz en la revista “Math Puzzles and Logic Problems” (Rompecabezas matemáticos y problemas lógicos), luego, en abril de 1984, la empresa japonesa Nikoli lo envía a Japón y lo publica en el periódico “Monthly Nikolist” con el título: "Sūji wa dokushin ni kagiru” (Los números deben estar solos).
El nombre se lo debe a Kaji Maki, presidente de Nikoli. En 1986 la misma empresa sintetiza el nombre a "Sūdoku” (sū = número, doku = solo) y le implementa dos innovaciones que defjnitivamente le dan popularidad y la extienden a la prensa japonesa y al resto del mundo. En 2005 muchos periódicos lo incluyen a diario en sus páginas.

¿Qué importancia tiene jugar Sudoku?

Su importancia radica en que es una forma atractiva y sana de emplear el tiempo libre y para la etapa escolar constituye una herramienta de gran valor en el proceso de adquisición de los conocimientos, ya que combina la diversión con el aprendizaje, abre la mente y desarrolla la capacidad de concentrarse.

Reglas

  • Rellenar una cuadrícula de 9 × 9 celdas (81 casillas) dividida en subcuadrículas de 3 × 3 (también llamadas "cajas" o "regiones") con las cifras del 1 al 9 partiendo de algunos números ya dispuestos en algunas de las celdas.
  • Se utilizan nueve elementos diferenciados, y aunque se pueden usar colores, letras y figuras, es conveniente usar números para mayor claridad.
  • No se debe repetir ninguna cifra en una misma fila, columna o subcuadrícula.
  • Un sudoku está bien planteado si la solución es única.
  • La resolución del problema requiere paciencia y ciertas dotes lógicas.

Métodos de resolución

El sudoku se presenta normalmente como una tabla de 9 × 9, compuesta por subtablas de 3 × 3 denominadas "regiones" (también se le llaman "cajas" o "bloques"). Algunas celdas ya contienen números, conocidos como "números dados" (o a veces "pistas"): El objetivo es rellenar las celdas vacías, con un número en cada una de ellas, de tal forma que cada columna, fila y región contenga los números 1–9 sólo una vez. Además, cada número de la solución aparece sólo una vez en cada una de las tres "direcciones".
La solución de un sudoku siempre es un cuadrado latino, aunque el recíproco en general no es cierto ya que el sudoku establece la restricción añadida de que no se puede repetir un mismo número en una región.
Es posible establecer sudokus con más de una solución y también realizar tableros iniciales de sudoku sin solución, pero no se consideran rompecabezas sudoku apropiados; como la mayor parte de los rompecabezas lógicos, se espera una solución única.
Para resolver un rompecabezas la estrategia se puede considerar como la combinación de tres procesos: escaneo, marcado y análisis.
1.Escaneo
Rastreando a lo largo y ancho los siete localizados en cualquier lugar de la rejilla, el jugador puede eliminar todas las celdas vacías de la esquina superior izquierda que no pueden contener un 7. Esto deja sólo una celda posible (remarcada en verde).
El escaneo viene a interrumpirse cuando no pueden descubrirse nuevos números. En este punto es necesario centrarse en algún análisis lógico. La mayoría encuentra útil guiar este análisis mediante el marcado de números candidatos en las celdas vacías. Hay dos notaciones populares: subíndices y puntos.
2.Marcado
En la notación de subíndice, los números candidatos se escriben en pequeño en las celdas. La desventaja es que los puzzles originales se publican en periódicos que habitualmente no dejan demasiado espacio para acomodar más que unos pocos dígitos. Si se usa esta notación, los resolutores crean, a menudo, una copia más grande del puzzle y emplean un lápiz afilado.
La segunda notación es un patrón de puntos con un punto en la esquina superior izquierda representando un 1 y un punto en la esquina inferior derecha representando un 9. Esta notación tiene como ventaja que puede usarse en el puzzle original. Se requiere destreza para el emplazamiento de los puntos, porque la existencia de puntos desplazados o marcas inadvertidas lleva, inevitablemente, a confusión y no son fáciles de borrar sin añadir más confusión.
3. Análisis
Hay dos aproximaciones principales:
Eliminación: el progreso se realiza mediante la sucesiva eliminación de números candidatos para una o más celdas, hasta dejar sólo una elección. Después de lograr cada respuesta, debe realizarse un nuevo escaneo (habitualmente comprobando el efecto del último número). Hay una serie de tácticas de eliminación. Una de las más comunes es el "borrado del candidato no coincidente". Las celdas con idéntica configuración de números candidatos se dice que coinciden si la cantidad de números candidatos en cada una es igual al número de celdas que los contienen. Por ejemplo lápiz y una goma. Esta aproximación puede ser desaprobada por puristas lógicos por demasiado Ensayo y error pero puede llegar a soluciones claras y rápidamente.
Idealmente: Necesita encontrar una combinación de técnicas que eviten alguno de los inconvenientes de los elementos de arriba. El recuento de regiones, filas y columnas puede resultar aburrido. Escribir números candidatos en celdas vacías puede consumir demasiado tiempo. La aproximación "y–si" puede ser confusa a menos que se sea bien organizado.

Resolución por ordenador

Algunos programas que emulan la resolución humana, permiten estimar la dificultad que tendrá un humano para encontrar la solución. Para la implementación del resolvedor de sudokus se utiliza la clase vector (fácilmente transformable en un array clásico) y tres funciones:

  • Una llamada inicial: ‘‘‘simplemente se encarga de llamar a la función recursiva. Para darle más utilidad retornará un booleano que indicará si se ha encontrado alguna solución al sudoku.
  • Una función recursiva: ‘‘‘se encarga del proceso de ir probando números. Incluye un parámetro de entrada/salida que indica si se ha encontrado alguna solución.
  • El comprobador de validez: ‘‘‘simplemente es una función que retorna un booleano indicando si un valor puede estar en un sitio indicado.

El vector contendrá enteros codificando como "0" los lugares a rellenar (los "–") y como su propio valor numérico los valores preestablecidos. Al final de la implementación del resolvedor se propone una acción que lee un sudoku como el propuesto arriba y lo transforma en la matriz numérica. Además, se utilizan las siguientes definiciones y constantes: ‘‘‘ const int FILS = 9; // Filas de un sudoku
const int COLS = 9; // Columnas de un sudoku
typedef vector< vector<int> > Matriz; // Definición de Matriz
Llamada inicial:
bool rellenar(Matriz& v) {bool tr = false;
rellenar(v, 0, 0, tr); // V y TR són parámetros de E/S return tr;} Función recursiva:
nst Matriz& v, int fil, int col) { for (return false; }} return true; }</source>

Niveles de dificultad en la resolución por ordenador

Los programas informáticos que resuelven sudokus pueden estimar la dificultad que tiene un humano para encontrar la solución, basándose en la complejidad de las técnicas de resolución necesarias. Esta estimación permite a los editores adaptar sus sudokus para personas con diferente experiencia resolutoria. Algunas versiones "en línea" (online) también ofrecen varios niveles de dificultad.

Construcción

Juego Sudoku

La construcción de un rompecabeza sudoku puede ser realizada a mano eficientemente predeterminando las posiciones de los números dados y asignándoles valores para realizar un proceso deductivo.
Tal indefinido dados se puede suponer que no tienen ningún valor particular, mientras se le da un valor diferente antes de que se complete la construcción, el encargado de resolver será capaz de hacer las mismas deducciones derivadas de tales supuestos, como en ese momento, el dado es muy mucho más definido como algo más. Esta técnica da al constructor un mayor control sobre el flujo de resolución de puzzles, líder en el alvistas solucionador de sudokus por compuestas íntegramente.
El desafío para los programadores de sudokus es enseñar a un programa cómo construir rompecabezas inteligentes, de manera que no se puedan distinguir de aquellos realizados por humanos; Wayne Gould necesitó retocar su popular programa durante seis años para creer que había alcanzado ese nivel.

Fuentes