Você está na página 1de 3

FACENS - Faculdade de Engenharia de Sorocaba

Tpicos em Computaao I o c

AF e Transformao de AF para AFD ca


Autmato Finito com Movimento o Vazio (AF )
So autmatos que utilizam a transio em a o ca vazio na sua representao ca transioes sem leitura de s c mbolos na ta Auxilia a construo de um autmato ca o Caso particular de no-determinismo a qualquer AF pode ser simulado por um AFN

AF - Formalismo
M = (, Q, , q0 , F ) alfabeto de s mbolos de entrada Q conj. de estados poss veis do autmato o o qual nito e funo de transio ( : Q x ( { })) ca ca q0 estado inicial (q0 Q) F conjunto dos estados nais tal que F est contido em Q a

Movimentos vazios constituem uma generalizao dos modeca los de mquinas no-determin a a stica. Pode ser interpretado como um no-determinismo interno ao autmato o qual encapsulado, a o e ou seja, nada observado a no ser a alterao de um estado e a ca para o outro. Uma das vantagens dos AF s o fato de facie litar algumas construoes e demonstraoes relacionadas com os c c autmatos. o

Portanto, excetuando-se pela funo programa, as compoca nentes , Q, F e q0 so como na denio de AFN. Um movia ca mento vazio (ou transio vazia) representado pela aplicao ca e ca da funo programa, em um dado estado q ao s ca mbolo especial .

Exemplo Autmato Finito No-Determin o a stico


estado anterior

L = {w | qualquer s mbolo a antecede qualquer s mbolo b } M = ({ a, b}, {q0 , qf }, , q0 , {qf }) a b {qf } {qf } q0 qf a b

q
a a smbolo lido conjunto de novos estados

q0 {q0 } qf -

p1

p2

...

pn

Um movimento em vazio no se implementa, computacionala mente.

O processamento de um AF anlogo ao de um AFN. O proe a cessamento de uma transio para uma entrada vazia tambm ca e no-determin e a stica. Assim, um AF ao processar uma entrada vazia assume simultaneamente os estados destino e origem. Ou seja, a origem de um movimento vazio sempre um caminho e alternativo.

Profa. Tiemi Christine Sakata

FACENS - Faculdade de Engenharia de Sorocaba

Tpicos em Computaao I o c

Exerc cio 1
L = (a b) M = (, Q, , q0 , F ) = { a, b} Q = {q0 , qf } F = {q0 , qf } a b q0
q0

Denioes c
closure(S) conjunto de estados que podem ser alcanados a partir do estado S sem c consumir nenhuma entrada. Isto , menor e conjunto T, onde: T =S(
a, b qf
T S repeat T T T T ( until T = T
sT

edge(s, ))
sT

q0 qf qf qf -

edge(s, ))

Exerc cio 2
L = (a b)+ M = (, Q, , q0 , F ) = { a, b} Q = {q0 , qf } F = {qf } a b q0
b q0
closure(q0 ) = {q0 , q1 , q2 } closure(q1 ) = {q1 , q2 } closure(q2 ) = {q2 }

Denioes c
a qf

q0 qf qf qf -

d = {si , sk , sl } DFAedge(d,c) estados alcanados a partir c de d e consumindo a entrada c. DFAedge(d,c) = closure(


sd

edge(s,c))

Denioes c
Utilizaremos o autmato abaixo para exemplicar o as o uso das denioes. c
a b a

d closure[s1] for i 1 to k d DFAedge(d, ci )

q0

q1

q2

DFAedge verica os estados alcanados a partir de um conc junto de estados consumindo uma determinada entrada, incluindo os poss veis movimentos com o . Como o nosso exemplo no a utiliza , o resultado para DFAedge similar ao resultado obtido e por edge. DFAedge({q0 }, a) = {q0 , q1 , q2 }

edge(s,c) conjunto de todos os estados do AFN alcanveis do estado s pelo rtulo c ca o


Exemplo: edge(q0 , a) = {q0 } edge(q0 , ) = {q1 } edge(q1 , b) = {q1 } edge(q1 , ) = {q2 } edge(q2 , a) = {q2 }

DFAedge({q1 }, b) = {q1 , q2 } DFAedge({q2 }, a) = {q2 } DFAedge({q0 , q1 }, a) = {q0 , q1 , q2 } DFAedge({q0 , q1 }, b) = {q1 , q2 } DFAedge({q0 , q2}, a) = {q0 , q1 , q2 } DFAedge({q1 , q2}, a) = {q2 } DFAedge({q1 , q2}, b) = {q1 , q2 } DFAedge({q0 , q1 , q2}, a) = {q0 , q1 , q2 } DFAedge({q0 , q1 , q2}, b) = {q1 , q2 }

Profa. Tiemi Christine Sakata

FACENS - Faculdade de Engenharia de Sorocaba

Tpicos em Computaao I o c

Algoritmo AFN AFD


states[0] {} states[1] closure(s1 ) p 1 j 1 while j p foreach c e = DFAedge(states[j],c) if e = states[i] for some i p then trans[j,c] i else p p + 1 states[p] e trans[j,c] p j j + 1 Este algoritmo transforma qualquer AFN em um AFD equivalente. Voc deve transformar todo estado que possui um estado e nal do AFN como estado nal do AFD. Ao transformar o AFN do exemplo em AFD, teremos o seguinte resultado:
a b a

Escreva um AF para a linguagem abaixo. Transforme o AF em um AFD. L = {w | w possui como suxo a ou bb ou ccc}
a, b, c q1 a

q0

q2

q3

q7

c q4 c q5 c q6

p0 p1 p2 p3 p4 p5 p6

AFD: = {q0 q1 q2 q4 } = {q0 q1 q2 q4 q7 } = {q0 q1 q2 q4 q3 } = {q0 q1 q2 q4 q5 } = {q0 q1 q2 q3 q4 q7 } = {q0 q1 q2 q4 q5 q6 } = {q0 q1 q2 q4 q5 q6 q7 }

q0q1q2

q1q2

q2

a,b

Transforme os AFNs em AFDs


a a
q0 a q1 a q2 a q3

p1 a a c p0 b p2 b c c b c b p5 b c p6 c a p4

b a

q0

a b a q2 b

q1

p3

O resultado deste exerc encontra-se na aula 4. Observe cio que ao aplicar este algoritmo em um AFN, teremos como resultado o mesmo AFD obtido pelo primeiro algoritmo (visto na aula4). Sugesto de exerc a cios: voc pode transformar os AFNs da e aula 4 em AFDs.

Profa. Tiemi Christine Sakata

Você também pode gostar