Você está na página 1de 44

Teoria Da Computao 2014-2

Prof. Adolfo Guimares!


E-mail: adolfoguimaraes@gmail.com
Twitter: @guimaraesadolfo
Autmatos Finitos
Linguagens Regulares
Podemos fazer o estudo das linguagens regulares por meio de
trs formalismo:

Expresso Regular (formalismo denotacional)

Gramtica Regular (formalismo axiomtico)

Autmato Finito (formalismo operacional)

as linguagens so representadas por mquinas abstratas ou


autmatos, baseados em estados, em instrues primitivas
e em como cada smbolo modifica cada estado;

descrito basicamente como um sistema de estados finitos.


Sistema de Estados
Finitos
Um sistema de estado finitos um modelo matemtico
de sistemas com entradas e sadas discretas.

Podem assumir um nmero finito e predefinido de


estados.

Cada estado rene somente informaes necessrias


para determinar as aes para a prxima entrada.

Um forte motivacional para o estudo de sistemas de


estados finitos o fato de poderem ser associados a
diversos tipos de sistemas naturais e construdos.
Autmato Finito
O autmato finito um sistema de estados finitos
que permite reconhecer linguagens regulares;

Tambm denominado como reconhecedor, um


sistema formal capaz de aceitar todas as
sentenas que pertenam a uma determinada
linguagem, rejeitando todas as demais;

Um autmato finito tem um conjunto finito de


estados, e seu "controle" se desloca de estado
para estado em respostas a "entradas" externas.
Autmato Finito
Podemos classific-los como:

determinstico: dependendo do estado corrente e do smbolo


lido, o sistema pode assumir um nico estado bem
determinado. Em outras palavras, o autmato no pode estar
em mais de um estado em um determinado instante;

no determinstico: dependendo do estado corrente e do


smbolo lido, o sistema pode assumir um conjunto de estados
alternativos (pode estar em mais de um estado em um
determinado instante);

com movimentos vazio: dependendo do estado corrente e


sem ler qualquer smbolo, o sistema pode assumir um conjunto
de estados alternativos.
Autmato Finito
Determinstico
Um autmato finito determinstico pode ser visto como
uma mquina constituda, basicamente, de trs partes:

Fita: dispositivo de entrada que possui a informao a


ser processada;

Unidade de Controle: reflete o estado corrente da


mquina. Possui uma unidade de leitura a qual acessa
uma clula da fita de cada vez e movimenta-se
exclusivamente para a direita;

Programa ou Funo de transio: funo que


comanda as leituras e define o estado da mquina.
Autmato Finito
Determinstico
Um autmato finito determinstico consiste em:

Um conjunto finito de estados, Q

Um conjunto finito de smbolos de entrada,

Um funo de transio,

Dado um estado e um smbolo de entrada, retorna um estado;

Se q um estado, e a um smbolo de entrada, ento (q,a) o estado


p tal que existe um arco identificado por a de q at p;

Um estado inicial que est contido em Q

Um conjunto de estados finais ou de aceitao F, sendo F um


subconjunto de Q.
Autmato Finito
Determinstico
Podemos definir um autmato como sendo:

A = {Q, , , q0, F}
Autmato Finito
Determinstico
Exemplo 1: Vamos especificar formalmente um
AFD que aceita todas e somente as strings de 0s e
1s que tm sequncia 01 em algum lugar na
string.

L = {w | w da forma x01y para alguns strings x e y


que consiste somente em 0s e 1s}

ou

L = {x01y | x e y so quaisquer strings de 0s e 1s}


Exemplo 1
A = {{q0,q1,q2} , {0,1} , , q0 , {q1}}, onde a
funo de transio:

(q0,1) = q0

(q0,0) = q2

(q2,0) = q2

(q2,1) = q1

(q1,0) = (q1,1) = q1
Autmatos Finitos
Determinsticos
Como representar um autmato?

Diagrama de Transies (grafo)

Tabela de transaes, onde as linhas


representam os estados e as colunas as
entradas.
Diagrama de Transies
Para cada estado em Q existe um n correspondente;

Para cada estado q em Q e para cada smbolo a em ,


seja (q,a) = p. Ento, o diagrama de transies tem um
arco de q para p, rotulado por a;

Existem uma seta no estado inicial q0 identificado como


incio. Essa seta no se origina em nenhum n;

Os ns correspondentes aos estados de aceitao


(conjunto F) so marcados por um crculo duplo. Estados
que no esto em F so representados por um nico
crculo.
Diagrama de Transies

1 0

Incio 0 1
q0 q2 q1 0,1
Tabela de Transies

0 1

q0 q2 q0

* q1 q1 q1

q2 q2 q1
Exemplo 2
Vamos projetar um AFD para aceitar a linguagem:

L = {w | w tem ao mesmo tempo um nmero par


de 0s e um nmero par de 1's}
Exemplo 2
Vamos projetar um AFD para aceitar a linguagem:

L = {w | w tem ao mesmo tempo um nmero par de


0s e um nmero par de 1s}

q0: o nmero de 0s e 1s so ambos pares

q1: o nmero de 0s par e 1s mpar

q2: o nmero de 1s par e 0s mpar

q3: o nmero de 0s e 1s so ambos mpares


Exemplo 2
1

q0 q1

0 0 0 0

q2 q3

1
Autmatos Finitos
Determinsticos
Vale lembrar que um autmato finito sempre pra

Um autmato finito sempre pra ao processar qualquer


entrada pois, como qualquer palavra finita, e como um
novo smbolo da entrada lido a cada aplicao da funo
programa, no existe a possibilidade de ciclo (loop) infinito.

A parada de um autmato para um entrada w pode ser de


duas formas:

Aceita a entrada w

Rejeita a entrada w
Exemplo 3
Defina um AFD para a seguinte linguagem:

L = {w | w possui aa ou bb como uma


subpalavra}
Exemplo 3
a b
q0

q1 q2

q3
a b

a,b
Linguagem de um DFA
A linguagem de um DFA A = (Q,,,q0,F) denotada
por L(A) e definida por:

L(A) = {w | (q0,w) est em F},

onde uma funo de transio estendida que


descreve o que acontece quando comeamos em
qualquer estado e seguimos qualquer sequncias de
entradas.

Se L L(A) para algum DFA A, dizemos que L uma


linguagem regular.
Linguagem de um DFA
Definimos a funo de transio estendida por
induo sobre o comprimento do string de
entrada, da seguinte forma:

(q,) = q

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

onde w um string da forma xa, ou seja, a o


ltimo smbolo de w, e x o string que consiste
em tudo, menos o ltimo smbolo.
Linguagem de um DFA
Podemos mostrar a construo da definio de
funo estendida () para o autmato do exemplo
2. Utilize a string 110101 como entrada.

Como esse string tem nmeros pares de 0s e 1s,


esperamos que esse string seja aceito pela
linguagem. Ou seja, queremos que:

(q0,110101) = q0

pois q0 o nico estado de aceitao.


Linguagem de um DFA
(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


Exerccios DFA - 01
Defina um autmato finito que aceite strings de as
e bs que comecem com ab. Represente o
autmato formalmente e atravs do diagrama e da
tabela de transies.
Exerccios DFA - 02
Defina um autmato finito que aceite strings de 0s
e 1s terminando com 011.
Exerccios DFA - 03
Defina um autmato finito que aceite strings de as
e bs tendo um substring aa.
Exerccios DFA - 04
Defina um autmato que aceite strings de as e bs
exceto aqueles strings que tenham um substring
aab.
Autmatos Finitos No-
Determinstico
Um autmato finito no-determinstico tem o poder de estar em vrios
estados ao mesmo tempo;

Os NFAs aceitam as linguagens regulares, da mesma maneira que


fazem os DFAs;

Frequentemente, os NFAs so mais sucintos e mais fceis de projetar


que os DFAs;

Os DFAs podem ter exponencialmente mais estados que o NFA;

A principal diferena est na funo de transio. Em um NFA,


uma funo que recebe um estado e um smbolo de entrada e retorna
um conjunto de zero, um ou mais estados (em vez de retornar um
estado, como um DFA deve fazer).
Autmatos Finitos No-
Determinstico
Formalmente, podemos definir um NFA A como:

A = {Q,,,q0,F}, onde:

Q o conjunto finito de estados

um conjunto finito de smbolos de entrada

q0, um elemento de Q, o estado inicial

F, um subconjunto de Q, o conjunto de estados finais

a funo de transio que recebe um estado q Q e um


smbolo de entrada em como argumentos e retorna um
subconjunto de Q.
Exemplo 4
Defina uma autmato finito no determinstico cujo
trabalho aceitar todos os strings de 0s e 1s que
terminam em 01 e somente eles.
Exemplo 4
Defina uma autmato finito no determinstico cujo
trabalho aceitar todos os strings de 0s e 1s que
terminam em 01 e somente eles.

0,1

0 1
q0 q1 q2
Exemplo 4
Formalmente, definimos o autmato como:

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

onde a funo de transio definida pela tabela:

0 1

q0 {q0,q1} {q0}

q1 {q2}

*q2
Exemplo 5
Defina um autmato finito no-determinstico que
reconhea strings que possuam aa ou bb como
substring.
Exemplo 6
Defina um autmato finito no-determinstico que
aceite strings que possuam aaa como sufixo.
Utilize o alfabeto = {a,b}.
A linguagem de um NFA
Como foi mostrado, um NFA aceita um string w se
possvel tomar qualquer sequncia de escolhas
do prximo estado, quanto so lidos os caracteres
de w, e ir do estado inicial para algum estado de
aceitao.

Formalmente, se A = (Q,,,q0,F) um NFA, ento:

L(A) = {w | (q0,w) F }
A linguagem de um NFA
A funo de transio estendida () para um NFA
tambm pode ser definida por um induo, onde:

(q,) = {q}
k
(q,w) =

i=1
(pi,a)
A linguagem de um NFA
Vamos usar a funo estendida de um NFA para
descrever o processamento da entrada 00101 pelo
NFA do Exemplo 4.

(q0,) = {q0}
(q0,0) = (q0,0) = {q0,q1}
(q0,00) = (q0,0) (q1,0) = {q0,q1} = {q0,q1}
(q0,001) = (q0,1) (q1,1) = {q0} {q2} = {q0,q2}
(q0,0010) = (q0,0) (q2,0) = {q0,q1} = {q0,q1}
(q0,00101) = (q0,1) (q1,1) = {q0} {q2} = {q0,q2}
Exerccio NFA - 01
Defina um NFA que aceite a seguinte linguagem
L = {w | w ababn ou aban onde n 0}
Exerccio NFA - 02
Projete um NFA que reconhea o conjunto de string
abc, abd e aacd. Suponha que o alfabeto seja {a, b,
c, d}.
Exerccio NFA - 03
Defina um NFA para uma linguagem formada pelo
conjunto de strings sobre o alfabeto {0,1,,9} tal que
o dgito final tenha aparecido antes
Referncia
HOPCROFT, J., MOTWANI, R., ULLMAN, J.
Introduction to Automata Theory, Languages and
Computation. Addison Wesley; 3 edition, 2006.
Dvidas