• Non ci sono risultati.

Aumentare il potere degli FSA

N/A
N/A
Protected

Academic year: 2021

Condividi "Aumentare il potere degli FSA"

Copied!
49
0
0

Testo completo

(1)

PDA 1

Aumentare il potere degli FSA

• Punto di vista meccanico

Nastro d’ingresso

Nastro d’uscita

Dispositivo di controllo a stati finiti

(2)

PDA 2

Ora “arricchiamolo”

Nastro d’ingresso

Nastro d’uscita

Dispositivo di controllo a stati finiti

x

a

q p

A B

Z0

Memoria a pila (stack)

(3)

PDA 3

Cos’è una pila?

I nuovi simboli sono inseriti in cima

La pila viene letta dalla cima

→ politica LIFO Un simbolo letto viene estratto dalla pila

Z0

(4)

PDA 4

Esempio

Inserire nel

seguente ordine i simboli

• a

• b

• c

Z0

(5)

PDA 5

Esempio

Inserire nel

seguente ordine i simboli

• a

• b

• c

Z0 a

(6)

PDA 6

Esempio

Inserire nel

seguente ordine i simboli

• a

• b

• c

Z0 a b

(7)

PDA 7

Esempio

Inserire nel

seguente ordine i simboli

• a

• b

• c

Z0 a b c

(8)

PDA 8

Esempio

Inserire nel

seguente ordine i simboli

• a

• b

• c

Z0 a b c

Leggere dalla pila

(9)

PDA 9

Esempio

Inserire nel

seguente ordine i simboli

• a

• b

• c

Z0 a b c

Leggere dalla pila c

(10)

PDA 10

Automi a pila

• Gli automi a stati finiti possono essere arricchiti con una pila

→ Pushdown Automata (PDA)

– in italiano anche AP

• I PDA differiscono dagli automi a stati finiti in due modi:

– Possono usare la cima della pila per decidere quale transizione effettuare

– Possono manipolare la pila durante una transizione

(11)

PDA 11

Mosse di un PDA

In base a

simbolo letto dall’ingresso (ma si può anche non leggere nulla)

simbolo letto dalla cima della pila stato del dispositivo di controllo

il PDA

cambia il proprio stato

sposta in avanti la testina di lettura

sostituisce il simbolo letto dalla pila con una stringa a

(eventualmente vuota)

(12)

PDA 12

Accettazione

La stringa d’ingresso x è riconosciuta (accettata) se

– il PDA la legge completamente

– quando raggiunge la fine di x si trova in uno stato di accettazione

Nastro d’ingresso

Dispositivo di controllo a stati finiti

A

q p B

Z0

Memoria a pila

(13)

PDA 13

PDA: un primo esempio

L={a

n

b

n

|n>0}

q0 q3

a,A/AA

a,Z0/ BZ0 b,A|e

b,A|e

b,B|e

q2 q1

a,B/AB

b,B|e

(14)

PDA 14

Esempio (2)

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|e q2

q1

a,B/AB b,B|e

a a a b b b

Z0

(15)

PDA 15

Esempio (2)

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|e q2

q1

a,B/AB b,B|e

a a a b b b

Z0 B

(16)

PDA 16

Esempio (2)

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|e q2

q1

a,B/AB b,B|e

a a a b b b

Z0 B A

(17)

PDA 17

Esempio (2)

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|e q2

q1

a,B/AB b,B|e

a a a b b b

Z0 B A A

(18)

PDA 18

Esempio (2)

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|e q2

q1

a,B/AB b,B|e

a a a b b b

Z0 B A

(19)

PDA 19

Esempio (2)

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|e q2

q1

a,B/AB b,B|e

a a a b b b

Z0 B

(20)

PDA 20

Esempio (2)

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|e q2

q1

a,B/AB b,B|e

a a a b b b

Z0

(21)

PDA 21

Formalmente

Un PDA è una tupla <Q, I, Γ, δ, q

0

, Z

0

, F>

– Q è un insieme finito di stati – I è l’alfabeto di ingresso

– Γ è l’alfabeto di pila

– δ è la funzione di transizione – q0∈Q è lo stato iniziale

– Z0∈Γ è il simbolo iniziale di pila – F⊆Q è l’insieme di stati finali

(22)

PDA 22

Funzione di transizione

• δ è la funzione di transizione

• δ: Q (I∪{ε}) Γ→Q Γ

*

– δ(q, i, A)=<p, α>

• Notazione grafica:

i,A/a

q p

(23)

PDA 23

Note

• Q, I, q

0

e F sono definite come negli FSA

• δ è una funzione parziale

• Z

0

è il simbolo iniziale di pila, ma non è essenziale

– E’ utile per semplificare le definizioni

• δ(q, ε, A)=<p, α>?

– Una “ε-mossa” è una mossa spontanea – ε non significa che l’ingresso sia vuoto!

(24)

PDA 24

Esempio

Ancora L={a

n

b

n

|n>0}

q0 q3

a,A/AA a,Z0/ AZ0

b,A/e

b,A/e

e, Z0 / Z0 q2

q1

(25)

PDA 25

Informalmente

• Una configurazione è una generalizzazione della nozione di stato

• Una configurazione mostra

– lo stato corrente del dispositivo di controllo

– la porzione della stringa d’ingresso che parte dalla testina

– la pila

• E’ una fotografia del PDA

(26)

PDA 26

Formalmente

• Una configurazione c è una tripla <q, x, γ>

– q∈Q è lo stato corrente del dispositivo di controllo – x∈I* è la porzione non letta della stringa d’ingresso – γ∈Γ* è la stringa di simboli nella pila

• Convenzione per la pila

– Alto-sinistra, basso-destra

– Si può anche fare nell’altro modo, basta essere coerenti!

(27)

PDA 27

Esempio

• c=<q

1

, abbb, ABZ

0

>

q0 q3

a,A/AA a,Z0/ BZ0

b,A|e

b,A|e

b,B|ε q2

q1

a,B/AB b,B|e

a a a b b b

Z0 B A

(28)

PDA 28

Transizioni

• Le transizioni tra configurazioni (⊢) dipendono dalla funzione di transizione

– La funzione di transizione mostra come

commutare da una fotografia di un PDA a un’altra

• Ci sono due casi

– La funzione di transizione è definita per un simbolo d’ingresso

– La funzione di transizione è definita per una ε- mossa

(29)

PDA 29

Transizioni: caso 1

• δ(q, i, A) = <q’,α> è definita

• c=<q,x,γ> ⊢ c’=<q’, x’, γ’>

– γ=Aβ – x=iy

allora

– γ’= αβ – x’=y

(30)

PDA 30

Transizioni: caso 2

• δ(q, ε, A) = <q’,α> è definita

• c=<q,x,γ> ⊢ c’=<q’, x’, γ’>

– γ=Aβ

allora

– γ’= αβ – x’=x

(31)

PDA 31

Nota importante

• Una ε-mossa è una mossa spontanea

– Se δ(q,ε,A)≠⊥ e A è il simbolo in cima alla pila, la transizione può sempre essere eseguita

• Se δ(q,ε,A)≠⊥, allora ∀i∈I δ(q,i,A)=⊥

– Se questa proprietà non fosse soddisfatta, entrambe le transizioni sarebbero consentite – Non determinismo

(32)

PDA 32

Condizione di accettazione

• Sia ⊢* la chiusura riflessiva e transitiva della relazione

Condizione di accettazione:

∀x∈I* (x∈L ⇔ c0=<q0,x,Z0> ⊢* cF=<q,ε,γ> e q∈F)

• Informalmente, una stringa è accettata da un PDA se c’è un cammino coerente con x sul PDA che va dallo stato iniziale a uno stato finale

La stringa d’ingresso dev’essere letta interamente

(33)

PDA 33

Esempio

• L = {wcw

R

| w ∈ {a,b}

+

}

– Occorre usare una politica LIFO per memorizzare w

q0 q1 q2

b ,A /B A b ,B /B B a ,A /A A a ,B /A B

a ,Z0/A Z0

b ,Z0/B Z0

c ,B /B c ,A /A

a ,A /e b ,B /e

e,Z0/Z0

PUSH

POP

(34)

PDA 34

PDA vs FSA (1)

• Sappiamo che a

n

b

n

non può essere riconosciuto da alcun FSA

– Pumping Lemma

ma può essere riconosciuto da un PDA

• Ogni linguaggio regolare può essere riconosciuto da un PDA

– Dato un FSA A=<Q,I,δ,q0,F> è immediato costruire un PDA A’=<Q’,I’,Γ’,δ’,q0’,Z0’,F’> tale che L(A)=L(A’)

(35)

PDA 35

PDA vs FSA (2)

• I PDA sono più espressivi degli FSA

Linguaggi regolari

Linguaggi riconosciuti dai PDA

anbn wcwR

(36)

PDA 36

Cicli nei PDA

• A differenza degli FSA, i PDA potrebbero non fermarsi dopo un numero finito di mosse

– Sono possibili “cicli” di ε-mosse – Esempio:

• Però i PDA ciclici non aggiungono potere espressivo alla classe dei PDA

– Possiamo sbarazzarci di tali PDA – Vediamo come…

a,Z0|AZ0

e,A|AA q

(37)

PDA 37

PDA aciclici

<q,x,α>⊢

*d

<q’,y,β> significa che

<q,x,α>⊢

*

<q’,y,β> e, per β=Zβ’, δ(q’,ε,Z)=⊥

*d è una sequenza di mosse che ha bisogno di un simbolo per procedere

• Un PDA è aciclico se e solo se

∀ x∈I

*

∃ q∃γ tali che <q

0

,x,Z

0

>⊢

*d

<q,ε,γ>

– legge sempre l’intera stringa d’ingresso e poi si ferma – cioè non può ciclare indefinitamente con ε-mosse

• Ogni PDA può essere trasformato in un PDA

aciclico equivalente

(38)

PDA 38

Complemento

• La classe dei linguaggi riconosciuti dai PDA è chiusa rispetto alla complementazione

• Il complemento può essere costruito

– eliminando i cicli

– aggiungendo stati di errore

– occupandosi di ε-mosse che collegano stati finali e non finali

– scambiando gli stati finali con i non finali

(39)

PDA 39

PDA aciclici

• L’eliminazione dei cicli è essenziale, altrimenti si potrebbe non raggiungere mai la fine della stringa

• Che succede quando ci sono sequenze di ε-mosse che attraversano stati finali e non finali (e l’ingresso è letto interamente)?

Potremmo voler imporre l’accettazione solo alla fine di una sequenza (necessariamente finita) di ε-mosse

Altrimenti scambiare gli stati finali e non finali per ottenere il complemento non funziona

• Con queste precauzioni siamo sicuri che o il PDA o il

suo complemento accetterà la stringa

(40)

PDA 40

Unione

• La classe di linguaggi riconosciuti dai PDA non è chiusa rispetto all’unione

• Non esiste alcun PDA che riconosca {anbn|n≥1}∪{anb2n|n≥1}, ma

{anbn|n≥1} è riconoscibile da PDA {anb2n|n≥1} è riconoscibile da PDA

• Schema intuitivo della dimostrazione

Se procedo come per riconoscere {anbn|n≥1} ma trovo una stringa di {anb2n|n≥1}, mi rimangono n b da leggere, ma ho ormai perso l’informazione sul valore di n

Se procedo come per riconoscere {anb2n|n≥1} ma trovo una stringa di {anbn|n≥1} avrò n simboli rimasti nella pila, ma non ho più modo di verificare se sono proprio n

(41)

PDA 41

Altre operazioni

• La classe dei linguaggi riconosciuti da PDA non è chiusa rispetto all’intersezione

A∪B=(Ac∩Bc)c

Poiché i linguaggi dei PDA sono chiusi rispetto al

complemento, se fossero chiusi rispetto all’intersezione dovrebbero anche essere chiusi rispetto all’unione

• La classe dei linguaggi riconosciuti da PDA non è chiusa rispetto alla differenza

A∩B=A-Bc

Poiché i linguaggi dei PDA sono chiusi rispetto al

complemento, se fossero chiusi rispetto alla differenza dovrebbero anche essere chiusi rispetto all’intersezione

(42)

PDA 42

Definizione

• Un trasduttore a pila (pushdown transducer o PDT) è una tupla <Q, I, Γ, δ, q

0

, Z

0

, F, O, η>

– Q è un insieme finito di stati – …

– F⊆Q è l’insieme di stati finali – O è l’alfabeto di uscita

– η: Q (I∪{ε}) Γ→O*

i,A/a,w

q p

δ(q,i,A)=<p,α>

η(q,i,A)=w

(43)

PDA 43

Note

• Q, I, Γ, δ, q

0

, Z

0

e F sono definiti come nei PDA

“accettori”

• η è definita solo dove è definita δ

• La pila può essere necessaria per due ragioni:

– La richiede il linguaggio da riconoscere – La richiede la traduzione

(44)

PDA 44

Configurazione

Una configurazione c è una tupla <q, x, γ, z>

– q∈Q è lo stato corrente del dispositivo di controllo – x∈I* è la porzione non letta della stringa d’ingresso – γ∈Γ* è la stringa di simboli nella pila

– z è la stringa già scritta sul nastro di uscita

(45)

PDA 45

Transizioni

c=<q, x, γ, z> ⊢ c’=<q’, x’, γ’, z’>

Caso 1: δ(q, i, A) = <q’,α> è definita e η(q, i, A)=w

γ=Aβ

x=iy

allora

γ’= αβ

x’=y

z’=zw

Caso 2: δ(q, ε, A) = <q’,α> è definita e η(q, ε, A)=w

γ=Aβ

x=y

allora

γ’= αβ

x’=y

z’=zw

(46)

PDA 46

Condizione di accettazione

• ∀ x∈I

*

(x∈L ∧ z= τ(x) ⇔

c

0

=<q

0

,x,Z

0

, ε> ⊢

*

c

F

=<q,ε,γ,z> e q∈F)

• Notare che la traduzione di x è definita solo se

la stringa x è accettata

(47)

PDA 47

Esempio

L={wc|w∈{a,b}

+

} e τ(wc)=w

R

a,Z0/ AZ0,e a,A/ AA,e a,B/ AB,e b,Z0/ BZ0,e b,A/ BA,e b,B/ BB,e

c,A/ e, a c,B/ e, b

e,A/ e, a e,B/ e, b

e,Z0/ Z0,e

q0 q1 q2

(48)

PDA 48

PDA e compilatori

• I PDA sono nel cuore dei compilatori

• La memoria a pila ha una politica LIFO

• La politica LIFO è adeguata per analizzare strutture sintattiche nidificate

– Espressioni aritmetiche – Istruzioni composte

– Record di attivazione – …

(49)

PDA 49

Esempio

PDA per riconoscere stringhe ben parentetizzate

(()(()())) OK )())())) NO

Per casa: provare a costruire un PDA che riconosca il complemento di questo linguaggio

(,P/ PP ),P/ e

e,Z0/ Z0

q0 (,Z0/ PZ0 q1 q2

Riferimenti

Documenti correlati

-) Di prendere atto conseguentemente che l’eventuale conguaglio tra i costi risultanti dal piano economico e finanziario del servizio rifiuti (PEF) per il 2020, validato

Formazione embriologica da cui origina il cono midollare, il filum terminale e le radici nervose del midollo spinale lombare inferiore e sacrale.. Durante lo sviluppo va incontro

Un campo si dice semiriverberante quando al suo interno esistano contemporaneamente zone di campo libero (in prossimità della sorgente, dove prevale il contributo

Siccome la sorgente non cessa subito dopo di emettere, come succedeva con la sorgente impulsiva, ma continua ad erogare energia, il livello rimane costante fino al

5 – calcolo del potere fonoisolante a partire dai livelli sonori nei 2 ambienti Il valore di R, e quindi del coefficiente di trasmissione della parete &#34;t&#34;, descrive

Osservando la figura, si nota come la pendenza della curva integrata cambi avvicinandosi al termine della risposta all’impulso, poiché viene integrato anche il rumore

Un campo si dice semiriverberante quando al suo interno esistano contemporaneamente zone di campo libero (in prossimità della sorgente, dove prevale il contributo

Un campo si dice semiriverberante quando al suo interno esistano contemporaneamente zone di campo libero (in prossimità della sorgente, dove prevale il contributo