• Non ci sono risultati.

Modelli operazionali non deterministici (1)

N/A
N/A
Protected

Academic year: 2021

Condividi "Modelli operazionali non deterministici (1)"

Copied!
39
0
0

Testo completo

(1)

Non determinismo 1

Modelli operazionali non deterministici (1)

Di solito si pensa a un algoritmo come a una

sequenza di operazioni ben determinata

Dato uno stato e un ingresso, non c’è dubbio sul prossimo passo

Esempio: confron@amo

if x>y then max:=x else max:=y

con

if

x>=y then max:=x x<=y then max:=y fi

(2)

Non determinismo 2

Modelli operazionali non deterministici (2)

• E’ solo una questione di eleganza?

Prendiamo il costrutto case del Pascal:

perché non considerare anche qualcosa del genere?

case

x=y then S1 z>y+3 then S2

then

endcase

(3)

Non determinismo 3

Ricerca dicotomica

Altra forma di non determinismo solitamente nascosta

?

(4)

Non determinismo 4

Algoritmi di ricerca

• Gli algoritmi di ricerca sono sostanzialmente una “simulazione” di algoritmi non

deterministici

L’elemento cercato sta nella radice?

Se sì, bene Altrimenti

Cerca nel sottoalbero sinistro Cerca nel sottoalbero destro

• La scelta della priorità tra cammini è spesso arbitraria

(5)

Non determinismo 5

In conclusione

Il non determinismo (ND) è un modello di computazione o quantomeno un modello di computazione parallela

Ada e altri linguaggi concorrenti lo sfruttano

E’ un’astrazione utile per descrivere problemi e algoritmi di ricerca

Può essere applicata a vari modelli computazionali

Importante: i modelli ND non vanno confusi con i modelli stocastici

(6)

Non determinismo 6

Aggiunta del non determinismo

δ(q1,a)= {q2, q3}

q1

q2

q3 a

a

(7)

Non determinismo 7

FSA non deterministici

Un FSA non determinis2co (NFA) è una

• tupla

<Q, I, δ , q0, F>, dove

Q, I, q0, F sono defini2 come in un FSA determinis2co (DFA)

δ: Q I → P(Q)

Che cosa succede a

• δ*?

(8)

Non determinismo 8

Sequenza di mosse

δ* è definito induttivamente da d

Esempio:

δ(q1,a) = {q2, q3}, δ(q2,b) = {q4, q5}, δ(q3,b) ={q6, q5}

→ δ*(q1,ab) = {q4, q5, q6}

!

(q,y) δ

q'

*

*

*

i) , δ(q' y.i)

(q, δ

{q}

ε) (q, δ

Î

=

=

q1

q2

q3 a

a

q4

q5

q6 b

b b

b

(9)

Non determinismo 9

Condizione di accettazione

x∈L ⇔ δ*(q0,x)∩F ≠ ∅

Tra le varie possibili esecuzioni (con lo stesso ingresso) dell’NFA, è sufficiente che una di

esse vada a buon fine per accettare la stringa di ingresso

• Non determinismo esistenziale

- C’è anche un’interpretazione universale:

δ*(q0,x)⊆F

(10)

Non determinismo 10

DFA e NFA

A partire da q1 e leggendo ab l’automa raggiunge uno stato che appartiene all’insieme {q4, q5, q6}

Chiamiamo ancora “stato” l’insieme di possibili stati in cui l’NFA può trovarsi durante l’esecuzione

q1

q2

q3 a

a

q4

q5

q6 b

b b

b

(11)

Non determinismo 11

Formalmente

NFA e DFA hanno lo stesso potere espressivo

Dato un NFA, si può sintetizzare automaticamente un DFA come segue

Se AND = <Q, I, d, q0, F> allora AD = <QD, I, dD, q0D, FD>, dove

QD = P (Q )

q0D = {q0}

FD = {qD| qD QD qD∩F ≠∅}

δD(qD,i) = δ(q,i)

q∈q

D

(12)

Non determinismo 12

Esempio (1)

Trasformare il seguente NFA nel DFA equivalente

q0 0 q1

q0 0 q2

q0 1 q1

q1 0 q3

q1 1 q3

q1 1 q1

q2 0

q2 1 q0

q3 0 q2

q3 1 q0

q3 q0

q1

q2

0 1

0,1

1

1

0,1

0

(13)

Non determinismo 13

Esempio (2)

Procediamo ricorsivamente

q0 0 q1

q0 0 q2

q0 1 q1

q1 0 q3

q1 1 q3

q1 1 q1

q2 0

q2 1 q0

q3 0 q2

q3 1 q0

q0 0 q12

q0 1 q1

q1 0 q3

q1 1 q13

q2 0

q2 1 q0

q3 0 q2

q3 1 q0

q12 0 q3

q12 1 q013

q13 0 q23

q13 1 q013

q013 0 q123

q013 1 q013

q23 0 q2

q23 1 q0

q123 0 q23

q123 1 q013

(14)

Non determinismo 14

Esempio (3)

Graficamente

q3 q0

q1

q2 0

1 0,1

1

1 0,1

0 q0 q1

q12

q3 q2

q13

q013

q23

q123

1 0 0

1

0

1

0

0 0 1

1

0

0 1

0 1

1

(15)

Non determinismo 15

Perché il ND?

• Gli NFA non sono più potenti dei DFA, ma non sono inutili

Può essere più semplice progettare un NFA

Possono essere esponenzialmente più piccoli per quanto riguarda il numero di stati

• Esempio: un NFA con 5 stati diventa nel peggiore dei casi un FSA con 25 stati

(16)

Non determinismo 16

TM non deterministiche

Per definire una TM non determinis6ca

• (NTM),

occorre cambiare la funzione di transizione e la funzione di traduzione

Tu> gli altri elemen6 sono come nella (D)TM

La funzione di transizione è

δ: (Q-F) x I x Γk

P

(Q x Γk x {R,L,S}k+1)

e la funzione di uscita

η: (Q-F) x I x Γk

P

(O x {R,S})

(17)

Non determinismo 17

Albero di computazione

c32

c0

c22 c21

c13 c12

c11

c26 c25

c23 c24

c31 ckj cim

C di accettazione C di arresto ma non di accettazione

Computazione non finita

(18)

Non determinismo 18

Condizione di accettazione

Una stringa x

• ∈I* è acce8ata da una NTM se e solo se esiste una computazione che termina in uno stato di acce8azione

Sembrerebbe che il problema di acce8are una

stringa si possa ridurre alla visita di un albero di computazione

Come dovremmo eseguire la visita?

Che rapporto c’è tra DTM e NTM?

(19)

Non determinismo 19

Visita dell’albero di computazione

• Esistono diverse modalità di visita:

In profondità (Depth-first) In ampiezza (Breadth-first)

• Una visita in profondità non può funzionare per il nostro problema perché l’albero di

computazione potrebbe avere un cammino infinito e l’algoritmo potrebbe “bloccarsi” in esso

• Dovremmo adottare un algoritmo di visita in ampiezza

(20)

Non determinismo 20

DTM e NTM

Possiamo costruire una DTM che visita un albero livello dopo livello?

E’ un esercizio lungo (e noioso), ma si può fare

Possiamo costruire una DTM che stabilisce se una NTM riconosce una stringa x

Data una NTM, possiamo costruire una DTM equivalente

Il ND non aggiunge potere espressivo alle TM

(21)

Non determinismo 21

ε-mosse e PDA

Le

• ε-mosse avevano il seguente vincolo:

Se δ(q,ε,A)≠⊥, allora δ(q,i,A)=⊥ ∀i∈I Senza questo vincolo, la presenza di

• ε-mosse

renderebbe i PDA intrinsecamente non determinisGci

q1

q2

q3 i, A/a

e, A/b

(22)

Non determinismo 22

Aggiunta del non determinismo ai PDA

• Rimuovere il vincolo rende già i PDA non deterministici

• Inoltre possiamo avere non determinismo cambiando la funzione di transizione di un PDA e di conseguenza:

Le transizioni tra configurazioni La condizione di accettazione

(23)

Non determinismo 23

Definizione

Un PDA non deterministico (NPDA) è una tupla

<Q, I, Γ, δ, q0, Z0, F>

Q, I, Γ, q0, Z0, F come nel (D)PDA

δ è la funzione di transizione definita come

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

P

F(Q Γ*)

Cos’è la F in PF? Perché F?

(24)

Non determinismo 24

Funzione di transizione

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

P

F(Q Γ*)

• P

F indica i sottoinsiemi finiti di Q Γ*

Perché non l’abbiamo indicato per le NTM?

• Graficamente:

q1

q2

q3 i, A/a

i, A/b

(25)

Non determinismo 25

Transizione tra configurazioni

La relazione ⊢ su Q I* Γ* Q I* Γ* è definita da c=<q,x,γ> ⊢ c’=<q’, x’, γ’> se e solo se

Caso 1

x=iy, x’=y

γ=

Aβ, γ’=αβ

<q’,

α>∈δ(q,i,A)

Caso 2

x’=x

γ=

Aβ, γ’=αβ

<q’,

α>∈δ(q,ε,A)

(26)

Non determinismo 26

Condizione di accettazione

• Dato un NPDA P

∀x∈I* (x∈L(P) ⇔ 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 di ingresso dev’essere letta interamente

(27)

Non determinismo 27

Effetti del non determinismo

Il ND non aggiunge potere espressivo a

TM

FSA

Ne aggiunge ai DPDA?

(28)

Non determinismo 28

NPDA e DPDA (1)

Ovviamente un NPDA può riconoscere tu; i

linguaggi riconoscibili con un DPDA Il ND consente

quindi gli NPDA possono riconoscere {anbn | n ≥1}

U {anb2n | n ≥1}

q1

q2

q3 i, A/a

i, A/b

(29)

Non determinismo 29

{a

n

b

n

| n ≥1} U {a

n

b

2n

| n ≥1}

q0

q1

q3 q4

q5

a,Z0/AAZ0 a,A/AAA

b,A/e

b,A/e

e,A/e b,A/e

, Ze0 /Z0 e,Z0/Z0

b,A/e

Ramo per anbn Ramo per anb2n

(30)

Non determinismo 30

NPDA e DPDA (2)

I linguaggi riconoscibili da NPDA si chiamano linguaggi non contestuali (context-free)

Linguaggi regolari

Linguaggi riconoscibili da DPDA

anbn∪anb2n

Linguaggi riconoscibili da NPDA

(31)

Non determinismo 31

NPDA e TM

(a) e (c): NO!

Una (N)TM può simulare un NPDA usando il nastro come una pila

(d): NO!

La pila è ancora una memoria distruttiva anbncnnon è riconoscibile da un NPDA

TM NPDA

O O O

?

(a) (b) (c) (d)

(32)

Non determinismo 32

Il bersaglio

Linguaggi regolari

Linguaggi non contestuali deterministici

Linguaggi non contestuali

Linguaggi

ricorsivamente enumerabili

(33)

Non determinismo 33

Proprietà di chiusura nei DPDA

• Nei DPDA abbiamo

Chiusura rispetto al complemento

Non chiusura rispetto a unione, intersezione e differenza

• Cambiare il potere espressivo dell’automa può cambiarne il comportamento rispetto alle

operazioni!

(34)

Non determinismo 34

Unione (1)

Gli NPDA sono chiusi rispetto all’unione

Intuizione:

Dati due NPDA, P1 e P2, possiamo sempre costruire un NPDA che rappresenti l’unione creando un nuovo stato iniziale che è connesso a entrambi gli stati

iniziali di P1 e P2 con una ε-mossa

q1

q2

q3

i, A/a

i, A/b

(35)

Non determinismo 35

Unione (2)

q’0

q’’0

q’0

q’’0 q0

εZ0|Z0

εZ0|Z0

(36)

Non determinismo 36

Intersezione

La chiusura rispe6o all’intersezione con9nua a

non valere

Consideriamo

{a

nbnc*} {a

*bncn}

Entrambi sono riconoscibili mediante (N)PDA, ma

{anbnc*}∩{a*bncn}={anbncn} non è riconoscibile da alcun NPDA

(37)

Non determinismo 37

Complemento (1)

• Se una classe di linguaggi è chiusa rispetto all’unione ma non rispetto all’intersezione, non può essere chiusa rispetto al

complemento

Possiamo scrivere l’intersezione in termini di unione e complemento

• Gli NPDA non sono chiusi rispetto al complemento

(38)

Non determinismo 38

Note

Se una macchina è determinis4ca e la sua

computazione termina, il complemento si può o:enere

Completando la macchina

Scambiando gli sta4 di acce:azione con quelli di

non acce:azione

Il non determinismo, come la non

terminazione (computazione infinita) rende questo approccio inapplicabile

(39)

Non determinismo 39

Complemento (2)

Per gli NPDA, le computazioni possono sempre

• essere fa>e terminare (come per i DPDA)

Tu>avia, il ND può causare questo problema:

Si possono avere due computazioni:

c0=<q0,x,Z0> ⊢* c1=<q1,ε,γ>

c0=<q0,x,Z0> ⊢* c2=<q2,ε,γ>

con q1∈F e q2∉F

→ anche se scambiamo gli staS di acce>azione e non acce>azione, x è comunque acce>ato!

Riferimenti

Documenti correlati

Prima di capire se un coniuge può tornare sui propri passi, devi sapere che la legge non parla mai di divorzio, ma di scioglimento del matrimonio civile (celebrato in Comune) e di

Infatti, nel funzionamento lineare, se il guadagno intrinseco dell’amplificatore operazionale è infinitamente grande, a una tensione finita in uscita v out deve corrispondere

Lo stesso task di aggancio del sintagma preposizionale viene svolto:. automaticamente con l’approccio

ActoPiemonte vuole far chiarezza sulle molteplici implicazioni cliniche relative alla presenza di mutazione patogenetica di BRCA1-BRCA2: come e quando ricercare la mutazione

Disegnare un automa che riconosca un numero pari di A, deve essere riconosciuta anche la stringa contenete 0 (nessuna) A..

Dalla (2) si osserva che la corrente al morsetto “+” dell’operazionale è sempre nulla, per cui la presenza dell’amplificatore operazionale non ha alcun influsso sul

Possiamo ad esempio immaginare un agevole consenso trasversale ai diversi schieramenti sul privilegio dell’apprendistato rispetto ai contratti a termine per un ingresso

2 E che, a sua volta, costituisce il cuore pulsante di una concezione (che Brigaglia chiama) pragmatica del potere, che si ritroverebbe, appunto, solo nelle opere anni ’80: