title: Minimizzazione di DFA
text: # Minimizzazione di DFA
  
  In Teoria degli automi (branca dell'Informatica) è detto minimizzazione di un DFA il procedimento che trasforma un dato automa a stati finiti deterministico (in breve DFA) nel DFA equivalente che ha il minor numero di stati. Due DFA sono detti equivalenti se riconoscono lo stesso linguaggio formale. Ci sono diversi algoritmi che producono il minimo DFA partendo da uno dato, con diversi metodi e complessità.
  
  ## DFA minimo
  
  Esiste, per ogni linguaggio regolare che può essere accettato da un DFA, uno e un solo automa minimo, ovvero un DFA che ha il minimo numero di stati. Lavorare sull'automa minimo è conveniente in termini di complessità computazionale per quegli algoritmi che lo utilizzano per i più svariati scopi, come il pattern matching.
  
  Per ridurre un DFA si identificano al suo interno due tipi di stati, che possono essere uniti o eliminati senza che ciò influisca sul linguaggio accettato dall'automa stesso:
  
  * Stati irraggiungibili: stati dell'automa che in nessun caso possono essere raggiunti dallo stato iniziale; ovvero, stati (diversi dallo stato iniziale) che non hanno transizioni entranti, o stati in cui ogni transizione entrante parte da uno stato irraggiungibile.
  * Stati non distinguibili: stati che non possono essere distinti da un altro stato per nessuna delle possibili stringhe del linguaggio.
  
  La minimizzazione avviene in tre passi, in cui si rimuovono o si uniscono tra loro gli stati di cui sopra. Essa culmina sempre con l'eliminazione degli stati non distinguibili, in quanto si tratta dell'operazione più dispendiosa.
  
  ## Stati irraggiungibili
  
  Sia
  
      ${\mathcal {A}}=(Q,\Sigma ,\delta ,q_{0},T)$
  
  un automa determinista completo. In questa definizione, $Q$ è l'insieme degli stati, $\Sigma$ è l'alfabeto, $\delta$ è la funzione di transizione che mappa uno stato ed un simbolo dell'alfabeto in uno stato, $q_{0}$ è lo stato iniziale e $T$ è l'insieme degli stati terminali accettori.
  
  Due stati $p$ e $q$ appartenenti a $Q$, sono detti indistinguibili se tutte le parole $w$ riconosciute da ${\mathcal {A}}$ partendo da $p$ sono anche riconosciute partendo da $q$ e vice-versa. Formalmente, se per ogni parola $w$ :
  
      $p\cdot w\in T\iff q\cdot w\in T$.
  
  Due stati sono separabili se non sono inseparabili. Vale il seguente criterio di minimizzazione:
  
      Un automa finito deterministico completo e accessibile è minimo se e soltanto se i suoi stati sono due a due separabili.
  
  L'equivalenza di Nerode è la relazione denotata $\sim$, sull'insieme degli stati e definita da
  
      $q\sim q'\iff L_{q}({\mathcal {A}})=L_{q'}({\mathcal {A}})$ .
  
  Due stati equivalenti per la precedente relazione sono indistinguibili e vice-versa. Un automa è minimo quando l'equivalenza di Nerode è l'uguaglianza.
  
  ### Algoritmo del calcolo degli stati raggiungibili/irraggiungibili
  
  Lo stato $p$ di un automa finito deterministico ${\mathcal {A}}=(Q,\Sigma ,\delta ,q_{0},T)$ è irraggiungibile se non esiste alcuna parola $w\in \Sigma ^{*}$ per la quale $p=\delta (q_{0},w)$. Denotiamo qui $\delta ^{*}$ l'estensione della funzione a tutte le stringhe. Gli stati raggiungibili possono essere ottenuti col seguente algoritmo:
  
  Gli stati irraggiungibili possono essere rimossi dal DFA senza influenzare il linguaggio che questi accetta.
  
  