Finite Automata (FA) è la macchina più semplice per riconoscere modelli. Viene utilizzato per caratterizzare un linguaggio regolare, ad esempio: /baa+!/.
Inoltre viene utilizzato per analizzare e riconoscere le espressioni del linguaggio naturale. Gli automi finiti o macchine a stati finiti sono una macchina astratta che ha cinque elementi o tuple. Ha una serie di stati e regole per passare da uno stato all'altro ma dipende dal simbolo di input applicato. In base agli stati e all'insieme di regole la stringa di input può essere accettata o rifiutata. Fondamentalmente, è un modello astratto di un computer digitale che legge una stringa di input e cambia il suo stato interno a seconda del simbolo di input corrente. Ogni automa definisce un linguaggio, cioè l'insieme di stringhe che accetta. La figura seguente mostra alcune caratteristiche essenziali dell'automazione generale.

Figura: Caratteristiche degli automi finiti
La figura sopra mostra le seguenti caratteristiche degli automi:
- Ingresso
- Produzione
- Stati degli automi
- Rapporto statale
- Relazione di uscita
Un automa finito è costituito da quanto segue:
Q : Finite set of states. ? : set of Input Symbols. q : Initial state. F : set of Final States. ? : Transition Function.>
La specifica formale della macchina è
età di pete davidson
{ Q, ?, q, F, ? }> La FA è caratterizzata in due tipologie:
1) Automi finiti deterministici (DFA):
DFA consists of 5 tuples {Q, ?, q, F, ?}. Q : set of all states. ? : set of input symbols. ( Symbols which machine takes as input ) q : Initial state. ( Starting state of a machine ) F : set of final state. ? : Transition Function, defined as ? : Q X ? -->D.> In un DFA, per un particolare carattere di input, la macchina va in uno solo stato. Una funzione di transizione è definita su ogni stato per ogni simbolo di input. Inoltre in DFA lo spostamento nullo (o ?) non è consentito, ovvero DFA non può cambiare stato senza alcun carattere di input.
stringa.formato java
Ad esempio, costruisci un DFA che accetti un linguaggio di tutte le stringhe che terminano con 'a'.
Dato: ? = {a,b}, q = {q0}, F={q1}, Q = {q0, Q1}
Innanzitutto, considera un insieme linguistico di tutte le possibili stringhe accettabili per costruire un diagramma accurato delle transizioni di stato.
L = {a, aa, aaa, aaaa, aaaaa, ba, bba, bbba, padre, padre, padre, padre}
Sopra c'è un semplice sottoinsieme delle possibili stringhe accettabili, ci possono essere molte altre stringhe che terminano con 'a' e contengono simboli {a,b}.

Fig 1. Diagramma di transizione di stato per DFA con ? = {a, b}
Le stringhe non accettate sono,
ab, bb, aab, abbb, ecc.
Tabella di transizione dello stato per l'automa di cui sopra,
| ?StatoSimbolo? | UN | B |
|---|---|---|
| Q0 | Q1 | Q0 |
| Q1 | Q1 | Q0 |
Una cosa importante da notare è, possono esserci molti DFA possibili per un modello . In genere è preferibile un DFA con un numero minimo di Stati.
2) Automi finiti non deterministici (NFA): NFA è simile a DFA ad eccezione delle seguenti funzionalità aggiuntive:
- È consentita la mossa nulla (o ?), ovvero è possibile avanzare senza leggere i simboli.
- Capacità di trasmettere a qualsiasi numero di stati per un particolare input.
Tuttavia, queste funzionalità di cui sopra non aggiungono alcun potere a NFA. Se confrontiamo entrambi in termini di potenza, entrambi sono equivalenti.
Giochi iMessage con Android
A causa delle funzionalità aggiuntive di cui sopra, NFA ha una funzione di transizione diversa, il resto è uguale a DFA.
?: Transition Function ?: Q X (? U ? ) -->2^Q.>
Come puoi vedere nella funzione di transizione per qualsiasi input incluso null (o ?), NFA può andare a qualsiasi numero di stati. Ad esempio, di seguito è riportato un NFA per il problema di cui sopra.

Fig 2. Diagramma di transizione di stato per NFA con ? = {a, b}
Tabella di transizione dello stato per l'automa sopra,
| ?StatoSimbolo? | UN | B |
|---|---|---|
| Q0 | {Q0,Q1} | Q0 |
| Q1 | ? | ? |
Una cosa importante da notare è, in NFA, se qualsiasi percorso per una stringa di input porta a uno stato finale, allora la stringa di input È accettato . Ad esempio, nell'NFA precedente, sono presenti più percorsi per la stringa di input 00. Poiché uno dei percorsi porta a uno stato finale, 00 viene accettato dall'NFA precedente.
Alcuni punti importanti:
- Giustificazione:
In case of DFA ? : Q X ? -->D In caso di NFA? : QX? --> 2Q>
Ora se osservi scoprirai Q X ? –> Q fa parte di Q X ? –>2Q.
sistema operativo
Sul lato destro, Q è il sottoinsieme di 2Qche indica che Q è contenuto in 2Qoppure Q è una parte di 2Q, tuttavia, non è vero il contrario. Quindi, matematicamente, possiamo concludere questo ogni DFA è NFA ma non viceversa . Eppure esiste un modo per convertire un NFA in DFA, quindi esiste un DFA equivalente per ogni NFA .
- Sia NFA che DFA hanno lo stesso potere e ogni NFA può essere tradotto in un DFA.
- Possono esserci più stati finali sia in DFA che in NFA.
- L'NFA è più un concetto teorico.
- DFA viene utilizzato nell'analisi lessicale nel compilatore.
- Se il numero di stati nella NFA è N, il suo DFA può averne al massimo 2Nnumero di stati.
Vedere Quiz sulle espressioni regolari e sugli automi finiti.