Algoritmo di Thompson
![Questa voce è da wikificare](http://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Wikitext.svg/50px-Wikitext.svg.png)
![Nessuna nota a piè di pagina](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Question_book_magnify.svg/45px-Question_book_magnify.svg.png)
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 rappresentiamo l'NFA equivalente all'espressione regolare e.
L'espressione è rappresentata da
Un simbolo appartenente a un alfabeto di input è convertito dall'automa
L'espressione ottenuta dall'unione di due sottoespressioni è convertita da
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
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
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
- Programming Techniques: Regular expression search algorithm, su dl.acm.org.
Altri progetti
Altri progetti
- Wikimedia Commons
Wikimedia Commons contiene immagini o altri file sull'algoritmo di Thompson
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)