Un sistema è un insieme organizzato di parti che, ricevendo degli ingressi, produce delle uscite tramite un processo di elaborazione. Un automa è un modello (spesso matematico) che descrive un sistema con memoria limitata, in cui il comportamento dipende dallo stato in cui si trova.
Nella rappresentazione a scatola nera non interessa “come è fatto dentro” il sistema, ma solo cosa riceve in ingresso e cosa produce in uscita, e quali stati può assumere.
Un’automobile può essere vista come un sistema che cambia “stato” (ferma, in marcia, ecc.) in base a ingressi (acceleratore, marcia, freno…) e produce uscite (movimento, consumi, emissioni…).
Lo stato del sistema descrive le condizioni interne in cui si trova il sistema in un determinato istante. In pratica è “la memoria” che serve per capire cosa farà il sistema quando riceve un ingresso.
Cosa succede “dentro” il sistema? Come si passa da uno stato ad un altro quando arriva un ingresso? Per descriverlo in modo rigoroso si usano funzioni e rappresentazioni (tabella e diagramma).
Un sistema a stati (e quindi un automa) si descrive con due leggi fondamentali: una per il cambio di stato e una per la produzione delle uscite.
Indica come cambia lo stato in base allo stato attuale e all’ingresso ricevuto.
s(t) = f(s(t-1), i(t))
Indica quale uscita produce il sistema in base allo stato e (in generale) all’ingresso.
u(t) = g(s(t), i(t))
Un sistema a stati può essere descritto formalmente con questi insiemi:
Ingressi: I = { i0, i1, i2, ... }
Uscite: U = { u0, u1, u2, ... }
Stati: S = { s0, s1, s2, ... }
Transizione: f( )
Uscita: g( )
Sistema = (I, U, S, f(), g())
Un automa è un modello che simula matematicamente il funzionamento di un dispositivo reale progettato per raggiungere un obiettivo (risolvere un problema). Prima di costruire il dispositivo vero, spesso si costruisce il modello (l’automa) per capirne e verificarne il comportamento.
Di solito si definiscono: S0 (stato iniziale) e, quando serve, uno o più stati finali (stati di “accettazione” o fine processo).
In un sistema digitale lo stato può essere memorizzato tramite variabili di stato (bit). Se ho n bit, posso rappresentare fino a 2n stati.
Condizione di codifica: 2^n ≥ numero_stati
Consideriamo un distributore che eroga una bibita dal valore di 1€ e accetta solo monete da 0,50€. L’ingresso è quindi sempre “inserita moneta da 0,50€”.
Ingressi:
I = { I1 = moneta_0_50 }
Uscite:
U = { U1 = eroga_bibita }
Stati:
S = { S1, S2 }
S1: attesa 1ª moneta (stato iniziale)
S2: attesa 2ª moneta
Le righe sono gli stati, le colonne gli ingressi. In ogni cella mettiamo: (stato successivo, uscita).
| Stato attuale | I1 = moneta 0,50€ |
|---|---|
| S1 (attesa 1ª moneta) | S2, nessuna uscita |
| S2 (attesa 2ª moneta) | S1, eroga bibita |
Un automa può essere rappresentato con un diagramma degli stati (un grafo): i nodi sono gli stati, gli archi sono le transizioni. Su ogni freccia si indica la coppia ingresso/uscita.
Esistono due modelli principali di automi: Moore e Mealy. La differenza sta in da cosa dipende l’uscita.
L’uscita dipende solo dallo stato.
Moore: u(t) = g(s(t))
L’uscita dipende da stato e ingresso.
Mealy: u(t) = g(s(t), i(t))
La funzione di transizione descrive come cambia lo stato del sistema in base agli ingressi, mentre la funzione di trasformazione determina le uscite del sistema in base allo stato attuale e agli ingressi ricevuti.
Funzione di transizione: s(t) = f(s(t₀), i(t))
Funzione di trasformazione: u(t) = g(s(t), i(t))
Un Automa a Stati Finiti (ASF) è un automa con un numero finito di stati. Ogni stato è associato a determinati ingressi e uscite, e la transizione tra gli stati dipende dagli ingressi ricevuti.
Un esempio classico di ASF è un distributore automatico che eroga bibite. Questo sistema può essere rappresentato come un automa a stati finiti, con stati come "Attesa della moneta" e "Attesa della seconda moneta".
La tabella di transizione descrive come l'automa cambia stato in funzione degli ingressi ricevuti.