Necesitamos transformar la matriz A en la matriz B desplazando solo filas y columnas. ¿Cómo resolvemos esto de manera eficiente?

Puede probar que si A y B tienen las mismas dimensiones, y si A y B tienen el mismo número de 1s (y, por lo tanto, también tienen el mismo número de 0s), siempre es posible transformar A en B si hay No hay límite en el número de movimientos necesarios.

Para probar esto, solo necesitamos demostrar que desde

0 1
x 1

podemos cambiar esto a

1 0
x 1

x puede ser 0 o 1. Lo que estamos diciendo aquí es que podemos intercambiar dos elementos adyacentes sin cambiar el valor de otros elementos. Tenga en cuenta que el diagrama anterior no necesariamente significa una matriz 2 * 2. Puede haber otras celdas circundantes, pero su configuración tampoco cambiará.

Para probar esto, llamamos a la fila superior 1 y la fila inferior 2, y la columna izquierda A y la columna derecha B. Luego observe que las siguientes operaciones darán como resultado el resultado deseado.

1. Desplace la columna A hacia abajo.
2. Desplace la fila 2 a la izquierda.
3. Desplace la columna A hacia arriba.
4. Desplace la fila 2 a la derecha.
5. Desplace la columna B hacia abajo.
6. Desplace la fila 2 a la derecha.
7. Desplace la columna B hacia arriba.
8. Desplazar la fila 2 a la izquierda.

Con el procedimiento anterior, también podemos cambiar

0 1
x 0

a

1 0
x 0

desplazando la fila 2 a la izquierda, realizando el algoritmo anterior en la imagen especular, luego desplazando la fila 2 a la derecha.

Con este procedimiento, podemos intercambiar dos celdas en la matriz. Supongamos que queremos intercambiar la celda x con la celda y. Podemos seguir intercambiando x con una celda adyacente hasta que x llegue a la celda y. Entonces la celda y puede seguir el mismo camino de regreso a la ubicación de la celda x. Dado esto, es posible transformar cualquier matriz A en matriz B.

Si hay un límite en el número de movimientos que se pueden hacer, entonces realmente depende de los detalles del problema (por ejemplo, cuán parecidos son A y B para alguna medida de semejanza). Sin embargo, con el procedimiento anterior ya podemos decir que requerimos como máximo 2 millones de movimientos (m + n) si A y B son matrices m * n. Este límite superior definitivamente se puede mejorar aún más, aunque eso puede requerir algo más complicado.

More Interesting

Cómo obtener el enésimo número de la serie f (x), si la serie es 1,2, -2,3, -3,3,4, -4,4, -4

¿Se crea conocimiento para resolver problemas?

¿Cuál es el mejor algoritmo para calcular los ángulos de Euler con los datos adquiridos por el giroscopio y el acelerómetro a través del método de integración de cuaterniones y minimizar el error de integración numérica?

Supongamos que tenemos un número X que se forma por la repetición del mismo número A, N veces. ¿Cómo encontrar el X mod M, donde M también es un número?

¿Cómo se puede encontrar el par [math] (a, b) [/ math], [math] a [/ math], [math] b \ in \ mathbb {Z} [/ math] de manera que [math] (a ^ {\ frac {1} {3}} + b ^ {\ frac {1} {3}}) ^ 3 [/ math] también es un entero?

Cómo encontrar el k-ésimo dígito del enésimo número en esta secuencia

Cómo demostrar que dos redes [matemáticas] S = [/ matemáticas] [matemáticas] \ {i (3,8) + j (4, -1) + k (5,4): i, j, k \ in \ mathbb {Z} \} [/ math] y [math] T = \ {m (1,5) + n (0,7): m, n \ in \ mathbb {Z} \} [/ math] son ​​iguales

¿Se puede resolver el problema de encontrar la resistencia equivalente entre dos puntos en una red infinita de resistencias?

Peter tomó diez enteros positivos consecutivos y dividió cada uno de ellos por algún número entero positivo n. Cuando agregó los diez restos, obtuvo una suma de 1000. ¿Cuál es el valor más pequeño posible de n?

¿Hay alguna ecuación matemática, relación o teoría que me permita hacer un laberinto similar al de la película ‘The Maze Runner’ que cambia todos los días?