Beruflich Dokumente
Kultur Dokumente
1. Introduccin
LS 2 (Lenguaje de S imulacin de L-S istemas) es un lenguaje indito para
generacin geomtrica de estructuras ramicadas basado en sistemas de Lindenmayer (o L-sistemas).
El proyecto que nos ocupar todo el semestre consiste en que Ud. implemente
un interpretador para LS 2 siguiendo las indicaciones sintcticas y semnticas
que se describen en este documento. Este desarrollo se realizar en tres partes:
1. Anlisis lxico.
2. Anlisis sintctico y construccin del rbol abstracto.
3. Anlisis de contexto e interpretacin.
2. L-sistemas
Los sistemas de Lindenmayer (o L-sistemas ) fueron creados por el bilogo
hngaro Aristid Lindenmayer (1925 - 1989) en 1968 [2] para estudiar la topologa
ramicada de las plantas, en el contexto de la biologa del desarrollo.
Desde la perspectiva matemtica, un L-sistema es una gramtica formal
cuyas reglas de produccin representan la simultnea divisin celular en organismos multicelulares. Por ello, a diferencia de las gramticas de Chomsky
cuyas producciones se aplican secuencialmente sobre un smbolo no-terminal a
la vez, en las L-gramticas sus producciones se aplican en paralelo sobre todos
los smbolos de una cadena.
Para la descripcin matemtica y geomtrica de los L-sistemas hemos consultado los libros The mathematical theory ol L systems de Grzegorz Rozenberg
y Arto Salomaa [4], y The algorithmic beauty of plants de Przemyslaw Prusinkiewicz y Aristid Lindenmayer [3], cuya revisin aconsejamos.
Sean un alfabeto nito.
Una sustitucin nita sobre es una funcin
: Pf in ( )
que asigna a cada smbolo de un conjunto nito de cadenas en , junto
con su clausura asociada
1
2 L-sistemas
: Pf in( )
{}
()
w 7 (w) =
() (y)
si w =
si w = ;
si w = y ; y
h :
w 7 h (w) =
h () h (y)
si w =
si w = y ; y
0 1 k
donde 0 = , k = .
Sean un alfabeto nito , una funcin de generacin f (sustitucin nita
u homomorsmo h), y una cadena inicial (o axioma ) w0 . Los L-sistemas
son dispositivos gramaticales G = (, f, w0 ) que generan sucesiones y lenguajes ;
1) En el caso de sustituciones nitas se producen sucesiones de subconjuntos en Pf in ( ) :
S(G) = {n (w0 )}nN
donde 0 (w0 ) = {w0 } , y se generan lenguajes en Pf in ( ) :
L(G) = {w | {w0 } y w }
Ntese que
L(G) =
n (w0 )
nN
2 L-sistemas
L(G) = {w | w0 w}
Sea G un L-sistema. La sucesin S(G) presenta un perodo, es decir, a partir
de cierto momento se hace cclica, si y slo si el lenguaje L(G) es nito.
Cuando dos L-sistemas G1 y G2 producen la misma sucesin S(G1 ) = S(G2 )
se dicen equivalentes en sucesin, y si generan el mismo lenguajes L(G1 ) =
L(G2 ) se dicen equivalentes en lenguaje. Equivalencia en sucesin implica equivalencia en lenguaje, pero el recproco no es cierto.
Un 0L-sistema es un tipo particular de L-sistema G = (, f, w0 ) donde 0
(cero) denota reescritura libre de contexto, es decir, ninguna interaccin entre
smbolos contiguos en una cadena.
Ejemplo 1 : Sea el 0L-sistema G = {a} , a , a2 , a5 , a .
{a}
,
2 5
,
a
,
a
,
S(G) =
, a2 , a4 , . . . , a17 , a19 , a20 , a22 , a25 ,
L(G)
= {an | n N n 6= 3}
sistema
sistema
sistema.
hn (a)
= hn1 (h(a))
= hn1 (b)
= hn2 (h(b))
= hn2 (ab)
= hn2 (a)hn2 (b)
= hn2 (a)hn2 (h(a))
= hn2 (a)hn1 (a)
2 L-sistemas
G1 = ({a, b} , {a bb, b a} , b)
y
G2 = ({a, b} , {a b, b aa} , a)
de manera que
S(G1 )
S(G2 )
sistema estocstico
: P (0, 1]
que asigna a cada produccin del mismo smbolo del alfabeto un peso cumpliendo
la condicin
X
:
p( w) = 1
sistema paramtrico
f : ( R ) C (R ) ( E (R ))
3 Estructuras ramicadas
3. Estructuras ramicadas
En un rbol axial, en cada uno de sus nodos a lo sumo una de sus bifurcaciones es principal, las otras son secundarias.
Una secuencia de segmentos es un eje si:
1) el primer elemento de la secuencia se origina en el nodo raz o como
secundario de algn nodo.
2) cada segmento de la secuencia es principal.
3) el nodo nal del ltimo segmento no tiene bifurcacin.
Un eje junto con sus segmentos secundarios es una rama (subrbol axial).
Los ejes y las ramas tiene un orden:
El eje que se origina en la raz tiene orden 0.
Un eje que se origina en un segmento secundario de un eje de orden n, tiene
orden n + 1.
El orden de una rama es el orden de su eje.
La siguiente imagen [3] ilustra las partes y valores de una estrutura ramicada.
4 Representacin geomtrica
rbol
4. Representacin geomtrica
Tal y como hemos comentado, los L-sistemas se crearon para formalizar la
estructura topolgica del crecimiento en la biolgica del desarrollo. Posteriormente fue necesario introducir una forma de representacin visual para modelar
la forma ramicada de las plantas, y se propusieron varias formas de interpretacin grca. La estrategia de interpretacin abordada por Prusinkiewicz y
Lindenmayer en [3] est basada en la llamada tortuga estilo-LOGO propuesta
4 Representacin geomtrica
previamente por Harold Abelson y Andrea DiSessa [1]. Este sistema de representacin permiti tambin establecer la conexin formal entre los L-sistemas y
las complejas formas geomtricas que en matemtica son conocidas como teselaciones y fractales.
En dos dimensiones (existe tambin un sistema para tres dimensiones que
no trataremos en este proyecto), un estado de la tortuga se dene como un par
posicin-orientacin ((x, y) , ).
Dados, un tamao de paso d y un incremento de ngulo , la tortuga responde
a los siguientes comandos:
1) F, f : la posicin cambia una longitud d. El estado de la tortuga cambia
((x, y) , ) ((x, y) , )
Se comienza con dos guras: una inicial y otra generatriz. Esta ltima es
una lnea poligonal orientada de lados iguales de longitud dada. El proceso
consiste en sustituir cada segmento rectilneo de la gura inicial con la generatriz
orientada, segn comienzo y n del segmento sustituido, recalculando en cada
paso la longitud nal de los segmentos y la escala de la gura generatriz.
Ejemplo 5 : La reproduccin de la famosa curva conocida como isla de Koch
en la interpretacin grca de tortuga-LOGO es:
ngulo de giro: 90o
Figura inicial: F F F F
Figura generatriz: F F F + F + F F F F + F
4 Representacin geomtrica
Para representar grcamente una estructura ramicada se extiende el alfabeto del 0L-rbol con dos smbolos que representan el manejo de una pila,
porque se requiere de un mecanismo de memoria que devuelva el cursor al inicio
de una rama para continuar.
Dos nuevos comandos se usan para construir la ramicacin:
[; comando para empilar (push ), coloca el estado actual (posicin, orientacin, eventualmente otros atributos) en el tope de la pila.
]; comando para desempilar (pop ), extrae el estado del tope de la pila y lo
actualiza.
Ejemplo 6 :
:= {X, F, [, ]},
:= X ,
:= 20 ,
P := {X F [+X]F [X] + X, F F F }
Las siguientes imgenes muestran la geometra de las producciones:
4 Representacin geomtrica
?
X
O
X
O
F
O
F
4 Representacin geomtrica
10
((x, y) , ) ((x, y) , + )
y con el smbolo el estado cambia
((x, y) , ) ((x, y) , )
Obsrvese que si el ngulo en el paramtro de giro es negativo el efecto en
sentido contrario.
Ejemplo7 :[3]
Se inicializan las variables y se denen las operaciones aritmticas:
c=1
p = 0,3
q =cp
1/2
h = (pq)
El D 0L-sistema paramtrico es:
:= {F, +, },
:= F (1, 0),
:= 86 ,
P := {F (x, t) : t = 0 F (xp, 2) + F (xh, 1) F (xh, 1) + F (xq, 0)}.
La siguiente imagen muestra la geometra de la produccin:
O
h
11
El ttulo describe de forma breve lo que hace el programa, siempre debe estar
en la primera lnea del programa y terminar con un punto, e.g.
Isla de Koch.
donde el ttulo se constituye con todas las palabras utilizadas. El ttulo del
programa ser utilizado para establecer el contexto de los mensajes de error
durante el anlisis esttico o dinmico.
Comentarios
Gramatica
parametro
parametro
:
:
valor
:=
12
simbolo
Condiciones
pasos
angulo
posicion <punto> <ngulo>
0 y 180.
matriz
--
-- --
generatriz
<smbolo_1><lista_parmetros_1> : <expresin_lgica_1> ->
probabilidad <nmero >
<movimientos_1.1 >- -<movimiento _1.2 >- - - -<movimiento _1.k1 >
..
.
<smbolo_n><lista_parmetros_n> <expresin_lgica_n>
<movimientos_n.1 > <movimiento _n.2 >
<movimiento _n.kn >
--
-- --
Un bloque para cada smbolo de la gramtica, separados por una lnea vaca.
Las listas de parmetros y las expresiones lgicas son opcionales.
Cuando hay varias producciones para un mismo smbolo, sin guardas, debe
incluirse su probabilidad, en caso contrario se omite. Todas las probabilidades
para un mismo smbolo deben sumar 1.
<nmero > es un nmero real de dos decimales en (0, 1] .
Fin
(# <smbolo><lista_expresiones_aritmticas>)
(@ <smbolo><lista_expresiones_aritmticas>)
Avanza el cursor sin dibujar el segmento.
<lista_expresiones_aritmticas>, opcional.
13
($ <expresin aritmtica>)
Smbolo para empilar. Coloca el estado actual (posicin, orientacin, eventualmente otros parmetros) en el tope de la pila. No va seguido de .
--
--
14
15
16
17
Referencias
[1] H. Abelson and A. diSessa. Turtle geometry: Computations as a medium for
exploring mathematics. Cambridge, MA: MIT Press, 1981.
[2] A. Lindenmayer. Mathematical models for cellular interactions in development i. laments with one-sided inputs. Journal of Theoretical Biology,
18(3):280299, 1968.
[3] P. Prusinkiewicz and A. Lindenmayer. The Algorithmic Beauty of Plants.
Springer-Verlag New York, Inc., 1990.
[4] G. Rozenberg and A. Salomaa. Mathematical Theory of L systems. Academic
Press, Inc., 1980.