Você está na página 1de 48

a

Sistemas de Estados Finitos


AF Determinsticos

Relembrando

Uma representao finita de uma


linguagem L qualquer pode ser:
1. Um conjunto finito de cadeias (se L
for finita);
2. Uma expresso de um conjunto
infinito de cadeias;
3. Uma gramtica (que gera L);
4. Um autmato (que reconhece L)
2

Autmatos Finitos - AF
So reconhecedores de LINGUAGENS REGULARES.
So o tipo mais simples de Mquina de Turing onde:
- a fita de entrada unidirecional: a cadeia lida da
esquerda para a direita, um smbolo por vez;
- a fita s de leitura: no possvel gravar smbolos. Isso
significa que a nica memria utilizada aquela gasta para
armazenar a cadeia de entrada.
As caractersticas acima garantem que o tempo
necessrio para reconhecer uma cadeia w; |w|=n;
O(n).

Def. Autmato Finito Determinstico - AFD


Um AF Determinstico M definido como uma quntupla da forma:
M=(E,V,f,q0,F) onde:
E um conjunto finito no vazio de estados do autmato finito.
V o alfabeto de entrada do autmato e corresponde a um conjunto
finito no vazio dos smbolos de entrada ou tomos indivisveis que
compem a cadeia de entrada submetida ao autmato para aceitao.
f uma funo de transio de estados do autmato e seu papel o de
indicar as transies possveis em cada configurao do autmato.
f: E X (V U {})

ou seja, para cada par (estado, smbolo de entrada), determina o novo estado

do autmato. f(p,a) = q
determinismo

q0 E, o estado inicial do autmato finito.


F E contm todos os estados de aceitao ou estados finais do AF.
So os estados em que o autmato deve terminar o reconhecimento das
cadeias de entrada que pertencem linguagem que o autmato define.
4

Esquema da Mquina e Representao usando grafos

Controle
Finito

p
estado
anterior
5

de smbolos
de V

smbolo
lido

Exemplo
Exemplo 1:
M = ({p1, p2}, {0, 1}, f, p1, {p2})
f = (p1, 0) = p1
(p1, 1) = p2
(p2, 1) = p2
(p2, 0) = p1

Linguagem reconhecida L(M)=?


cadeias de dgitos binrios terminadas
obrigatoriamente por um dgito 1: (0+1)*1
J que L(M) regular, d uma GR que a gere
Pela expresso (0+1)*1: S

0S | 1S | 1

Pelo AFD:
S

0S | 1A

0S|1A|

Tabela de Transio de Estados

Forma alternativa para representar


Afs
Exemplo 1:
E\V

estado inicial:
p1
P2 *

estados finais: *

Exemplo 2:

L(AF2) = conjunto de cadeias de 0's e 1's com nmero mpar de 1s

Exemplo 3: Construir um AF M3 para reconhecer as cadeias


formadas por um nmero arbitrrio de repeties de 1 a 3 a's
seguidos pelo mesmo nmero de b's. Isto :
L(M3) = (ab|aabb|aaabbb)*

Exemplo 4
Seja
L = {w|w da forma x01y para algumas cadeias x e y
que consistem somente de 0s e 1s} ou
L = { x01y | x e y {0,1}* }
Ento 01, 11010 e 100011 L
e , 0 e 111000 L.
Vejamos: Seja A o autmato.

= {0,1}. Seja qo Q o estado inicial. Para decidir se 01


uma subcadeia da entrada, A precisa lembrar:
10

1. Ele j viu 01? Se sim, ele aceita toda sequncia de


caracteres adicionais; i.e, de agora em diante ele
estar sempre num estado final (de aceitao).
2. Ele nunca viu 01, mas o ltimo caracter foi 0; assim, se
agora ele vir o 1, ter visto 01 e poder aceitar tudo
que vier daqui por diante.
3. Ele nunca viu 01, mas ou ele acabou de iniciar ou acabou
de encontrar 1; nesse caso, A no pode aceitar at ver
primeiro um 0 seguido de 1.
Cada uma das condies acima pode ser representada por um
estado. A condio (3) o estado inicial qo. Ficamos
nesse estado at aparecer um 0. Logo (qo, 1) = qo.
Mas se estamos em qo e vemos um 0, estamos na condio11(2).

Seja q2 esse estado. Assim, (qo, 0)=q2

Se, em q2, vemos um 0, ainda no encontramos 01, mas


estamos na mesma situao de ter o 0 e esperar o 1; logo,
ficamos no mesmo estado: (q2, 0)=q2.
Se, no entanto, em q2, vemos 1, ento teremos a subcadeia 01
e podemos ir para um estado final, que corresponde situao
(1); chamaremos de q1. Logo, (q2,1)=q1.
Em q1, j vimos a sequncia 01, ento no importa o que
aparecer, ainda estaremos na situao de j ter visto 01. Isto
, (q1,0) = (q1, 1) = q1.

Dessa forma, Q={qo, q1, q2}. qo o estado inicial e


F={q1}: A = ({qo, q1, q2}, {0,1}, , qo, {q1}),
onde a funo de transio descrita anteriormente.
12

Linguagem aceita por um AF M


Uma cadeia x aceita pelo AFD M = (Q, , ,
qo, F) se existe uma sequncia de transies a
partir de qo, de modo que aps ler o ltimo
smbolo de x, o estado atual algum p F.
Def 1: Uma linguagem aceita por um AFD uma
Linguagem Regular
Def 2: Dois AF M1 e M2 so equivalentes se e
somente se L(M1) = L(M2)
13

Exerccio

Fazer um AFD M tal que


L(M) = {w | w {0,1}* e possui um nmero par
de ocorrncias de 0s e de 1s }

http://www.jflap.org/
14

Exemplo 1
Fazer um AFD M que aceita L(M) = {w | w possui um nro par de 0s e de 1s }

Diagrama
de
Transio
de Estados

Cadeia aceita:
configurao final
VERDE
15

Cadeia no aceita:
configurao final
ROSA

16

Fazer um AFD M que aceita


L(M) = {w {0,1}* |w possua pelo menos dois 0s consecutivos}

Garantindo
a
restrio...

17

Completando o AFD M e reconhecendo uma cadeia de L(M)


M = ({q0,q1,q2}, {0,1}, , q0,{q2})

Fim de uma simulao, entrada em


cinza
18

Exerccios
Construa gramticas regulares para as
linguagens dos exemplos anteriores de
AFs.

19

AF No-determinsticos
Equivalncia entre AFND e AFD

20

AF NO-Determinstico (AFND)

Consideremos uma modificao


no modelo do AFD para permitir

zero, uma ou mais transies de um estado


sobre o MESMO smbolo de entrada.

Ou visto de outra forma:


a funo toma um estado e uma entrada
e devolve zero, um ou mais estados.

Esse modelo chamado AFND.

21

Por que isso interessante?

Pois possibilita tentar alternativas


distintas
Se cada estado representa uma
opo, ir para mais de um estado
representa tentar opes diferentes
de caminho para a soluo

22

Exemplo 1
Seja um autmato que aceita a linguagem das cadeias de 0s
e 1s que terminam em 01: (0+1)*01.
0, 1

q0
Seja a cadeia 00101
Quando est em qo e o smbolo lido 0 ele tem a opo de:
continuar em qo no caso do fim da cadeia no estar prximo OU
ir para q1 porque aposta que o fim est chegando.
E na verdade ele executa as duas opes!
Por isso costumamos pensar que ele advinha qual a alternativa correta entre muitas.
23

AFND
Uma
cadeia
de
entrada
aceita/reconhecida por um AFND

a1a2...an

se existe AO MENOS UMA sequncia de transies


que leva do estado inicial para algum estado final.

Ele funciona como se houvesse a multiplicao da


unidade de controle, uma para cada alternativa,

processando independentemente, sem compartilhar


recursos com as demais,
aceitando a cadeia se ao menos uma delas parar num
estado final.

Pensem: Ser que o no-determinismo aumenta o


poder de reconhecimento de linguagens de um AF?
24

Exemplo 2

L(M) = {x {0,1}* | x tenha dois 0s


consecutivos OU dois 1s consecutivos}

25

Ex 2

L(M) = {x {0,1}* | x tenha dois 0s consecutivos OU dois 1s consecutivos}


M = ({q0,q1,q2,q3,q4},{0,1},,q0,{q2,q4})

26

Definio Formal de um AFND


Denotamos um AFND pela 5 -tupla (Q,,, qo,F) onde Q,,
qo e F so os mesmos de um AFD e
Q

: Q X 2 , conjunto potncia de Q, isto , todos os subconjuntos de Q

L(M) = {w | (qo,w) F }
No exemplo 2:
Estado
qo
q1
q2
q3
q4
27

Exemplo 3
Construir um AFND que aceita cadeias
{1,2,3}* tal que o ltimo smbolo na cadeia tenha
aparecido anteriormente. Por exemplo, 121
aceita; 31312 no aceita.
Dica: resolvam para os seguintes vocabulrios
mais simples antes
1)

2)

28

Construir um AFND que aceita cadeias {1}* tal


que o ltimo smbolo na cadeia tenha aparecido
anteriormente
Construir um AFND que aceita cadeias
{1,2}* tal que o ltimo smbolo na cadeia tenha
aparecido anteriormente

1) Construir um AFND que aceita cadeias {1}* tal que


o ltimo smbolo na cadeia tenha aparecido
anteriormente

29

2) Construir um AFND que aceita cadeias {1,2}* tal que o


ltimo smbolo na cadeia tenha aparecido anteriormente

30

Estendendo o vocabulrio para {1, 2, 3}:

31

Equivalncia entre AFD e AFND


Teorema: Se L reconhecida por um AFND, ento ela
reconhecida por um AFD.
Vamos propor um mtodo para construir um AFD a partir do
AFND. Da se pode provar que as linguagens reconhecidas
por ambos so iguais (veja essa prova na bibliografia).

Esse mtodo chamado de construo de subconjuntos

32

Exemplo: Seja M = ({q0,q1},{0,1}, , q0,{q1})


Es/En
q0
q1
33

Ns podemos construir um AFD M= (Q, {0,1}, , {qo}, F)


aceitando L(M) pela construo chamada de construo de
subconjuntos (dos estados de AFND). Ela tal que o
mesmo do AFND e o estado inicial o conjunto contendo
somente o estado inicial do AFND.
Q consiste de todos os subconjuntos de {qo,q1}:
eo e1
{qo}, {q1}, {qo,q1}, e .
({q1 ... qn}, a) =

i=1

(qi, a);

F' = {p | p Q' e p contm ao menos 1 elemento de F }

34

Assim, no exemplo:
({qo},0) ={qo,q1} ({qo},1) = {q1}
({q1},0) =

({q1},1)= {qo,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) =
F = {{q1},{qo,q1}} isto , estados onde F antigo estava presente

(e3)
{qo} (eo)
{q1}* (e1)
{qo,q1}* (e2)

M= ({eo,e1,e2}, {0,1}, , eo, {e1,e2})

0,1

eo

36

Estados Acessveis e No Acessveis


Embora muitas vezes seja mais fcil construir um AFND
para uma LR, o AFD tem na prtica quase o mesmo nmero de
estados que o AFND, embora com mais transies.
n

No pior caso, o AFD pode ter 2 estados enquanto que o


AFND para a mesma linguagem tem somente n estados.

Ex. seja o AFND que aceita todas as cadeias em {0,1}


que terminam em 01.
0,1

qo

37

qo

{qo

q1

q2

38

qo
q1
q2

39

AFD resultante com n=3 estados

{qo}

H casos, no entanto, em que o AFD correspondente no


n
pode ter menos estados do que 2 , sendo n o nmero de
estados do AFND correspondente.
40

Cuidado com os estados de aceitao!

Muitas vezes, ao construir AFD,


impedimos que ele aceite cadeias
vlidas.
Por outro lado, ao construir AFND, as
vezes fazemos com que eles aceitem
cadeias que no deveriam aceitar.

41

Exemplo
Seja um AFD A que aceita cadeias sobre
{0,1}* de comprimento par
q0
0,1
2n

L(A)= {(0+1) | n=0,1,...}


Seja um AFD B que aceita cadeias sobre
{0,1}* que no contm 0s
q0

L(B)= 1*

Coloque A e B juntos, formando um

0,1

Poderamos esperar que AB aceitasse a


linguagem unio das duas anteriores.
Mas vemos que ela aceita no apenas essa
unio, mas qualquer cadeia exceto aquelas
com nmero mpar de 0s e nenhum 1.
L(AB)={0,1}* - {0

2n+1

| n0}

43

Operaes que preservam a propriedade de ser


uma LR

Operaes sobre LRs que resultam em LR:


unio
concatenao
fechamento
complemento
interseco
diferena
reverso
44

Um AF no um programa.....
....mas serve como um bom modelo. Veja no Material HTML
de Referncia Tpicos em Teoria da Computao, em
http://www.icmc.usp.br/~gracan/teoria/Teoria.html
como podemos implementar um AFD:
de forma direta: escrevendo um cdigo que simule as
transies.
controlado por tabela: simulador universal de AFD

45

Você também pode gostar