Você está na página 1de 5

Autmatos Finitos Determinsticos

Definio
Um Autmato Finito Determinstico (AFD) uma quntupla ordenada, A = (Q, onde:
Q um conjunto finito, no vazio, de estados ,

, , q0, F)

um conjunto finito (alfabeto) de smbolos de entrada, Q a funo (parcial) de transio ou de mudana de estado,

: Q X

q0 Q o estado inicial, F

Q o conjunto dos estados finais ou de aceitao.

Exemplo 1: sobre o alfabeto = {0, 1} consideremos a linguagem L = {w * | a seqncia 01 parte de w}. pretendemos construir um Autmato reconhecedor das palavras de L uma palavra w * pertence a L, se e somente se, partindo do estado inicial o Autmato atingir o estado final (de aceitao ou reconhecimento) pela entrada de w. a linguagem de um AFD o conjunto de todas as palavras reconhecidas por ele. temos ento: A = ({q0, q1, q2}, {0, 1}, , q0, {q1})

Diagrama de transies

Tabela de transies 0 q0 * q1 q2 q2 q1 q2 1 q0 q1 q1

Exemplo 2: tambm sobre o alfabeto = {0, 1} consideremos a linguagem L = {w * | a seqncia 001 parte de w} tem como autmato reconhecedor:

Obs: a linguagem de um AFD aparece no seu diagrama de transies, como o conjunto da seqncias de smbolos correspondentes a todos os caminhos possveis no grafo, desde o estado inicial at um dos estados finais.

Ampliando o conceito de funo de transio para descrever a aceitao de seqncias de smbolos, temos:

Definio:

: Q X * Q
(q, ) = q
w = xa,

caso base: passo indutivo:

(q, w)

= ( (q, x),a) ( p0, w)

representa os caminhos efetivos ao longo do grafo, isto , se w = a1a2...an e se = pn.

(pi, ai) = pi+1 para todo i = 0, 1, ..., n-1, ento

Definio

um AFD, A = (Q, , , q0, F) reconhece (ou aceita) a palavra w *, se e somente se

( q0, w) F.

Definio
Exemplo 3:

linguagem de um AFD, A = (Q, , , q0, F): L(A) = {w * |

( q0, w) F}

construo de um reconhecedor para uma linguagem, sobre o alfabeto = {0, 1}, definida como L = {w | w tem um nmero par de 0s e 1s}

Construo do AFD: basicamente trata-se de, ao longo de uma dada palavra, contar os 0s e 1s, e verificar se contamos um nmero par . H quatro casos a considerar: Os 0s e 1s j contados, so em nmero par; J foram contados um nmero par de 0s e um nmero mpar de 1s; J foram contados um nmero par de 1s e um nmero mpar de 0s; Os 0s e os 1s j contados, so em nmero mpar.

Diagrama de transies:

Tabela de transies: 0
*

1 q1 q0 q3 q2

q0 q1 q2 q3

q2 q3 q0 q1

Verificao indutiva para w = 110101

(q0, ) = q0 (q0, 1) = ( (q0, ), 1) = (q0, 1) = q1 (q0, 11) = ( (q0, 1), 1) = (q1, 1) = q0 (q0, 110) = ( (q0, 11), 0) = (q0, 0) = q2 (q0, 1101) = ( (q0, 110), 1) = (q2, 1) = q3 (q0, 11010) = ( (q0, 1101), 0) = (q3, 0) = q1 (q0, 110101) = ( (q0, 11010), 1) = (q1, 1) = q0

portanto w = 110101 L.

Uma aplicao: De modo informal consideremos, = {a, b, c, ... ,z} {0, 1, 2, ..., 9} e L = { w * | w representa um identificador}, Seguindo a regra habitual de construo de identificadores nas linguagens de Programao, temos o AFD reconhecedor de identificadores:

Note que o autmato no possui a capacidade de verificar o comprimento mximo do identificador.

Exemplo 4: um reconhecedor da linguagem L, sobre o alfabeto = {0, 1}: L = { w * | w a representao binria de um mltiplo de 5} Construo do AFD: Em cada momento do reconhecimento, necessrio conhecer o valor do resto da diviso por 5, do nmero decimal correspondente cadeia binria j lida. Obs: sendo w a representao binria do nmero n (decimal), ento a cadeia w0 representa 2 X n e a cadeia w1 representa 2 X (n+1); (a X b + c) mod 5 = (a X (b mod 5) + c) mod 5 exemplos: 1011 11 (base decimal) e 11 mod 5 = 1 mod 5 10110 2 X 11 = 22 (base decimal) 2 X 11 mod 5 = (2 X (1 mod 5)) mod 5 = 2 mod 5 10111 2 X 11 + 1 = 23 (base decimal) (2 X 11 + 1) mod 5 = (2 X (1 mod 5) + 1) mod 5 = 3 mod 5 quantos casos precisamos considerar ? O AFD reconhecedor: A = ({q0, q1, q2, q3, q4}, {0, 1}, , q0, {q0}) Diagrama de transies:

O estado qk significa que a cadeia binria j percorrida representa um nmero decimal cuja diviso por 5 tem resto igual a k. Note que o AFD aceita nmeros binrios que comeam com zeros e, at aceita a cadeia vazia. Tabela de transies:
* q0 q1 q2 q3 q4

0 q0 q2 q4 q1 q3

1 q1 q3 q0 q2 q4

Exemplo 5: um reconhecedor da linguagem L, sobre o alfabeto = {0, 1}: L = {w + | w comea por 1 e a representao binria de um mltiplo de 5} Basta uma pequena modificao no autmato anterior: Se a palavra comea por 0, no pertence linguagem de deve ser conduzida para um estado de erro, digamos o estado r de onde no saem. A incluso de um estado de partida, o estado p, permite essa verificao, e tambm rejeitar a palavra vazia, bem como a passagem ao autmato anterior. AFD reconhecedor: A = ({p, q0, q1, q2, q3, q4, r}, {0, 1}, , p, {q0}) Diagrama de transies:

Tabela de transies: p * q0 q1 q2 q3 q4 r Exerccios 1) Projete um AFD que reconhea cadeias binrias terminadas em 01. 2) Considere a tabela de transio para um AFD, abaixo: A * B 0 A B 1 B A a) descreva a linguagem do autmato b) Demonstre, por induo, que o autmato reconhece essa linguagem. 0 r q0 q2 q4 q1 q3 r 1 q1 q1 q3 q0 q2 q4 r