Swappa : Uni / Informatica Teorica - Automi a stati finiti
Creative Commons License

Torna alla pagina di Informatica Teorica


 :: Informatica Teorica - Automi a stati finiti ::

Appunti del 3 Marzo

Automa a stati finiti

L'automa a stati finiti (o macchina a stati finiti) è il modello computazionale più semplice ma con una quantità limitata di memoria.

Può essere definito formalmente in questo modo:

Un automa a stati finiti è una 5-tupla (Q, Σ, δ, q0, F) dove:

Se A è l'insieme delle stringhe accettate dall'automa M allora A è il linguaggio della macchina M (L(M) = A) e si dice che M riconosce A.

I linguaggi riconosciuti dagli automi a stati finiti si chiamano linguaggi regolari. Un linguaggio è regolare se esiste un automa a stati finiti che lo riconosce.

Ma cosa vuol dire accettare una stringa? Significa che partendo dallo stato iniziale, l'automa deve terminare la sua computazione in uno stato d'accettazione. Più formalmente:

Dato M = (Q, Σ, δ, q0, F) e una stringa d'ingresso w = w1w2w3...wn dove ogni wi ∈ Σ, si dice che M accetta w se esiste una sequenza di stati r0, r1, ..., rn in Q che rispetti le seguenti 3 condizioni:

Un esempio di automa a stati finiti è la macchina M che riconosce il linguaggio A = {w | w è una stringa con un numero dispari di 1}:

M = (Q, Σ, δ, q0, F)

dove

 01
q0q0q1
q1q1q0

Operazioni sui linguaggi

Siano A e B due linguaggi, definiamo le operazioni di unione, concatenazione e star come segue:

Chiusura di un linguaggio

Una collezione di oggetti è chiusa rispetto ad una determinata operazione se applicando l'operazione ai membri della collezione si ottiene un oggetto appartenente ancora alla collezione. Facendo riferimento ai linguaggi possiamo dire che una classe di linguaggi è chiusa rispetto ad un'operazione se applicando l'operazione ai linguaggi della classe otteniamo ancora un linguaggio della stessa classe.

Proprietà dei linguaggi regolari

È possibile dimostrare che i linguaggi regolari sono chiusi rispetto all'operazione di unione, quindi l'unione di due linguaggi regolari è un altro linguaggio regolare:

Siano A1 e A2 due linguaggi regolari e M1 e M2 rispettivamente gli automi a stati finiti che li riconoscono. Vogliamo costruire l'automa M che riconosce il linguaggio A1A2.

M1 = (Q1, Σ, δ1, q1, F1)
M2 = (Q2, Σ, δ2, q2, F2)
M = (Q, Σ, δ, q, F)

Q = Q1 × Q2 = {(r1,r2) | r1 ∈ Q1 ∧ r2 ∈ Q2}
δ : Q × Σ → Q
δ((r1, r2), a) = (δ1(r1, a), δ2(r2, a)), (r1, r2) ∈ Q ∧ a ∈ Σ
q = (q1, q2)
F = {(r1, r2) | r1 ∈ F1 ∧ r2 ∈ F2}

Abbiamo dimostrato per costruzione che esiste l'automa a stati finiti riconoscitore del linguaggio unione, che è quindi un linguaggio regolare.


Torna alla pagina di Informatica Teorica

(Printable View of http://www.swappa.it/wiki/Uni/IT-AutomiStatiFiniti)