Você está na página 1de 9

UNIVERSIDADE METODISTA DE ANGOLA

FACULDADE DE ENGENHARIA E ARQUITECTURA


CURSO DE ENGENHARIA INFORMÁTICA

TRABALHO PRÁTICO DE COMPILADORES

CONVERTER AUTÓMATO FINITO DETERMINÍSTICO EM


EXPRESSÃO REGULAR

O Estudante:

Adão Oneide De Assureira Alberto-26.846

Período: Manhã

Ano Curricular: 5º

Luanda, Dezembro de 2021


Adão Oneide de Assureira Alberto- 26.846

CONVERTER AUTÓMATO FINITO DETERMINÍSTICO EM


EXPRESSÃO REGULAR

Trabalho Prático apresentado à


Faculdade de Engenharia e Arquitectura,
junto ao Departamento de Engenharia
Informática, para obtenção da Nota
Prática da cadeira de Compiladores
lecionada pelo Professor Maurício
Nsimba.

Luanda, Dezembro de 2021


1. Apresentação

1.1 Introdução

O presente trabalho abordará sobre a conversão de um Autómato Finito


Determinístico (AFD) em Expressão Regular (ER). Mas antes começaremos por
apresentar breves conceitos sobre Autómato, Autómato Finito Determinístico e
Expressão Regular, de modo a termos bases suficientes para o real entendimento do que
se pretende demonstrar.

Um Autómato é uma construção feita de estados, projectado para determinar se a


determinada entrada pode ser aceita ou rejeitada. Por sua vez, um AFD, também
chamado de Mâquina de Estado Finito, é uma mâquina de estado finito que aceita ou
rejeita uma determinada sequência de símbolos, executando uma sequência de estados
determinada exclusivamente pela sequência, ou seja, considera-se um AFD aquele que
para todo estado conter uma e somente uma transição para cada símbolo do alfabeto.

Já a Expressão Regular descreve um conjunto de cadeias de caracteres, de forma


concisa, sem precisar listar todos os elementos do conjunto. Elas são escritas numa
linguagem formal que pode ser interpreetada por um processador de expressão regular
ou um programa que examina o texto e identifica as partes que casam com a
especificação dada.

Apresentados os conceitos básicos sobre autómatos, autómatos finitos


determinísticos e expressão regular, estamos em condições de avançar para outro nível
de aprendizado proposto com a elaboração deste trabalho. Nas páginas seguintes serão
apresentadas mais informações sobre os termos conceituados acima, isto é, na secção
sobre a Fundamentação Teórica, serão apresentados também os objectivos deste
trabalho e consequentemente a demonstração da conversão de um AFD em expressão
regular.

1.2 Definição do Problema

Dado um Autómato Finito determinístico, como proceder de modo a convertê-lo


para uma expressão regular?

1.2.1 Delimitação do Problema

O procedimento para conversão de um Autómato Finito Determinístico em


Expressão Regular será delimitado com base no exercício apresentado na demonstração
prática, utilizando o Método de Eliminação de Estados.

1.3 Justificativa

De acordo com a informação apresentada na definição do problema, a conversão


de um Autómato Finito Determinístico em Expressão Regular pode ser feita utilizando
o Método de Ardens ou o Método de Eliminação de Estados.Com isso, quremos nesse
trabalho apresentar essa conversão fazendo uso do Método de Eliminação de Estados.

Objectivos

1.3.1 Objectivo Geral

Explicar o procedimento para conversão de um Autómato Finito Determinístico


em Expressão Expressão regular utilizando o Método de Eliminação de Estados.

1.3.2 Objectivo Específico

A partir do objetivo geral tem-se os seguintes objetivos específicos:

 Apresentar conceitos sobre Autómatos;


 Definir Autómato Finito Determinístico;
 Descrever o Método de Eliminação de Estados;
 Demonstrar a conversão de Autómato Finito Dermínisticoem Expressão Regular

1.4 Metodologias de Desenvolvimento

Para o desenvolvimento deste trabalho, inicialmente foi realizado um estudo


sobre Autómatos, Autómatos Finitos Determinístico e sobre Expressão Regular a fim
de reunir as informações necessárias para o suficiente entendimento dos conceitos a
volta do tema abordado.

Após a etapa anterior apresentamos a fundamentação teórica. E por último


fizemos a demonstração prática, isto é, apresentamos a conversão de um AFD em ER.
2. Fundamentação Teórica

Nessa secção apresentaremos os fundamentos teóricos a volta das palavras


chaves que compõem o tema em abordagem, começando por apresentar
conceitos mais avançados sobre Autómato.

2.1 Conceito e Funcionamento de um Autómato

A palavra Autómato tem origem grega e significa automação, isto é sem


influência externa. Um autómato é uma representação finita de uma lingugem
formal que pode ser um conjunto de infinito.

Um autómato é uma construção feita de estados, projhectado para determinar


se a entrada pode ser aceita ou rejeitada. Eles desepenham um papel importante
em teoria da computação, na elaboração de compiladores, inteligência artificial,
anâlise sintática e verificação formal. Sendo assim ele pode ser definido como
uma um objecto que toma uma palavra como entrada e decide se a aceita ou
rejeita. Mas como ele funciona?

Quando a mâquina recebe uma nova entrada, ela analisa o estado e escolhe
um novo local baseada na informação sobre o que fazer ao receber essa entrada
nessse estado e quando não há mais entradas, o autómato para e o espaço onde
está qaundo conclui determina se o autómato aceita ou rejeita esse conjunto
específico de entradas. O autómato processa uma entrada obtida a partir de um
conjunto de símbolos ou letras, que é chamado de alfabeto. Para cada instante
durante a execução, o autómato está em um de seus estaods. E ao receber uma
nova entrada, ele se move para outro estado, ou seja, faz a transição, baseada
numa função que tem o estado atual e o símbolo como parâmetros.

De acordo com a função de transição o autómato lê os símbolos da palavra


de entrada, um após o outro e faz a transição de estado para estado. E o estado
na qual o autómato para é chamado de estado final.se o estado final é uma
palavra de aceitação, então o autómato aceita a palavra, caso contrário a palavra
é rejeitada.

2.2 Autómato Finito Determinístico

Um autómato finito consiste num número finito de estados e um conjunto de


regras que definem a mudança de estado quando o autómato lê um símbolo de
sua entrada. Se o estado seguinte for unicamente determinado pelo estado actual
e pelo símbolo lido dizemos que o autómato é deterministico.

Um AFD é definido como um conceito matemático abstrato, mas geralmente


é implementado em hardwares e softwares para resolver vários problemas
específicos, como análise lexical e correspondência de padrões. Por exemplo,
um AFD pode modelar um software que decide se a entrada do usuário é
sintaticamente válida ou não.

2.2.1 Definição Formal de AFD

Formalmente, definimos um AFD A como sendo um quíntuplo (Q, S, õ, ç0,


F) onde:
•Q é o conjunto finito de estados,
• ∑ é o alfabeto de entrada
• ᵹ : Q x ∑ - > Q é a função de transição,
• q0 € Q é o estado inicial e
 F ⸦ Q é o conjunto de estados finais.

A partir desse quíntuplo podemos deduzir que a primeira condição diz que a
mâquina inica no estado inicial q0 . A segunda condição diz que , dado cada
caracter, a maquina fará a transição de um estado para outro de acordo com a
função de transição. E a última condição diz que a máquina aceita uma string se
a última entrada dessa stringt fizer com que que a maquina pare em um dos
estados de aceitação. Caso contrário, diz-se que o autómato rejeita a sequência.

Alguns autores, no entanto, usam o termo automáto deterministico para uma


noção ligeiramente diferente, como sendo um autómato que define no máximo
uma transição para cada estado e cada símbolo de entrada.

2.3 Conversão de AFD para Expressão Regular


Como já foi dito, em páginas anteriores, existem dois métodos para fazermos
a conversão de AFD para ER, no entanto nesse trabalho faremos o uso do
método de Eliminação de Estados.

2.3.1 Método de Eliminação de Estados.

Esse método consistem em um conjunto de passos e parametros a serem


seguidos, descreveremos então esses passos:

Primeiro Passo: Se o estado inicial for um estado de aceitação ou tiver


trnasições, é adicionado um novo estado inicial de não aceitação e também é
adicionado uma transição entre o novo estado inicial e o antigo estado
inicial.

Segundo Passo: Se houver mais de um estado de aceitação ou se o único


estado de aceitação tiver transições, adicione um novo estado de aceitação,
tornando todos os outros estados de não aceitação e adicionado uma
transição em cada estado de aceitação anterior para o novo de aceitação.

Terceiro Passo: Para cada estado de não aceitação de não inicialização,


elimine o estado e atualize as transições de acordo.Esses passos ficarão mais
claro no próximo capitulo, onde será apresentado um exemplo de aplicação
desse método.
3. Demonstração Prática

Dado o AFD abaixo, faça a conversão do mesmo para Expressão Regular:

Resolução:

1. Passo: Verificar se o estado inicial tem uma transição entrando para ele,
como no AFD dado tem, logo deve ser criado um novo estado inicial, cuja
transição vazia aponta para o estado inicial anterior:

2. Passo: Verificar se o estado final tem uma transição saíndo dele, como no
AFD dado tem, então deve ser criado um novo estado final, cuja transição
vazia sai do estado final anterior para o novo:

3. Passo: Verificar se existem múltiplo estados finais. Como no AFD na qual


estamos trabalhando não tem, então, passamos para o passo seguinte.
4. Passo: Eliminar os estados intermidiários, de modo que resta apenas o
estado inicial e o final:
a) Eliminar o estado q1:

b) Eliminar o estado q2:

C*a(d+bc*a)*

5. Passo:
Apresentar a expressão regular obtida a partir da conversão:
A expressão Regular correspondente ao AFD dado é c*a(d+bc*a)*
Conclusão
Após tudo o que foi abordado, podemos concluir que nossos objectivos foram
alcançados. Pois conseguimos demonstrar a conversão de AFD em Expressão regular,
utilizando o método de Eliminação de Estados. Além do mais foi possível
compreeender que fica muito mais fácil fazermos essa conversão ao se tratar de um
AFD.
Bibliografia
pt.m.wikipedia.org/wiki/Teoria_dos_autômatos
pt.m.wikipedia.org/wiki/Expressão_regular
stringfixer.com/pt/Deterministic_finite_automata
www.tutorialspoint.com/how-to-convert-the-automata-into-regular-expressions

Você também pode gostar