Un Non deterministic Finite state Automaton è una tupla , dove corrispondono a quelle dell’automa a stati finiti (DFA), mentre cambia da ogni stato del NFA si può transitare verso più stati.

è l’insieme delle parti di .

Dal punto di vista dei cammini di computazione, i DFA ne compiono solo uno, e alla fine rifiutano o accettano la stringa in input. Invece gli NFA, i cammini di computazione possono “sdoppiarsi”: a ogni transizione da uno a stati, l’automa crea copie di se stesso, le quali continuano l’esecuzione in parallelo.

I linguaggi riconosciuti da un NFA sono quelli le cui stringhe sono riconosciute da almeno un suo cammino di computazione.

Gli NFA possono avere degli -archi, cioè archi che portano da uno stato all’altro a prescindere dall’input, cioè sempre e in automatico.

Esempio

Esempio di input

Esecuzione:

Dimostrazione che i linguaggi riconosciuti dagli NFA sono gli stessi riconosciuti dai DFA, cioè i linguaggi regolari

Ipotesi:

Dimostrazione:

  1. Banalmente perchè, per definizione, un DFA è un caso speciale di un NFA.
  2. Ora bisogna dimostrare .
    1. Sia un NFA tale che . Devo mostrare che esiste un DFA tale che . Praticamente bisogna unire tutti i possibili cammini di computazione esplorati dal NFA in un singolo DFA.
    2. Quindi , cioè quando sta in più stati contemporaneamente, è in uno stato che rappresenta più stati di allo stesso tempo.
    3. Definiamo i componenti della tupla di che ci mancano:
      1. : Per lo stato iniziale vale .
      2. : Quand’è che accetta una stringa? Quando almeno uno dei suoi cammini la accetta. Di conseguenza, deve accettare una stringa quando almeno uno dei cammini di la accetta. ( contiene almeno uno stato finale di ).
      3. il dominio e il codominio la funzione di transizione deve essere definiti come . Inoltre ogni stato di contenuto all’interno di uno stato di deve portare all’insieme dato dall’unione di tutti gli stati di raggiungibili da esso, cioè .
    4. Aggiungiamo gli -archi. Cosa cambia? (nota: è l’insieme di stati di raggiungibili tramite archi)

Esercizio

Definizione degli stati

Definizione dello stato iniziale

Definizione degli stati finali

Definizione della funzione di transizione

Considero i diversi casi:

  • Nello stato :
    • se legge può transitare in , cioè .
    • se legge va in uno stato pozzo, cioè .
  • Nello stato :
    • se legge può transitare in e , cioè .
    • se legge può transitare in , cioè .
  • Nello stato :
    • se legge può transitare in , cioè . Nell’insieme c’è anche perché si prende immediatamente l’-arco da .
    • se legge va in uno stato pozzo, cioè .

N.B.: Per un qualsiasi stato si deve MAI definire , ma accorpare la destinazione dell’-arco nella degli altri input, cioè .

Disegno del NFA