DCC063
Linguagens Formais
e Autômatos
Equivalência entre AFD e AFN com e sem -transições
Para um autômato finito com -transições (ou
com movimento vazio) define-se o -fecho de um estado e como o conjunto de estados alcançáveis a partir de e utilizando-se somente
-transições:
ε𝑓𝑒𝑐ℎ𝑜 𝑞 = {𝑝 ∈ 𝑄| መ𝛿 𝑞, ε ⊢∗ 𝑝, ε }
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre AFD e AFN com e sem -transições
Algoritmo (ε𝑓 𝑞 significa ε𝑓𝑒𝑐ℎ𝑜 𝑞 ): ε𝑓 𝑞 ≔ 𝑞 ;
𝐞𝐪𝐮𝐚𝐧𝐭𝐨 ∃𝛿 𝑝, ε → 𝑟 com 𝑝 ∈ ε𝑓 𝑞 𝐞 𝑟 ∉ ε𝑓 𝑞 𝐟𝐚ç𝐚 ε𝑓 𝑞 ≔ ε𝑓 𝑞 ∪ 𝑟 ;
fim-equanto;
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Exemplo: Determinar o -fecho de cada estado
do autômato:
-fecho(e0) = {e0, e1, e2} -fecho(e1) = {e1, e2} -fecho(e ) = {e }
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
0 1 2
e0 e0 - - e1 e1 - e1 - e2 * e2 - - e2
-e0 e1 e2
2 0
Equivalência de AFN e AFN com AFD (Construção de AFD a partir de um AFN)
Seja 𝑀 = 𝐾, Σ, Δ, 𝑠, 𝐹 um AFN. Devemos
construir um AFD 𝑀′ = 𝐾′, Σ, 𝛿, 𝑠′, 𝐹′ equivalente a M da seguinte forma:
𝐾′ = 2𝐾 𝑠′ = 𝜀𝑓 𝑠
𝐹′ = 𝑄 ⊆ 𝐾′|𝑄 contém um estado final de 𝑀
e, para cada 𝑄 ⊆ 𝐾 e cada símbolo 𝑎 ∈ Σ, definir:
δ 𝑄, 𝑎 =∪ 𝜀𝑓 𝑝 |𝑝 ∈ 𝐾 e 𝑞, 𝑎 → 𝑝 ∈ ∆, para 𝑞 ∈ 𝑄
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Ideia do Algoritmo
Veja o exemplo a seguir
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
a
a
a
a
a
a Caso 1
Exemplo1: Transformar o AF abaixo em um AFD:
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
7
q1 q2 q10
q3 q5
q6 q4
q7 q8 q9
0
1
0
Exemplo1: Transformar o AF abaixo em um AFD:
Calculo do -fecho para cada um dos 10 estados de A:
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
8
Estado -fecho q1 q2 q3 q4 q5 q1 q2 q4 q3 q5
Estado -fecho q6 q7 q8 q9 q10 q6 q9 q8 q10 q7 ,q2 ,q8
,q3 ,q4
,q7
,q7
,q2
,q9 q3 ,q4 ,q9
,q8 q
,q8
,q8 q2
q3 ,q4
,q
,q9
,q9
,q ,q
Exemplo1: Transformar o AF abaixo em um AFD:
Determinar o novo estado inicial s1:
𝑠1 = 𝜀𝑓 𝑞1 = 𝑞1, 𝑞2, 𝑞3, 𝑞4, 𝑞8, 𝑞9
Quais estados são atingidos, usando apenas
transições não 𝜀, pelos estados que estão em 𝜀𝑓 𝑞1 .
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
9
0 1
s1 q5, q10 q6
0 s1
q5,10
Exemplo1: Transformar o AF abaixo em um AFD: Novo estado s2:
𝑠2 = 𝜀𝑓 𝑞5 ∪ 𝜀𝑓 𝑞10 = 𝑞2, 𝑞3, 𝑞4, 𝑞5, 𝑞8, 𝑞9, 𝑞10
Transições para s2.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
10
0 1
s2 q5, q10 q6
0
s2
q5,10
Exemplo1: Transformar o AF abaixo em um AFD: Novo estado s3:
𝑠3 = 𝜀𝑓 𝑞6 = 𝑞2, 𝑞3, 𝑞4, 𝑞6, 𝑞7, 𝑞8, 𝑞9
Transições para s3.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
11
0 1
s3 q5, q10 q6
0
s3
q5,10
Exemplo1: Transformar o AF abaixo em um AFD:
Foram analisados todos os conjuntos de estados
atingidos por transições não . Logo, podemos
construir o AFD resultante.
Os novos estados que contêm o estado final q10
também serão finais.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
12
0 1
→ s1 s2 s3
* s2 s
2 s3
s3 s
2 s3
0
s1
1
s2
s3
0
0 1
Exemplo2: Transformar o AF abaixo em um AFD:
Cálculo do fecho: f(e0) = {e0, e1, e2} f(e1) = {e1, e2} f(e ) = {e }
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
0 1 2
e0 e0 - - e1
e1 - e1 - e2
* e2 - - e2
-13
e0 e1 e2
2 0
Exemplo2: Transformar o AF abaixo em um AFD:
Determinar o novo estado inicial s1:
𝑠1 = 𝜀𝑓 𝑒0 = 𝑒0, 𝑒1, 𝑒2
Quais estados são atingidos, usando apenas
transições não 𝜀, pelos estados que estão em 𝜀𝑓 𝑒0 .
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
14
0 1 2
s1 e0 e1 e2
0
s1
e0
e1 1
Exemplo2: Transformar o AF abaixo em um AFD: Novo estado s2:
𝑠2 = 𝜀𝑓 𝑒1 = 𝑒1, 𝑒2
Transições para s2.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
15
1
s2
e1
e2 2
0 1 2
Exemplo2: Transformar o AF abaixo em um AFD: Novo estado s3:
𝑠3 = 𝜀𝑓 𝑒2 = 𝑒2
Transições para s3.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
16
s3 2 e2
0 1 2
Exemplo2: Transformar o AF abaixo em um AFD Substituir cada ei por seu respectivo f(ei), Assim:
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
17
0 1 2
s1 e0 e1 e2
0 1 2
s2 – e1 e2
0 1 2
s3 – – e2
0 1 2
s1 f(e0) f(e1) f(e2)
0 1 2
s1 s1 s2 s3
0 1 2
s2 – f(e1) f(e2)
0 1 2
s2 – – f(e2)
0 1 2
s2 – s2 s3
0 1 2
Exemplo2: Transformar o AF abaixo em um AFD
Finalmente, obtém-se o AFD:
Como o e2 está no fecho de s1, s2 e s3; estes também
serão estados finais.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
18
0 1 2
* s
1 s1 s2 s3
* s
2 – s2 s3
* s
3 – – s3
s3
2
0 1
s2 s1 1
2
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Exemplo3: Transformar AFN → AFD,
considerando o AFN abaixo:
b b
b
q0 q1 q2 q3 q4 q5 a
a b q0 - q1 q1 q1 - - q2, q5 q2 q4 q3 -q3 - q4 -q4 - - q2, q5
* q - -
- Tabela
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estado -fecho
q0 q0, q1, q2, q5 q1 q1, q2, q5 q2 q2
q3 q3
q4 q4, q2, q5
q q
20
Exemplo3: Transformar AFN → AFD:
Determinar o novo estado inicial s1:
𝑠1 = 𝜀𝑓 𝑞0 = 𝑞0, 𝑞1, 𝑞2, 𝑞5
Quais estados são atingidos, usando apenas
transições não 𝜀, pelos estados que estão em 𝜀𝑓 𝑞0 .
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
21
a b
Exemplo3: Transformar AFN → AFD: Novo estado s2:
𝑠2 = 𝜀𝑓 𝑞1 ∪ 𝜀𝑓 𝑞3 = 𝑞1, 𝑞2, 𝑞3, 𝑞5
Transições para s2.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
22
a b
Exemplo3: Transformar AFN → AFD: Novo estado s3:
𝑠3 = 𝜀𝑓 𝑞4 = 𝑞2, 𝑞4, 𝑞5
Transições para s3.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
23
a b
Exemplo3: Transformar AFN → AFD: Novo estado s4:
𝑠4 = 𝜀𝑓 𝑞3 ∪ 𝜀𝑓 𝑞4 = 𝑞2, 𝑞3, 𝑞4, 𝑞5
Transições para s4.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
24
a b
Exemplo3: Transformar AFN → AFD: Novo estado s5:
𝑠5 = 𝜀𝑓 𝑞3 = 𝑞3
Transições para s4.
Estas serão as transições partindo de s5.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
25
a b
Exemplo3: Transformar AFN → AFD:
Foram analisados todos os conjuntos de estados
atingidos por transições não .
Juntando as tabelas
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
26
a b
s1 q4 q1, q3
s2 q4 q3, q4
s3 q4 q3
s4 q4 q3, q4
s5 – q4
𝑠1 = 𝜀𝑓 𝑞0
𝑠2 = 𝜀𝑓 𝑞1 ∪ 𝜀𝑓 𝑞3 𝑠3 = 𝜀𝑓 𝑞4
𝑠4 = 𝜀𝑓 𝑞3 ∪ 𝜀𝑓 𝑞4 𝑠5 = 𝜀𝑓 𝑞3
Exemplo3: Transformar AFN → AFD:
AFD resultante:
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
27
a b
* s
1 s3 s2
* s
2 s3 s4
* s
3 s3 s5
* s
4 s3 s4
s5 – s3
Exemplo4: Transformar AFN → AFD:
Cálculo do fecho: f(1) = {1, 3}
f(2) = {2} f(3) = {3}
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
28
1 b
a, b
2 a 3
Exemplo4: Transformar AFN → AFD:
Determinar o novo estado inicial s13:
𝑠13 = 𝜀𝑓 1 = 1,3
Quais estados são atingidos, usando apenas
transições não 𝜀, pelos estados que estão em 𝜀𝑓 1 .
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
29
a b
Exemplo4: Transformar AFN → AFD: Novo estado s2:
𝑠2 = 𝜀𝑓 2 = 2
Transições para s2.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
30
a b
Exemplo4: Transformar AFN → AFD:
Novo estado s23:
𝑠23 = 𝜀𝑓 2 ∪ 𝜀𝑓 3 = 2,3
Transições para s23.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
31
a b
Exemplo4: Transformar AFN → AFD: Novo estado s123:
𝑠123 = 𝜀𝑓 1 ∪ 𝜀𝑓 2 ∪ 𝜀𝑓 3 = 1,2,3
Transições para s123.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
32
a b
Exemplo4: Transformar AFN → AFD: Novo estado s3:
𝑠3 = 𝜀𝑓 3 = 3
Transições para s3.
Estas serão as transições partindo de s .
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
33
a b
Exemplo4: Transformar AFN → AFD:
Foram analisados todos os conjuntos de estados
atingidos por transições não .
Juntando as tabelas
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
34
a b
s13 1 2
s2 2, 3 3
s23 2, 3, 1 3
s123 2, 3, 1 2, 3
s3 1 –
𝑠13 = 𝜀𝑓 1 𝑠2 = 𝜀𝑓 2
𝑠23 = 𝜀𝑓 2 ∪ 𝜀𝑓 3
𝑠123 = 𝜀𝑓 1 ∪ 𝜀𝑓 2 ∪ 𝜀𝑓 3 𝑠3 = 𝜀𝑓 3
Exemplo4: Transformar AFN → AFD:
AFD resultante:
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
35
a b
* s
13 s13 s2
s2 s23 s3
s23 s123 s3
* s
123 s123 s23
s3 s13 –
s13 b
a
s2
a b
s3
s23
s123 a b
a b
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Minimização de Autômatos Finitos
Diz-se que um AF é mínimo se ele não possui
estados inatingíveis ou mortos e se não existem estados equivalentes entre si;
Exceto pelos nomes dos estados, existe apenas
uma máquina mínima para um dado problema de reconhecimento
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Inatingíveis
Pode haver alguns estados no AF que nunca
serão atingidos com nenhuma sequência de símbolos a partir do estado inicial.
Tais estados são chamados de estados
inatingíveis. As linhas da tabela que correspondem a estados inatingíveis podem ser simplesmente removidas da tabela de transição para deixar a máquina com menos estados.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Inatingíveis
Algoritmo: Eliminação de Estados
Inatingíveis
Entrada: Um Autômato Finito
M = (E, A, t, e0, F)
Saída: Um Autômato Finito sem estados
Inatingíveis
M’ = (E’, A, t’, e0, F’)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Inatingíveis
Inicialize o conjunto de estados atingíveis E’ com o estado
inicial e0.
Adicione, em E’, para cada estado e, presente no conjunto E’,
todos os estados d que podem ser alcançados por uma
transição a partir de e, ou seja, todos os estados d tal que t(e,x) = d para algum xA.
Se nenhum novo estado pode ser adicionado ao conjunto E’
com o uso destas regras, já foi obtido o conjunto de estados atingíveis.
Coloque em t’ todas as transições t(x,y)=z tal que x,zE’ e yA.
Coloque em F’ todos os estados que pertencem simultaneamente a F e a E’.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Mortos
Um estado e de um AF é morto se ele não é final
e se a partir dele não se pode atingir nenhum estado final.
Para eliminar os estados mortos de um AF M
proceda como segue:
Algoritmo: Eliminação de Estados Mortos
Entrada: Um AF M = (E, A, t, e0, F)
Saída: Um AF sem estados mortos M’ = (E’, A, t’, e0’,
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Mortos
(1)Inicialize o conjunto de estados não-mortos E’ com os
estados finais F de M.
(2)Para cada estado e em E’, adicione os estados de E que
levam para e com uma transição de t para algum símbolo de
entrada. Ou seja, adicione em E’ o conjunto {x| t(x,a) = e, eE’
e aA}
(3)Repita o passo (2) até que mais nenhum estado possa ser
adicionado ao conjunto E’.
(4)Coloque em t’ todas as transições t(x,y) = z tal que x, zE’ e yA. Se e0E’ então faça e0’= e0; caso contrário, e0’ é um novo
símbolo de estado e a linguagem reconhecida pelo autômato é vazia, uma vez que o estado inicial é morto.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Considere os estados de aceitação (finais) c e g.
São estados que, uma vez atingidos, nunca se sai deles, desde que que se leia 0 ou 1. Esses dois estados são realmente necessários?
42
c
0,1 b
0
a d
g
0 1
0
1 0,1
f
e 0
1
1
0,1
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Quando o controle atinge os estados b ou f então:
se a cadeia termina, é rejeitada em ambos casos;
se a próxima entrada é 0, aceita com qualquer sufixo em
ambos casos
se a próxima entrada é 1, rejeita com qualquer sufixo em
ambos casos
43
b 0
a d c,g
0 1 0 1 0,1 f e 0 1 1 0,1 Os estados b e f
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Intuitivamente, dois estados são equivalentes se
todas as computações a partir deles são iguais 44
b,f 0
a
d
c,g 0
0,1 e
0
1
1
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Removendo o estado inatingível d e o estado morto
e obtém-se o autômato:
45
b,f 0
a c,g
0
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Dois estados e e d são equivalentes se e somente
se as duas condições seguintes forem satisfeitas: (a)Condição de compatibilidade: os estados e e d
devem ser ambos finais ou ambos não-finais.
(b)Condição de propagação: para qualquer símbolo
de entrada, os estados e e d devem levar a estados
equivalentes.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
As condições (a) e (b) podem ser incorporadas
em um teste geral de equivalência entre estados
O método é chamado método da separação, uma
vez que seu objetivo é separar, ou particionar, o conjunto de estados em subconjuntos disjuntos, ou blocos, tal que estados não-equivalentes fiquem em blocos separados
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
O método é ilustrado por sua aplicação no AF da
tabela seguinte:
t a b e1 e6 e3 e2 e7 e3 e3 e1 e5 e4 e4 e6 * e5 e7 e3 * e6 e4 e1 * e e e
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Os estados são inicialmente separados em dois
blocos; um contendo os estados finais e outro contendo os estados não-finais (Cond. Compatilidade)
Para o exemplo, a partição inicial L0 é dada pela
seguinte lista:
L0 = [{e1, e2, e3, e4},{e5, e6, e7}]
já que e1, e2, e3 e e4 são estados não finais e e5, e6
e e7 são estados finais
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Observe o que acontece aos estados no bloco {e1,
e2, e3, e4} com entrada a:
Os estados e3 e e4 vão para estados contidos no
primeiro bloco (e1 e e4 respectivamente)
enquanto os estados e1 e e2 vão para estados no
segundo bloco (e6 e e7 respectivamente)
Isto significa que para qualquer estado no
conjunto {e1, e2 } e qualquer estado em {e3, e4} os estados seguintes correspondendo a entrada a não serão equivalentes
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Pode concluir que nenhum estado em {e1, e2}
será equivalente a nenhum estado em {e3, e4}. Isto habilita a construção de uma nova partição:
L1 = [{e1, e2},{e3, e4},{e5, e6, e7}]
Agora se tentará encontrar um bloco em L1 e
uma entrada tal que o bloco possa ser separado com respeito a entrada e uma nova partição seja assim obtida
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Este processo deve ser repetido até que
nenhuma nova separação seja possível. No exemplo, a continuação seria a seguinte:
Separando {e3, e4} de L1 com respeito a a: L2 = [{e1, e2},{e3},{e4},{e5, e6, e7}]
Separando {e5, e6, e7} de L2 com respeito a a (ou b):
L3 = [{e1, e2},{e3},{e4},{e5},{e6, e7}]
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
A partição L3 não pode ser mais separada. Para
verificar isto, observe que todos os estados no bloco {e1, e2} vão para estados no bloco {e6, e7} com entrada a, e para o bloco {e3} com entrada b
Similarmente {e6, e7} vão para os blocos {e4 } e
{e1, e2} com entrada a e b, respectivamente
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Quando o procedimento termina, os estados
dentro de um mesmo bloco são equivalentes. No exemplo, os estados e1 e e2 são equivalentes e os estados e6 e e7 também.
Os blocos da partição final podem ser usados
para construir uma nova máquina, a qual é equivalente à original, porém sem possuir estados equivalentes.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Para o exemplo a máquina mínima resultante
seria:
t a b t a b
{e1, e2} {e6, e7} {e3} e1 e5 e2
{e3} {e1, e2} {e5} e2 e1 e4
{e4} {e4} {e6, e7} ou e3 e3 e5 * {e5} {e6, e7} {e3} * e4 e5 e2 * {e6, e7} {e4} {e1, e2} * e5 e3 e1
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estados Equivalentes
Ou em forma de diagrama de transição (com os
estados renomeados):
e1
a
e2
e5
b a
b
e4
e3
a a
a
b
b
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
57
Estados Equivalentes
Exemplo 2: Achar e unificar os estados
equivalentes do AFD abaixo
0
C B
0 A
0
D
F
E G H
1
1
0 1
1 0
1 1
0 0
1 0
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
58
Estados Equivalentes
Exemplo 2: Pela condição de compatibilidade: 𝐿0 = 𝐴, 𝐵, 𝐷, 𝐸, 𝐹, 𝐺, 𝐻 , 𝐶
Observe que os estados B, D, F e H possuem
transições para C e os demais – A, E e G – não as
possuem. Logo A, E e G não são equivalentes aos demais:
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
59
Estados Equivalentes
Aplicando a condição de propagação. Observe que G
fica no mesmo grupo enquanto A e E vão para outro:
𝐿2 = 𝐴, 𝐸 , 𝐺 , 𝐵, 𝐷, 𝐹, 𝐻 , 𝐶
Aplicando a condição de propagação. B e H vão para
C com 1 e com 0 para G. D e F vão com 1 para G e 0 para C:
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
60
Estados Equivalentes
Não há como separar mais os conjuntos de estados
usando a condição de propagação:
C A,E
1
B,H
0 0
1 0
1 0
1
D,F G
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Estado de Erro
Para não deixar transições indefinidas em M,
pode-se substituir todas as indefinições por um estado de erro “ERRO” e adicionar este estado à tabela. Para cada símbolo de entrada o estado
“ERRO” tem transição para si próprio. O estado
de erro não deve jamais ser definido como estado final
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Autômato Finito Mínimo
Algoritmo: Minimização de Autômato Finito
Entrada: um Autômato Finito M = (E, A, t, e0, F). Saída: um AF mínimo M’ = (E’, A, t’, e0’, F’).
1. Elimine os estados inatingíveis (ou inalcançáveis);
2. Elimine os estados mortos;
3. Adicione o estado de erro;
4. Elimine os estados redundantes (equivalentes)
Equivalência entre ER’s e AF’s
Pode-se construir um ER a partir de qualquer AFD.
Tal construção mostra que se uma linguagem é regular, então ela é descrita por uma ER.
O método deve ser aplicado para um AFNG
(Autômato Finito Não-determinístico
Generalizado).
Isto é, o AFD deve ser transformado num AFNG e
este último numa ER.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Conversão AFD → AFNG
AFNG são simplesmente AFN nos quais as setas de
transição podem ter quaisquer ER como rótulos;
Sendo assim, o AFNG lê blocos de entrada (não
apenas um símbolo de cada vez) e se move ao longo de uma transição entre 2 estados ao ler tal bloco o qual constitui uma cadeia descrita pela expressão regular sobre a seta.
Um AFNG é não-determinístico e, portanto, pode
ter várias formas de processar a mesma entrada.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Conversão AFD → AFNG
Exemplo de AFNG
Uma transição rotulada ∅ nunca é utilizada.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
65
qfim qini
ab*
∅
𝑏
b*
ab
𝑎𝑎 ∗ 𝑎𝑎
𝑎𝑏|𝑏𝑎
Conversão AFD → AFNG
Será exigido que o AFNG tenha, por conveniência,
o seguinte formato:
O estado inicial tem transições para todos os outros,
mas nenhum chegando de qualquer outro;
Existe apenas um estado final ( do inicial), e ele tem
transições chegando de todos os outros, mas nenhuma saindo para qualquer outro estado;
Com exceção dos estados inicial e final, uma transição
sai de cada estado para todos os outros e para ele mesmo.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Conversão AFD → AFNG
É fácil fazer a conversão AFD → AFNG com este
formato especial:
Adiciona-se um novo estado inicial com rótulo 𝜀 para
o estado inicial antigo e um novo estado final com rótulo 𝜀 chegando dos antigos estados finais;
Se há múltiplas transições entre dois estados na
mesma direção, substitui-se cada uma por uma única transição com rótulo sendo a união dos rótulos originais;
Finalmente, adiciona-se transições com rótulo ∅ entre
estados que não tenham transições definidas.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Conversão AFD → AFNG
Definição Formal de AFNG. Um AFNG é uma
5-tupla, 𝑄, Σ, 𝛿, 𝑞0, 𝑞𝑓 , onde:
𝑄: conjunto finito de estados;
Σ: alfabeto de entrada;
𝛿: 𝑄 − 𝑞𝑓 × 𝑄 − 𝑞0 → 𝑅 é a função de transição;
𝑞0: estado inicial;
𝑞𝑓: estado final.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre ER’s e AF’s
A conversão AFNG → ER é realizada removendo
um estado de cada vez do AFNG segunda a regra abaixo (𝑝𝑟 ⟹ estado a ser removido; 𝑟𝑖 ⟹ 𝐸𝑅)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
69
qi
pr
qj
𝑟2
𝑟3 𝑟1
𝑟4
⟹
qi qj𝑟1
As remoções dos estados acabarão no momento em que sobrarem apenas dois estados: inicial e final.
Equivalência entre ER’s e AF’s
Exemplo 1. Converter o AFD abaixo num ER.
Transformação do AFD em um AFNG
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
70
1
𝑏
2
𝑎
𝑏
𝑎
⟹
𝐴𝐹𝑁𝐺𝑎|𝑏 𝜀
f
1
𝑎
𝑏
2
Equivalência entre ER’s e AF’s
Exemplo 1. Converter o AFD abaixo num ER.
Remoção do estado 2
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
71
⟹
𝑟𝑒𝑚𝑜𝑣𝑒 2𝑎|𝑏 𝜀
f
1
𝑎
𝑏
2
s 𝜀
f
1
𝑎
𝑏 𝑎|𝑏 ∗
Equivalência entre ER’s e AF’s
Exemplo 1. Converter o AFD abaixo num ER.
Remoção do estado 1
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
72
⟹
𝑟𝑒𝑚𝑜𝑣𝑒 1f
1
𝑎
𝑏 𝑎|𝑏 ∗
s 𝜀
f
𝑎∗𝑏 𝑎|𝑏 ∗
s
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
73
3
2 1
𝑎
𝑎
𝑏
𝑏
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Transformação do AFD em um AFNG
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
74 3 2 1 𝑎 𝑎 𝑏 𝑏 𝑎
𝑏
⟹
𝐴𝐹𝑁𝐺Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 1 (Trata qi = s e qj = 3)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 1 (Trata qi = s e qj = 2)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 1 (Trata qi = 2 e qj = 3)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 1 (Trata qi = 3 e qj = 2)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 1 (Trata qi = 2 e qj = 2)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 1 (Trata qi = 3 e qj = 3)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 2 (Trata qi = s e qj = f)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
81
⟹
𝑟𝑒𝑚𝑜𝑣𝑒 2f
s 𝑎 𝑎𝑎|𝑏
∗
3
𝑎𝑎|𝑏
f 2
s
𝜀
𝜀 𝑎
𝑏
𝑎𝑏
𝑏𝑎|𝑎
𝑏𝑏
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 2 (Trata qi = s e qj = 3)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
82
⟹
𝑟𝑒𝑚𝑜𝑣𝑒 2f
s 𝑎 𝑎𝑎|𝑏
∗
3
𝑎𝑎|𝑏
f 2
s
𝜀
𝜀 𝑎
𝑏
𝑎𝑏
𝑏𝑎|𝑎
𝑏𝑏
3
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 2 (Trata qi = 3 e qj = f)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
83
⟹
𝑟𝑒𝑚𝑜𝑣𝑒 2f
s 𝑎 𝑎𝑎|𝑏
∗ 3 𝑎𝑎|𝑏 f 2 s 𝜀 𝜀 𝑎 𝑏 𝑎𝑏 𝑏𝑎|𝑎 𝑏𝑏 3
𝑎 𝑎𝑎|𝑏 ∗ab|b
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 2 (Trata qi = 3 e qj = 3)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
84
⟹
𝑟𝑒𝑚𝑜𝑣𝑒 2f
s 𝑎 𝑎𝑎|𝑏
∗ 3 𝑎𝑎|𝑏 f 2 s 𝜀 𝜀 𝑎 𝑏 𝑎𝑏 𝑏𝑎|𝑎 𝑏𝑏 3
𝑎 𝑎𝑎|𝑏 ∗ab|b
𝑏𝑎|𝑎 𝑎𝑎|𝑏 ∗|𝜀
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Remoção do estado 3 (Trata qi = s e qj = f)
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
85
⟹
𝑟𝑒𝑚𝑜𝑣𝑒 3f
s 𝑎 𝑎𝑎|𝑏
∗
3
𝑎 𝑎𝑎|𝑏 ∗𝑎𝑏|𝑏
𝑏𝑎|𝑎 𝑎𝑎|𝑏 ∗|𝜀
𝑏𝑎|𝑎 𝑎𝑎|𝑏 ∗𝑎𝑏|𝑏𝑏
Equivalência entre ER’s e AF’s
Exemplo 2. Dado o AFD de 3 estados, determinar a
ER equivalente.
Obtém-se, finalmente, a ER do AFD
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
86
𝑎 𝑎𝑎|𝑏 ∗𝑎𝑏|𝑏 𝑏𝑎|𝑎 𝑎𝑎|𝑏 ∗𝑎𝑏|𝑏𝑏 ∗ 𝑏𝑎|𝑎 𝑎𝑎|𝑏 ∗|𝜀 |𝑎 𝑎𝑎|𝑏 ∗
Equivalência entre ER’s e AF’s
Exercícios. Dado o AFD abaixo, determinar a ER
equivalente.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
87
A2
q2
1
0 0
1
q1
q0
q3
0 0
Equivalência entre ER’s e AF’s
Exercícios. Dados os AFDs abaixo, determinar a ER
equivalente.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
88
q1 b q2
a q0 qf a a a b b b q1 1 0 0 1 0
q2 q3
2 3
q1
0
0 1
Equivalência entre ER’s e AF’s
Exercícios. Dados os AFDs abaixo, determinar a ER
equivalente.
Linguagens Regulares – Gramáticas Regulares e Autômatos Finitos
89
q2
b
b a
a
4 s
r1 q1
r2
a a b b
b
a q0
a
a b
q2 q1