Estudio Comparativo del Mito Cosmog nico en las Culturas ...
Introduzione: Linguaggi Formali -...
Transcript of Introduzione: Linguaggi Formali -...
Introduzione:
Linguaggi Formali
Nicola FanizziCorso di Linguaggi di ProgrammazioneDipartimento di InformaticaUniversità degli Studi di Bari10 marzo 2014
Sommario
1 Nozioni PreliminariAlfabeti e StringheParti di una stringaProdottoProdotto e Struttura diMonoidePotenze e Chiusure diAlfabeti2 Linguaggi FormaliDefinizioneOperazioni sui LinguaggiProprietà delleOperazioni
3 Rappresentazioni Finite peri LinguaggiGrammatiche GenerativeDerivazioniLinguaggio Generato da unaGrammaticaEsercizi sulle GrammaticheLa Gerarchia di ChomskyTipi di Grammatiche e Classidi LinguaggiTeorema della GerarchiaAutomiSchema di una MacchinaTransizioniComputazioniDeterminismoTipologieN. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 2 / 52
Nozioni Preliminari Alfabeti e StringheAlfabeti e Stringhe I
Un alfabeto è un insieme di simboli finito e non vuoto disimboliEsempi
Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} alfabeto delle cifre decimaliΣ′ = {a, b, c, . . . , z} alfabeto delle lettere (minuscole)Una stringa (o parola, word)w su un alfabeto Σè una sequenza finita di simboli s1s2 · · · sn tale che∀i ∈ {1, . . . ,n} : si ∈ Σ.La lunghezza diw è pari ad n e si denota con |w|.La stringa vuota, denotata1 con ε, è la parola priva di simboli(|ε| = 0)Esempio Alcune stringhe su Σ′ sono aaba, aca, cbaa, b, . . .Dato Σ = {0, 1} siaw = 0010110 con |w| = 7
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 3 / 52
Nozioni Preliminari Alfabeti e StringheAlfabeti e Stringhe II
Si denota con Σ∗ l’insieme di tutte le stringhe su Σ.Osservazione ∀Σ: ε ∈ Σ∗
Esempio Dato Σ = {0, 1} risultaΣ∗ = {ε, 0, 1, 00, 01, 10, 11, 000, 001, . . .}Dataw = s1s2 · · · sn su Σ, la sua stringa riflessa2 (oinversione) saràwR = snsn−1 · · · s1, definita anche con:wR =
{w |w| < 2
svR w = vs, s ∈ Σ
Esempio Dataw = abbaa : wR = aabba
1Su alcuni testi denotata con ε.2Sew = wR, la stringaw si dice palindromaN. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 4 / 52
Nozioni Preliminari Alfabeti e StringheNomenclatura: parti di una stringa
Data la stringaw = uvy
tale che u, v, y ∈ Σ∗,u è un prefisso diw,y è un suffisso diw ev è una sottostringa diwEsempio w = 00110
prefissi diw: ε, 0, 00, 001, 0011 ewsuffissi diw: ε, 0, 10, 110, 0110 ewsottostringhe diw:ε, 0, 1, 00, 01, 10, 11, 001, 011, 110, 0011, 0110 ew
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 5 / 52
Nozioni Preliminari ProdottoProdotto e Struttura di Monoide I
Date u, v ∈ Σ∗ tali che u = s1 · · · sm e v = s′1· · · s′n la
concatenazione (o prodotto) di u e v è data dalla stringa uv(denotata anche u · v) di lunghezzam + n con i primimsimboli uguali a quelli di u e gli ultimi n uguali a quelli di v:w = uv = s1 · · · sms′
1· · · s′n
Il prodotto · : Σ∗ × Σ∗ → Σ∗
ha per elemento neutro εgode della proprietà associativa: u · (v ·w) = (u · v) ·wnon è commutativopertanto (Σ∗, ·) è un monoide (non commutativo)
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 6 / 52
Nozioni Preliminari ProdottoProdotto e Struttura di Monoide II
Proposizione∀u, v ∈ Σ∗ : |uv| = |u|+ |v|
Dim.(per esercizio.)
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 7 / 52
Nozioni Preliminari ProdottoPotenze e Chiusure di Alfabeti
Dataw ∈ Σ∗, potenza k-esima diw:wk =
{ε k = 0
wwk−1 k > 0Potenza di un alfabeto:Σk =
{{ε} k = 0
Σ · Σk−1 k > 0Σ1 = ΣΣ2 = Σ · Σ = {s1s2 | s1, s2 ∈ Σ}. . .
chiusura transitiva (o anche chiusura positiva) di ΣΣ+ =
⋃k>0Σk
chiusura riflessiva e transitiva (o anche chiusura star) di ΣΣ∗ = Σ+ ∪ {ε}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 8 / 52
Linguaggi Formali DefinizioneLinguaggi Formali – Definizione I
DefinizioneUn linguaggio L su un alfabeto Σ è un sottoinsieme di Σ∗:
L ⊆ Σ∗
Osservazioni
∅, {ε} e Σ sono linguaggi su Σ (|∅| = 0 6= 1 = |{ε}|)Su alcuni testi: Λ ≡ ∅
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 9 / 52
Linguaggi Formali DefinizioneLinguaggi Formali – Definizione II
EsempiLinguaggio finito L = {ε, aab, aaaabb}.Linguaggio infinito L = {aib2i | i ≥ 0}.Linguaggio delle parentesi ben formate L ⊆ {(, )}∗:(())() ∈ L e()(()()) ∈ Lmentre(()() 6∈ L
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 10 / 52
Linguaggi Formali Operazioni sui LinguaggiOperazioni sui Linguaggi
Dati due linguaggi L e L′ definiti sullo stesso alfabeto Σ:prodotto L · L′ = {w = w1 ·w2 ∈ Σ∗ | w1 ∈ L ∧w2 ∈ L′}iterazione L∗ = {w1 . . .wn ∈ Σ∗ | ∀n∀i : wi ∈ L, 0 ≤ i ≤ n}unione L ∪ L′ = {w ∈ Σ∗ | w ∈ L ∨w ∈ L′}
complemento L = {w ∈ Σ∗ | w 6∈ L}intersezione L ∩ L′ = {w ∈ Σ∗ | w ∈ L ∧w ∈ L′}
potenza Lk =
{{ε} se k = 0
Lk−1 · L se k > 0chiusura L+ =
⋃k>0 Lk chiusura positiva(transitiva, non riflessiva)NB: L∗ = L0 ∪ L+ = {ε} ∪ L+
(transitiva e riflessiva)riflessione LR = {wR | w ∈ L}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 11 / 52
Linguaggi Formali Proprietà delle OperazioniProprietà delle Operazioni sui Linguaggi
Dati i linguaggi L,L′,L′′ definiti sullo stesso alfabeto Σ:1. (L · L′) · L′′ = L · (L′ · L′′) proprietà associativa2. L · L′ 6= L′ · L non commutatività3. L · {ε} = {ε} · L = L elemento neutroQuindi 〈℘(Σ∗), ·〉 è un monoide.
Si noti che Σ∗ può essere ottenuto come chiusura riflessiva dellinguaggio Σ (delle stringhe di lunghezza unitaria)4. L · ∅ = ∅ · L = ∅ elemento assorbente35. Se ε ∈ L: L′ ⊆ L · L′ e L′ ⊆ L′ · L6. ε ∈ L∗7. ∅∗ = {ε}3Su alcuni testi Λ = ∅
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 12 / 52
Linguaggi Formali Proprietà delle OperazioniEsempi
EsempioDati i linguaggi L1 = {a2n | n ≥ 0} e L2 = {b, cc}L1 · L2 = {b, cc, aab, aacc, aaaab, aaaacc, . . .}L2 · L1 = {b, cc, baa, ccaa, baaaa, ccaaaa, . . .}
verificata quindi la proprietà 5)Inoltre:L1 ∪ L2 = L2 ∪ L1 = {ε, b, cc, aa, aaaa, aaaaaa, . . .}(L1)∗ = {ε, aa, aaaa, aaaaaa, aaaaaaaa, . . .}(L2)∗ = {ε, b, cc, bb, bcc, ccb, bbb, cccc, . . .}(L2)0 = {ε}(L2)1 = {b, cc}(L2)2 = {bb, bcc, ccb, cccc} . . .(L2)+ = {b, cc, bb, bcc, ccb, bbb, cccc, . . .}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 13 / 52
Rappresentazioni Finite per i LinguaggiRappresentazioni Finite per i Linguaggi
I linguaggi possono essere riguardati sotto due punti di vista:Generativo: come generare le parolew di L ?
L potrebbe essere infinito (estensione) maenumerabile mediante un numero finito di regole(intensione)strumento formale: grammatiche generativeRiconoscitivo: come decidere sew ∈ L ?È il punto di vista dei compilatori in fase d’analisisintattica (o lessicale)strumento formale: automi
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 14 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGrammatica Generativa I
Definizione (Grammatica)Una grammatica generativa è una quadrupla G = (Σ,V , S,P)con
Σ alfabeto terminale, ins. finito, non vuotoV alfabeto non terminale (NT), ins. finito con Σ ∩ V = ∅S ∈ V simbolo di partenza (start) o distintivo (assioma)P insieme delle regole di produzione (α, β), denotate anchecon
α −→ βdoveα ∈ (Σ ∪ V)+ e contiene almeno un non-terminaleβ ∈ (Σ ∪ V)∗ può essere anche εUna regola α −→ ε si dice ε-produzione
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 15 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGrammatica Generativa II
Osservazioni
(α, β) ∈ [(Σ ∪ V)∗ · V · (Σ ∪ V)∗]× (Σ ∪ V)∗
Si usa la notazione abbreviataα −→ β1 | β2 | . . . | βn
per riassumere le produzioni:α −→ β1α −→ β2...α −→ βn
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 16 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeDerivazioni I
Data G = (Σ,V , S,P) e due stringhe φ = γαδ ∈ (Σ ∪ V)+ eψ = γβδ ∈ (Σ ∪ V)∗ con α, β, γ, δ ∈ (Σ ∪ V)∗,φ deriva direttamente ψ, denotato con φ =⇒ ψ, sse∃α −→ β ∈ PDato un ordinamento su P,=⇒
idenota una derivazione
diretta nella quale si applica la produzione i-esima α i−→ β∗
=⇒ chiusura transitiva e riflessiva di=⇒+
=⇒ chiusura transitiva di=⇒:φ deriva ψ, denotato con φ ∗
=⇒ ψ, sseφ = ψ oppure∃φ0, φ1, . . . , φn ∈ (Σ ∪ V)+, con φ0 = φ, e φn = ψ, tali che:φi−1 =⇒ φi ∀i ∈ {1, . . . ,n}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 17 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeDerivazioni II
n=⇒ denota una derivazione in n passi(n lunghezza della derivazione)φ ∈ (Σ ∪ V)∗ è una forma di frase di G sse: S ∗
=⇒ φ
Esempio Data G = ({a, b}, {S}, S,P) conP = {S 1−→ ε, S 2−→ aSbb}
S=⇒2
aSbb=⇒2
aaSbbbb=⇒1
aabbbb = a2b4
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 18 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeDerivazioni III
Esempio Data G = ({a, b}, {A,B,C, S}, S,P) conP = {S −→ aAS | bBS | C,
Aa −→ aA,Ba −→ aB,Ab −→ bA,Bb −→ bB,BC −→ Cb,AC −→ Ca,C −→ ε}
Si genera L(G) = {ww | w ∈ {a, b}∗}
S=⇒1
aAS=⇒2
aAbBS=⇒3
aAbBC=⇒6
abABC =⇒8
abACb=⇒9
abCab=⇒10
abab
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 19 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeLinguaggio Generato da una Grammatica
Definizione (Linguaggio Generato da una Grammatica)Data la grammatica G = (Σ,V , S,P),dicesi linguaggio generato dalla grammatica Gl’insieme delle stringhe di simboli terminali derivabili da S:
L(G) = {w ∈ Σ∗ | S ∗=⇒ w}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 20 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeEsempi I
Grammatica per generare L = {anbn+1 | n > 0}:G = ({a, b}, {S,A}, S,P) con
P = {S −→ Ab,A −→ aAb | ab}
Grammatica per generare il linguaggio dei numeri binaripari:G1 = ({0, 1}, {S1,U}, S1,P1) con
P1 = {S1 −→ 0 | 0S1 | US1, U −→ 1}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 21 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeEsempi II
Grammatica per generare L = {1n0 | n ≥ 0}:G2 = ({0, 1}, {S2,A}, S2,P2) con
P2 = {S2 −→ A0 | 0, A −→ A1 | 1}
Osservazione L(G2) ( L(G1)
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 22 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeEsempi III
Lquad = {an2 | n > 0} [Ausiello et al.,(2003)]Gquad = ({a}, {S,A,B, E,R,X}, S,P)
P =
S −→ BRAEB −→ BRAA
RA −→ aARRa −→ aRRE −→ EB −→ X
XA −→ XXa −→ aXXE −→ ε
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 23 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeEsempi IV
idea: 1+ 3+ 5+ · · ·+ (2n− 1) = n2
B = BEGIN E = END: segnapostole prod. 1 e 2 (S −→ BRAE, B −→ BRAA)creano forme di frase B(RAA)kRAE per qualche k ≥ 0ogni R ha un numero dispari di A alla sua destraogni R si sposta verso destra (RA −→ aAR Ra −→ aR)creando una nuova a per ogni A che si incontrala R cade quando incontra la E (RE −→ E)infine B si trasforma in X facendo cancellare le A, la X e la E(prod. 6− 9)
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 24 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeEsempi V
S =⇒ BRAE =⇒ BaARE =⇒ BaAE =⇒ XaAE =⇒ aXAE =⇒aXE =⇒ a
S ∗=⇒ BRAARAE =⇒ BRAARAARAE =⇒ BaARARAARAE =⇒
BaARARAAaARE =⇒ BaAaARRAAaARE =⇒BaAaARaARAaARE =⇒ BaAaARaARAaAE =⇒BaAaARaAaARaAE =⇒ BaAaAaRAaARaAE =⇒BaAaAaaARaARaAE =⇒ BaAaAaaAaRARaAE =⇒BaAaAaaAaaARRaAE =⇒ BaAaAaaAaaARaRAE =⇒BaAaAaaAaaAaRRAE =⇒ BaAaAaaAaaAaRaARE =⇒BaAaAaaAaaAaRaAE =⇒ BaAaAaaAaaAaaRAE =⇒BaAaAaaAaaAaaaARE =⇒ BaAaAaaAaaAaaaAE =⇒XaAaAaaAaaAaaaAE =⇒ aXAaAaaAaaAaaaAE =⇒aXaAaaAaaAaaaAE =⇒ aaXAaaAaaAaaaAE =⇒aaXaaAaaAaaaAE ∗
=⇒ aaaaaaaaaXAE =⇒ aaaaaaaaaXE =⇒aaaaaaaaa = a9
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 25 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeEquivalenza e Correttezza
Osservazione Dato un linguaggio L, possono esistere diversegrammatiche che lo generanoDue grammatiche G e G′ sono equivalenti sse L(G) = L(G′)In generale, dati un linguaggio L ed una grammatica G, nonesiste un algoritmo in grado di dimostrare che L = L(G):
TeoremaIl problema generale di dimostrare la correttezza di unagrammatica non è risolvibile per via algoritmica
L’equivalenza si può dimostrare per induzioneL ⊆ L(G), i.e. G genera solo stringhe di LL(G) ⊆ L, i.e. L contiene solo stringhe generabili da G
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 26 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeEsercizi
1 Determinare una grammatica che generi {anbn | n > 0}.2 Data G = (Σ,V , S,P) con Σ = {0, 1}, V = {S,A,B} e
P = {S −→ 0B|1A, A −→ 0|0S|1AA, B −→ 1|1S|0BB}determinare L(G).3 Determinare una grammatica che generi {anb2n | n > 0}.4 Determinare una grammatica che generi{akbnc2k | n, k > 0}
5 Data G = ({a, b}, {S}, S,P) conP = {S −→ ε | SS | aSb | bSa}, dimostrare cheL(G) = {w | na(w) = nb(w)}
6 Data G = ({a, b, c}, {S,A}, S,P) conP = {S −→ aSc | A, A −→ bAc | ε} dimostrare cheL(G) = {anbmcn+m | n + m > 0}.
7 Data G = ({a, b, c}, {S,A}, S,P) conP = {S −→ Ab, A −→ Sa}, dimostrare che L(G) = ∅.
8 Definire una grammatica che generi{0n1m2k | n = m ∨m = k} e dimostrarne la correttezza.
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 27 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche Generative
Esempio (6.)Data G = ({a, b, c}, {S,A}, S,P) conP = {S −→ aSc | A, A −→ bAc | ε} dimostrare cheL(G) = {anbmcn+m | n + m > 0}.
Dim.Occorre dimostrare (per induzione):L ⊆ L(G): sulla lunghezza delle derivazioni da S di GL(G) ⊆ L: sulla lunghezza delle stringhe di L
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 28 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeL(G) ⊆ LSi osservi che, essendo P = {S −→ aSc | A, A −→ bAc | ε},ogni forma di frase di G è del tipo:
akSck , con k ≥ 0 oppureakbjAck+j, con k, j ≥ 0
Ogni z ∈ L(G) è generata da derivazioni del tipo:S k
=⇒ akSck 1=⇒ akAck j
=⇒ akbjAcjck 1=⇒ akbjck+j
Quindi z ∈ L.L ⊆ L(G)Sia z = anbmcn+m ∈ L.Può essere generata con una derivazione del tipo:
S n=⇒ anScn 1
=⇒ anAcn m=⇒ anbmAcmcn 1
=⇒ anbmcn+m
Quindi, esistendo una derivazione, z ∈ L(G).N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 29 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGerarchia delle Grammatiche
In base alla forma delle produzioni,si distinguono i tipi seguenti:0 grammatiche generative (a forma di frase), senzalimitazioni:
αAβ −→ ω A ∈ V , α, β, ω ∈ (Σ ∪ V)∗
1 grammatiche dipendenti da contesto (o context-sensitive,CS):αAβ −→ αωβ A ∈ V , α, β ∈ (Σ ∪ V)∗, ω ∈ (Σ ∪ V)+
S −→ ε se S non compare in alcuna parte destra2 grammatiche libere da contesto (o context-free, CF):
A −→ ω A ∈ V , ω ∈ (Σ ∪ V)∗
3 grammatiche lineari destre (o regolari):A −→ sB A,B ∈ V , s ∈ ΣA −→ σ A ∈ V , σ ∈ Σ ∪ {ε}
Un linguaggio è di tipo i se viene generato da una grammatica di tipo iN. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 30 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeTipi di Grammatiche e Classi di Linguaggi I
Esistono linguaggi per cui non esiste una grammaticacorrispondente0 La classe più ampia nell’ambito dei linguaggi descrivibili congrammatiche.
L = {anbf (n) | n > 0}dove f è una qualunque funzione RE [Ausiello et al.,(2003)]Le grammatiche ammettono prod. che accorciano le forme difrase.Quelle che non accorciano si dicono grammatichemonotòne,ossia con produzioni: α −→ β con |α| ≤ |β|Esempi grammatiche G = (Σ,V , S,P)
GquadP = {S −→ aSa|aAb|aAa|ε, aAa −→ a|ε, aaAb −→ b|ε}P = {S −→ aAb, aA −→ aaAb, A −→ ε}(ma il ling. generato è più semplice, quale?)
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 31 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeTipi di Grammatiche e Classi di Linguaggi II
1 Su alcuni testi prod. CS definite come prod. monotone:Per un teorema: i ling. monotoni sono tutti di tipo 1 (anziché0).Trasformando la gramm. monotonaP = {S −→ E | ε,C −→ a, D −→ b,
E −→ aAE | bBE | Ca | Db,Aa −→ aA, Ab −→ bA,Ba −→ aB, Bb −→ bB,AC −→ Ca, BC −→ Cb,AD −→ Da, BD −→ Db}
Esempi G = (Σ,V , S,P)
P = {S −→ aSa|aAb|aAa, aA −→ aa, Ab −→ aab}P = {S −→ aBSc|abc, Ba −→ aB, Bb −→ bb}quale ling. genera ?
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 32 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeTipi di Grammatiche e Classi di Linguaggi III
2 La classe usata per definire i ling. di programmazioneEsempi
G = ({(, )}, {S}, S, {S −→ () | SS | (S)}G = ({+, *, i, (, )}, {E,T, F}, E,P)con P = {E −→ E+T|T, T −→ T*F|F, F −→ i|(E)}
3 Lineari destre: a destra di ogni produzione,e quindi nelle f.d.f. di ogni derivazione, al più unnon-terminale (come simbolo più a destra).Si dicono anche regolari perché i ling. generati sonorappresentabili tramite espressioni regolarilinguaggi finitilinguaggio delle stringhe binarie {0, 1}∗linguaggio delle stringhe su {0, 1} con un numero pari di 1
Esempi
G = ({a, b}, {S}, S, {S −→ aS|b}) genera L = {anb|n ≥ 0}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 33 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeTipi di Grammatiche e Classi di Linguaggi IV
I linguaggi regolari si possono generare anche tramitegrammatiche lineari sinistre, ossia con produzioni del tipo:A −→ β A ∈ V , β ∈ (V · Σ) ∪ Σ ∪ {ε}
G′ = ({a, b}, {S,A}, S, {S −→ Ab|b, A −→ Aa|a}): L(G′) = L
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 34 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeTeorema della Gerarchia I
Teorema (gerarchia)Dato un alfabeto Σdenotate le classi di linguaggi nel seguente modo
Li = {L ⊆ Σ∗ | ∃G grammatica di tipo i : L = L(G)}
risulta: L3 ( L2 ( L1 ( L0L3 REG
L2 CFL1 CS
L0 RE
L3 REGL2 CF
L1 CSL0 RE
Dim. Si dimostra provando la catena di inclusioni:N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 35 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeTeorema della Gerarchia II
(L3 ( L2) Si osservi che L3 ⊆ L2 per definizione, occorre soloprovare l’inclusione stretta usando unlinguaggio separatore, per es. {akbk | k > 0}(L2 ( L1) Per la forma delle produzioni vale L2 ⊆ L1,tranne nel caso di ε-produzioni: A −→ ε con A 6= S
Per il lemma della stringa vuota,∀L ∈ L2 ∃G CF senza ε-regole,tranne S −→ ε se ε ∈ L,tale che L(G) = L
Linguaggio separatore: {akbkck | k > 0}(L1 ( L0) Per definizione L1 ( L0.Linguaggio separatore: L tale che le stringhe di L sianoenumerabili ma non quelle di L̄
∃ML mdT che ∀z ∈ L,ML termina accettando z,mentre ∃z̄ ∈ L̄ per la qualeML divergeN. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 36 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGenerazione della Stringa Vuota I
Per i tipi 1, 2, 3, ε-produzioni sono ridondanti;[Ausiello et al.,(2003)]la generazione della stringa vuota può essere limitata all’assiomaS −→ ε
Se G = (Σ,V , S,P) di tipo 1, 2 o 3 (senza ε-produzioni) generaL, per generare L ∪ {ε} è sufficiente utilizzareG′ = (Σ,V ∪ {S′}, S′,P′) dove
P′ = P ∪ {S′ −→ ε} ∪ {S′ −→ β | S −→ β ∈ P}
Se S non appare nella parte destra di alcuna produzione,si può anche aggiungere S −→ ε senza conseguenzeN. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 37 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGenerazione della Stringa Vuota II
Esempio
Data G = (Σ,V , S,P), conP = {S −→ aBSc|abc, Ba −→ aB, Bb −→ bb} tale cheL(G) = {anbncn|n > 0}.Per generare anche ε = a0b0c0, si definisceG′ = (Σ,V ∪ {S′}, S′,P′) con P′ = {S′ −→ ε|aBSc|abc} ∪ P
Data G = (Σ,V , S,P), conP = {S −→ Ub, U −→ ab|S}si genera L(G) = {abhbb | h ≥ 0}.Aggiungendo S −→ ε a P′, G′ genererebbe, oltre ε, anche lestringhe di {bbk | k ≥ 0}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 38 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGenerazione della Stringa Vuota III
TeoremaData G di tipo 0, esiste G′, ottenuta estendendo con opportuneε-produzioni una grammatica monotona (di tipo 1) equivalente a GDim. (cenni) Si aggiunge X −→ ε con X nuovo NT e sostituiscead ogni φ −→ ψ tale che |φ| > |ψ| > 0 con φ −→ ψ X · · ·X︸ ︷︷ ︸
|φ|−|ψ| volte
EsempioSia G = (Σ,V , S,P) con produzioni monotone tranne AB −→ C.Si può costruire G = (Σ,V ∪ {H}, S,P′), conP′ = P \ {AB −→ C} ∪ {AB −→ CH, H −→ ε}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 39 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGenerazione della Stringa Vuota IV
Nel caso di grammatiche di tipo 2 o 3 l’aggiunta di ε-produzioninon altera il potere generativo delle grammatiche:TeoremaData una grammatica G con produzioni libere (regolari) anchevuote, esiste una grammatica libera (regolare) G′ priva diε-produzioni, tale che:
L(G′) = L(G) \ {ε}
Dim. (cenni)tipo 2: algoritmo basato sull’individuazione dei NT annullabilitipo 3: più sempliceOsservazione Se ε ∈ L basta aggiungere S −→ ε
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 40 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeGenerazione della Stringa Vuota V
Esempi
La grammatica libera con produzioni{S −→ AB|aB|B, A −→ ab|aB, B −→ cX|X, X −→ ε}si modifica in{S −→ AB|aB|B, A −→ ab|aB, B −→ c|ε}e quindi in{S −→ AB|aB|B|A|a|ε, A −→ ab|aB|a, B −→ c}Nella grammatica regolare con produzioni{S −→ bX|aB, B −→ cX, X −→ ε}si elimina la produzione vuota riscrivendo nella forma:{S −→ b|aB, B −→ c}
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 41 / 52
Rappresentazioni Finite per i Linguaggi Grammatiche GenerativeLinguaggi, Grammatiche, Macchine
Riconoscitrici
Tipo Grammatiche Linguaggi Macchine
0 senza ricorsivamente macchinarestrizioni enumerabili (RE) di Turing— ricorsivi decider MdT(si fermano sempre)1 dipendenti da dipendenti da automi LBAcontesto (CSG) contesto (CSL) limitati lineramenteindicizzate indicizzati PDA a stack incorporatistack annidati + lettura pilaa riscrittura di alberi leggermente contestuali PDA a stack incorporatiTAG (mildly CS) EPDA2 libere liberi PDA(CFG) (CFL) non deterministicilibere liberi PDAdeterministiche (LL/LR) deterministici deterministici— a parole annidate FSA per NWLvisibly pushdown (NWL) FNWA3 lineari lineari automa a stati finiti(regolari) (regolari) FSA (NDA)— senza aciclicicicli finito
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 42 / 52
Rappresentazioni Finite per i Linguaggi AutomiAutomi
Modelli astratti di macchinein input su un nastro T , fatto da celle contenenti un simbolociascuna, stringhe su un dato alfabeto d’ingresso Σ
RO o RWlettura L-to-R (con/senza EOF)un simbolo alla voltapossono prevedere anche la produzione di output(analogamente)possono averememoria temporanea S: nastro illimitato,contenente simboli su un (diverso) alfabeto Γ
una unità di controllo a stati finiti determina ilfunzionamento della macchina
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 43 / 52
Rappresentazioni Finite per i Linguaggi AutomiSchema di una Macchina
· · · b b a a a aT
· · ·
q0q1
q2
q3 . . .qnδ
CU
γ1
γ2
γ2
γ3
γ1
S
H
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 44 / 52
Rappresentazioni Finite per i Linguaggi AutomiTransizioni
Ad ogni passo (tempo discreto):l’unità di controllo determina transizioni di stato in base a:
stato corrente qsimbolo in input dal nastro T(contenuto della memoria temp. S)secondo una funzione di transizione δ (programma)può anche (automi più complessi)
cambiare la memoria temp. Sprodurre un output su Tsi muove sul prossimo simbolo su T
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 45 / 52
Rappresentazioni Finite per i Linguaggi AutomiConfigurazioni della Macchina
Configurazione c diM determinata da:1 stato interno corrente dell’automa;2 contenuto di tutti i nastri di memoria;3 posizione di tutte le testine sui nastri.L’applicazione della funzione di transizione ad unaconfigurazione si dice transizione omossa o passocomputazionale dell’automa.δ induce una relazione di transizione tra configurazioni, cheassocia ad una configurazione una (o più di una) configurazionesuccessiva:date due configurazioni ci, cj
ci ` cj
indica che cj deriva da ci (per effetto dell’applicazione4 di δ)4A volte si trova `δ o `M , per maggiore precisione.N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 46 / 52
Rappresentazioni Finite per i Linguaggi AutomiComputazioni
Alcune configurazioni sono definite di accettazione.Tutte le altre sono considerate di non accettazione (o dirifiuto)Una computazione eseguita daM a partire da una config.iniziale c0 è una sequenza c0, c1, c2, . . . tale che ∀i : ci ` ci+1.∗` indica la chiusura transitiva e riflessiva della relazione `Se c0 ∗` cn con una seq. finita (massimale5)allora la computazione termina:computazione di accettazione se cn è una config. diaccettazione,altrimenti è una computazione di rifiuto
5ossia tale che 6 ∃c : cn∗` c.
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 47 / 52
Rappresentazioni Finite per i Linguaggi AutomiAutomi – Determinismo
deterministico ogni passo è determinato univocamente dallaconfigurazione correntec0 c1 c2 c3 c4 c5 · · ·
non-deterministico la configurazione corrente può determinaretransizioni alternative
c0 c1 c2
c3
c4
c5 · · ·
c6
c7
c8 · · ·
c9 · · ·
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 48 / 52
Rappresentazioni Finite per i Linguaggi AutomiTipologie di Automi
accettori6 output determinato dallo stato raggiunto (stati finali)decidono se la stringa sul nastro appartiene adun linguaggiorisposta sì/no
trasduttori in base alla stringa in input, producono una stringain output
6detti anche riconoscitori.N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 49 / 52
Rappresentazioni Finite per i Linguaggi AutomiRiconoscitore
q0 q1
q2
l,u
n
l,n,u
l,n,u
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 50 / 52
Rappresentazioni Finite per i Linguaggi AutomiTrasduttore
q0 q1(0,0)/0
(0,1)/1
(1,0)/1
(1,1)/0 (0,1)/0
(1,0)/0
(1,1)/1
(0,0)/1
N. Fanizzi Linguaggi di prog.+Lab Introduzione: Linguaggi Formali 10 marzo 2014 51 / 52
Riferimenti
Ausiello G.; D’Amore F.; Gambosi G. 2003.Linguaggi, Modelli, Complessità.FrancoAngeli.Cohen D. I. 1996.Introduction to Computer Theory.Wiley.Hopcroft J. E.; Motwani R.; Ullman J. D. 2009.Automi, Linguaggi e Calcolabilità.Pearson Italia, 3a edizione.Linz P. 2012.An Introduction to Formal Languages and Automata.Jones & Bartlett, 5a edizione.Moll R. N.; Arbib M. A.; Kfoury A. J. 1988.An introduction to formal language theory.Springer.Sipser 2005.Introduction to the theory of computation.Thomson, 2a edizione.Sudkamp 2006.Languages and Machines.Addison-Wesley, 3a edizione.