La generación de la distribución uniforme exacta de todos los rompecabezas de sudoku se puede hacer de esa manera: puede generar aleatoriamente una cuadrícula de 9x9 y luego solo mantenerla si es una cuadrícula de sudoku correcta, de lo contrario, vuelva a intentarlo.
Este enfoque de fuerza bruta le garantiza una distribución uniforme, pero claramente no es eficiente, ya que puede multiplicar la probabilidad de que la cuadrícula sea correcta por solo generando una cuadrícula aleatoria de 8x8 y luego llene las dos líneas restantes. Esta sigue siendo una distribución aleatoria, pero sigue siendo demasiado ineficiente.9 917
También se puede obligar a la primera línea de ser , luego genera aleatoriamente el resto de la cuadrícula y luego selecciona aleatoriamente una permutación de todos los dígitos. ¡Todavía elegirás todas las cuadrículas con la misma probabilidad pero 9 ! Más rápido.[ 1 , 2 , . . 9 ]9 !
Quizás vea a dónde voy: responder este problema de una manera inteligente probablemente lo llevará a preguntarse sobre las simetrías subyacentes de las cuadrículas de sudoku. Se hizo mucho trabajo en esta dirección para demostrar el hecho de que 17 es el número mínimo de pistas para un sudoku ( vea este artículo ) y puede ir aquí para ver esta enumeración precisa de 5.472.730.538 clases de 3.359.232 cuadrículas similares, que utiliza estas simetrías
- Permutaciones de dígitos
- Permutaciones de filas (las bandas y las filas dentro de cada banda)
- Lo mismo para las columnas.
- Transposición
Con este marco, puede elegir aleatoriamente una de las 5.472.730.538 clases (en realidad se pueden comprimir en 6 GB) y luego elegir uno de los representantes para cada simetría, ¡uno de cada .9 ! , 64 4, 64 4, 2
EDITAR: para adaptar esto a rompecabezas incompletos, puede elegir aleatoriamente un subconjunto de su cuadrícula, verificar si la solución es única con un solucionador de sudoku e intentar nuevamente si no. Esta no es una distribución uniforme ya que el número de rompecabezas incompletos con una solución única puede ser diferente para dos cuadrículas. (Estaría muy sorprendido de lo contrario)