Sistema-L
L'anomenat L-system o sistema d'en Lindenmayer és una gramàtica formal inicialment creada i utilitzada per a descriure formalment el procés de desenvolupament de les plantes.
És a dir, és un conjunt de regles i símbols (un procediment formal) per a descriure patrons del creixement de les plantes, com també de colònies de bacteris, etc.
Actualment, però, és a empleat per a generar gràfics fractals de dimensió entre 1 i 2.
El sistema es basa en un procés de creació d'elements successivament més complexos substituint (reemplaçant) una part de l'element simple usant un sistema de regles de substitució.
Aquest llenguatge formal va ser introduït el pel biòleg Hungarià Aristid Lindenmeyer ( 1925-1989 ) de la Universitat de Utrecht.
Lindenmayer va treballar amb el llevat i va estudiar els patrons de creixement de varies classes d'algues.
L'estructura d'un sistema-L ens porta a l'auto similitud degut al seu caràcter recursiu i per tant facilita la producció de formes tipus fractal.
Els sistemes-L són coneguts també per sistemes-L paramètrics, definits com un conjunt G (V, C, I, R) On:
- V és un conjunt de símbols o elements que poden ser reemplaçats ( variables )
- C és un conjunt de símbols o elements que es mantenen fixes ( constants )
- I és una cadena de símbols de V que constitueix el conjunt inicial del sistema, de l'operació ( inici )
- R és un conjunt de regles o normes que defineixen la manera en la que les variables poden ser reemplaçades per combinacions de constants i d'altres variables.
Així, R indica inicialment com s'han de canviar les variables V del conjunt inicial I per una combinació de més variables V i constants C.
Les regles R s'apliquen iterativament al conjunt a partir del conjunt inicial I.
Posem un exemple simple però posant nom als diferents elements per tal d'aclarir els conceptes:
Aquest sistema-L va ser creat per a modelar el creixement de les algues.
- V (variables) : A, B
- C (constants) : Cap
- I (conjunt inicial) : A (la z 0 de l'orbita que ja coneixem)
- R (regles) : (A-->AB) A on hi ha A hi posem AB
(B-->A) A on hi ha B hi posem A
Quan iniciem aquest procés iterant les variables produïdes en el conjunt de regles, es produeix això:
- R (A) = AB
- R (AB) = ABA
- R (ABA) = ABAAB
- R (ABAAB) = ABAABABA
Un sistema-L és lliure quan cada substitució (aplicació de R ) afecta solament a un símbol o un conjunt de símbols (variables V ) independentment dels símbols veïns. Quan això no passa, i la norma a seguir en una substitució depèn també del conjunt veí i no solament del conjunt o el símbol variable V en qüestió, es diu que el sistema-L és sensible al context.
Quan hi ha només una norma de substitució (canvi) per a cada variable V , es diu que el sistema és determinista. Si hi ha varies opcions de canvi i s'escull cada una d'elles amb una probabilitat determinada, es diu que el sistema-L és estocàstic.
Per a crear imatges mitjançant un sistema-L necessitem que cada símbol (constant o variable) faci referència a elements d'un dibuix.
Un exemple clar de fractal creat per un sistema-L és aquest sistema que tenim a continuació que dóna com a resultat el conjunt de Cantor:
- V (variables) : AB
- C (constants) : Cap
- I (conjunt inicial) : A
- R (regles) : (A-->ABA) A on hi ha A hi posem ABA
(B-->BBB) A on hi ha B hi posem BBB
Iterant les variables ens les regles R començant pel conjunt inicial, obtenim:
- R (A) = ABA
- R (ABA) = ABABBBABA
- R (ABABBBABA) = ABABBBABABBBBBBBBBABABBBABA
Si, es relaciona la variable A com a dibuixar un pas cap endavant i la B com a avançar cap a endavant (sense dibuixar) obtindrem:
C (A) =
R (A) =
R (ABA) =
R (ABABBBABA) =
R (ABABBBABABBBBBBBBBABABBBABA) =
R (ABABBBABABBBBBBBBBABABBBABABBBBBBBBBBBBBBBBBBBBBBBBBBB
ABABBBABABBBBBBBBBABABBBABA) =
Repetint infinitament aquest procés obtenim el famós fractal conegut com a Conjunt de Cantor.
Podem posar un altre exemple en el que fem servir alguna constant:
Un exemple també conegut que podreu reconèixer:
- V (variables) : A
- C (constants) : + -
- I (conjunt inicial) : A
- R (regles) : (A-->A+A-A+A) A on hi ha A hi posem A+A-A+A
Amb aquestes condicions podem iterar i obtindrem:
- R (A) = A+A-A+A
- R (A+A-A+A) = A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A
- R (A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A) = A+A-A+A+A+A-A+A-A+A-A+A+A+A- A+A+A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A-A+A- A+A+A+A-A+A+A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A
Si relacionem la variable A com a dibuixar cap a endavant i les constants + i - girar 60º cap a la esquerra i girar 120º cap a la dreta respectivament, obtindrem la corba de Koch:
C (A)=
R (A) =
R (A+A-A+A) =
R (A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A) =
R (A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A+A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A-A+A-A+A+A+A- A+A+A+A-A+A+A+A-A+A-A+A-A+A+A+A-A+A) =