Você está na página 1de 38

Faculdade de Engenharia de Computação

Teoria da Computação:
Linguagens Formais e Autômatos

Aula 5 – Autômatos finitos


Professor Ronaldo Luiz Alonso
Autômatos Finitos
• O autômato finito é um modelo matemático de um sistema com
entradas e saídas discretas. Este sistema sempre estará em uma das
possíveis configurações internas (estados), que são em número,
finito. Tais configurações internas ou estados deste sistema, que
resumem as informações já processadas, determinam o
comportamento do sistema para a próxima entrada a ser processada.
Autômatos Finitos
• Existem inúmeros problemas, principalmente em ciência da computação, que
podem ser modelados utilizando-se a teoria de autômatos finitos.
• Muitas teorias de modelagem de problemas que são usuais hoje, são oriundas da
teoria de autômatos finitos, como as rede de Petri no modelamento de processos
concorrentes e as ATNs (Augmented Transiction Networks) utilizadas no
modelamento de construções de processamento de linguagens naturais.
• Existem ainda outras teorias, que são extensões da teoria de autômatos finitos,
como os autômatos finitos com saída, chamados de máquinas de Mealy e Moore.
Autômatos Finitos
• O autômato finito (AF) é portanto uma máquina abstrata que reconhece
linguagens regulares;
• Outras aplicações comuns da teoria de autômatos, ou de sistemas de estados
finitos, pode ser encontrada em programas como editores de texto, planilhas ou
analisadores léxicos de compiladores.
• Vale novamente observar que os programas são implementações de sistemas que
puderam ser modelados por um autômato finito.
Definição - Autômato Finito
Um autômato finito ( af ) M sobre um alfabeto Σ é um sistema M = { Q,
Σ, , q0, F }, onde:
Q – conjunto finito e não vazio de estados.
Σ – alfabeto dos símbolos de entrada.
 : Q x Σ  Q – mapeamento de transição de estados.
q0  Q – estado inicial.
F  Q – conjunto de estados finais.
Autômato Finito
• Este sistema matemático pode ser representado graficamente por um
diagrama de transição de estados, que é um grafo direcionado
construído da seguinte maneira :
1.Os nós do grafo serão os estados do autômato finito.
2.o estado inicial será indicado por uma seta ( ) no nó correspondente.
3.os estados finais serão indicados com um duplo círculo nos nós.
4.o mapeamento  ( qi, a ) = q j será representado pelo arco rotulado por a com
origem no nó qi e destino no nó q j .
Autômato Finito - Exemplo
Seja o autômato finito M1 = { Q, Σ, , q0, F } com
Q = { q0, q1, q2, q3 }
Σ = { 0, 1 }
F = { q3 }
e o mapeamento  dado por
 ( q0, 1 ) = q1
 ( q1, 0 ) = q2  ( q 1 , 1 ) = q1
 ( q2, 0 ) = q3  ( q 2 , 1 ) = q1
 ( q3, 0 ) = q3  ( q 3 , 1 ) = q1
Autômato Finito - Exemplo
1 0

1 0 0
q0 q1 q2 q3
1
Estado 0 1
1 q0 - q1

Grafo correspondente ao autômato do exemplo anterior.


q1 q2 q1

 ( q 0, 1 ) = q 1
q2 q3 q1
 ( q 1, 0 ) = q 2  ( q 1, 1 ) = q 1
 ( q 2, 0 ) = q 3  ( q 2, 1 ) = q 1
 ( q 3, 0 ) = q 3  ( q 3, 1 ) = q 1 q3 q3 q1
Resumindo
• Diagrama de Transição
– Outra maneira de representar um autômato finito;
– Grafo direcionado e rotulado;
– Os vértices representam os estados, desenhados como círculos;
– As arestas representam as transições entre dois estados, sendo o rótulo o
símbolo reconhecido na entrada;
– O estado inicial é marcado com uma seta;
– Os estados finais são indicados por círculos duplos.
Autômato Finito
• Um autômato finito M = { Q, Σ, , q0, F } pode ser interpretado como
um controle finito que está em algum estado de Q, e processa
símbolos de entrada do alfabeto Σ, que estão escritos numa fita, de
forma sequêncial e da esquerda para a direita.
• Num dado momento, o AF estando no estado q1 e lendo a símbolo a
na fita, faz uma movimento que é determinado pelo mapeamento ,
passando a ler o símbolo à direita de a e passa para o estado  (q1, a ).
Controle Finito
• No início o controle finito está no estado q0 e lendo o símbolo mais a
esquerda da entrada. Através dos movimentos determinados por , o
AF pode atingir um estado final ( um estado do conjunto F ) e se não
tiver mais símbolos para serem processados dizemos que está numa
configuração de aceitação da entrada.
Controle Finito Fita contendo
símbolos de entrada.

Controle Finito

Obs: O controle finito contém a tabela de transição do


autômato e uma variável contendo o estado atual. Ele irá
aceitar a cadeia se conseguir ler toda a cadeia, isto é, se
tiver uma transição para cada entrada e para o estado
atual.
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q0 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q0 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q1 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q1 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q2 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q1 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q2 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 0 0 0 1 0 0
q0 q1 q2 q3
1

Controle Finito
q3 Estado 0 1
q0 - q1

q1 q2 q1
A cadeia terminou e o autômato está em seu
estado final. Dizemos então que a cadeia foi
q2 q3 q1
reconhecida pelo autômato.
q3 q3 q1
Quando a cadeia não é reconhecida pelo
autômato?
• Quando a função  não está definida para o estado
em questão e a entrada.
• Quando a cadeia termina e o autômato não está em
um de seus estados finais.
1 0

1 1 0 1 1 0 0
q0 q1 q2 q3
1

Controle Finito
q0 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 1 0 0
q0 q1 q2 q3
1

Controle Finito
q0 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 1 0 0
q0 q1 q2 q3
1

Controle Finito
q1 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 1 0 0
q0 q1 q2 q3
1

Controle Finito
q1 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

1 1 0 1 1 0 0
q0 q1 q2 q3
1

Controle Finito
q2 Estado 0 1
q0 - q1

q1 q2 q1
A cadeia terminou e o autômato não está em
seu estado final. Dizemos então que a cadeia
q2 q3 q1
não foi reconhecida pelo autômato.
q3 q3 q1
1 0

0 1 0 1 1 0 0
q0 q1 q2 q3
1

Controle Finito
q0 Estado 0 1
q0 - q1

q1 q2 q1

q2 q3 q1

q3 q3 q1
1 0

0 1 0 1 1 0 0
q0 q1 q2 q3
1

Controle Finito
q0 Estado 0 1
q0 - q1

q1 q2 q1
Não existe transição na tabela para o estado q0
e o símbolo 0. O autômato “trava” e não q2 q3 q1
processa o resto da cadeia. O autômato então
não reconhece a cadeia, independente do
q3 q3 q1
estado em questão ser ou não um estado final.
Outro exemplo M = ( { q0, q1, q2 }, { a, b }, δ, q0 , {q2 })
δ(q0,a) = q1
a
b δ(q1,a) = q1
a q2
q0 q1 δ(q1,b) = q2

L (M ) = { anb | n ≥ 1 }
Linguagem aceita por um AF
Qual a linguagem aceita pelo autômato finito cujo grafo é dado abaixo?

1 0 0
q0 q1 q2 q3
1

Solução: Resolver por partes. A cadeia deve começar por 1. Depois pode ter uma
quantidade qualquer de 1s, inclusive 0, pode então ser seguida por “01” uma
quantidade qualquer de vezes, inclusive 0 vezes. Depois do 1, dentro da cadeia 10,
pode haver um número qualquer de 1s, inclusive 0 e a cadeia deve terminar com 0.
Linguagem aceita por um AF
1

1 0 0
q0 q1 q2 q3
1

L (M ) = { 1 1n (0 1 1m )p 00 | n,m,p ≥ 0 }
Observe que a cadeia 11m pode ser reescrita como 1m com m ≥ 1. Neste caso, podemos reescrever L (M )
como:

L (M ) = { 1 1n (0 1m )p 00 | n,p ≥ 0 e m ≥ 1}
Expressões regulares

• A linguagem aceita por um autômato finito, é sempre


uma linguagem regular. Essa linguagem regular pode
ser descrita por uma expressão matemática, como no
exemplo anterior, mas pode ser também descrita por
uma ou mais expressões regulares.
• Expressões regulares são formas de descrever
conjuntos regulares (finitos ou não).
Expressões regulares
Exemplo:

L (M ) = { 1 1n (0 1 1m )p 00 | n,m,p ≥ 0 }
Pode ser descrita como:

E (M ) = 1 1* (0 1 1* )* 00 ou como:

E (M ) = 1+ (0 1+ )* 00
Expressões regulares
Exemplo: Qual a expressão regular que define a linguagem do autômato N cujo
grafo é dado abaixo?

1 0,1

1 0
q0 q1 q3

Solução: L(N) = 1 1* 0 (0 | 1 )* ou

L(N) = 1+ 0 (0 | 1 )*
Autômatos Finitos Determinísticos (AFD)

• Os autômatos finitos apresentados nesta aula são


autômatos finitos determinísticos (AFD ou DFA –
Deterministic Finite Automata).
• Eles tem a propriedade de que para um dato estado e
para um dado símbolo do alfabeto, existe apenas um
único estado associado à imagem da função  ou
nenhum.
Autômatos Finitos Determinísticos (AFD)
Estado 0 1
q0 - q1
1 0

1 0 0
q1 q2 q1
q0 q1 q2 q3
1
q2 q3 q1
1
q3 q3 q1
Autômatos Finitos Não Determinísticos
(AFND)
• Já os autômatos finitos não determinísticos (AFND ou
NDFA – Non Deterministic Finite Automata), para cada
estado e para cada símbolo da entrada, está associado
um conjunto de estados. Esse conjunto pode inclusive
ser unitário ou pode ser o conjunto vazio.
Autômatos Finitos Não Determinísticos
(AFND)
Estado 0 1
q0 {} {q1}
1 0

1 0 0
q1 {q2} {q1}
q0 q1 q2 q3
1
q2 { q3 } {q1}
1,0
q3 { q 1, q 3 } {q1}

Você também pode gostar