1 votos

el tiempo mínimo en el que todo el campo se incendia.

Un campo de hierba se divide en N x M bloques de tamaño 1. Algunos de los bloques del campo se han incendiado. Ahora, en cada segundo, el fuego se propaga a los bloques adyacentes, es decir, si el bloque (i , j) está en llamas en el momento t, entonces los bloques (i + 1, j) , (i - 1, j) , (i , j - 1) , (i , j + 1) estarán en llamas en el momento t+1.

Se nos proporcionará la configuración actual del campo en el momento t = 0. Nuestra tarea consiste en determinar el tiempo mínimo en el que se incendia todo el campo. M[i][j] = 1 , si el bloque está en llamas. M[i][j] = 0 , si el bloque no está en llamas.

Ejemplo:

0 0 0
0 1 0
0 0 0

Respuesta:

2

Según yo, hay que comprobar las diagonales.

¿Puede alguien ayudarme en esto?

Cómo podemos resolverlo para el caso general.

1voto

Me pareció un problema interesante e ideé una solución para el caso simple de un cuadrado inicial en llamas, aunque creo que esta solución puede extenderse a cualquier número de cuadrados iniciales en llamas.

En un nivel alto, descompuse este problema en un subproblema que sabía que podía resolver siempre. Para ello, hallé la cantidad de tiempo para llenar el campo si el cuadrado inicial de "fuego" estaba en una de las cuatro esquinas. Utilizando el $L_1$ (o métrica de la distancia de los taxis, como se ha mencionado anteriormente) esto se convierte en algo trivial.

Para cualquier matriz $M$ de tamaño $(n,m)$ Dado que una esquina singular está en llamas, el tiempo $t$ que se necesita para llenar toda la matriz viene dada por: $t=n+m-2$ . Se trata de una aplicación directa de la $L_1$ distancia, donde restamos dos, una por la casilla inicial en llamas y otra por la esquina para que no cuente doble. Escribiendo un pequeño ejemplo de algo menor que $(10x10)$ me ayudó a ver lo que estaba pasando.

A partir de ahí, nos damos cuenta de que si un solo cuadrado empieza a arder en cualquier parte de nuestra matriz/campo, podemos romper nuestra matriz $M$ en 4 subcampos, donde cada uno tiene una esquina singular en llamas. A partir de ahí sabemos el tiempo que tardará en arder cada uno de los cuatro subcampos, que podemos llamar $t_1, t_2, t_3,$ y $t_4$ . Así, el tiempo mínimo que tarda en arder todo el campo va a ser el subcampo que más tiempo arde, definido como $max(t_1, t_2, t_3, t_4)$ .

No le dediqué mucho tiempo, pero después de codificar tanto el problema como mi solución y ejecutarla 1000 veces con tamaños de campo y puntos iniciales generados aleatoriamente, funcionó siempre.

Creo que este problema también tiene relación con Células Voroni Y creo que esta solución podría adaptarse a múltiples puntos de partida.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X