|
Un sistema formal consta de :
Olvidémonos por un momento de la teoría y veamos un ejemplo. Supongamos que tenemos un alfabeto formado por los números "0" y "1", un axioma que es el "1", y dos reglas de producción:
R1 : donde aparece "1" sustituir por "10".
R2 : donde aparece "0" sustituir por "11".
Dos posibles secuencias de generación de palabras podrían ser :
R1 R2 R1
1 -> 10 -> 111 -> 1011
R1 R1 R1
1 -> 10 -> 100 -> 1000
Todas las secuencias 10, 111, 1011, 100, 1000, etc., son palabras del lenguaje y cada uno de los pasos que hemos dado es una derivación.
Aristid Lindenmayer, en la década de los 60, fue el primero en utilizar estos modelos teóricos de crecimiento biológico y por eso se llaman sistemas-L. Sin embargo, fueron dos de sus estudiantes, Ben Hesper y Pauline Hogeweg de la Universidad de Utrech los primeros en darse cuenta de las posibilidades de los sistemas-L para representar plantas. En 1970, Hesper y Hogeweg emplearon dos semanas en crear el primer programa que, a partir de una ristra de 5.000 caracteres generados por un sistema-L, imprimió algo que se parecía mucho al dibujo de una hoja vegetal. Aunque esta primera excursión en el campo de la imaginería digital no gustó mucho a Lindemayer, (y dejó atónito al operador del ordenador donde ejecutaron el programa -recordemos que estamos hablando de la prehistoria, cuando aún se programaba con tarjetas perforadas, y, donde el resultado de la ejecución de los programas era un interminable listado de cálculos numéricos-), que consideraba que no debían perder el tiempo en tales banalidades. Lo cierto es que la idea comenzó a circular y arraigó en otros investigadores. Cuando en 1986 Lindemayer conoció a Przemyslaw Prusinkiewicz se convenció plenamente de las posibilidades de los sistemas-L, y empezó también a utilizarlos para generar imágenes cada vez más realistas de plantas.
Juntos escribieron el maravilloso libro "La belleza algorítmica de las plantas" (The Algorithmic Beauty of Plants).
Lindenmayer también introdujo la noción de sistemas-L con paréntesis que son los sistemas-L que incluyen en su alfabeto los paréntesis cuadrados "[" y "]" que permite la representación de árboles como secuencia de caracteres ya que los paréntesis contienen las ramas de nuestro árbol.
Así, por ejemplo, según vamos leyendo, de izquierda a derecha, una palabra generada por una de estas gramáticas, si nos encontramos un paréntesis abierto indica que comienza una rama y si nos encontramos uno cerrado indica que ha acabado la última ramificación que se había abierto. Llamaremos graftales a los árboles generados así.
El alfabeto que usaremos está formado por los símbolos "0", "1", "[" y "]", donde el "0" indica una hoja y el "1" indica un fragmento de tallo.
Nuestro axioma o semilla será el "0".
Ya estamos listos para presentar nuestra primera gramática y ver qué tipo de plantas es capaz de generar.
Gramática 1.
1.- 0 -> 1[0]1[0]0
2.- 1 -> 11
3.- [ -> [
4.- ] -> ]
Partiendo de "0" los 3 primeros pasos o generaciones son:
0->1[0]1[0]0-> 11[1[0]1 [0]0]11[1[0]1[0]0]1[0]1[0]0
...que podemos representar como se ve en la figura 1.
Podemos decir que las palabras que estamos generando son la secuencia genética de nuestra planta que crece a partir de nuestra pequeña semilla, el "0". Esta secuencia genética determinará el número de ramas y hojas que tendrá nuestra planta.
Además de ésta, vamos a utilizar tres gramáticas más, y, a la hora de modelizar nuestro bosque virtual, elegiremos cada planta al azar entre las cuatro gramáticas.
Las otras gramáticas tienen las mismas reglas 2, 3, y 4 que la gramática 1 y sólo se diferencian en la primera regla.
Gramática 2.
1.- 0 -> 1[0]1[0]1[0]0
resto de reglas igual que Gramática 1.
Gramática 3.
1.- 0 -> 1[0][0]0
resto de reglas igual que Gramática 1.
Gramática 4.
1.- 0 -> 1[0]0
resto de reglas igual que Gramática 1.