Algoritmo di Thompson

Questa voce è da wikificare
Questa voce o sezione sull'argomento informatica non è ancora formattata secondo gli standard.
Nessuna nota a piè di pagina
Questa voce o sezione sull'argomento informatica è priva o carente di note e riferimenti bibliografici puntuali.

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

Con N ( e ) {\displaystyle N(e)} rappresentiamo l'NFA equivalente all'espressione regolare e.

L'espressione e = ε {\displaystyle e=\varepsilon } è rappresentata da

inline

Un simbolo a {\displaystyle a} appartenente a un alfabeto di input è convertito dall'automa

inline

L'espressione ottenuta dall'unione di due sottoespressioni e = s | t {\displaystyle e=s|t} è convertita da

inline

Lo stato q {\displaystyle q} va tramite un' ε {\displaystyle \varepsilon } -transizione in uno stato iniziale di N ( s ) {\displaystyle N(s)} o N ( t ) {\displaystyle N(t)} . I loro stati finali divengono intermedi e si uniscono per mezzo di ε {\displaystyle \varepsilon } -transizioni nello stato finale di N(e) chiamato f {\displaystyle f} .

L'espressione formata dalla concatenazione di due sottoespressioni e = s t {\displaystyle e=st} si converte con

inline

Lo stato iniziale di N ( s ) {\displaystyle N(s)} è lo stato iniziale di N(e). Lo stato finale di N ( s ) {\displaystyle N(s)} diventa lo stato iniziale di N ( t ) {\displaystyle N(t)} . lo stato finale di N ( t ) {\displaystyle N(t)} è anche lo stato finale di N ( e ) {\displaystyle N(e)} .

La Kleene star di un'espressione s {\displaystyle s^{*}} è convertita da

inline

Un' ε {\displaystyle \varepsilon } -transizione connette lo stato iniziale e finale dell' NFA N ( e ) {\displaystyle N(e)} . Un'altra ε {\displaystyle \varepsilon } -transizione che va dallo stato finale a quello iniziale di N ( s ) {\displaystyle N(s)} consente la ripetizione dell'espressione s {\displaystyle s} come da definizione dell'operatore Kleene star.

Bibliografia

  • Programming Techniques: Regular expression search algorithm, su dl.acm.org.

Altri progetti

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file sull'algoritmo di Thompson
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica