Arístides Lindenmayer (1925-1989), fue un biólogo húngaro especializado en botánica. Poco después de que terminara la Segunda Guerra Mundial, se fue a vivir a los Estados Unidos. Hizo un doctorado en fisiología de las plantas, por la Universidad de Michigan. Sin embargo, sus intereses se desviaron hacia la parte formal de las matemáticas, la lógica, por lo que se fue a hacer estudios postdoctorales al Reino Unido, con el especialista en lógica H. Woodger.
Lindenmayer tenía ya algunas interesantes ideas sobre cómo axiomatizar los fundamentos de la biología. Y en algún momento concibió un sistema para describir el desarrollo de las plantas. Esto significa simplemente que usó la teoría de los lenguajes formales, una gramática rígida, matemática, con reglas absolutamente claras, las cuales pasaban a ser parte de la teoría de algoritmos en ciencias como la computación.
De alguna manera, el sistema desarrollado por Lindenmayer tiene una fuerte relación con los autómatas celulares. Su sistema evoluciona a pasos discretos en el tiempo, un paso a la vez, en donde los símbolos van cambiando de acuerdo a reglas de transformación. Lo más interesante en todo esto es que en la definición de sus reglas, hay involucrada la recursión, que parece ser está embebida en la naturaleza.
Un sistema L, o sistema de Lindenmayer es simplemente un conjunto de reglas que trabajan sobre símbolos. En términos teóricos a esto es lo que se le llama una gramática. Lindenmayer halló que bajo este esquema se podían modelar procesos biológicos, por ejemplo, la manera en cómo se forma un número de organismos.
Un primer ejemplo, que Lindenmayer usó para entender el crecimiento de las algas se basa en los siguientes elementos:
variables: A B
constantes: ninguna
inicio (generación cero): A
reglas: (A → AB), (B → A)
Esto quiere decir que
• El símbolo A, al ser aplicado, genera AB.
• Y B, al ser aplicado, genera A.
Puede verse cómo la recursividad está ahí presente. Al usar estas reglas de transformación, hallamos:
n=0: A → AB
para la generación llamada cero. Una vez que hemos obtenido el resultado de la misma, la ponemos en la entrada y así obtenemos la primera generación, a saber:
n=1: AB → ABA
Podemos así seguir con las siguientes generaciones y hallaremos:
n=2: ABA → ABAAB
n=3: ABAAB → ABAABABA
…
Puede verse que esto es un simple esquema de reglas que se aplican ciegamente pero que tienen un comportamiento no decidible, es decir, hay que hacer la simulación completa para ver cada generación.
Veamos un nuevo ejemplo, en este caso el que representa a la serie de Fibonacci. Esta es la definición del sistema:
variables: A B
constantes: ninguna
inicio (generación cero) : A
reglas: (A → B), (B → AB)
el cual produce la siguiente secuencia de cadenas:
n=0 : A
n=1 : B
n=2 : AB
n=3 : BAB
n=4 : ABBAB
n=5 : BABABBAB
n=6 : ABBABBABABBAB
n=7 : BABABBABABBABBABABBAB
Cuando se mide la longitud de cada cadena (sin importar si son As o Bs), se obtiene la famosa secuencia de los números de Fibonacci, 1 1 2 3 5 8 13 21 34 55 …
Uno podría pensar: Todo esto se ve interesante, pero ¿dónde se puede visualizar el crecimiento de algunas plantas con este sistema? Para 1970, dos de los alumnos graduados de Lindenmayer, Ben Hesper y Pauline Hogeweg, se preguntaban si los sistemas L podrían tener una representación visual de lo que se supone estaban modelando en las plantas. Aparentemente a nivel microscópico las ideas de Lindenmayer eran ciertas.
Entonces Hesper y Hogeweg trabajaron en un programa de computadora por dos semanas para interpretar las reglas de los sistemas L, buscando así generar ramas de las plantas, por ejemplo. Hogeweg aclara que los sistemas L no generan imágenes. En realidad generan largas cadenas de caracteres, de símbolos. Así pues, se necesita un paso extra para generar ramas, para visualizar lo que Lindemayer representa con sus reglas.
Lo increíble del asunto es que lo que hay que hacer para visualizar los sistemas L no es particularmente complicado. En este caso se puede usar utilizar Logo (o una variante de las gráficas de la tortuga – turtle graphics), un lenguaje de programación de alto nivel, inventado con fines de enseñanza por Seymourt Papert, Danny Bobrow y Wally Feurzeig.
Una idea explotada en Logo es el uso de un pequeño robot que puede pintar en un papel, moviéndose de acuerdo a las instrucciones de un programa. Seymourt y colegas hicieron una tortuga robótica, la cual eventualmente se incorporó a la programación como una tortuga virtual, que resulta más barato e igualmente funcional. Ya en la pantalla de la computadora, la tortuga es un triángulo que podríamos decir, se ve “desde arriba”.
El programa original de Hogeweg y Hesper mostró una representación gráfica de la teoría de Lindenmayer. De hecho, con las imágenes resultantes, que se parecían notablemente a ciertas plantas y que son finalmente una representación gráfica de las reglas de transformación en los lenguajes formales y que les llamaron “morfemas”, se las presentaron a Lindenmayer que, curiosamente, no mostró mucha emoción al verlas. Hogeweg indica “no le gustó nuestro trabajo [a Lindenmayer]”. La razón es que para el creador de los sistemas-L , estos eran parte de una teoría matemática y que ésta no debería diluirse en producir imágenes. Aun así, el propio Lindenmayer tuvo que aceptar que al menos, las imágenes producidas eran una curiosidad atractiva sin consecuencias y tan lo aceptó que usó algunas de estas imágenes para sus tarjetas de fin de año.
Un ejemplo de este tipo de imágenes, con sólo 5 iteraciones, 22 grados de giro, con un axioma F y con una sola regla: F=C0FF-[C1-F+F+F]+[C2+F-F-F], se genera lo siguiente:
Hay muchas más imágenes creadas a partir de las ideas de los sistemas L. Por ejemplo: