Linguaggi Regolari e Linguaggi Liberi -...

21
1 Programmazione Linguaggi Regolari e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle grammatiche

Transcript of Linguaggi Regolari e Linguaggi Liberi -...

Page 1: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

1 Programmazione

Linguaggi Regolari e Linguaggi Liberi

Linguaggi regolariPotere espressivo degli automi

Costruzione di una grammatica equivalente a un automa

Grammatiche regolariPotere espressivo delle grammatiche

Page 2: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

2 Programmazione

Linguaggi Regolari

● Tutti i linguaggi che possono essere accettati da automi a stati finiti non deterministici sono detti Linguaggi Regolari

● La definizione include linguaggi su tutti i possibili alfabeti Σ finiti

Page 3: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

3 Programmazione

Determinismo vs Non determinismo

● Abbiamo visto che, tramite la costruzione dei sottoinsiemi, un qualsiasi automa non deterministico può essere trasformato in uno deterministico equivalente

● Inoltre un automa deterministico può essere visto come un particolare automa non deterministico

● Pertanto in realtà è superfluo dire, nella definizione di linguaggi regolari, che gli automi debbano essere non deterministici

● La classe di linguaggi accettati da automi deterministici è uguale a quella dei linguaggi accettati da automi non deterministici

Page 4: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

4 Programmazione

Potere espressivo

● In questo caso si dice che i due formalismi, gli automi deterministici e non deterministici, hanno lo stesso potere espressivo

● Oltre a quello degli automi deterministici, anche il formalismo delle espressioni regolari ha lo stesso potere espressivo degli automi non deterministici

● Una costruzione per costruire un NFA a partire da una qualsiasi espressione regolare si vedrà nel corso di Compilatori

Page 5: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

5 Programmazione

Linguaggi Regolari

● La classe dei linguaggi regolari può essere quindi specificata equivalentemente con tre tipi diversi di formalismi:– Automi non deterministici (NFA)– Automi deterministici (DFA)– Espressioni Regolari

● Questi tre formalismi hanno tutti lo stesso potere espressivo

Page 6: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

6 Programmazione

Potere espressivo superiore

● Ma tutti i linguaggi sono regolari?● La risposta è NO● Ci sono dei linguaggi che non possono essere

specificati con NFA (o DFA o espressioni regolari)

● I linguaggi di questo tipo sono detti non regolari

Page 7: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

7 Programmazione

Un esempio classico

● L’esempio classico di linguaggio non regolare è il seguente

L = { anbn | n ≥ 0 }● È impossibile scrivere un automa o

un’espressione regolare che accetti/denoti questo linguaggio

● La dimostrazione di questo enunciato è interessante e può essere trovata sulla dispensa alternativa di sintassi

Page 8: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

8 Programmazione

Limiti degli automi

● Intuitivamente il motivo è che gli automi non possono “contare”, cioè non possono implementare un contatore che possa assumere un qualsiasi valore intero (n) in modo da accettare stringhe in cui ci sia una corrispondenza fra il numero di certi elementi e il numero di altri elementi

Page 9: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

9 Programmazione

Potere espressivo delle grammatiche

● È facile scrivere una grammatica libera dal contesto per il linguaggio visto:

S aSb | ε● In effetti si ha che le grammatiche libere dal contesto

hanno un potere espressivo maggiore degli automi/espressioni regolari

● Ciò significa più precisamente che:– Ogni linguaggio regolare può essere generato con una

grammatica– Esiste almeno un linguaggio non regolare che è accettato da

una grammatica

Page 10: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

10 Programmazione

Potere Espressivo delle grammatiche

Linguaggi Regolari

Universo dei linguaggi

Linguaggi generati dagrammatiche libere

L = { anbn | n ≥ 0 }

Page 11: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

11 Programmazione

Potere espressivo delle grammatiche

● Per mostrare la seconda parte basta usare il linguaggio { anbn | n ≥ 0 }

● Per la prima parte definiamo un algoritmo che, dato un qualsiasi automa (deterministico o no), costruisce una grammatica equivalente

Page 12: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

12 Programmazione

Algoritmo: dagli automi alle grammatiche

● Input: Automa <S, Σ, s0, move, F>

● Output: Grammatica <V, Σ, S, P> equivalente

● Costruzione dei simboli non terminali di V e dello stato iniziale:– Per ogni stato s di S costruiamo un simbolo non

terminale <s> in V– Poniamo <s0> come simbolo iniziale S della

grammatica

Page 13: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

13 Programmazione

Algoritmo: dagli automi alle grammatiche

Costruzione delle produzioni P:● Per ogni s ∈ S e per ogni a ∈Σ:

– Se c’è nell’automa una transizione etichettata con a che dallo stato s va nello stato s’ allora inseriamo la produzione <s> a <s’> in P

– Se c’è nell’automa una transizione etichettata con a che dallo stato s va nello stato s’ e s’ ∈ F allora inseriamo una produzione <s> a in P

● Se l'automa accetta anche la stringa vuota ε allora bisogna fare un ulteriore passo e creare un simbolo iniziale fittizio

Page 14: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

14 Programmazione

Algoritmo: dagli automi alle grammatiche

● Se l'automa accetta la stringa vuota:

– Aggiungere un ulteriore simbolo non terminale <s0'>

e porlo come simbolo iniziale della grammatica a posto di <s

0>

– Inserire la produzione <s0'> ε

– Aggiungere una produzione <s0'> α per ogni

produzione <s0> α che si trova già in P (costruito

come nella pagina precedente)

Page 15: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

15 Programmazione

Esempio

a b

c

{a, b, c}

0 1 2

3

a

Page 16: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

16 Programmazione

Esempio

● Seguendo le indicazioni dell’algoritmo otteniamo la seguente grammatica, al primo passo

<0> a <0> | a <1> | a

<1> b <2>

<2> c <3> | c

<3> a <3> | b <3> | c <3> | a | b | c

• Ma l'automa accetta anche la stringa vuota• Dobbiamo completare come segue

Page 17: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

17 Programmazione

Esempio

• Nuovo simbolo iniziale <0'>

<0'> ε | a <0> | a <1> | a

<0> a <0> | a <1> | a

<1> b <2>

<2> c <3> | c

<3> a <3> | b <3> | c <3> | a | b | c

Page 18: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

18 Programmazione

Grammatiche regolari

● Le grammatiche in cui le produzioni sono tutte della forma

A aB oppure

A a oppure

A ε● Sono chiamate Grammatiche Regolari e

hanno lo stesso potere espressivo degli automi/espressioni regolari

● L’algoritmo visto genera grammatiche regolari

Page 19: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

19 Programmazione

Linguaggi liberi

● Tutti i linguaggi che possono essere specificati attraverso una grammatica libera dal contesto sono detti Linguaggi Liberi

● I linguaggi liberi, sappiamo dal potere espressivo, includono i linguaggi regolari più altri linguaggi non regolari come { anbn | n ≥ 0 }

● Ma i linguaggi non liberi sono tutti i possibili linguaggi?

● La risposta è ancora NO

Page 20: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

20 Programmazione

Linguaggi non liberi

● Esistono dei linguaggi che non possono essere generati da nessuna grammatica libera dal contesto, ad esempio:

L = {am bm cm | m ≥0}

● Esistono infiniti linguaggi non liberi. Esistono infiniti linguaggi non regolari, ma liberi.

● Esistono gerarchie di formalismi più potenti delle grammatiche libere dal contesto

Page 21: Linguaggi Regolari e Linguaggi Liberi - Unicamcomputerscience.unicam.it/tesei/updown/linguaggiregolarilinguaggiliberi.pdfGrammatiche regolari Le grammatiche in cui le produzioni sono

21 Programmazione

Potere espressivo delle grammatiche libere

Linguaggi Regolari

Universo dei linguaggi

Linguaggi generati dagrammatiche libere

L = { anbn | n ≥ 0 }

L = {ambmcm | m ≥ 0 }