Sunteți pe pagina 1din 37

Linguaggi Contestuali e Liberi da Contesto

Nicola Fanizzi Corso di Linguaggi di Programmazione


Dipartimento di Informatica Universit degli Studi di Bari

18 marzo 2010

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

1 / 37

Linguaggi Contestuali Denizioni Linguaggi Monotoni Teoremi di Equivalenza sui Linguaggi Monotoni Linguaggi Liberi da Contesto Alberi di Derivazione e Derivazioni Canoniche Principio di sostituzione Pumping Lemma per Linguaggi Liberi Ambiguit Esercizi Esercizio 2 Esercizio 3 Esercizio 1

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

2 / 37

Linguaggi Contestuali

Denizioni

Grammatiche e Linguaggi Contestuali

Le grammatiche dipendenti da contesto sono caratterizzate per avere produzioni dei tipi seguenti:
1

yAz ywz con A V , y , z (X V ) e w (X V )+ ; S purch S non compaia a destra di alcuna produzione;

I linguaggi generati da queste grammatiche si dicono linguaggi dipendenti da contesto

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

3 / 37

Linguaggi Contestuali

Linguaggi Monotoni

Non tutti i linguaggi possono essere generati attraverso grammatiche dipendenti da contesto Esempio. Consideriamo grammatiche aventi, tra le altre, produzioni del tipo: 1. AB CDEF 2. CB BC che evidentemente non sono produzioni contestuali Osservazione. Tali produzioni non hanno parti destre di lunghezza non inferiori a quelle delle parti sinistre.

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

4 / 37

Linguaggi Contestuali

Linguaggi Monotoni

Grammatiche e Linguaggi Monotoni

Una grammatica G = (X , V , S, P) monotna quando ogni sua produzione monotona: (v w) P : |v | |w |

Un linguaggio monotno quando esiste una grammatica monotona che lo genera. Su alcuni testi queste denizioni vengono date per le grammatiche dipendenti da contesto vi uno stretto legame a livello di queste classi di linguaggi

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

5 / 37

Linguaggi Contestuali

Linguaggi Monotoni

Esempio (continua). Le produzioni monotone ma non contestuali viste in precedenza: 1. AB CDEF 2. CB BC possono essere sostituite con le seguenti catene di produzioni contestuali: AB AG AG CG AB CDEF equivale a CG CDEF
CB XB CB BC equivale a XC

XB XC BC

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

6 / 37

Linguaggi Contestuali

Teoremi di Equivalenza sui Linguaggi Monotoni

Teoremi di Equivalenza

Teorema. Sia G una grammatica monotona, tranne al pi per una produzione S . Se S non appare in una parte destra di produzioni di G, allora esiste una grammatica contestuale G che risulta equivalente a G In maniera equivalente si dimostra: Teorema. Un linguaggio L contestuale sse esiste una grammatica G tale che L = L(G) a produzioni monotone, tranne al pi il caso che L per cui pu essere generato direttamente da S se S non appare in alcuna parte destra di produzioni di G

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

7 / 37

Linguaggi Contestuali

Teoremi di Equivalenza sui Linguaggi Monotoni

Dim. Supponiamo che le produzioni possano essere ricondotte a: A1 A2 . . . Am B1 B2 . . . Bn con m n e Ai V , i = 1, . . . , m Usiamo m nuovi simboli non terminali Ck V , k = 1, . . . , m Trasformiamo ogni produzione nella seguente maniera: A1 A2 . . . Am C1 A2 . . . Am C1 A2 . . . Am C1 C2 A3 . . . Am . . . C1 C2 . . . Cm1 Am C1 C2 . . . Cm Bm+1 Bm+2 . . . Bn C1 C2 . . . Cm Bm+1 Bm+2 . . . Bn C1 C2 . . . Cm1 Bm Bm+1 . . . Bn . . . C1 B2 . . . Bn B1 B2 . . . Bn G contestuale e si dimostra: L(G) = L(G )
N. Fanizzi (LdP) Linguaggi Contestuali e Liberi 18 marzo 2010 8 / 37

Linguaggi Contestuali

Teoremi di Equivalenza sui Linguaggi Monotoni

Esempio. Consideriamo il linguaggio: L = {an bn c n | n > 0} produzioni di una possibile . . . trasformandole in produzioni grammatica monotona per L: contestuali equivalenti: S aSBC | aBC S aSBC | aBC CB XB CB BC aB ab XB XC XC BC bB bb bC bc aB ab bB bb cC cc bC bc cC cc

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

9 / 37

Linguaggi Liberi da Contesto

Grammatiche e Linguaggi Liberi da Contesto


Una grammatica G = (X , V , S, P) una grammatica libera da contesto sse le sue produzioni sono tutte del tipo: A w con A V Il linguaggio L(G) si dice linguaggio libero da contesto nome: in una derivazione, ogni non terminale pu essere sostituito con una parte destra di una sua produzione, indipendentemente dal contesto della forma di frase in cui si trova sostituzione sempre valida appartiene a questa categoria la maggior parte dei linguaggi di programmazione

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

10 / 37

Linguaggi Liberi da Contesto

Osservazioni. La classe dei linguaggi liberi inclusa in quella dei linguaggi contestuali linguaggi contestuali linguaggi liberi

Si pu ottenere un linguaggio libero considerando produzioni dove il contesto destro e quello sinistro siano vuoti (= ) Eccezione una grammatica libera ammette ogni tipo di -regola ossia ogni produzione del tipo A con A = S

vietate dalle grammatiche contestuali

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

11 / 37

Linguaggi Liberi da Contesto

Alberi di Derivazione e Derivazioni Canoniche

Alberi
Le derivazioni di una grammatica libera possono essere rappresentate gracamente da alberi Albero: grafo orientato, aciclico, connesso con al pi un arco entrante per ogni nodo

la frontiera dellalbero rappresentata dalle foglie lette da sinistra verso destra la lunghezza di un cammino dalla radice ad una foglia data dal numero di non terminali incontrati laltezza dellalbero data dalla lunghezza del cammino pi lungo
N. Fanizzi (LdP) Linguaggi Contestuali e Liberi 18 marzo 2010 12 / 37

Linguaggi Liberi da Contesto

Alberi di Derivazione e Derivazioni Canoniche

Alberi di Derivazione
Data G = (X , V , S, P) libera e w X tale che S w, un albero di derivazione di w, denotato, Tw cos formato:
1 2 3 4

radice S nodi interni simboli di V foglie simboli di X {} se esiste la prod. A A1 A2 Ak in P allora un nodo interno A pu essere padre dei nodi gli A1 , A2 , . . . , Ak

w si deve ottenere da Tw leggendo le foglie da sinistra a destra

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

13 / 37

Linguaggi Liberi da Contesto

Alberi di Derivazione e Derivazioni Canoniche

Osservazioni. Un albero di derivazione non impone alcun criterio di scelta del non terminale da espandere tramite una sua regola di produzione per ottenere la sequenza corrispondente ad una derivazione data una derivazione esiste uno ed un solo albero che la rappresenta dato un albero di derivazione esistono pi derivazioni possibili a seconda dellordine scelto per lapplicazione delle produzioni

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

14 / 37

Linguaggi Liberi da Contesto

Alberi di Derivazione e Derivazioni Canoniche

Esempio. Data una grammatica libera G = ({a}, {S, H}, S, P) con P = {S Ha,
1

H HS,

H a}

La stringa aaaa L(G) si deriva sia tramite: S Ha HSa aSa aHaa aaaa
1 2 3 1 3

sia con: S Ha HSa HHaa Haaa aaaa


1 2 1 3 3
N. Fanizzi (LdP) Linguaggi Contestuali e Liberi 18 marzo 2010 15 / 37

Linguaggi Liberi da Contesto

Alberi di Derivazione e Derivazioni Canoniche

Derivazioni Canoniche

Data una grammatica G = (X , V , S, P) si dir che la derivazione S w1 w2 wn = w dove wi = yi Azi e wi+1 = yi wi zi , con i = 1, . . . , n 1

una derivazione canonica destra (risp. canonica sinistra) sse per ogni i = 1, . . . , n 1 risulta: zi X (risp. yi X )

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

16 / 37

Linguaggi Liberi da Contesto

Alberi di Derivazione e Derivazioni Canoniche

Esempio. Considero la grammatica con produzioni: S 0B | 1A A 0 | 0S | 1AA P= B 1 | 1S | 0BB Derivazione sinistra di 0011: S 0B 00BB 001B 0011 Derivazione destra di 0011: S 0B 00BB 00B1 0011

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

17 / 37

Linguaggi Liberi da Contesto

Principio di sostituzione

S 0011

S 000111

Iterando: 0011 000111 00001111 . . . 00n 11n


N. Fanizzi (LdP)

|w | = 4 |w | = 6 |w | = 8 . . . |w | = 2n + 2
18 marzo 2010 18 / 37

Linguaggi Contestuali e Liberi

Linguaggi Liberi da Contesto

Principio di sostituzione

Osservazioni. Alberi di derivazione si possono sostituire con sottoalberi alberi di pari radice (non terminale) Generalizzazione: supposto di incontrare almeno due volte un non terminale A nellalbero di derivazione di z
il sottoalbero pi basso con radice A genera w quello pi alto genera vwx sostituendo lalbero pi alto con il pi basso si ottiene una derivazione valida della stringa uwy invece, sostituendo quello pi basso con quello pi alto si ottiene una derivazione della stringa uvvwxxy cio uv 2 wx 2 y iterando questa sostituzione si ottiene linsieme {uv n wx n y | n 0}

La lunghezza delle parole cos ottenute cresce in maniera costante (linearmente) Un linguaggio con parole che crescono in modo esponenziale non pu essere libero
N. Fanizzi (LdP) Linguaggi Contestuali e Liberi 18 marzo 2010 19 / 37

Linguaggi Liberi da Contesto

Principio di sostituzione

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

20 / 37

Linguaggi Liberi da Contesto

Principio di sostituzione

Proposizione. Ogni linguaggio libero innito deve contenere almeno un sottinsieme innito di stringhe della forma uv n wx n y n0

Il fattore di ramicazione massimo per una grammatica libera G = (X , V , S, P) dato da: max{|w | N | A w P} Lemma. Data una grammatica libera G = (X , V , S, P), supponiamo che il fattore di ramicazione sia m. Sia Tw un albero di derivazione per una stringa w di L(G). Se laltezza di Tw al pi pari a j N, allora |w | mj

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

21 / 37

Linguaggi Liberi da Contesto

Principio di sostituzione

Dim. Per induzione sullaltezza j dellalbero di Tw : base j = 1 : |w | m = m1 passo si suppone che il lemma valga per alberi di altezza pari al pi a j (radice = non terminale), si deve dimostrare anche per j + 1: Sia A v , dove v = v1 v2 vk , |v | = k , k m

la prod. che determina il livello pi alto dellalbero Ogni simbolo vi v , i = 1, . . . , k pu essere radice di sottoalberi di altezza al pi uguale a j, essendo Tw in questo caso di altezza j + 1 Per ipotesi, questi sottoalberi hanno al pi mj foglie. Poich |v | = k m, per la stringa w, frontiera di Tw , risulter:
k volte

|w | m + mj + + mj = |v | mj = k mj m mj = mj+1
N. Fanizzi (LdP) Linguaggi Contestuali e Liberi 18 marzo 2010 22 / 37

Linguaggi Liberi da Contesto

Pumping Lemma per Linguaggi Liberi

Pumping Lemma per Linguaggi Liberi

Teorema uvwxy. Sia L un linguaggio libero da contesto. Esiste una costante p, dipendente solo da L, tale che se z L tale che |z| > p, allora z pu essere scritta come uvwxy in modo che:
1 2 3

|vwx | p al pi uno tra v e x la parola vuota (vx = ) i N : uv i wx i y L

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

23 / 37

Linguaggi Liberi da Contesto

Pumping Lemma per Linguaggi Liberi

Dim. (schema) Sia G una grammatica che genera L Siano m = max{|v | | A v P} e k = |V | Posto p = mk +1 , consideriamo z L tale che |z| > p Per il lemma: |z| > p = mk +1 allora ogni albero di derivazione per z ha unaltezza maggiore di k + 1. k = |V | implica che in un cammino dellalbero ci sia una multipla occorrenza di un NT. Sia A V quello che compare nella occorrenza pi in alto ossia non vi sono altri NT ripetuti prima dellA superiore: il cammino dalla A superiore ad una foglia ha lunghezza al pi k + 1 Chiamiamo vwx la stringa derivata dal sottoalbero radicato nella A superiore, dove w la sottostringa derivata dalloccorrenza inferiore
N. Fanizzi (LdP) Linguaggi Contestuali e Liberi 18 marzo 2010 24 / 37

Linguaggi Liberi da Contesto 1 2

Pumping Lemma per Linguaggi Liberi

Dal Lemma risulta: |vwx | mk +1 = p Per assurdo se fosse v = = x la sostituzione dellalbero radicato nellA superiore con quello inferiore non provoca nessun cambiamento. Ma in tal caso esiste un cammino di lunghezza inferiore. Si ottiene un albero di derivazione di z di altezza al pi pari a k + 1. Assurdo. Applicando il principio di sostituzione a z = uvwxy sostituiamo il sottoalbero radicato nelloccorrenza inferiore di A con quello delloccorrenza superiore ottenendo: uwy = uv 0 wx 0 y Con la sostituzione inversa: uv 2 wx 2 y e ripetendo i 1 volte: uv i wx i y

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

25 / 37

Linguaggi Liberi da Contesto

Pumping Lemma per Linguaggi Liberi

Osservazioni. Dato un linguaggio generato da una grammatica non libera non si pu escludere che esista una grammatica libera che lo generi Se un linguaggio innito non rispetta il Pumping Lemma dei linguaggi liberi non pu essere generato da una grammatica libera Quindi questo teorema fornisce una condizione necessaria ma non sufciente perch un linguaggio sia libero Si utilizza per dimostrare che un linguaggio non sia libero

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

26 / 37

Linguaggi Liberi da Contesto

Ambiguit

Ambiguit
Una grammatica G libera da contesto si dice ambigua sse esiste una stringa x in L(G) che ha due alberi di derivazione differenti ovvero sse x ha due derivazioni sinistre (o destre) Esempio. La grammatica libera G = (X , V , S, P) con X = {a, +}, V = {S} e P = {S S + S, S a} ambigua. Ad es. w = a + a + a ottenibile mediante 2 alberi:

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

27 / 37

Linguaggi Liberi da Contesto

Ambiguit

Esempio. Grammatica per lassegnazione: <assegnazione> <id> = <espressione> <id> A | B | C <espressione> <espressione> + <espressione> | <espressione> * <espressione> | (<espressione>) | <id> Dimostrare che ambigua.

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

28 / 37

Linguaggi Liberi da Contesto

Ambiguit

Esempio. G = (X , V , S, P) con X = {if, else, (, ), a, b, p, q} V = {S, C} P = { S if C S else S | if C S | a | b, C (p) | (q) } Si consideri la stringa if (p) if (q) a else b

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

29 / 37

Linguaggi Liberi da Contesto

Ambiguit

Per ottenere G = (X , V , S, P ) non ambigua usiamo la convenzione di associare ogni else alla if pi vicina: V = {S1 , S2 } V S S1 | S2 S if C S else S | a | b 1 1 1 P = S2 if C S | if C S1 else S2 | a | b C (p) | (q)

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

30 / 37

Linguaggi Liberi da Contesto

Ambiguit

Linguaggi Inerentemente Ambigui

Un linguaggio G si dice inerentemente ambiguo sse ogni grammatica che lo genera ambigua Esempio. L = {ai bj c k | i, j, k > 0, (i = j) (j = k )}

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

31 / 37

Esercizi

Esercizi.

Dimostrare che i seguenti linguaggi non sono liberi da contesto: L = {at | t primo} L = {an bn c n | n > 0} L = {an | n 0} L = {ai bj | i = 2j , i, j 0} L = {ak br | k > 0, r > k 2 }
2

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

32 / 37

Esercizi

Esercizio 2

Esercizio 2. Dimostrare che L = {an bn c n |n > 0} non libero Supponiamo (per assurdo) che L sia libero. Allora vale il Pumping Lemma per un certo p N ssato. Si consideri la parola z = uvwxy = ap bp c p L: |z| = 3p > p. Per il P.L. deve essere |vwx | p. Per la composizione di vwx si hanno le seguenti possibilit:
1

ripetizioni di un solo simbolo: ak , b k o c k con k > 0 a cavallo tra ripetizioni di due simboli: ah b k o b h c k con h, k > 0 vwx del tipo ah bp c k , ma in tal caso si vede subito che |vwx | > p: assurdo

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

33 / 37

Esercizi

Esercizio 2

In tutti questi casi si pu dimostrare che uv 2 wx 2 y L quindi L non pu essere libero. (caso 1.) vwx = ak , 0 < k p aggiungendo almeno a ed al pi ap si ottiene: uv 2 wx 2 y = ap+k bp c p

vwx = bk , vwx = ck ,

0<k p 0<k p

analogamente analogamente

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

34 / 37

Esercizi

Esercizio 2

(caso 2.) vwx = ak br ,


1

0 < k + r p per la 2. del Pumping Lemma:

v = , x = : se v = allora v = ak perch se fosse v = ak br allora uv 2 wx 2 y = apk ak br ak br bs c p L con p s 2(r r ) + p r Analogamente x = implica che x = br per cui: uv 2 wx 2 y = ap+k bp+r c p L

per k , r > 0 v = , x = per le considerazioni fatte: v = ak , 0 < k k per cui uv 2 wx 2 y = ap+k bp c p L

v = , x = : analogamente al sottocaso precedente

vwx = bk c r ,
N. Fanizzi (LdP)

0 < k +r p

caso analogo al precedente


18 marzo 2010 35 / 37

Linguaggi Contestuali e Liberi

Esercizi

Esercizio 3

Esercizio 3. Dimostrare che L = {an | n 0} non libero Consideriamo L = {, a, aaaa, a9 , a16 , . . .} e supponiamo sia libero. Vale il Pumping Lemma per un certo p N. 2 Considero allora z = uvwxy = ap L tale che |z| = p2 > p Anche uv 2 wx 2 y L (per la 3. del Lemma) Ma si osservi l catena di maggiorazioni: |uv 2 wx 2 y | = |uvwxy |+|vx | = |z|+|vx | p2 +p < p2 +2p+1 = (p+1)2 rissumendo: |uv 2 wx 2 y | < (p + 1)2 Inoltre |uv 2 wx 2 y | = |z| + |vx | > |z| = p2 Perci z ha una lunghezza compresa (non uguale) tra due quadrati successivi, ci implica che uv 2 wx 2 y L. Assurdo, quindi L non libero

N. Fanizzi (LdP)

Linguaggi Contestuali e Liberi

18 marzo 2010

36 / 37

Esercizi

Esercizio 1

Esercizio 1. Dimostrare che L =

{at

| t primo} non libero

Supponiamo che L sia libero. Allora vale il pumping lemma per cui considerato un certo p, sia z L e |z| = t > p con t primo e z = uvwxy Poniamo k = |vx | > 0 quindi k + 1 > 1 r = |uwy | = t k Consideriate le stringhe zi = uv i wx i y L i 0 risulta: |zi | = |uv i wx i y | = |uwy | + i|vx | = r + ik Allora deve valere anche per la lunghezza di zt+1 L: |zt+1 | = r + (t + 1)k = r + tk + k = tk + t = (k + 1)t Essendo un multiplo proprio di un numero primo questa lunghezza non pu essere un numero primo, quindi la stringa non nel linguaggio: zt+1 L (assurdo) /
N. Fanizzi (LdP) Linguaggi Contestuali e Liberi 18 marzo 2010 37 / 37

S-ar putea să vă placă și