Escolar Documentos
Profissional Documentos
Cultura Documentos
2. Linguagens Regulares
2 – Linguagens Regulares
Aula 07
Prof José Rui
2. Linguagens Regulares
Sumário
Capítulo 2 – Linguagens Regulares
2.1. Definição
2.1.1. Linguagem Tipo 3
2.1.2. Sistema de estados finitos
2.2. Formalismos
2.2.1. Autômatos
a. Autômato Finito Determinístico (AFD)
b. Autômato Finito Não-Determinístico
c. Autômato Finito com Movimentos Vazios
d. Equivalência entre autômatos
e. Minimização de autômatos
2.2.2. Expressão Regular
2.2.3. Gramática Regular
Prof José Rui
2. Linguagens Regulares
Sumário
Capítulo 2 – Linguagens Regulares
2.2.1. Autômatos
d. Equivalência entre autômatos
– Transformar AFN para AFD
– Transformar AFNε para AFN
Prof José Rui
2. Linguagens Regulares
● Portanto:
– Para todo AFN existe um AFD equivalente
● Na prática:
– Dependendo da complexidade do problema, monta-se um AFN
– Por ser mais fácil
– E, posteriormente converte para AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
δ a b
q0 {q0,q1} {q0}
q1 {q2} -
q2 {q2} {q2}
AFN to AFD
● Exemplo
δ a b
q0 {q0,q1} {q0}
q1 {q2} -
q2 {q2} {q2}
AFN to AFD
● Exemplo
φ a b
{q0}
{q1}
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
2º - Criar tabela de transição AFD
Ø
● Todas as combinações dos estados AFN
AFN to AFD
● Exemplo
φ a b
{q0}
{q1}
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q0
Ø
AFN to AFD
● Exemplo
φ a b
{q0}
{q1}
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q0
Ø
– AFN ao processar “a” vai para {q0,q1}
Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1}
{q1}
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q0
Ø
– AFN ao processar “a” vai para {q0,q1}
– Logo, no AFD também irá para {q0,q1} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1}
{q1}
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q0
Ø
– AFN ao processar “b” vai para {q0}
Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1}
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q0
Ø
– AFN ao processar “b” vai para {q0}
– Logo, no AFD também ira para {q0} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2}
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q1
Ø
– AFN ao processar “a” vai para {q2}
– Logo, no AFD também ira para {q2} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
δ a b {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q1
Ø
– AFN ao processar “b” vai para -
– Logo, no AFD também ira para - Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
δ a b {q2} {q2}
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q2
Ø
– AFN ao processar “a” vai para {q2}
– Logo, no AFD também ira para {q2} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado q2
Ø
– AFN ao processar “b” vai para {q2}
– Logo, no AFD também ira para {q2} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q1}
Ø
– São dois estados, logo será a união deles
Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q1}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “a” vai para {q0,q1} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q1}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “a” vai para {q0,q1} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q1}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “a” vai para {q0,q1} Tabela de transição do AFD
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q1}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “a” vai para {q0,q1} Tabela de transição do AFD
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q1}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “b” vai para {q0} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q1}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “b” vai para {q0} Tabela de transição do AFD
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q2}
Ø
– São dois estados, logo será a união deles
Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q2}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “a” vai para {q0,q1} Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q2}
Ø
– São dois estados, logo será a união deles
– AFN, q0 ao processar “a” vai para {q0,q1} Tabela de transição do AFD
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q2}
Ø
– AFN, q0 ao processar “b” vai para {q0}
Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2} {q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q0,q2}
Ø
– AFN, q0 ao processar “b” vai para {q0}
– AFN, q2 ao processar “b” vai para {q2} Tabela de transição do AFD
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2} {q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q1,q2}
Ø
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2} {q0,q2}
q2 {q2} {q2}
{q1,q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q1,q2}
Ø
– AFN, q1 ao processar “a” vai para {q2}
Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2} {q0,q2}
q2 {q2} {q2}
{q1,q2} {q2}
Tabela de transição do AFN
{q0,q1,q2}
● Estado {q1,q2}
Ø
– AFN, q1 ao processar “a” vai para {q2}
– AFN, q2 ao processar “a” vai para {q2} Tabela de transição do AFD
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2} {q0,q2}
q2 {q2} {q2}
{q0,q1,q2}
● Estado {q1,q2}
Ø
– AFN, q1 ao processar “b” vai para -
– AFN, q2 ao processar “b” vai para {q2} Tabela de transição do AFD
– - U {q2} = {q2}
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2} {q0,q2}
q2 {q2} {q2}
{q0,q1,q2} {q0,q1,q2}
● Estado {q0,q1,q2}
Ø
– AFN, q0 ao processar “a” vai para {q0,q1}
– AFN, q1 ao processar “a” vai para {q2} Tabela de transição do AFD
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
qo {qo,q1} {q0}
{q0,q1} {q0,q1,q2} {q0}
q1 {q2} -
{q0,q2} {q0,q1,q2} {q0,q2}
q2 {q2} {q2}
AFN to AFD
● Exemplo
φ a b
{q0} {q0,q1} {q0}
{q1} {q2} -
AFN to AFD
● Exemplo
φ a b
S0 {q0} {q0,q1} {q0}
S1 {q1} {q2} -
AFN to AFD
● Exemplo
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
S2 {q2} S2 S2
S3 {q0,q1} S6 S0
S4 {q0,q2} S6 S4
S5 {q1,q2} S2 S2
S6 {q0,q1,q2} S6 S4
● Vamos melhorar esta tabela
S7 Ø - -
● Vamos dar nomes a estes novos estados
● Substutuindo as colunas “a” e “b” Tabela de transição do AFD
Prof José Rui
2. Linguagens Regulares
Algoritmo de conversão
1º - Tabela de transição AFN
2º - Tabela de transição AFD
– Estados: todas as possíveis combinações do AFN
– Total de estados: 2n
– Quando um estado for um conjunto, o novo será a união das transições
3º - Marcar os novos estados finais
– Todos os conjuntos que contém algum estado final do AFN
4º - Eliminar os estados:
– Inalcançáveis
– Que não possuem saídas e não são finais
5º - Verificar no desenho do grafo se tem algum ciclo inalcançável
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
S2 {q2} S2 S2
S3 {q0,q1} S6 S0
S4 {q0,q2} S6 S4
S5 {q1,q2} S2 S2
S6 {q0,q1,q2} S6 S4
● Qual(is) era(m) final(is) no AFN?
S7 Ø - -
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
S2 {q2} S2 S2
S3 {q0,q1} S6 S0
S4 {q0,q2} S6 S4
S5 {q1,q2} S2 S2
S6 {q0,q1,q2} S6 S4
● Qual(is) era(m) final(is) no AFN?
S7 Ø - -
● R: q2
● Agora basta marcar no AFD todos que tem esses estados
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
*S2 {q2} S2 S2
S3 {q0,q1} S6 S0
*S4 {q0,q2} S6 S4
*S5 {q1,q2} S2 S2
*S6 {q0,q1,q2} S6 S4
● Qual(is) era(m) final(is) no AFN?
S7 Ø - -
● R: q2
● Agora basta marcar no AFD todos que tem esses estados, eles serão os
novos estados finais
Prof José Rui
2. Linguagens Regulares
Algoritmo de conversão
1º - Tabela de transição AFN
2º - Tabela de transição AFD
– Estados: todas as possíveis combinações do AFN
– Total de estados: 2n
– Quando um estado for um conjunto, o novo será a união das transições
3º - Marcar os novos estados finais
– Todos os conjuntos que contém algum estado final do AFN
4º - Eliminar os estados:
– Inalcançáveis
– Que não possuem saídas e não são finais
5º - Verificar no desenho do grafo se tem algum ciclo inalcançável
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
S2 {q2} S2 S2
S3 {q0,q1} S6 S0
S4 {q0,q2} S6 S4
S5 {q1,q2} S2 S2
S6 {q0,q1,q2} S6 S4
S7 Ø - -
● Eliminar estados inalcançáveis
– Na prática é eliminar os estados que não aparecem nas colunas “a” e “b” de outro estado
– Ou seja, ninguém chega nele
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
S2 {q2} S2 S2
S3 {q0,q1} S6 S0
S4 {q0,q2} S6 S4
S5 {q1,q2} S2 S2
S6 {q0,q1,q2} S6 S4
S7 Ø - -
● Eliminar estados inalcançáveis
– Na prática é eliminar os estados que não aparecem nas colunas “a” e “b” de outro estado
– Ou seja, ninguém chega nele
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
S3 {q0,q1} S6 S0
S4 {q0,q2} S6 S4
S5 {q1,q2} S2 S2
S6 {q0,q1,q2} S6 S4
S7 Ø - -
● Eliminar estados inalcançáveis
– Na prática é eliminar os estados que não aparecem nas colunas “a” e “b” de outro estado
– Ou seja, ninguém chega nele
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S1 {q1} S2 -
S4 {q0,q2} S6 S4
S5 {q1,q2} S2 S2
S6 {q0,q1,q2} S6 S4
S7 Ø - -
● Eliminar estados inalcançáveis
– Na prática é eliminar os estados que não aparecem nas colunas “a” e “b” de outro estado
– Ou seja, ninguém chega nele
Prof José Rui
2. Linguagens Regulares
Algoritmo de conversão
1º - Tabela de transição AFN
2º - Tabela de transição AFD
– Estados: todas as possíveis combinações do AFN
– Total de estados: 2n
– Quando um estado for um conjunto, o novo será a união das transições
3º - Marcar os novos estados finais
– Todos os conjuntos que contém algum estado final do AFN
4º - Eliminar os estados:
– Inalcançáveis
– Que não possuem saídas e não são finais
5º - Verificar no desenho do grafo se tem algum ciclo inalcançável
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S3 {q0,q1} S6 S0
S4 {q0,q2} S6 S4
S6 {q0,q1,q2} S6 S4
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S3 {q0,q1} S6 S0
*S4 {q0,q2} S6 S4
*S6 {q0,q1,q2} S6 S4
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S3 {q0,q1} S6 S0
*S4 {q0,q2} S6 S4
*S6 {q0,q1,q2} S6 S4
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S3 {q0,q1} S6 S0
*S4 {q0,q2} S6 S4
*S6 {q0,q1,q2} S6 S4
AFN to AFD
● Exemplo Tabela de transição do AFD
φ a b
S0 {q0} S3 S0
S3 {q0,q1} S6 S0
δ a b *S4 {q0,q2} S6 S3
qo {qo,q1} {q0}
*S6 {q0,q1,q2} S6 S4
q1 {q2} -
q2 {q2} {q2}
● Pronto!
● Note que agora ele é determinístico
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Ex: Transforme os AFN abaixo para AFD, segundo o algoritmo apresentado
a)
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Ex: Transforme os AFN abaixo para AFD, segundo o algoritmo apresentado
a) b)
Prof José Rui
2. Linguagens Regulares
AFN to AFD
● Ex: Transforme os AFN abaixo para AFD, segundo o algoritmo apresentado
a) b)