Sudoku es un rompecabezas bien conocido que se sabe que es NP completo y es un caso especial de un problema más general conocido como cuadrados latinos. Una solución correcta del cuadrado consiste en llenar cada fila y cada columna con números del al con la condición de que cada número aparezca exactamente una vez en cualquier fila o columna.
Defino un nuevo problema. La entrada es una solución correcta de Sudoku puzzle (más generalmente problema de cuadrado latino). Me gustaría decidir si hay permutación de filas y permutación de columnas de modo que ninguna fila y ninguna columna contengan triples consecutivos.
Un ejemplo para una fila sin triple consecutivo es 9 5 6 2 3 8 4 7 1. Un ejemplo para una fila con triple consecutivo es 8 9 5 2 3 4 7 6 1. El triple es 2 3 4.
Sospecho que el problema es NP-hard pero no pude encontrar una reducción.
¿Qué tan difícil es resolver esta variante del rompecabezas de Sudoku? ¿Es NP-completo?
EDITAR : Para aclarar, se debe aplicar la misma permutación a las columnas y las filas.
fuente
Respuestas:
Cuando las permutaciones de fila y columna son diferentes y los triples consecutivos tienen que aumentar: la respuesta siempre es SÍ.
Supongamos que la matriz tiene un tamaño de . Considere una permutación aleatoria de las columnas. Cada fila (por sí misma) es una permutación aleatoria. La probabilidad de que los números aparezcan en las posiciones es . Hay opciones para e , y filas diferentes. Por lo tanto, el número esperado de triples consecutivos esN×N i,i+1,i+2 t,t+1,t+2 1/(N(N−1)(N−2)) N−2 t i N N(N−2)2/(N(N−1)(N−2))<1 . Llegamos a la conclusión de que hay una cierta permutación de las columnas, bajo la cual no hay triples consecutivos en ninguna de las filas. Ahora repita el mismo argumento para las columnas: tenga en cuenta que permutar las filas no puede crear un triple consecutivo en ninguna de ellas.
Cuando las permutaciones de fila y columna son las mismas, y los triples consecutivos pueden aumentar o disminuir: la respuesta sigue siendo SÍ, para suficientemente grande .N
La idea es utilizar la versión asimétrica del lema local de Lovász , a través del artículo de Lu y Székely Usando el lema local de Lovász en el espacio de inyecciones aleatorias . En la prueba anterior, consideramos los eventos para , que para una línea (ya sea una fila o una columna), indican que para . Estos son ejemplos de los eventos canónicos considerados por Lu y Székely: si la permutación aleatoria (permutar tanto filas como columnas) es , entonces tienen la forma , dondeXℓ,i,t,σ σ∈{±1} ℓ ℓ(i+σδ)=t+δ δ∈{0,1,2} π π(t)=j0,π(t+1)=j1,π(t+2)=j2 jδ=ℓ−1(i+σδ) . Dos eventos entran en conflicto si o ( esto es en realidad solo una condición necesaria). Cada evento entra en conflicto con a lo sumo otros eventos ( líneas , dos orientaciones, dos formas de conflicto, cinco posiciones en conflicto). Si bien los eventos no conflictivos son en general dependientes, utilizando la versión asimétrica del lema local de Lovász podemos ignorar esto y dejar que nuestro gráfico de dependencia incluya bordes solo para eventos conflictivos. Dado que la probabilidad de que ocurra cada evento esXℓ,i,t,σ,Xℓ′,i′,t′,σ′ {t,t+1,t+2}∩{t′,t′+1,t′+2}≠∅ {j0,j1,j2}∩{j′0,j′1,j′2}≠∅ 2N⋅2⋅2⋅5−1=40N−1 2N p=1/(N(N−1)(N−2)) y el tamaño de cada vecindario es , el lema se aplica siempre que , es decir
Esta condición se cumple para . Concluimos que para , la permutación requerida siempre existe. Usando la versión constructiva reciente de LLL, incluso podemos encontrarlo de manera eficiente.d≤40N−1 ep(d+1)≤1
fuente