1
AF NÃO-Determinístico (AFND)
0 1
q0 q1 q2
5
Ex 2
No exemplo 2:
Estado Entrada
0 1
qo {qo,q3} {qo,q1}
q1 {q2}
q2 {q2} {q2}
q3 {q4}
q4 {q4} {q4}
7
Exemplo 3
8
1) Construir um AFND que aceita cadeias {1}* tal que o
último símbolo na cadeia tenha aparecido
anteriormente
9
2) Construir um AFND que aceita cadeias {1,2}* tal que o
último símbolo na cadeia tenha aparecido anteriormente
10
Estendendo o vocabulário para {1, 2, 3}:
11
Equivalência entre AFD e AFND
12
Exemplo: Seja M = ({q0,q1},{0,1}, , q0,{q1})
Es/En 0 1
q0 {q0,q1} {q1}
q1 {q0,q1}
13
Nós podemos construir um AFD M’= (Q’, {0,1}, ’, {qo}, F’)
aceitando L(M) pela construção chamada de “construção de
subconjuntos” porque ela envolve a construção de todos os
subconjuntos do conjunto de estados do AFND. Ela é tal
que é o mesmo do AFND e o estado inicial é o conjunto
contendo somente o estado inicial do AFND.
14
Assim, no exemplo:
’({qo},0) ={qo,q1} ’({qo},1) = {q1}
’({qo,q1},0) = {qo,q1}
Pois ({qo,q1},0) = (qo,0) (q1,0) =
{qo,q1} = {qo,q1}
’({qo,q1},1) = {qo,q1}
Pois ({qo,q1},1) = (qo,1) (q1,1) =
{q1} {qo,q1} = {qo,q1}
’(,0) = ’(,1) =
0 1
eo={qo} {qo,q1} {q1}
e1={q1} {qo,q1}
e2={qo,q1} {qo,q1} {qo,q1}
15
M’= ({eo,e1,e2}, {0,1}, ’, eo, {e1,e2})
´
16
Estados Acessíveis e Não Acessíveis
0 1
qo q1 q2
17
AFND AFD
0 1 0 1
qo {qo, q1} {qo}
q1 {q2} {qo} {qo,q1} {qo}
q2 *{q1} {q2}
*{q2}
{qo, q1} {qo,q1} {qo,q2}
{qo,q2} {qo,q1} {qo}
*{q1,q2} {q2}
*{qo,q1,q2} {q0,q1} {qo,q2}
18
Renomeando os estados:
AFND AFD
0 1 0 1
qo {qo, q1} {qo} A A A
q1 {q2} B E B
q2 *C A D
*D A A
0 1
{qo} {qo,q1} {qo,q2}
20
Verifique para o seguinte AFND:
0,1
21
Cuidado com os estados de aceitação!
22
Exemplo
• Seja um AFD A que aceita cadeias sobre
{0,1}* de comprimento par
0, 1
q0 q1
0,1
L(A)= {(0+1)2n | n=0,1,...}
• Seja um B que aceita cadeias sobre {0,1}* que
não contêm 0´s
0 0,1
q0 qr
L(B)= 1*
1 23
• Coloque A e B juntos, formando um
AFND AB 0,1
0 qr
1
0, 1
q0 q1
0,1
25
AFD com estado de não-aceitação
AF que reconhece
identificadores em uma
linguagem de programação
D
: erro
26
Um AF não é um programa.....
27
Autômatos Finitos com -transições
Vamos permitir transições sobre a cadeia nula, . Equivale a
permitir que o AFND faça transições espontâneas, sem
receber um símbolo de entrada.
Assim como no caso do não-determinismo, esse novo recurso
não expande o conjunto de linguagens reconhecidas, mas
dá uma certa conveniência de programação adicional.
28
L(M) = (w {0,1,2}* | w contenha nro de 0’s seguido por nro de 1’s
seguido por número de 2’s}
Ex.
29
Exemplo anterior sem - transição
30
Exemplo anterior com AFD
31
Exemplo
32
Diagrama de Transições
0,1,...9 0,1,...9
qo
,+,- q1
. q2
0,1,...9
q3
q5
0,1,...9 .
q4
33
Tabela de Transições
+,- . 0,1,...9
qo {q1} {q1}
q1 {q2} {q1,q4}
q2 {q3}
q3 {q5} {q3}
q4 {q3}
q5
34
O AFD correspondente ao -AFND anterior
0,1,...9
0,1,...9
{qo,q1}
+,- {q1}
0,1,...9
{q1,q4} . {q2,q3,q5}
. 0,1,...9
.
{q2} 0,1,...9
{q3,q5}
0,1,...9
35
Teorema:
Uma Linguagem L é aceita por algum -AFND
se e somente se L é aceita por
um AFD (veja prova na bibliografia)
36
Resumo Parcial
38