Linguaggio regolare

Un linguaggio $L\subseteq \Sigma^*$ è regolare se esiste un DFA $A=\lang Q, \Sigma, \delta, q_0, F\rang$ (sullo stesso alfabeto $\Sigma$ su cui è definito $L$) tale che $L(A)=L$.

I linguaggi regolari hanno un ruolo importantissimo in informatica, e in particolare sono alla base di molti strumenti pratici.

Definizioni alternative

Ci sono molto altri modi, tutti equivalenti, di definire i linguaggi regolari:

Esempi

Introduzione agli NFA

Si consideri il seguente diagramma di transizione:

Untitled

Esso non rispetta la definizione di DFA, perchè:

Si supponga di voler ammettere questo tipo di dispositivo. Come si può dare a esso un senso, interpretando le situazioni “problematiche” appena descritte? La soluzione è sviluppare non una singola computazione, ma tutte le possibili computazioni dell’automa, stabilendo che:

Sviluppare tutte le possibili computazioni dell’automa significa non ottenere più una sequenza lineare di mosse, ma piuttosto un albero di computazione. Ad esempio, le possibili computazioni sulla stringa $w=11101$ sono rappresentate dall’albero.

Untitled