stringtranslate.com

Regla 30

Una cubierta textil Conus similar en apariencia a la Regla 30. [1]

La regla 30 es un autómata celular elemental introducido por Stephen Wolfram en 1983. [2] Utilizando el esquema de clasificación de Wolfram , la regla 30 es una regla de Clase III, que muestra un comportamiento caótico y aperiódico .

Esta regla es de particular interés porque produce patrones complejos y aparentemente aleatorios a partir de reglas simples y bien definidas. Debido a esto, Wolfram cree que la Regla 30, y los autómatas celulares en general, son la clave para comprender cómo las reglas simples producen estructuras y comportamientos complejos en la naturaleza. Por ejemplo, un patrón que se asemeja a la Regla 30 aparece en el caparazón de la especie de caracol cono Conus textil, muy extendida . La regla 30 también se ha utilizado como generador de números aleatorios en Mathematica , [3] y también se ha propuesto como un posible cifrado de flujo para su uso en criptografía . [4] [5]

La regla 30 se llama así porque 30 es el código Wolfram más pequeño que describe su conjunto de reglas (como se describe a continuación). La imagen especular, el complemento y el complemento especular de la Regla 30 tienen códigos Wolfram 86, 135 y 149, respectivamente.

conjunto de reglas

En todos los autómatas celulares elementales de Wolfram, se considera una matriz unidimensional infinita de células de autómatas celulares con sólo dos estados, con cada célula en algún estado inicial. En intervalos de tiempo discretos, cada celda cambia espontáneamente de estado según su estado actual y el estado de sus dos vecinas. Para la Regla 30, el conjunto de reglas que gobierna el siguiente estado del autómata es:

Si las celdas izquierda, central y derecha se denotan (p,q,r) , entonces la fórmula correspondiente para el siguiente estado de la celda central se puede expresar como p xor (q o r) . Se llama Regla 30 porque en binario , 00011110 2 = 30.

El siguiente diagrama muestra el patrón creado, con celdas coloreadas según el estado anterior de su vecindario. Los colores más oscuros representan "1" y los colores más claros representan "0". El tiempo aumenta hacia abajo en el eje vertical.

Estructura y propiedades

El siguiente patrón surge de un estado inicial en el que una sola celda con el estado 1 (mostrada en negro) está rodeada por celdas con el estado 0 (blanca).


Regla 30 autómata celular

Aquí, el eje vertical representa el tiempo y cualquier sección transversal horizontal de la imagen representa el estado de todas las celdas de la matriz en un punto específico de la evolución del patrón. En esta estructura están presentes varios motivos, como la frecuente aparición de triángulos blancos y un patrón de rayas bien definido en el lado izquierdo; sin embargo, la estructura en su conjunto no tiene un patrón discernible. El número de células negras en el momento de la generación viene dado por la secuencia

1, 3, 3, 6, 4, 9, 5, 12, 7, 12, 11, 14, 12, 19, 13, 22, 15, 19, ... (secuencia A070952 en el OEIS )

y es aproximadamente .

Caos

La Regla 30 cumple con las rigurosas definiciones de caos propuestas por Devaney y Knudson. En particular, según los criterios de Devaney, la Regla 30 muestra una dependencia sensible de las condiciones iniciales (dos configuraciones iniciales que difieren sólo en un pequeño número de células divergen rápidamente), sus configuraciones periódicas son densas en el espacio de todas las configuraciones, según la topología de Cantor. en el espacio de configuraciones (hay una configuración periódica con cualquier patrón finito de celdas), y se está mezclando (para dos patrones finitos de celdas cualesquiera, hay una configuración que contiene un patrón que eventualmente conduce a una configuración que contiene el otro patrón) . Según el criterio de Knudson, muestra dependencia sensible y hay una órbita densa (una configuración inicial que eventualmente muestra cualquier patrón finito de células). Ambas caracterizaciones del comportamiento caótico de la regla se derivan de una propiedad más simple y fácil de verificar de la Regla 30: es permutativa a la izquierda , lo que significa que si dos configuraciones C y D difieren en el estado de una sola celda en la posición i , entonces después de un En un solo paso, las nuevas configuraciones diferirán en la celda i + 1 . [6]

Aplicaciones

Generación de números aleatorios

Como se desprende de la imagen de arriba, la Regla 30 genera una aparente aleatoriedad a pesar de la falta de algo que razonablemente pueda considerarse entrada aleatoria. Stephen Wolfram propuso utilizar su columna central como generador de números pseudoaleatorios (PRNG); pasa muchas pruebas estándar de aleatoriedad y Wolfram usó anteriormente esta regla en el producto Mathematica para crear números enteros aleatorios. [7]

Sipper y Tomassini han demostrado que, como generador de números aleatorios, la regla 30 muestra un comportamiento deficiente en una prueba de chi cuadrado cuando se aplica a todas las columnas de reglas en comparación con otros generadores basados ​​en autómatas celulares. [8] Los autores también expresaron su preocupación de que "los resultados relativamente bajos obtenidos por la regla 30 CA pueden deberse al hecho de que consideramos N secuencias aleatorias generadas en paralelo, en lugar de la única considerada por Wolfram". [9]

Decoración

Detalle del revestimiento de la estación de tren Cambridge North

La estación de tren de Cambridge North está decorada con paneles arquitectónicos que muestran la evolución de la Regla 30 (o equivalentemente bajo la inversión de blanco y negro, Regla 135). [10] El diseño fue descrito por su arquitecto como inspirado en el Juego de la Vida de Conway , un autómata celular diferente estudiado por el matemático de Cambridge John Horton Conway , pero en realidad no está basado en la Vida. [11] [12]

Programación

La actualización del estado se puede realizar rápidamente mediante operaciones bit a bit , si los valores de las celdas están representados por bits dentro de una (o más) palabras de computadora. Aquí se muestra en C++ :

#incluir <stdint.h> #incluir <iostream>  int main () { uint64_t estado = 1u << 31 ; for ( int i = 0 ; i < 32 ; ++ i ) { for ( int j = 64 ; j -- ;) { std :: cout << char ( estado >> j & 1 ? 'O' : '. ' ); } std :: cout << '\n' ; estado = ( estado >> 1 ) ^ ( estado | estado << 1 ); } }                                                    

Este programa produce el siguiente resultado:

................................O................. ...............................................OOOO..... ............................................OO..O................ ..............................................OO.OOOO.................. ...........................................OO..O...O.......... ......................................OO.OOOO.OOO.................. ..................................OO..O....OO..O.... ......................................OO.OOOO..OOOOOO.................. .............................OO..O...OOO.....O............ ........................OO.OOOO.OO..O...OOO.......... ...............................OO..O....O.OOOO.OO..O............ ...........................OO.OOOO..OO.O....O.OOOO.............. ...........................OO..O...OOO..OO..OO.O...O..... ............................OO.OOOO.OO..OOO.OOO..OO.OOO................ ....................OO..O....O.OOO...O..OOO..O..O........ ..........................OO.OOOO..OO.O..O.OOOOOO..OOOOOOOO................................OO..O...OOO..OOOO.O....OOO......O......... .......................OO.OOOO.OO..OOO....OO..OO..O....OOO.......... .................OO..O....O.OOO..O..OO.OOO.OOOO..OO..O....... .................OO.OOOO..OO.O..OOOOOO..O...O...OOO.OOOO.........................OO..O...OOO..OOOO.....OOOO.OOO.OO...O...O....... .............OO.OOOO.OO..OOO...O...OO....O...OOOOO.OOO....................OO..O....O.OOO..O.OOO.OO.O..OOO.OO.OO..O..O....... ...........OO.OOOO..OO.O..OOO.O...O..OOOO...O..O.OO.OOOOOO................OO..O...OOO..OOOO...OO.OOOOO...O.OOOOOO.O..O.....O..............OO.OOOO.OO..OOO...O.OO..O....O.OO.O.....OOOOOO...OOO............OO..O....O.OOO..O.OO.O.OOOO..OO.O..OO...OO....O.OO..O.. ........OO.OOOO..OO.O..OOO.O..OO..OOO..OOOO.O.OO.O..OO.O.OOOO........OO..O...OOO..OOOO...OOOO.OO.OO..OOO....OO.OOOO..OO..O......OO.OOOO.OO..OOO...O.OO....O..O.OOOO..O..OO.OOOO...OOO.OO.OOO....OO..O....O.OOO..O.OO.OO.OOOOOO.O..OOOOOO..O...O.OO...O..O..O..OO.OOOO..OO.O..OOO.O..O.OOOO.....OOOO.....OOOO.OO.OOOOOOOOOOOO

Ver también

Referencias

  1. ^ Stephen Coombes (febrero de 2009). "La geometría y pigmentación de las conchas marinas" (PDF) . www.maths.nottingham.ac.uk . Universidad de Nottingham . Consultado el 10 de abril de 2013 .
  2. ^ Wolfram, S. (1983). "Mecánica estadística de autómatas celulares". Mod. Rev. Física . 55 (3): 601–644. Código Bib : 1983RvMP...55..601W. doi :10.1103/RevModPhys.55.601.
  3. ^ "Generación de números aleatorios". Documentación de Wolfram Mathematica 8 . Consultado el 31 de diciembre de 2011 .
  4. ^ Wolfram, S. (1985). "Criptografía con autómatas celulares". Actas de avances en criptología - CRYPTO '85 . Apuntes de conferencias sobre informática 218, Springer-Verlag. pag. 429. doi :10.1007/3-540-39799-X_32.
  5. ^ Meier, Willi; Staffelbach, Othmar (1991). "Análisis de secuencias pseudoaleatorias generadas por autómatas celulares". Avances en Criptología – Proc. Taller de Teoría y Aplicación de Técnicas Criptográficas, EUROCRYPT '91 . Apuntes de conferencias sobre informática 547, Springer-Verlag. pag. 186.doi : 10.1007 /3-540-46416-6_17 .
  6. ^ Cattaneo, Gianpiero; Finelli, Michele; Márgara, Luciano (2000). "Investigación del caos topológico mediante la dinámica de autómatas celulares elementales". Informática Teórica . 244 (1–2): 219–241. doi :10.1016/S0304-3975(98)00345-4. SEÑOR  1774395.
  7. ^ Lex Fridman (2 de marzo de 2018), MIT AGI: Universo computacional (Stephen Wolfram), archivado desde el original el 19 de diciembre de 2021 , consultado el 7 de marzo de 2018
  8. ^ Bebedor, Moshe; Tomassini, Marco (1996). "Generación de generadores de números aleatorios paralelos mediante programación celular". Revista Internacional de Física Moderna C. 7 (2): 181-190. Código Bib : 1996IJMPC...7..181S. doi :10.1142/S012918319600017X.
  9. ^ Página 6 de Sipper, Moshe; Tomassini, Marco (1996). "Generación de generadores de números aleatorios paralelos mediante programación celular". Revista Internacional de Física Moderna C. 7 (2): 181-190. Código Bib : 1996IJMPC...7..181S. doi :10.1142/S012918319600017X.
  10. ^ Wolfram, Stephen (1 de junio de 2017), "¡Dios mío, está cubierto por la regla 30!", Blog de Stephen Wolfram
  11. ^ Lawson-Perfect, Christian (23 de mayo de 2017), "Respuesta correcta por el motivo equivocado: autómata celular en la nueva estación Cambridge North", The Aperiodical
  12. ^ Purtill, Corinne. "El tributo de una estación de tren del Reino Unido a un matemático famoso hizo todo bien excepto sus matemáticas". Cuarzo . Consultado el 12 de junio de 2017 .

enlaces externos