Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Diagramma degli stati

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[11] Re: Diagramma degli stati

Messaggioda Foto UtenteShika93 » 14 feb 2014, 11:35

Può tornare indietro da C a B?
In B riconosce il primo 0; in C riconosce 1 e non dovrebbe andare ad un altro stato a parte per riconoscere l'ultimo 0?
Può stare su uno stato già utilizzato?

Chiedo perché nelle mie dispense c'è un esempio, riconoscere la sequenza 1101 e la fa così

Immagine

Infatti da A a B riconosce il primo 1; da B a C riconosce il secondo 1; da C a D riconosce lo 0 e per riconoscere l'ultimo 1 torna a B perché si chiedeva di riconoscere la sequenza nella stringa 1101101 dove questa sequenza appare due volte con un 1 in comune (a metà)

Se fosse come nello schema che hai fatto tu, per riconoscere il secondo 1 potrebbe stare in B con 1/0

c1b8 ha scritto:Potrei sbagliare, ma quando sono in D e ricevo uno '0' io sarei rimasto in D, non sarei tornato in A.


Sono d'accordo. Per tornare in A non dovrei avere 1/0? D riconosce già 0
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

0
voti

[12] Re: Diagramma degli stati

Messaggioda Foto Utentec1b8 » 14 feb 2014, 11:45

Shika93 ha scritto: per riconoscere l'ultimo 1 torna a B perché si chiedeva di riconoscere la sequenza nella stringa 1101101 dove questa sequenza appare due volte
No!
Non torna in B perché si chiede di riconoscere quella sequenza doppia, anche se la sequenza fosse stata 1101001001101 sarebbe dovuto tornare in B.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

1
voti

[13] Re: Diagramma degli stati

Messaggioda Foto UtenteDanteCpp » 14 feb 2014, 12:02

c1b8 ha scritto:Potrei sbagliare, ma quando sono in D e ricevo uno '0' io sarei rimasto in D, non sarei tornato in A.


Hai ragione, per riconoscere le sequenze del tipo 00010:

D = \delta(D,0)
0 = \omega(D,0)

Dove omega è la funzione delle uscite definita:

\omega : Q \times \Sigma \mapsto \Lambda

e \Lambda l'alfabeto delle uscite.
Avatar utente
Foto UtenteDanteCpp
4.730 3 9 13
Master EY
Master EY
 
Messaggi: 1106
Iscritto il: 15 dic 2011, 18:51

0
voti

[14] Re: Diagramma degli stati

Messaggioda Foto UtenteShika93 » 14 feb 2014, 12:41

c1b8 ha scritto:
Shika93 ha scritto: per riconoscere l'ultimo 1 torna a B perché si chiedeva di riconoscere la sequenza nella stringa 1101101 dove questa sequenza appare due volte
No!
Non torna in B perché si chiede di riconoscere quella sequenza doppia, anche se la sequenza fosse stata 1101001001101 sarebbe dovuto tornare in B.

perché? Non poteva tornare in A allora? Una volta conclusa la sequenza, ricomincio da capo per un'altra scansione...
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

1
voti

[15] Re: Diagramma degli stati

Messaggioda Foto UtenteDanteCpp » 14 feb 2014, 12:43

Cosi facendo non riesci a riconoscere le parole sovrapposte, ma solo quelle concatenate...
Avatar utente
Foto UtenteDanteCpp
4.730 3 9 13
Master EY
Master EY
 
Messaggi: 1106
Iscritto il: 15 dic 2011, 18:51

0
voti

[16] Re: Diagramma degli stati

Messaggioda Foto UtenteShika93 » 14 feb 2014, 12:54

Quindi è come ho detto sopra, no? Per riconoscere l'1 in mezzo e avere due sequenze riconosciute anzichè solo la prima o solo l'ultima...
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

0
voti

[17] Re: Diagramma degli stati

Messaggioda Foto UtenteDanteCpp » 14 feb 2014, 13:01

L'automa che ho proposto riconosce alla perfezione l'input d'esempio, poi con la correzione di c1b8 riconosce anche le parole del tipo 00010. Non capisco cosa non ti convinca, comunque per non buttare parole al vento potresti disegnare il graffo, cosi c'intendiamo!
Avatar utente
Foto UtenteDanteCpp
4.730 3 9 13
Master EY
Master EY
 
Messaggi: 1106
Iscritto il: 15 dic 2011, 18:51

0
voti

[18] Re: Diagramma degli stati

Messaggioda Foto UtenteShika93 » 14 feb 2014, 13:10

Pensavo di averlo già messo. Io l'avevo pensato così.

Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

1
voti

[19] Re: Diagramma degli stati

Messaggioda Foto UtenteDanteCpp » 14 feb 2014, 13:51

Inanzi tutto, il tuo automa è non deterministico, ossia partendo da uno stato è possibile finire in due stati diversi con una transazione etichettata allo stesso modo.

Formalmente:

\exists \, q,q',q'' \in Q tale che

q' = \delta(q,a) \; \wedge \; q'' = \delta(q,a)

con a \in \Sigma



Naturalmente non ha senso implementare una macchina non deterministica, dal momento che non possiamo definirne il comportamento, ma sin qui poco male, dal momento che ogni automa non deterministico(NFA) può essere convertito in un automa deterministico(DFA).

Il problema è che il tuo automa non riconosce neanche, l'input d'esempio come dovrebbe...

Proviamo a eseguire una computazione con il tuo automa, partiamo dallo stato A e leggiamo il primo simbolo di I. Man mano che leggiamo I lo consumiamo e riempiamo U:

I = 1101100100110100
U = \epsilon

A = \delta(A,1)
0 = \omega(A,1)
I = 101100100110100
U = 0

A = \delta(A,1)
0 = \omega(A,1)
I = 01100100110100
U = 00

B = \delta(A,0)
0 = \omega(A,0)
I = 1100100110100
U = 000

A = \delta(B,1) \; \vee \; D = \delta(B,1)

Qui entra in gioco il non determinismo, ma noi conosciamo il comportamento che deve avere quindi prendiamo il ramo giusto, scegliendo:
A = \delta(B,1)
0 = \omega(B,1)
I = 100100110100
U = 0000

A = \delta(A,1)
0 = \omega(A,1)
I = 00100110100
U = 00000

B = \delta(A,0)
0 = \omega(A,0)
I = 0100110100
U = 000000

C = \delta(B,0)
0 = \omega(B,0)
I = 100110100
U = 0000000

B = \delta(C,1)
1 = \omega(C,1)
I = 00110100
U = 00000001

C = \delta(B,0)
0 = \omega(B,0)
I = 0110100
U = 000000010

Come vedi già a questo punto, l'automa non rispetta l'output d'esempio!
Avatar utente
Foto UtenteDanteCpp
4.730 3 9 13
Master EY
Master EY
 
Messaggi: 1106
Iscritto il: 15 dic 2011, 18:51

0
voti

[20] Re: Diagramma degli stati

Messaggioda Foto UtenteShika93 » 14 feb 2014, 14:30

Quindi io devo vedere su I cosa vedo.


Mi sa di minchiata...Io l'ho pensata così come hai fatto tu.
il primo bit di I è 1, nessuna sequenza che devo riconoscere parte da 1, quindi resto in A;
il secondo bit è un altro 1. Idem. Resto in A;
il terzo bit è uno 0, ok. Vado in B;
il quarto bit è un 1, ok potrebbe essere la seconda sequenza. Vado in C;
il quinto bit è un 1; niente. Resto in C;
il sesto è uno 0, ok vado in D;
e così via...

Se è sbagliato a questo punto non so che fare.
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti