Você está na página 1de 14

EXA544

Linguagens Formais e Compiladores

Prof. Fabiana C. Bertoni

Aula 5

Universidade Estadual de Feira de Santana


Departamento de Ciências Exatas
Graduação em Engenharia da Computação
Minimização de um Autômato Finito
O objetivo da minimização é gerar um autômato finito
equivalente com o menor número de estados possível
• Basicamente, o algoritmo de minimização unifica os estados equivalentes
• Dois estados “q” e “p” são ditos equivalentes, se e somente se, para
qualquer cadeia “w” *, (q,w) e (p,w) resultam simultaneamente em
estados finais ou não finais iguais ou equivalentes.

 Um autômato finito para ser minimizado precisa satisfazer aos


seguintes pré-requisitos:
• Não pode ter estados inacessíveis
• Deve ser determinístico
• A função de transição de estados deve ser total
• A partir de qualquer estado estão previstas transições para todos os símbolos
de 
• Caso não estejam, é incluído um estado sumidouro e as transições não
previstas são realizadas para este estado

2
Algoritmo de Minimização
• Seja um AFD M = (Q, , , q0, F) que satisfaz os pré-requisitos de
minimização.
• Para minimizá-lo, siga os seguintes passos:

1. Construir uma tabela relacionando os estados distintos, onde


cada par de estados ocorre somente uma vez

2. Marcação dos estados trivialmente não equivalentes


• Marcar estados finais e não finais

3
Algoritmo de Minimização
3. Marcação dos estados não equivalentes
 Para cada par {q, q’} e para cada símbolo “a”   , suponha que:
(q,a) = p
(q’,a) = p’

 se p = p’
• então q é equivalente a q’ para “a” e não deve ser marcado

 se p  p’
• e o par {p, p’} não está marcado, então {q, q’} é incluído em uma lista a
partir {p, p’} para posterior análise

• e o par {p, p’} está marcado


• {q, q’} não é equivalente e deve ser marcado
• se {q, q’} encabeça uma lista de pares, então marcar todos os pares da
lista
4
Algoritmo de Minimização
4. Unificar os estados equivalentes
• Os estados dos pares não marcados são equivalentes e podem ser unificados
como segue:
• a equivalência é transitiva
• pares de estados não finais equivalentes podem ser unificados como um único
estado não final
• pares de estados finais equivalentes podem ser unificados como um único estado
final
• se algum dos estados equivalentes é inicial, então o correspondente estado
unificado é inicial

5. Excluir os estados inúteis


• Os estados inúteis devem ser excluídos. Um estado q é inútil se é não final e
a partir de q não é possível atingir um estado final.
• Deve-se reparar que o estado sumidouro (se incluído) sempre é inútil

5
Algoritmo de Minimização
• Exemplo
a 1. Construir a tabela
b
q1
0 1
q2
b
a q3
b q4
2 5 q5
a q0 q1 q2 q3 q4
a b a
b
a 2. Marcar estados trivialmente não equivalentes
3 4 q1 X
b q2 X
q3 X X
q4 X X
q5 X X X
q0 q1 q2 q3 q4

6
Algoritmo de Minimização
• Exemplo
a 3. Análise dos pares não marcados
b
q1 X
0 1 q2 X {q0, q3}
b q3 X X {q0, q3}
a
b q4 X X
q5 X X X
2 5
q0 q1 q2 q3 q4
a
a b a
b
a {q0, q3}
3 4 (q0, a) = q2 (q0, b) = q1
b (q3, a) = q4 (q3, b) = q2

como {q1,q2} e {q2,q4} são não marcados,


{q0,q3} é incluído nas listas encabeçadas por
{q1,q2} e {q2,q4}

7
Algoritmo de Minimização
• Exemplo
a 3. Análise dos pares não marcados
b
q1 X
0 1 q2 X {q0, q3}
b q3 X X {q0, q3}
a
b q4 X X {q0, q5}
q5 X X X
2 5
q0 q1 q2 q3 q4
a
a b a
b
a {q0, q5}
3 4 (q0, a) = q2 (q0, b) = q1
b (q5, a) = q2 (q5, b) = q4

como {q1,q4} não é marcado, {q0,q5} é


incluído na lista encabeçada por {q1,q4}
{q2,q2} é obviamente equivalente

8
Algoritmo de Minimização
• Exemplo
a 3. Análise dos pares não marcados
b
q1 X
0 1 q2 X  {q0, q3}
b q3  X X {q0, q3}
a
b q4 X X {q0, q5}
q5 X X X
2 5
q0 q1 q2 q3 q4
a
a b a
b
a {q1, q2}
3 4 (q1, a) = q1 (q1, b) = q0
b (q2, a) = q3 (q2, b) = q5

como {q1,q3} é marcado, então {q1,q2}


também é marcado. Como {q1,q2} encabeça
uma lista, {q0,q3} também é marcado

9
Algoritmo de Minimização
• Exemplo
a 3. Análise dos pares não marcados
b
q1 X
0 1 q2 X  {q0, q3}
b q3  X X {q0, q3}
a
b q4 X  X {q0, q5}
q5  X X X
2 5
q0 q1 q2 q3 q4
a
a b a
b
a {q1, q4}
3 4 (q1, a) = q1 (q1, b) = q0
b (q4, a) = q5 (q4, b) = q3

como {q1,q5} e {q0,q3} são marcados, então


{q1,q4} também é marcado. Como {q1,q4}
encabeça uma lista, {q0,q5} é marcado

10
Algoritmo de Minimização
• Exemplo
a 3. Análise dos pares não marcados
b
q1 X
0 1 q2 X  {q0, q3}
b q3  X X {q0, q3}
a
b q4 X  X {q0, q5}
q5  X X X {q2, q4}
2 5
q0 q1 q2 q3 q4
a
a b a
b
a {q2, q4}
3 4 (q2, a) = q3 (q2, b) = q5
b (q4, a) = q5 (q4, b) = q3

como {q3,q5} não é marcado, então {q2,q4} é


incluído na lista encabeçada por {q3,q5}

11
Algoritmo de Minimização
• Exemplo
a 3. Análise dos pares não marcados
b
q1 X
0 1 q2 X  {q0, q3}
b q3  X X {q0, q3} {q3, q5}
a
b q4 X  X {q0, q5}
q5  X X X {q2, q4}
2 5
q0 q1 q2 q3 q4
a
a b a
b
a {q3, q5}
3 4 (q3, a) = q4 (q3, b) = q2
b (q5, a) = q2 (q5, b) = q4

como {q2,q4} não é marcado, então {q3,q5} é


incluído na lista encabeçada por {q2,q4}

12
Algoritmo de Minimização
• Exemplo
4. Unificar estados equivalentes
a
b q1 X
q2 X  {q0, q3}
0 1
b q3  X X {q0, q3} {q3, q5}
a q4 X  X {q0, q5}
b q5  X X X {q2, q4}
2 5 q0 q1 q2 q3 q4
a
a b a
b Como os estados (q2, q4) e (q3, q5) não são
a
marcados, (q2, q4) são unificados como
3 4
estado não final q24, e (q3, q5) são unificados
b como estado final q35

5. Verificar se há estados inúteis

Não há estados inúteis


13
Algoritmo de Minimização
• Exemplo

a
b
a
b
0 1
b 0 1
a b
b
a
2 5 a
a b
a b a
b 35
a 24
a
3 4
b
b

14

Você também pode gostar