construção do autômato finito não
TRANSCRIPT
Construção do autômato finito não-determinístico
Na seqüência, apresenta-se o Algoritmo de Thompson para a construção de
um autômato finito para reconhecer uma dada expressão regular. Esse
procedimento determina como construir um autômato finito não-
determinístico para reconhecer sentenças de uma gramática regular.
Posteriormente, apresenta-se o procedimento para converter esse autômato
para uma máquina determinística.
O primeiro passo do procedimento é decompor a expressão regular que define
as sentenças que deverão ser reconhecidas em termos de suas relações
elementares:
um símbolo do alfabeto da linguagem;
concatenação, ;
alternativa, ;
repetição, .
Uma vez que a expressão regular tenha sido estruturada em termos das
relações elementares, é preciso construir um autômato para reconhecer cada
uma das partes da expressão. Para cada relação elementar, a estrutura de um
autômato correspondente é determinada.
Para reconhecer um símbolo do alfabeto da linguagem , o autômato
correspondente é composto simplesmente por um estado inicial que atinge um
estado final através de uma transição pela ocorrência do símbolo
(Figura 3.3a).
[Reconhecimento de um símbolo]
[Concatenação]
[Alternativa]
[Repetição]
Figura: Autômatos elementares para a construção de Thompson.
Se a relação elementar for a concatenação de duas expressões regulares, ,
é preciso compor as duas máquinas e que reconhecem e ,
respectivamente. Para a máquina composta, o estado final de é
combinado com o estado inicial de (Figura 3.3b).
Para reconhecer a relação elementar que estabelece a alternativa entre duas
expressões regulares, , a forma de compor as duas respectivas
máquinas e é através da introdução de um novo estado inicial. Este
estado tem transições para os estados iniciais de cada uma das máquinas
e através da string vazia. Similarmente, um novo estado final é
introduzido, o qual pode ser atingido com transições pela string vazia a partir
dos estados finais das duas máquinas originais (Figura 3.3c).
A última relação elementar a ser considerada é a repetição, , cuja máquina
de reconhecimento deve ser derivada da máquina que reconhece .
Também neste caso novos estados inicial e final são introduzidos. Para
reconhecer zero ocorrências de , há uma transição pela string vazia direta
do novo estado inicial para o novo estado final. Para reconhecer uma
ocorrência de , há transições 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 várias ocorrências de dá-se
através de uma transição pela string vazia do estado final para o estado inicial
da máquina original (Figura 3.3d).
A título de exemplo, considere a construção de um um autômato finito não-
determinístico para reconhecer sentenças descritas pela expressão
regular . O primeiro passo é decompor a expressão em termos
de suas relações elementares:
Uma vez determinadas as expressões regulares elementares que compõem a
expressão regular sob análise, é possível construir os autômatos que
reconhecem cada uma dessas expressões elementares.
Para reconhecer a expressão , constrói-se a máquina que reconhece o
símbolo , usando a construção apresentada na Figura 3.3a:
Similarmente, para reconhecer , constrói-se a máquina que reconhece
o símbolo :
A expressão regular é a composição pela alternativa das expressões
e . O autômato para reconhecer é construído pela combinação das
máquinas e conforme a estratégia apresentada na Figura 3.3c:
Neste caso, os estados 5 e 6 são os novos estados introduzidos
respectivamente como o estado inicial e o estado final da nova máquina .
O reconhecimento da expressão regular é feito pelo autômato que
reconhece zero ou mais ocorrências de , ou seja, a máquina é
construída a partir da máquina conforme a estratégia 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 expressão é formada pela concatenação de com , a
máquina deve combinar a máquina com uma nova instância da
máquina segundo a estratégia apresentada na Figura 3.3b:
Observe que o estado inicial da nova máquina , , foi combinado com o
estado final da máquina , enquanto que o estado final de , , passou
a ser o estado final de .
Similarmente, é uma concatenação de e . Combinando a
máquina com uma nova instância da máquina que reconhece , obtém-
se para a máquina :
Finalmente, a expressão completa é uma concatenação de com .
Combinando com uma máquina obtém-se a máquina que reconhece
a expressão regular completa, que é apresentada na Figura 3.4. Para essa
máquina, o estado inicial é o estado inicial de , ou seja, o estado 7, e o
estado final é o estado final de , o estado .
Figura: Autômato não-determinístico que reconhece