Saltar para o conteúdo

2.3 Equivalência entre AFDs e AFNs

Fonte: Wikiversidade

Dois autômatos X e Y são equivalentes sse (se e somente se) ambos reconhecem a mes-

ma linguagem, ou seja, sse L(X) = L(Y).


Vamos mostrar, nesta aula, que os modelos AFN e AFD são equivalentes, ou seja, va-

mos mostrar que as duas afirmações abaixo são verdadeiras:

  • Todo AFD tem um AFN equivalente – trivial, porque o modelo AFN estende o

AFD, então todo AFD pode ser tratado como um AFN.

  • Todo AFN tem um AFD equivalente – mostraremos como converter a seguir!


Veremos a conversão de AFN para AFD em duas partes:

1. Conversão de AFN sem transição vazia (ε) para AFD

2. Conversão de AFN qualquer para AFD

De AFN sem Transição ε para AFD – Descrição Formal

[editar | editar código-fonte]

A conversão que veremos é a aplicação de técnica conhecida como construção de sub-

conjuntos. A idéia chave dessa conversão é tratar um conjunto de estados do AFN como

um estado individual do AFD convertido.


Digamos que {q0,q3,q4} seja um conjunto de estados de um AFN. Na conversão, vamos

tratá-lo como um único estado do AFD convertido. Para diferenciar, vou chamar isto de

um estado-conjunto do AFD.


Um estado-conjunto do AFD convertido representa a situação em que o AFN poderia

estar nos vários estados representados, depois de ler a mesma cadeia de símbolos (ao

seguir por caminhos diferentes).

  • Exemplo: se no AFN, lendo a cadeia “aa”, existir dois (ou mais) caminhos que

levam aos estados q1 ou q3; no novo AFD, após ler “aa”, o resultado será o estado-

conjunto {q1,q3}.


Segue a descrição formal da conversão. Como ponto de partida, considere o AFN N

sem transição ε definido assim:

N = (Q, Σ, δ, q0, Qaceita)

[editar | editar código-fonte]

Podemos converter N para um AFD D equivalente assim:

D = (QD, Σ, δD, q0-D, Qaceita-D) , onde:

[editar | editar código-fonte]

QD conterá todos os possíveis subconjuntos de Q. Em outras palavras, QD é o con-

junto das partes de Q.

(Explicação: cada estado-conjunto de D será algum conjunto de estados do autô-

mato N. Apesar da definição acima, nem todo subconjunto de Q será um estado ú-

til no novo autômato – alguns estados serão impossíveis de atingir. Na próxima

seção, veremos como encontrar somente os estados úteis).


Σ é o alfabeto (igual ao do AFD).


q0-D = {q0}

(Explicação: o estado-conjunto inicial será o conjunto unitário formado pelo esta-

do inicial do autômato original N. Porque, em N, antes de ler qualquer símbolo,

esta é a única situação possível).


Qaceita-D = { X | X é um estado-conjunto que contém algum estado de Qaceita }

(Explicação: Os estados de aceitação X do autômato D serão aqueles estados-

conjuntos que possuírem algum estado de aceitação do autômato N. Porque isso

tal estado-conjunto X representa que há algum caminho em N que termina em es-

tado de aceitação).


δD será definida para cada estado-conjunto R (que pertence a QD) e para cada sím-

bolo ai da seguinte forma:

Conversão de AFN para AFD


(Explicação: Para cada estado q ∈ R, aplica a transição do AFN para o símbolo ai,

obtendo um conjunto de estados de destino; o resultado é a união de todos estes

conjuntos para todo q ∈ R).


Na próxima seção, vamos ver uma maneira bem mais prática de calcular um AFD a partir

de um dado AFN.

De AFN sem Transição ε para AFD – Descrição Informal

[editar | editar código-fonte]

Segue um roteiro prático que você pode seguir para fazer a conversão de um AFN para

um AFD:

1. Calcule o estado inicial do novo autômato – ele será simplesmente o conjunto

unitário formado com o estado inicial do AFN.


2. Depois, faça a tabela que representa a função de transição δD do AFD. As li-

nhas serão os estados-conjuntos, enquanto as colunas serão os símbolos. Para

descobrir os estados-conjunto úteis, vamos preencher a tabela inicialmente uma

única linha, que é a do estado-conjunto inicial (do passo 1) e, posteriormente,

adicionaremos novas linhas toda vez que um novo estado for calculado (no pró-

ximo passo).


3. Para cada estado-conjunto R do AFD (linha da tabela) e cada símbolo ai

(colu-na) fazer isso:

  • Para cada estado do AFN (autômato original) que compõe o conjunto R,

calcule as transições para o símbolo ai.

  • Coloque na tabela um só conjunto com todos os estados obtidos. Este será

um estado-conjunto útil (atingível) do AFD.

  • Se o estado-conjunto obtido não tiver aparecido antes, crie uma nova linha

com esse novo estado.


4. O processo acima (passo 3) encerra quando todas as transições para estados-

conjuntos úteis conhecidos estiverem calculadas e não surgir mais nenhum novo

estado-conjunto.


5. Por fim, identifique os estados de aceitação -- basta haver um estado de aceita-

ção do AFN dentro do estado-conjunto do AFD.


6. Desenhe o autômato, se necessário (ou se quiser).


Exemplo 1 (AFN sem transição ε):

Diagrama de Conversão de AFN para AFD sem Transição para Epsilon