Al programar el Juego de la vida de Conway en mi computadora . Surge un problema; ¿Cómo lidiar con los bordes en el tablero? ¿Las celdas en el borde tienen que tener en cuenta menos vecinos que las celdas en el interior del tablero? Eso crea efectos no deseados en el borde del tablero (como si las reglas del juego cambiaran allí). Otra posibilidad es hacer un tablero infinito, pero programar esto parece complicado en muchos sentidos.
¿La solución? Pegar los lados opuestos del tablero para que las cosas parezcan teletransportarse al otro lado cuando se enfrentan al problema de interactuar con un borde (un enfoque típico para muchos juegos similares). Esto es topológicamente equivalente a un toro, según tengo entendido. cuyo polígono fundamental es
Luego jugué un poco con diferentes topologías. He podido crear el Juego de la Vida de Conway con la topología de la Botella de Klein y luego con la topología del plano Proyectivo Real . Pero hay una topología final que quiero examinar y es la Esfera. Sorprendentemente, la Esfera se está volviendo cada vez más difícil de comprender, así que les pido ayuda.
De acuerdo con el polígono fundamental de una esfera, debo pegar la parte superior del tablero con el lado izquierdo y la parte inferior con el lado derecho.
Pero quiero que mi tablero en Game of Life no sea cuadrado(la cuadrícula de celdas que no tiene el mismo número de filas y columnas). Esto no fue un problema en las otras topologías porque estaba pegando lados con la misma longitud, pero ahora las cosas son más complicadas. Una solución sería estirar/contraer uno de los lados para acomodar el otro antes de pegarlos. Pero, ¿cómo podría hacer eso con una subdivisión discreta del espacio (como en un tablero de celdas)? Si hago una celda más grande o más pequeña, ¿cómo defino ahora a sus vecinos? Podría crear/destruir algunas celdas para que el número de celdas en un lado coincidiera con el otro que tengo que pegar, pero luego habría celdas sin ningún papel en el juego o celdas que interactúan mucho con los vecinos, y qué reglas Qué implemento para esa decisión exactamente? Así que estoy atrapado aquí, quiero ver un planeadormoverse por el tablero regularmente sin ser destruido o transformado solo en los bordes porque no implementé una topología de esfera correctamente, sin imponer una cuadrícula en particular. ¿Qué tengo que hacer?
Si está tratando de mapear un autómata celular definido en una red plana regular en una esfera, siempre tendrá algunos puntos "defectuosos" donde la red se ve localmente diferente de alguna manera, por ejemplo, por una celda que tiene un número anormal de vecinos o por los barrios superpuestos de forma inusual. Matemáticamente, esto se debe a que el defecto angular total de una esfera (o cualquier poliedro convexo) es 2 círculos completos (es decir, radianes o 720°), mientras que la de un toro o un plano infinito es cero.
Para una red rectangular de 8 vecinos, como en el juego de la vida de Conway, probablemente lo mejor que puedes hacer es tomar seis cuadrículas y construir un cubo con ellas (que luego puedes estirar en una esfera geométrica si quieres). Esto te dará ocho defectos en las ocho esquinas del cubo. Dependiendo de cómo conecte las rejillas en sus bordes, esos defectos pueden ser (al menos) de dos tipos:
De cualquier manera, el tamaño inusual del vecindario en sí mismo no tendrá un efecto importante en el juego de la vida de Conway: cualquier celda con más de tres vecinos vivos morirá de todos modos. Sin embargo, lo que afectará el comportamiento de la CA es la inusual conectividad local de la red cerca de las esquinas. Esto puede permitir que las esquinas admitan patrones estables u oscilantes no estándar que no serían estables en ningún otro lugar de la red, y también puede destruir cualquier planeador u otros patrones de movimiento que golpeen una de las esquinas.
Por ejemplo, un planeador básico en el GoL de Conway viajará en línea recta a lo largo de una diagonal de la red. Pero en una esquina de un cubo, tres diagonales se unen, y no hay forma de que un planeador que llega directamente a la esquina a lo largo de una de esas diagonales continúe recto; tendría que continuar a lo largo de un borde del cubo, pero eso es ¡imposible, ya que esa es una dirección ortogonal en la red!
Además, incluso si ningún planeador golpea directamente la esquina, pueden ocurrir cosas extrañas en su vecindad. Por ejemplo, es posible que dos planeadores que inicialmente se mueven en trayectorias paralelas pasen una esquina en lados opuestos, giren en direcciones opuestas y choquen, algo que nunca podría suceder en un toroide plano o en un plano infinito.
*) Si lo desea, también puede contar constantemente cada una de las tres celdas de las esquinas como su propio vecino diagonal faltante, pero al menos para el GdL de Conway, es probable que sea aún más disruptivo que simplemente dejar a ese vecino sin contar.
Editar: esta respuesta es incorrecta, como se señala en los comentarios. Lo dejo aquí para que otros no cometan el mismo error.
Pregunta muy interesante! Una idea que me viene a la mente sería tener dos cuadrículas diferentes de las mismas dimensiones, representando hemisferios, e identificar los bordes de las cuadrículas de manera obvia. Así nos damos cuenta de la esfera como un espacio cociente de dos cuadrados disjuntos, en lugar de un solo polígono.
Obviamente, esto no es lo ideal, ya que ya no se vería como una cuadrícula, pero al menos daría una topología esférica.
Lo que creo que estás buscando es la esfera Hexagonal:
Hay una explicación en Red Blob Games sobre este mosaico.
Hay una nota sobre las reglas de los planeadores de Carter Bays: A Note on the Game of Life in Hexagonal and Pentagonal Tessellations en el sitio de Wolfram.
Lo que sugiero que debe hacer primero, es hacer una Versión D en una cuadrícula hexagonal y hacer que la envoltura funcione. No tienes que preocuparte por D, ya que esta cuadrícula será como un "mapa de textura" proyectado en una esfera de árbol en el espacio D. Por ejemplo, todos los puntos del hexágono se pueden proyectar sobre la esfera.
swike
Sebastián Monnet
swike
Sebastián Monnet
swike
Sebastián Monnet
swike