Automa a stati finiti: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix uso improprio dei corsivi; rimuovo link a specifiche implementazioni (WP:RILIEVO)
Riga 1:
Un '''automa a stati finiti''' ('''ASF''' o '''FSA''', dall'[[Lingua inglese|inglese]] ''Finitefinite Statestate Automatonautomaton,'' al plurale: ''Ff. Ss. Automataautomata'') o '''macchina a stati finiti''' ('''FSM''', dall'inglese ''Finitefinite Statestate Machinemachine'') è un tipo di [[automa (informatica)|automa]] che permette di descrivere con precisione e in maniera formale il comportamento di molti sistemi. Grazie alla sua semplicità e chiarezza questo modello è molto diffuso nell'[[ingegneria]] e nelle [[scienze]], soprattutto nel campo dell'[[informatica]] e della [[ricerca operativa]].
 
Un automa a stati finiti può essere utilizzato sia per modellare un sistema esistente che per modellare un nuovo sistema formale in grado di risolvere alcuni problemi esistenti. A quest'ultima categoria appartengono i cosiddetti ''riconoscitori di linguaggi'' e i ''traduttori''.
LaL'usuale rappresentazione grafica di un ''automa a stati finiti'' è il [[grafo orientato]].
 
== Descrizione ==
Riga 11:
* Simboli finiti: caratteristica che determina che il numero di simboli di ingresso e di stati sia rappresentabile da un numero finito.
 
Dal punto di vista pratico, il concetto di automa a stati finiti equivale a costruire un piccolo dispositivo che mediante una testina legge una stringa di input su un nastro e la elabora, facendo uso di un meccanismo molto semplice di calcolo e di una memoria limitata. L'esame della stringa avviene un carattere alla volta attraverso precisi passi computazionali che comportano l'avanzamento della testina. In sostanza un ASF è un caso particolare di [[macchina di Turing]], utilizzato per l'elaborazione di quei linguaggi che nelle [[Gerarchia di Chomsky|Grammatiche di Chomsky]] sono definiti ''"di Tipotipo 3''" o ''[[linguaggi regolari|Regolariregolari]]''. Distinguiamo due tipi di automi a stati finiti: gli automi a stati finiti deterministici (ASFD) e gli automi a stati finiti non deterministici (ASFND).
 
== Tipologie ==
Riga 22:
* <math>U = \{u_1, u_2, \ldots, u_m\}</math> insieme finito dei possibili simboli in uscita
* <math>S = \{s_1, s_2, \ldots, s_h\}</math> insieme finito degli stati
* <math>f: I \times S \rightarrow S</math> ''funzione di transizione'' degli stati interni successivi, che collega lo stato nell'istante successivo al valore attuale dell'ingresso e dello stato, <math>S(t+1) = f(I(t), S(t)) </math>
* <math>g: I \times S \rightarrow U</math> funzione delle uscite (eventualmente parziale), che collega l'uscita al valore attuale dell'ingresso e dello stato, <math>U(t) = g(I(t), S(t)) </math>
 
Riga 32:
* <math>U = \{u_1, u_2, \ldots, u_m\}</math> insieme finito dei possibili simboli in uscita
* <math>S = \{s_1, s_2, \ldots, s_h\}</math> insieme finito degli stati
* <math>f: I \times S \rightarrow \mathcal{P} (S)</math> ''funzione di transizione'' parziale degli stati interni successivi, che collega al valore attuale dell'ingresso e dello stato un sottoinsieme di S (quindi ad un sottoinsieme di possibili stati in S).
* <math>g: I \times S \rightarrow U</math> funzione delle uscite (eventualmente parziale), che collega l'uscita al valore attuale dell'ingresso e dello stato, <math>U(t) = f(S(t), I(t)) </math>
 
Riga 43:
[[File:Moore Machine.PNG|thumb|right|[[Diagramma di stato (informatica)|Diagramma di stato]] di una macchina di Moore]]
 
Possiamo rappresentare gli automi a stati finiti con una tabella (''[[tabellaTabella di transizione di stato|tabella di transizione]]'') o equivalentemente con una matrice (''matrice di transizione''). Alle righe associamo gli stati e alle colonne i simboli in input. Gli elementi della matrice rappresentano il risultato dell'applicazione della ''funzione di transizione''.
{| border=1 cellspacing=0 cellpadding=7 style="border:0px"
!\
Riga 62:
|}
 
Un'altra rappresentazione molto usata è costituita dal ''diagramma degli stati'', o ''grafo di transizione'', che consiste nel rappresentare l'automa mediante un [[Digrafo (matematica)|grafo orientato]]: i nodi rappresentano gli stati e gli archi le transizioni, etichettati col simbolo di input che genera la transizione. Si può marcare lo stato iniziale con un arco entrante dal nulla e gli stati finali con un doppio circolo.
 
A queste rappresentazioni va aggiunta la funzione di uscita corrispondente. I diagrammi di stato saranno così modificati, come si può vedere per le macchine di Mealy e di Moore.
Riga 90:
{{interprogetto}}
 
{{Linguaggilinguaggi formali e grammatiche}}
== Collegamenti esterni ==
{{Elettronicaelettronica digitale}}
* {{collegamento interrotto|1=[http://www.guidealgoritmi.it/ShowArticle.aspx?ID=6 DFA] |date=febbraio 2018 |bot=InternetArchiveBot }} Implementazione, in linguaggio C ([[open source]]), di un automa a stati finiti deterministico per il riconoscimento di numeri reali.
* [https://drive.google.com/file/d/1YCQFWIr2rxm-ZyhwjUa_YDrBjdtXA4YS/view?usp=sharing Software SEQ per la minimizzazione degli stati delle macchine sequenziali] (di Dario Mazzeo)
* [http://www.evidence.eu.com/products/smcube.html SMCube] Un tool free per la creazione, la simulazione, e la generazione automatica di codice per Macchine a stati finiti discrete.
 
{{Linguaggi formali e grammatiche}}
{{Elettronica digitale}}
{{portale|elettronica|informatica}}