Sistemi di Lindenmayer
Sistemi di Lindenmayer
Non c’è distinzione tra terminali e non terminali.
Tutte le parole derivate da una parola data sono nel linguaggio.
Tutte le lettere di una parola sono riscritte simultaneamente.
Motivazione
- la descrizione dello sviluppo di organismi filamentosi
- le parole rappresentano stadi dello sviluppo di disposizioni di
cellule; ogni lettera rappresenta una cellula
-le produzioni corrispondono alle istruzioni con cui gli organismi
sono generati e sono applicate simultaneamente alle lettere
perché lo sviluppo delle cellule è simultaneo negli organismi
-non ci sono terminali perché corrisponderebbero a cellule
morte; la scomparsa di una cellula è rappresentata dalla parola
vuota l.
Le varie parti di un organismo che si sviluppa possono comunicare
tra loro oppure no. Il modello di base di sistema assume che non ci
sia comunicazione.
Sistemi OL (1)
Un sistema OL è OLS = (V, P0, F), dove V è un alfabeto, P0 è una
parola non vuota su V (assioma o parola iniziale), F è un insieme
di coppie ordinate (a,P) con a  V, P  (V+ {l}
tale che per ogni a V c’è almeno una parola P in (a, P)  F
(scriveremo a  P).
La relazione OLS è definita come segue:
P Q vale se e solo se P = a1 … an, Q = Q1… Qn e ai  Qi , n  i  1
Il linguaggio generato è definito come
L (OLS) = {P | P0 * P}
Un sistema OL è deterministico (DOL) se e solo se per ogni a  V
c’è esattamente una parola P tale che (a,P)  F.
Un sistema OL è l -free o propagante (POL) se e solo se per ogni
produzione a  P in F, P non è l.
Due sistemi sono equivalenti se generano lo stesso linguaggio.
Sistemi OL (2)
Esempi.
1) OLS = ({a}, a, {a  a2 })
L(OLS) = {a2n | n  0}
2) OLS = ({a, b}, a, {a  b , b  ab})
L(OLS) = {a, b, ab, bab, abbab, bababbab, …} le cui lunghezze
sono i numeri di Fibonacci
3) OLS = ({a, b, c}, a, {a  abcc , b  bcc, c  c})
L(OLS) = {a, abcc, abccbcccc, abccbccccbcccccc, …} le cui
lunghezze sono i quadrati dei numeri naturali.
Nota bene.Tutti i sistemi sono DOL e generano linguaggi contestuali.
Sistemi OL (3)
Esempio (alga rossa).
1) Prendiamo il sistema DOL propagante con alfabeto e produzioni
come in tabella
1
2#3 2
2 3
2#4
4
5
6
8
(
)
#0
504
6
7
8(1)
(
)
#0
Le parole derivate dall’assioma P0= 1 sono
P0= 1 P1= 2 # 3 P2= 2 # 2 # 4 P3= 2 # 2 # 504 P4= 2 # 2 # 60504
P5= 2 # 2 # 7060504 P6= 2 # 2 # *(1)07060504
Pn+6 = 2 # 2 # 8(Pn)08(Pn-1) 0 … 08 P0 07060504
Sistemi OL (4)
Rappresentazione
Le espressioni parentesizzate sono rami la cui posizione è indicata
dagli 8. Gli 0 sono rappresentati come pareti oblique alternativamente
inclinate a destra e a sinistra. I rami sono attaccati alternativamente su
un lato e sull’altro del ramo dove nascono. I simboli sono
rappresentati come pareti verticali.
1
2
2
7
8
6
5
4
2
2
2
8
1
2
8
8
2
3
7
6
5
4
4
Proprietà dei linguaggi OL (1)
Chiamiamo anti-AFL una famiglia di linguaggi che non è chiusa per
unione, concatenazione l-free, omomorfismi l-free, omomorfismo
inverso, intersezione con i linguaggi regolari.
Teorema. La famiglia dei linguaggi OL è anti-AFL.
Teorema. La famiglia dei linguaggi OL è chiusa sotto immagine
speculare.
Prova. Se un linguaggio è generato dal sistema (V, P0, F), la sua
immagine speculare è generata dal sistema (V, mi(P0), mi(F)) dove
mi(F) è ottenuto da F sostituendo le parti destre delle loro produzioni
con le loro immagini speculari.
Proprietà dei linguaggi OL (2)
Teorema. Ogni linguaggio OL è contestuale.
Prova. Sia L generato dal sistema OL H = (V, P0, F). Prendiamo la
grammatica G = ({X0, X1, X2, X3}, V, X0, F1) dove F1 consiste delle
produzioni
X0  X1 P0 X1 X1  l X1a  X1 X2 a per ogni a  V
X2 X1  X3 X1 a X3 X3 a per ogni a  V
X1 X3  X1
X2a  P X2 per ogni produzione a  P in F
Si dimostra che L(G) = L(H).
Proprietà dei linguaggi OL (3)
Esempio. Prendiamo il sistema OLS = ({a,b}, a, {a  b, b  ab
La grammatica contestuale che lo genera è G = ({X0, X1, X2, X3},
{a,b}, X0, F1) dove F1 consiste delle produzioni
X0  X1 a X1
X1  l
X1a  X1 X2 a
X2a  b X2 X2b  ab X2
X2 X1  X3 X1
a X3 X3 a b X3 X3 b
X1 X3  X1
X1b  X1 X2 b
Sistemi TOL (1)
Un sistema TOL è H = (V, P0, T) dove V e P0 sono come nei sistemi
OL e T è una collezione di sottoinsiemi di V  (V+ {l}.
Ogni t  T soddisfa la condizione:
per ogni a  V c’è P  (V+ {l}) tale che t contiene la coppia (a, P)
P Q se e solo se esiste k  1, lettere a1 , … , ak, parole Q1 , … , Qk
e t contiene la coppia (ai, Qi) per k  i  1.
Il linguaggio generato è
L (H) = {P | P0 * P}
Motivazione.
A ogni passo si usano solo le produzioni appartenenti a una stessa
tabella. La motivazione biologica è che a stadi differenti di sviluppo
dell’organismo possono servire insiemi di regole differenti.
Sistemi TOL (2)
Esempio. Prendiamo il sistema H = ({a}, a, {{a  a2}, {a  a3}}).
Si ha L(H) = {ai | i = 2m3n, m,n  0.
L(H) non è un linguaggio OL.
Teorema. I linguaggi OL sono contenuti propriamente nei linguaggi
TOL.
Sistemi 1L e 2L (1)
Un sistema 2L è H = (V, P0, a0, F) dove:
- V e P0 sono come nei sistemi OL
- a0  V è l’input dall’ambiente
- F è un sottoinsieme di V  V  V  (V+  {l}tale che per tutte le
lettere a, b, c  V (non necessariamente distinte) c’è una parola
P  V+  {l} tale che F contiene la quadrupla (a,b,c,P).
P Q se e solo se esiste n  1, lettere a1 , … , an, parole Q1 , … , Qn
tali che F contiene le quadruple
(a0, a1, a2, Q1), …, (ai-1, ai, ai+1, Qi), …, (an-1, an, a0, Qn) per n-1 i  2
P = a1…an e Q = Q1…Qn.
Per n= 1 F contiene la quadrupla (a0, a1, a0, Q1).
Il linguaggio generato da H è L(H) = {P | P0 * P}.
Sistemi 1L e 2L (2)
Un sistema 2L è un sistema 1L se e solo se vale una delle condizioni
seguenti:
- per ogni a, b, c, P F contiene la quadrupla (a,b,c,P) se e solo se
contiene la quadrupla (a,b,d,P)
oppure
- per ogni a, b, c, P F contiene la quadrupla (a,b,c,P) se e solo se
contiene la quadrupla (d,b,c,P).
Sistemi 1L e 2L (3)
Teorema. C’è un linguaggio 1L che non è OL e c’è un linguaggio 2L
che non è 1L.