O documento descreve os conceitos de autômatos finitos determinísticos e não-determinísticos. Discute as diferenças entre os dois modelos e apresenta exemplos de autômatos finitos não-determinísticos, incluindo a definição formal de AFND. Também aborda operações regulares como união, concatenação e fecho de Kleene sobre linguagens regulares e autômatos finitos.
3. AUTÔMATO FINITO NÃO-DETERMINÍSTICO
• Definição Formal
• Similar um Autômato Finito Determinístico
1. Estados;
2. Um alfabeto de entrada,
3. Uma função de transição;
4. Um estado inicial;
5. Uma coleção de estados de aceitação.
4. AFD VS AFND
•Determinístico
• Transições bem definidas;
• Função de transição leva a um único estado;
• Sequência de estados é única para cada entrada
Não-determinístico
• Transições ambíguas;
• Função de transição leva a vários estados alternativos;
• Várias sequências possíveis
5. DIFERENÇA
• Autômato Finito Determinístico
• A função de transição toma um estado e um
símbolo de entrada e produz o próximo estado.
Autômato Finito Não-determinístico
• A função de transição toma um estado e um símbolo
de entrada ou cadeia vazia e produz um conjunto de
próximos estados possíveis.
6. AUTÔMATO FINITO NÃO-DETERMINÍSTICO
Um AFND é uma 5-upla:
1. Q: Um conjunto finito de estados,
2. Σ: Um conjunto finito de símbolos de entrada (alfabeto),
3. δ: Q x Σ -> P(Q). Uma função de transição. Significa dizer
que permanecendo em um estado e lendo um símbolo do
alfabeto faz o autômato passar para outro estado ou
mesmo ficar no mesmo.
4. q0 ∊ Q que corresponde a um estado inicial (que está em Q)
5. Um conjunto de estados finais F (F é um subconjunto de Q)
A = (Q, Σ, δ, q0, F)
7. AUTÔMATO FINITO NÃO-DETERMINÍSTICO
q1 q2
1
0, 1
0, ε
q4
1
q3
0, 1
Descrição formal de N1 é (Q, Σ, δ, q0, F)
1. Q = {q1, q2, q3, q4 }
2. Σ = {0,1},
3. δ =
4. q0 = Corresponde a q1 que é o estado inicial I
5. F = {q4}
δ 0 1 ε
q1 {q1} {q1,q2 } Ø
q2 {q3} Ø {q3}
q3 Ø {q1} Ø
q4 {q4} {q4} Ø
8. AUTÔMATO FINITO NÃO-DETERMINÍSTICO
• Uma extensão do formalismo AFND
- A diferença é que permite movimentos vazios
• Movimento vazio (transição ε)
- Uma transição sem leitura de símbolo
- Transição não obrigatória
- A fita não se altera
ε Transição Epsilon
AFND-ε
10. AUTÔMATO FINITO NÃO-DETERMINÍSTICO
• Estado de aceitação
• Dizemos que N aceita w se podemos escrever w
como w = y1y2...ym, onde cada yi é um membro
Σε e existe uma sequência de estados r0,r1,...rm
em Q com três condições:
• 1. r0 = q0,
• 2. ri+1 ∊ δ(ri,yi+1), para i=0, ...... m-1, e
• 3. rm ∊ F
11. AUTÔMATO FINITO NÃO-DETERMINÍSTICO
• 1. r0 = q0,
• Diz que a maquina começa no estado inicial.
• 2. ri+1 ∊ δ(ri,yi+1), para i=0, ...... m-1
• Diz que o estado ri+1 é um dos próximos estados permissíveis
quando N está no estado ri e lendo yi+1. Observe que δ(ri,yi+1) é
o conjunto dos próximos estados permissíveis e portanto
dizemos que ri+1 é um membro desse conjunto.
• 3. rm ∊ F
• Diz que a maquina aceita sua entrada se o último estado é um
estado de aceitação.
13. EXEMPLO
• Exemplo N2, com a entrada 00101
q0 q1 q2
0 1
0, 1
q0 q0 q0 q0 q0 q0
q1 q1 q1
q2 q2
0 0 1 0 1
paralisado
paralisado
q2 é um estado de
aceitação, então
00101 é aceito!
14. EQUIVALÊNCIA ENTRE AFD E AFN
• Introdução
• Toda linguagem que pode ser descrita por um AFN
também pode ser descrita por um AFD
• Na prática, um AFD tem quase tantos estados
quanto os que o AFN tem, embora com frequência
tenha mais transições
• No pior caso, o menor AFD pode ter 2n estados,
enquanto o menor AFN para a mesma linguagem
tem apenas n estados
15. EXEMPLO DE N4
2
b
a
a, b
a
3
1
ε
Como o conjunto de estados é {1, 2, 3}, a construção de subconjuntos produz
um AFD com 23 = 8 estados
{ Ø, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} }
Em seguida, determinamos os estados inicial e de aceitação de D. O Estado
inicial é E({1}), o conjunto de estados que são atingíveis a partir de 1 viajando
ao longo de setas ε, mais o próprio 1.
E({1}) = {1,3}.
Novos estados de aceitação contendo o estado de aceitação N4 = { {1}, {1,2},
{1,3}, {1,2,3} }, .
16. EXEMPLO
Podemos simplificar essa maquina observado que nenhuma seta aponta
para os estados {1} e {1,2}, portanto, eles podem ser removidos sem afetar o
desempenho da maquina.
Ø {1}
{1,3}
a,b
{3}
{2} {1,2}
{1,2,3}
a
{2,3
b
a
a
bb
a b
a, b
a
b
b a
18. EXEMPLO 2
L = { w | w aceita todas as strings que
terminam em 01 }
q0 q1 q2
0
0, 1
1
0 1
{q0} {q0,q1} {q0}
{q1} ─ {q2}
{q2} ─ ─*
19. EXEMPLO
L = { w | w aceita todas as strings que
terminam em 01 }
q0 q1 q2
0
0, 1
1
Como o conjunto de estados é {q0, q1, q2}, a construção de
subconjuntos produz um AFD com 23 = 8 estados
20. EXEMPLO
q0 q1 q2
0
0, 1
1
0 1
{q0} {q0,q1} {q0}
{q1} ─ {q2}
{q2} ─ ─
{q0,q1} {q0,q1} {q0,q2}
{q0,q2} {q0,q1} {q0}
{q1,q2} ─ {q2}
{q0,q1,q2} {q0,q1} {q0,q2}
*
*
*
*
O oitavo estado,
que não aparece
na lista, seria o
estado Ø
22. EXEMPLO
q0 q1 q2
q0q1 q0q2 q1q2
q0q1q2
0
1
1
0
1
0
1
1
0
1
De todos os estados listados, só podemos acessar os estados {q0},
{q0q1} e {q0q2}. Os estados inacessíveis não precisam constar.
Portanto...
24. AUTÔMATOS FINITOS
OPERAÇÕES REGULARES
• Em aritmética, os objetos básicos são números, utilizamos
operadores Ex: + e .
• Na teoria da computação os objetos são linguagens,
utilizamos operações específicos para manipulá-las.
• Definimos três operações sobre linguagens, chamadas
operações regulares, e as usamos para estudar
propriedades de linguagens regulares.
25. • Sejam A e B linguagens. Definimos as operações
regulares união, concatenação, e estrela da
seguinte forma.
• União: A B = {x | x A ou x B}.
• Concatenação: A B = {xy | x A e y B}.
• Estrela: A* = {x1x2...xk | k≥0 e cada xi A}.
DEFINIÇÃO
OPERAÇÕES REGULARES
26. OPERAÇÕES REGULARES
EXEMPLO
• Suponha que o alfabeto seja o alfabeto padrão de 26
letras {a, b, ..., z}. Se A = {legal, feliz} e B = {garoto;
garota}, então
• A B = {legal, feliz, garoto, garota},
• A B = {legalgaroto, legalgarota, felizgaroto,
felizgarota}, e
• A* = {, legal, feliz, legallegal, legalfeliz, felizlegal,
felizfeliz, legallegallegal; legallegalfeliz,legalfelizlegal,
legalfelizfeliz,...}.
27. FECHO SOB AS OPERAÇÕES REGULARES
• A classe de linguagens regulares é fechada sobre essas 3
operações.
• Ou seja, sendo A e B duas linguagens regulares
e A U B = C, C também é uma linguagem regular.
28. L(N1) = {0k | k é par}
L(N2) = {0k | k é múltiplo de 3}
FECHO UNIÃO
29. OBS.: Para usar o operação União basta fazer o estado
normalmente é atribuir ɛ ou λ. Isso indica que ele irá
para 0 ou 0
L(N3) = {0k | k é par ou múltiplo de 3}
30. OPERAÇÕES REGULARES
• Teorema: A classe de linguagens regulares é fechada sob a
operação de união.
• Em outras palavras, se A1 e A2 são linguagens regulares, o
mesmo acontece com A1 A2.
• Idéia da Prova: Se A1 e A2 são linguagens regulares, então
existem AFNs N1 e N2 que as reconhecem, respectivamente.
• Vamos fazer uma nova prova. Vamos construir um AFN N,
que reconheça A1 A2, a partir de N1 e N2.
31. UNIÃO
N1 = (Q1,1, 1, q1, F1)
reconhece A1
N = (Q,, , q0, F)
reconhece A1 A2
Q = Q1 Q2 {q0}
(q,a) =
F = F1 F2
N2 = (Q2,2, 2, q2, F2)
reconhece A2.
1(q,a) se q Q1,
2(q,a) se q Q2,
{q1,q2} se q=q0 e a=
se q=q0 e a
32. • Para concatenar (N1 o N2) , atribua ao estado inicial do
novo autômato o estado inicial de N1. Os estados de
aceitação de N1 têm setas ε adicionais que não
deterministicamente permitem ramificar para N2 sempre
que N1 está em um estado de aceitação.
Exemplo de concatenação, sigam essa lógica.
CONCATENAÇÃO
33. OPERAÇÕES REGULARES
• Teorema: A classe de linguagens regulares é
fechada sob a operação de concatenação.
• Idéia da Prova: Se A1 e A2 são linguagens
regulares, então existem AFNs N1 e N2 que as
reconhecem, respectivamente.
• Vamos construir um AFN N, que reconheça A1
A2, a partir de N1 e N2.
34. CONCATENAÇÃO
N1 = (Q1,1, 1, q1, F1) rec. A1 N2 = (Q2,2, 2, q2, F2) rec. A2.
N = (Q,, , q1, F2) reconhece A1 A2 Q = Q1 Q2
(q,a) = 1(q,a) se q Q1 e q F1
1(q,a) se q F1 e a
1(q,a) {q2} se q F1 e a
2(q,a) se q Q2
35. ESTRELA (FECHO DE KLEENE)*
Desenhar o autômato N de forma que uma cadeia de N
possa se repetir 0 ou mais vezes.
• Criar um novo estado inicial tornando-o também final.
• Criar transições que aceitem a cadeia vazia dos estados finais para o
antigo estado inicial.
36. OPERAÇÃO ESTRELA
• Podemos construir N como N1 com setas adicionais
retornando ao estado inicial a partir dos estados de
aceitação.
• Adicionalmente, temos que modificar N de tal forma que ele
aceite , que é sempre um membro de A*.
37. OPERAÇÕES REGULARES
• Teorema: A classe de linguagens regulares é
fechada sob a operação estrela.
• Idéia da Prova: Se A1 é uma linguagem regular,
então existe um AFN N1 que a reconheça.
• Vamos construir um AFN N, que reconheça A1*, a
partir de N1.
38. FECHO ESTRELA
N1 = (Q1,1, 1, q1, F1) N = (Q,, , q0, F) reconhece A1*
Q = Q1 {q0} F = F1 {q0}
(q,a) = 1(q,a) se q Q1 e q F1
1(q,a) se q F1 e a
1(q,a) {q1} se q F1 e a
{q1} se q = q0 e a
se q = q0 e a