Na seqncia, apresenta-se o Algoritmo de Thompson para a construo de
um autmato finito para reconhecer uma dada expresso regular. Esse procedimento determina como construir um autmato finito no- determinstico para reconhecer sentenas de uma gramtica regular. Posteriormente, apresenta-se o procedimento para converter esse autmato para uma mquina determinstica. O primeiro passo do procedimento decompor a expresso regular que define as sentenas que devero ser reconhecidas em termos de suas relaes elementares: um smbolo do alfabeto da linguagem; concatenao, ; alternativa, ; repetio, . Uma vez que a expresso regular tenha sido estruturada em termos das relaes elementares, preciso construir um autmato para reconhecer cada uma das partes da expresso. Para cada relao elementar, a estrutura de um autmato correspondente determinada. Para reconhecer um smbolo do alfabeto da linguagem , o autmato correspondente composto simplesmente por um estado inicial que atinge um estado final atravs de uma transio pela ocorrncia do smbolo (Figura 3.3a). [Reconhecimento de um smbolo]
[Concatenao]
[Alternativa]
[Repetio]
Figura: Autmatos elementares para a construo de Thompson. Se a relao elementar for a concatenao de duas expresses regulares, , preciso compor as duas mquinas e que reconhecem e , respectivamente. Para a mquina composta, o estado final de combinado com o estado inicial de (Figura 3.3b). Para reconhecer a relao elementar que estabelece a alternativa entre duas expresses regulares, , a forma de compor as duas respectivas mquinas e atravs da introduo de um novo estado inicial. Este estado tem transies para os estados iniciais de cada uma das mquinas e atravs da string vazia. Similarmente, um novo estado final introduzido, o qual pode ser atingido com transies pela string vazia a partir dos estados finais das duas mquinas originais (Figura 3.3c). A ltima relao elementar a ser considerada a repetio, , cuja mquina de reconhecimento deve ser derivada da mquina que reconhece . Tambm neste caso novos estados inicial e final so introduzidos. Para reconhecer zero ocorrncias de , h uma transio pela string vazia direta do novo estado inicial para o novo estado final. Para reconhecer uma ocorrncia de , h transies pelastring vazia entre o novo estado inicial e o estado inicial original, assim como entre o estado final original e o novo estado final. Finalmente, o reconhecimento de vrias ocorrncias de d-se atravs de uma transio pela string vazia do estado final para o estado inicial da mquina original (Figura 3.3d). A ttulo de exemplo, considere a construo de um um autmato finito no- determinstico para reconhecer sentenas descritas pela expresso regular . O primeiro passo decompor a expresso em termos de suas relaes elementares:
Uma vez determinadas as expresses regulares elementares que compem a expresso regular sob anlise, possvel construir os autmatos que reconhecem cada uma dessas expresses elementares. Para reconhecer a expresso , constri-se a mquina que reconhece o smbolo , usando a construo apresentada na Figura 3.3a:
Similarmente, para reconhecer , constri-se a mquina que reconhece o smbolo :
A expresso regular a composio pela alternativa das expresses e . O autmato para reconhecer construdo pela combinao das mquinas e conforme a estratgia apresentada na Figura 3.3c:
Neste caso, os estados 5 e 6 so os novos estados introduzidos respectivamente como o estado inicial e o estado final da nova mquina . O reconhecimento da expresso regular feito pelo autmato que reconhece zero ou mais ocorrncias de , ou seja, a mquina construda a partir da mquina conforme a estratgia apresentada na Figura 3.3d:
Observe-se que os novos estados inicial e final de passam a ser os estados 7 e 8, respectivamente. Como a expresso formada pela concatenao de com , a mquina deve combinar a mquina com uma nova instncia da mquina segundo a estratgia apresentada na Figura 3.3b:
Observe que o estado inicial da nova mquina , , foi combinado com o estado final da mquina , enquanto que o estado final de , , passou a ser o estado final de . Similarmente, uma concatenao de e . Combinando a mquina com uma nova instncia da mquina que reconhece , obtm- se para a mquina :
Finalmente, a expresso completa uma concatenao de com . Combinando com uma mquina obtm-se a mquina que reconhece a expresso regular completa, que apresentada na Figura 3.4. Para essa mquina, o estado inicial o estado inicial de , ou seja, o estado 7, e o estado final o estado final de , o estado .