Algoritmo di Thompson

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

L'algoritmo di Thompson o algoritmo di costruzione (spesso indicato con (TCA) dall'inglese Thompson's Construction Algorithm) è un algoritmo che deriva un automa a stati finiti non deterministico (NFA) da una qualunque espressione regolare dividendola nelle sue sottoespressioni elementari, che possono essere convertite direttamente per mezzo di un insieme di regole.

L'algoritmo è stato inventato da Ken Thompson.

Regole[modifica | modifica wikitesto]

Con rappresentiamo l'NFA equivalente all'espressione regolare e.

L'espressione è rappresentata da

inline

Un simbolo appartenente a un alfabeto di input è convertito dall'automa

inline

L'espressione ottenuta dall'unione di due sottoespressioni è convertita da

inline

Lo stato va tramite un' -transizione in uno stato iniziale di o . I loro stati finali divengono intermedi e si uniscono per mezzo di -transizioni nello stato finale di N(e) chiamato .

L'espressione formata dalla concatenazione di due sottoespressioni si converte con

inline

Lo stato iniziale di è lo stato iniziale di N(e). Lo stato finale di diventa lo stato iniziale di . lo stato finale di è anche lo stato finale di .

La Kleene star di un'espressione è convertita da

inline

Un' -transizione connette lo stato iniziale e finale dell' NFA . Un'altra -transizione che va dallo stato finale a quello iniziale di consente la ripetizione dell'espressione come da definizione dell'operatore Kleene star.

Bibliografia[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]