Costruzione dei sottoinsiemi

Da testwiki.
Vai alla navigazione Vai alla ricerca

Nella teoria dei linguaggi formali, la costruzione dei sottoinsiemi o costruzione per sottoinsiemi o subset construction è la tecnica di costruzione dell'automa a stati finiti deterministico equivalente ad un automa a stati finiti non deterministico.

Equivalenza tra automa deterministico e non deterministico

Dato un automa a stati finiti non deterministico

NFA={QN,Σ,δN,q0,FN},

è possibile determinare un automa a stati finiti deterministico equivalente

DFA={QD,Σ,δD,{q0},FD},

tale che L(NFA)=L(DFA). L'insieme di stati diventa

QD=𝒫(QN)|QD|=2|QN|,

l'insieme degli stati finali

FD={sQD|sFN}

mentre la nuova funzione di transizione si calcola come:

δD(s,a)=psδN(p,a),sQD

dove la funzione 𝒫() indica l'insieme delle parti. È possibile dimostrare che l'automa deterministico così definito risulta essere equivalente all'automa non deterministico a partire dal quale è costruito. Entrambi gli automi riconoscono quindi lo stesso linguaggio.

Algoritmo di costruzione per sottoinsiemi

L'algoritmo per la costruzione dell'automa equivalente discende direttamente dalla definizione dell'automa. La definizione della funzione di transizione δ viene valutata per ogni elemento appartenente al dominio QD, ossia per tutti i possibili sottoinsiemi di QN.

Lazy evaluation

È possibile che la costruzione dell'automa equivalente tramite l'algoritmo di costruzione per sottoinsiemi possa portare alla definizione di stati non accessibili, la cui presenza risulta ridondante e che porta ad un eccesso di calcolo che può essere ridotto. La lazy evaluation permette di evitare i calcoli necessari a definire gli stati che non sono raggiungibili dall'automa. Tale algoritmo viene definito induttivamente non prendendo in considerazione tutti gli elementi dell'insieme della parti.
Base: {q0} è uno stato accessibile.
Ipotesi induttiva: s stato accessibile.
Passo induttivo: aΣ, δ(s,a) accessibile.
La lazy evaluation porta alla determinazione di tutti e soli gli stati accessibili. La definizione della funzione di transizione può essere quindi eseguita solo su tali stati.

Voci correlate

Altri progetti

Template:Interprogetto

Template:Portale