Showing posts with label wolfram. Show all posts
Showing posts with label wolfram. Show all posts

Friday, February 17, 2023

Un descubrimiento personal


En la Facultad de Ciencias doy un curso de Vida Artificial", la cual es una asignatura que trata de simulaciones -a través de la computadora- de manera que se puedan estudiar algunos conceptos de la vida misma, por ejemplo, la reproducción. Para ello se usan los autómatas celulares en una y dos dimensiones (en general), los cuales han sido estudiados ya en los años 70s, 80s y 90s del siglo pasado por Conway (Juego de la vida) y Wolfram (autómatas celulares en una dimensión). De hecho, existe mucha información en la red sobre este tema. Wolfram, por ejemplo, ha escrito un libro enorme, llamado "A New Kind of Science", el cual puede leerse gratuitamente aquí. Por otro lado, el sitio obligado para estudiar el Juego de la Vida de Conway es éste

Pues bien, en el libro de Wolfram, (el cual a pesar de intimidar sólo por su tamaño, es bastante accesible y diría que en general es un libro de divulgación), se habla de los autómatas unidmensionales. Se analizan las 256 reglas. Se hace un análisis de la complejidad de las mismas, etcétera. Wolfram entonces experimenta cambiando reglas y situaciones para la reproducción de los autómatas. Eventualmente demuestra que con ciertas reglas de sustitución, se pueden crear los elementos fundamentales de la máquina de Turing, la cual es una máquina conceptual que puede hacer en principio, cualquier cálculo.

Por ejemplo, en la página 82 de su libro, pone el siguiente gráfico que ilustra un sistema simple de sustitución, el cual genera que se dupliquen los elementos en cada generación. 

Y aunque Wolfram lo muestra con puntos de tonos de gris, su sistema de sustitución es simplemente:

A --> AB

B --> BA

Así, si tenemos una configuración inicial con solamente el elemento A, podeos sustituir y quedarnos lo siguiente:

A --> AB

AB --> ABBA

ABBA --> ABBABAAB

etcétera...

Si contamos los elementos que hay en cada generación, encontraremos que estos se duplican.

La serie de Fibonacci, por ejemplo, puede expresarse como el siguiente esquema de sustitución:

A --> B

B --> BA

Si tenemos la configuración inicial A obtendremos en las siguientes generaciones:

A --> B

B --> BA

BA --> BAB

BAB --> BABBA

BABBA --> BABBABAB

BABBABAB --> BABBABABBABBA

Si contamos los elementos en cada generación, obtendremos la secuencia de Fibonacci: 1, 2, 3, 5. 8. 13, etcétera.

Pues bien, defnir un autómata como un sistema de sustitución generauna gramática y esta es simplemente una serie de símbolos que se manipulan a través de ciertas reglas. Así, aplicando dichas reglas se obtienen las "frases" legales y válidas de acuerdo a la gramática definida.

Los autómatas formales, como los lenguajes, tienen en muchos casos la posibilidad de ser recursivos, se llaman así mismo. Por ejemplo, en el caso de las reglas de sustitución del autómata que duplica los valores de sus elementos en cada generación, podemos ver que A se sustituye por AB y B se sustituye por BA. Hay una suerte de llamada a sí misma en cada regla. Y esto es bastante común en los lenguajes. Por ejemplo, pensemos en la definición recursiva del factorial:

0! = 1 (condición terminal)

n! = n * (n-1)! (recursión)

Por ejemplo, para calcular 3! diremos lo siguiente:

3! = 3 * 2!

necesitamos ahora conocer cuánto es 2!

2! = 2 * 1!

necesitamos ahora conocer cuánto es 1!

1! = 1 * 0!

necesitamos ahora conocer cuánto es 0!, pero eso ya lo sabemos, 0! = 1. 

Entonces empezamos a resolver cada ecuación:

1! = 1 * 0! = 1 * 1 = 1

entonces 2! = 2 * 1! = 2 * 1 = 2

por ende, 3! = 3 * 2! = 3 * 2 = 6.


Otro ejemplo de los lenguajes humanos: Si buscamos la definición de "perro", hallaremos que es "can". Si buscamos la definición de "can", se nos dirá que es "perro". Aquí hay una función recursiva que se cicla, porque no tiene una manera de terminar, de detenerse, como en el caso de la definición de factorial, en donde 0! termina con el cálculo y el ciclado infinito (porque 0! = 1).

Pues bien, se sabe que toda función recursiva se puede poner de forma iterativa. Por ejemplo, el factorial iterativo en Python (no recursivo) es:

def factorial(n):

    result = 1

    for i in range(1, n + 1):

        result *= i

    return result

(gracias a chatgpt)


En cambio, en Python, el factorial recursivo se escribe así:

def factorial(n):

    if n == 0:

        return 1

    else:

        return n * factorial(n-1)

(de nuevo, gracias a chatgpt)

La versión iterativa usa menos recursos de cómputo que la versión recursiva. Entonces, ¿por qué los autómatas celulares e incluso, los seres vivos, usan la recursión para crear otros seres vivos (a su imagen y semejanza)? ¿No debería la Naturaleza usaR la máxima economía en recursos?

Esta es la pregunta que no podía resolver, pero el otro día, caminando por avenida del IMAN, encontré una posible respuesta. De pronto me sentí como el episodio que narra Bertrando Russell cuando se dio cuenta del concepto de la verdad ontológica. Dice Russell que sintió una especie de iluminación, experiencia que pocas veces se da sin la necesidad de sustancias alucinógenas u otros artilugios.

Pues bien, la respuesta a las preguntas que me había planteado sobre los autómatas celulares y a que prácticamente todos usan la recursión, es porque en la misma se encuentra una imagen a escala de lo que está representando. En el caso de la iteracción, necesitamos pasarle los parámetros correctos para que se ejecuten los algoritmos que queremos, pero en la recursión, los datos se incluyen en el mismo algoritmo. Russell, por ejemplo, habla de la paradoja del barbero, en donde se puede expresar en Prolog, donde el paradigma de ese lenguaje hace que las instrucciones y los datos sean indistintos. Véase aquí  para esa discusión.

Así, a mí me queda clarísima la razón por la cual los seres vivos usan funciones recursivas, que se llaman a sí mismas, para la reproducción y creación de los elementos hijos. Y sí, aparentemente ocupa más recursos pero la realidad es que es mucho más eficiente que los algoritmos iterativos.



Friday, January 07, 2022

Otra nueva especulación (errónea), sobre la regla 30 de Wolfram


Ya hablé aquí de una serie de especulaciones sobre la regla 30 de los autómatas celulares unidimensionales. Stephen Wolfram, quien los ha estudiado a detalle, ha encontrado que la regla 30 de estos autómatas genera un patrón que parece ser aleatorio, cosa que no pasa con muchas de las otras reglas. De hecho, como mencioné en el artículo al que hago referencia, Wolfram hace tres preguntas, al público en general, esperando que ahí afuera haya alguien que ataque estos problemas. Para motivarlos ha ofrecido unos 10 mil dólares por pregunta solucionada. Estas son las tres cuestiones que Wolfram quiere responder:

¿Puede la columna central mantenerse siempre no periódica?

¿El color de cada célula en el centro -en promedio- ocurre con igual frecuencia en la columna central?

¿El cálculo de la enésima célula en el centro requiere de al menos un esfuerzo computacional de O(n)?

Para tratar de resolver la primera pregunta, lo que hice fue primero usar la idea de Ulam, que nació de una ociosidad. Estaba Ulam en una conferencia y se encontraba aburrido. Entonces decidió dibujar los números primos en una hoja pero en una espiral. Para su sorpresa, halló que había ciertos patrones. Un clásico ejemplo de serendipia, que es un descubrimiento o un hallazgo afortunado, valioso e inesperado que se produce de manera accidental, casual, o cuando se está buscando una cosa distinta.

Lo que encontré usando la espiral de Ulam es que el comportamiento de los ceros y unos, de la columna central del autómata celular de a regla 30, no mostraba patrón alguno. Cuando estaba programando el problema, pensé que quizás podría dar luz al asunto, pero hallé que no hay patrón alguno usando esta técnica.

Pero hace unas semanas se me ocurrió otra idea, creada por Christopher Langton, que creó hace unos 40 años un programa en una Apple II, el cual era una "hormiga" (un punto en la pantalla), que se movía de acuerdo a ciertas reglas. Todo lo que hizo puede verse aquí. 

Pues bien, con esta idea, se me ocurrió que podía tomar el archivo de un millón de ceros y unos, de la columna central de la regla 30, y procesarlos gráficamente de acuerdo a la siguiente idea: 

Si encuentro un 0, me muevo derecho, sin girar. Si el nuevo valor es igual al anterior, sigo en esa dirección. Si de 0 cambio a 1, entonces lo que hago es un giro a la derecha. Si el siguiente valor sigue siendo un 1, sigo en la dirección que acabo de tomar. Si cambia a 0, entonces vuelvo a girar a la derecha y así sucesivamente. ¿Qué tipo de imagen se generará con esta idea?


Este es el video del software corriendo:



Especulando con la regla 30 de Wolfram


Al inicio me pareció que se generaba un bloque y después se hacía un camino y se creaba otro bloque. ¿Podría haber un patrón ahí? Dejé el software corriendo y eventualmente hallé que no parece haber manera de tener un patrón claro, ni siquiera puede decirse que haya un patrón borroso, valga la expresión. Dicho de otra manera, otra idea que choca con pared.

Cabe decir que en un millón de iteraciones de la regla 30, encontré que la cantidad de '0' (ceros) es de 500,768 y la de '1' (unos) es de 499,231 (*).

Algo curioso es que en la generación de la imagen encontré que se generaba un "rostro" (ver siguiente imagen). ¿Podría ser la imagen de Jesús? Nah, es una simple pareidolia, lo cual se define como un fenómeno psicológico donde un estímulo vago y aleatorio (habitualmente una imagen) es percibido erróneamente como una forma reconocible.


Así las cosas, seguiremos investigando.


____

(*) Estrictamente la cuenta da 999,999. La razón de esto es que puse el límite en ese valor en mi programa por error. Sin embargo, no cambia nada este detalle.

Wednesday, July 21, 2021

La regla 30 de los autómatas de Wolfram


Stephen Wolfram es un científico de primer nivel y además un exitoso hombre de negocios. Es el creador de Mathematica, uno de los programas más poderosos para hacer matemáticas simbólicas, el cual además tiene incorporado un lenguaje de programación muy útil para un sinfín de quehaceres matemáticos. Además de eso, Stephen Wolfram ha dedicado parte de su vida al estudio de los autómatas celulares unidimensionales e incluso hay una colección completa de los artículos que se han publicado al respecto, junto con otros autores.



Los autómatas celulares son un modelo matemático y computacional para un sistema dinámico que evoluciona en pasos discretos. Es adecuado para modelar sistemas naturales que puedan ser descritos como una colección masiva de objetos simples que interactúen localmente unos con otros. Se basa en definir reglas ciegas a las "células" (pixeles en la pantalla), de manera que evolucionen estas a tiempos discretos para ir viendo lo que ocurre a través del tiempo. Por ejemplo, en dos dimensiones tenemos el famoso "juego de la vida" de Conway, que ha sido muy estudiado por matemáticos, físicos y biólogos, pues tiene comportamientos de auto-organización asombrosos en muchos casos. 

Wolfram ha estudiado los autómatas celulares en una sola dimensión, es decir, todas las células se encuentran en una línea y se reproducen en el tiempo (o mueren), de acuerdo a ciertas reglas. Por ejemplo, la regla 30 es 00011110, y se ejemplifica así: si hay tres células en la línea (y tomamos la célula de en medio), esta muere por sobrepoblación. Si no hay célula, nada surge en la siguiente generación. Dos células a la izquierda no se reproducen pero dos células a la derecha sí lo hacen. Una célula sola se reproduce en la siguiente generación siempre, ya sea estando a la izquierda, centro o derecha, etcétera

Lo que da la siguiente gráfica, poniendo una sola célula en la primera generación:



Wolfram, sin embargo, tiene aún problemas por resolver con respecto a esta regla 30, la cual parece generar una imagen caótica. De hecho, ha anunciado un premio de 30 mil dólares (10 mil por pregunta resuelta), a quien responda lo siguiente:

  1. ¿Puede la columna central mantenerse siempre no periódica?
  2. ¿El color de cada célula en el centro -en promedio- ocurre con igual frecuencia en la columna central?
  3. ¿El cálculo de la enésima célula en el centro requiere de al menos un esfuerzo computacional de O(n)?

Stephen Wolfram dice al respecto de estas preguntas: "No sé si estos problemas son de dificultad comparables o si alguno de ellos puede resolverse mientras que los otros pudiesen mantenerse sin solución por mucho tiempo. Estoy seguro, sin embargo, que el resolver cualquiera de estos problemas será un logro significativo".

Pensando en este problema, y porque los autómatas celulares son mis viejos amigos (trabajé con ellos desde mi tesis de licenciatura), decidí pensar un poco más sobre ellos. Se me ocurrió trabajar sobre las primera pregunta. He leído un poco de lo que otros han hecho y de pronto se me ocurrió que quizás la no-periodicidad podría ser parecida a la que se presenta en los números primos y además, recordé la espiral de Ulam, la cual descubrió en una aburrida conferencia el matemátiuco Stanislaw Ulam. Tal vez a nadie se le había ocurrido la feliz idea de colocar la columna central dee los autómatas celulares unidimensionales, en la regla 30, de esta manera. Entonces me apliqué y escribí un sencillo programa que hace la tarea de colocar esa columna central de células en forma de espiral cuadrada.

Por suerte, no tuve que hacer el cálculo de la columna central de la regla 30, pues ya alguien lo hizo aquí, que contiene un millón de valores. Más que suficiente para probar. Ejecuté entonces mi programa. Generé una imagen de 1000 x 1000 pixeles (con Photoshop), y la puse en un componente imagen en mi software en Delphi y me dispuse a ver si había algún patrón como en el caso de los números primos en la espiral de Ulam. Pero ¡ay! no hallé ningún patrón gráfico...


Quizás mi ingenuidad no conoce límites y es probable que antes alguien se le haya ocurrido esta idea, pero Wolfram no la menciona. Pensé que sería maravilloso si se daba algún patrón. Bueno, es un primer intento. A seguir discurriendo sobre el problema.

Tuesday, November 15, 2011

Libros interactivos de ajedrez


Hace unos años, mi hermano Pedro estaba trabajando en un manual técnico. Para ilustrarlo mejor, había tomado algunos videos y se enteró de alguna manera que estos podían colocarse dentro de un documento en formato PDF, de Adobe. Así, podía tener el texto explicando alguna cuestión específica y el lector podía entonces ver el video en donde se ilustraba el asunto.

Cuando vi lo que había hecho, pensé que debería haber algo parecido pero para el ajedrez. Es decir, uno lee un libro de ajedrez normalmente frente a un tablero físico, en donde se van reproduciendo las jugadas. Unos pocos jugadores no necesitan de tablero y pueden leer libros de ajedrez como si leyeran una novela, pero sin duda son los menos. Una alternativa a esto es usar por ejemplo, Chessbase, e ir reproduciendo las partidas del libro en el tablerito electrónico. De hecho, muchas monografías de aperturas de la empresa alemana (Chessbase), son como "libros electrónicos". Chessbase tiene además algo que se llama "ChessMedia", lo cual son videos de jugadores muy fuertes, entre ellos inclusive Kasparov, los cuales analizan en video las partidas que se muestran en el tablero electrónico del software. De alguna manera el video está enlazado al tablero y así lo que va diciendo el maestro se refleja en las jugadas que se ven en el tablero.

Hoy me entero de una idea interesante, que me parece ya la gente de Everyman Chess ya tenía en cierta medida avanzada: un sistema de libro electrónico en donde puede seguirse, en un tablero virtual, los análisis que se van dando página tras página. Lo idea es tener un iPad por el tamaño, pero el sistema se puede usar también en un iPod touch. De esta manera, ya el tablero físico puede pasar a la historia y estudiar ajedrez se hace ahora de la manera más fácil posible. Quizás habrá que esperar un tiempo a ver qué títulos nuevos aparecen, porque la oferta de libros de ajedrez con este sistema aún se ve pobre.

Cabe decir que la empresa de Stephen Wolfram, los que hacen el software Mathematica, desarrollaron un sistema de libros electrónicos interactivo (diseñado para matemáticas, desde luego), el cual permite una interacción fascinante, lo cual podría ser la nueva moda en lo que se refiere a libros electrónicos. Crear libros interactivos con Mathematica requiere de tener este sistema y cualquiera con ganas e interés puede crear sus propios documentos interactivos. Sin embargo, con la idea de los libros de ajedrez de eplubooks, hay que esperar que el fabricante decida incorporar nuevos títulos. Habrá que ver si esta idea pega en el público ajedrecísta y se vuelve a la larga un estándar. En el mientras, he aquí el video promocional de esta empresa:



El sitio de la empresa de este software es http://www.eplusbooks.com/.