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
- ¿Cuáles son las aplicaciones de la vida real de los algoritmos de divide y vencerás?
- ¿Cuál es la mejor herramienta para modelar un gráfico sin escribir código?
- ¿Cuál es la forma más optimista de construir un gráfico social?
- Nos dan un número n. ¿Cómo encontramos eficientemente los números x e y como x ^ 2 + y ^ 2 = n?
- ¿Cómo podría mostrar que para un conjunto finito A de cardinalidad n, la cardinalidad de P (A) es [matemática] 2 ^ n [/ matemática]?
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.