Il discorso è un po' lungo.
Cercherò di farti un riassunto veloce veloce, ma se ti interessa l'argomento ti consiglio di prenderti un buon libro o di cercare documentazione in rete.
Esistono vari tipi di automi. Quelli di cui parlavamo prima sono i cosiddetti automi a stati finiti, che rappresentano una classe di linguaggi detti regolari.
Tra questi automi a stati finiti esistono i DFA (
Deterministic Finite Automaton), ossia gli automi a stati finiti deterministici e gli NFA (
Nondeterministic Finite Automaton), ossia gli automi non deterministici. La differenza tra i due è semplice: mentre con i primi, partendo da uno stato iniziale, se leggiamo un input, in un detrminato istante della lettura ci troviamo sempre in un solo stato. Al contrario con gli NFA possiamo prendere contemporaneamente percorsi diversi e non appena arriviamo alla completa lettura degli input, possiamo terminare i percorsi alternativi. Come puoi vedere quest'ultimi automi sono ottimi per compiere ricerche di stringhe all'interno di file di testo (ad esempio) perché permettono una ricerca parallela della stringa e ne consegue una ricerca più rapida rispetto a quella che si otterrebbe lavorando con un DFA.
Prendi per esempio questo automa:
Questo è un DFA. Le tre "palline" rappresentano i nostri stati. La freccia"start" rappresenta lo stato di partenza mentre il cerchio doppio rappresenta lo stato finale o riconoscitore. Se vuoi che una stringa sia riconosciuta da un automa, questa deve sempre trovarsi in uno stato riconoscitore a fine lettura. I numeri sopra le frecce sono il nostro alfabeto che in questo caso è formato solo dai simboli {0,1}.
Il ragionamento è il seguente: partendo dallo stato di partenza q1 te puoi andare negli altri stati in base al simbolo che leggi: ad esempio se leggi 1 rimani in q1 mentre se leggi zero vai in q2.
Se fosse un NFA dovresti avere più possibilità di scelta, ad esempio mettendo uno zero accanto all'1 che c'è sull'arco che da q1 riporta in q1, in modo tale che leggendo zero quando si è nello stato di partenza (q1) tu possa andare sia in q1 sia in q2. Come vedi ti ritroveresti in due stati allo stesso momento (NFA).
Di automi ne esistono tanti altri, tra cui spiccano infine le MdT, ossia le macchine di Turing. Se ti interessano gli argomenti cerca in rete, oppure (ancora meglio) comprati un buon libro. Ciao
