1. DFA: DFA si riferisce all'automa finito deterministico. Un automa finito (FA) si dice deterministico se in corrispondenza di un simbolo di input esiste un unico stato risultante, ovvero esiste una sola transizione. Un automa finito deterministico è un insieme di cinque tuple rappresentate come,

Dove,
D: Un insieme finito non vuoto di stati nel controllo finito (qo, q1, q2, …).
Σ: un insieme finito non vuoto di simboli di input.
δ: è una funzione di transizione che accetta due argomenti, uno stato e un simbolo di input, restituisce un singolo stato.
qo: È lo stato iniziale, uno degli stati in Q.
F: È un insieme non vuoto di stati finali/stati accettanti dell'insieme appartenente a Q.
2. CAUSE:
NFA si riferisce all'automa finito non deterministico. Un automa finito (FA) si dice non deterministico se esiste più di una possibile transizione da uno stato sullo stesso simbolo di input.
Un automa finito non deterministico è anche un insieme di cinque tuple e rappresentato come,

Dove,
D: Un insieme di stati finiti non vuoti.
Σ: un insieme di simboli di input finiti non vuoti.
δ: è una funzione di transizione che prende uno stato da Q e un simbolo di input da e restituisce un sottoinsieme di Q.
qo: Stato iniziale di NFA e membro di Q.
F: un insieme non vuoto di stati finali e membro di Q.
Prerequisito – Automatico finito
Differenza tra DFA e NFA:
| DFAE | NFA |
|---|---|
| DFA sta per Automi Finiti Deterministici. | NFA sta per Automi finiti non deterministici. |
| Per ogni rappresentazione simbolica dell'alfabeto, esiste una sola transizione di stato in DFA. | Non è necessario specificare come reagisce l'NFA in base ad alcuni simboli. |
| DFA non può utilizzare la transizione di stringa vuota. | NFA può utilizzare la transizione di stringa vuota. |
| DFA può essere inteso come una macchina. | NFA può essere inteso come l'insieme di piccole macchine che lavorano contemporaneamente. |
| In DFA, il successivo stato possibile è impostato distintamente. | In NFA, ciascuna coppia di simboli di stato e input può avere molti possibili stati successivi. |
| DFA è più difficile da costruire. | NFA è più facile da costruire. |
| DFA rifiuta la stringa nel caso in cui termini in uno stato diverso dallo stato di accettazione. | NFA rifiuta la stringa nel caso in cui tutti i rami muoiano o rifiutino la stringa. |
| Il tempo necessario per l'esecuzione di una stringa di input è inferiore. | Il tempo necessario per eseguire una stringa di input è maggiore. |
| Tutti i DFA sono NFA. | Non tutti gli NFA sono DFA. |
| DFA richiede più spazio. | NFA richiede meno spazio di DFA. |
| La configurazione morta non è consentita. ad esempio: se diamo input come 0 nello stato q0, dobbiamo fornire 1 come input a q0 come ciclo automatico. | È consentita la configurazione morta. ad esempio: se diamo l'input come 0 sullo stato q0, possiamo dare l'input successivo 1 su q1 che andrà allo stato successivo. |
| δ: QxΣ -> Q cioè il prossimo stato possibile appartiene a Q. | δ: Qx(Σ U ε) -> 2^Q cioè il prossimo stato possibile appartiene all'insieme di potenze di Q. |
| Il backtracking è consentito in DFA. | Il backtracking non è sempre possibile in NFA. |
| La conversione dell'espressione regolare in DFA è difficile. | La conversione dell'espressione regolare in NFA è più semplice rispetto a DFA. |
| Lo spostamento di Epsilon non è consentito in DFA | Il movimento Epsilon è consentito in NFA |
| DFA consente una sola mossa per un singolo alfabeto di input. | È possibile scegliere (più di una mossa) per l'alfabeto a input singolo. |