Autômatos Finitos Determinísticos
Aspectos Formais de Computação
Rodrigo Ribeiro
Departamento de Ciências Exatas e Aplicadas Universidade de Federal de Ouro Preto
Resolvendo um Quebra-Cabeças — (I)
Descrição do Problema
Em uma margem de um rio...
Um homem desejava atravessar o rio usando uma canoa.
A canoa só pode levar o homem e mais um objeto. E levar para o outro lado um repolho, um coelho e um leão.
Mas...
O leão não pode ficar sozinho com o coelho em uma margem.
Resolvendo um Quebra-Cabeças — (II)
Modelagem...
Possíveis movimentos:
O homem leva na canoa o coelho. O homem leva na canoa o leão. O homem leva na canoa o repolho. O homem vai sozinho na canoa.
Mais sobre movimentos:
Cada movimento, altera o que está em cada margem.
Sabemos que se o coelho está sozinho na margem direita.
Resolvendo um Quebra-Cabeças — (III)
Simplificando a Modelagem
Podemos simplificar a modelagem assim:
Cada movimento pode ser representado por um símbolo.
O símboloc pode representar o fato do homem levar na canoa o coelho.
O símbolol pode representar o fato do homem levar na canoa o leão.
O símbolor pode representar o fato do homem levar na canoa o repolho.
Resolvendo um Quebra-Cabeças — (IV)
Observe que...
Veja que a codificação de movimentos por meio de símbolos...
Forma um alfabeto Σ ={c,l,r,s}.
Portanto possíveis soluções podem ser codificadas como palavras desta linguagem.
Portanto podemos definir uma linguagemL ∈Σ∗
tal que para toda palavraw ∈L,w seja uma solução para o quebra-cabeças.
Então para resolver este quebra-cabeças...
Resolvendo um Quebra-Cabeças — (V)
Representação de Linguagens
Até agora vimos como representar linguagens usando operações sobre conjuntos.
Porém a linguagem que representa as soluções deste quebra-cabeças:
É um pouco complicada para representar usando operações como união, interseção, concatenação e fecho de Kleene.
Resolvendo um Quebra-Cabeças — (VI)
Veja que precisamos...
De um algoritmo que receba uma palavra como entrada e retorne verdadeiro se a palavra
constitui uma solução para o problema e falso, caso contrário.
Observe que...
O número de possibilidades de objetos em cada lado da margem é finito.
E que se um conjunto X de objetos está na
margem esquerda, então {h,c,l,r} −X estão
Resolvendo um Quebra-Cabeças — (VII)
Portanto...
Como o número de estados deste quebra-cabeça é finito, então podemos representar este
problema como um diagrama de estados.
Onde cada estado representa apenas os objetos na margem esquerda.
Cada movimento é representado como uma seta ligando dois estados.
Resolvendo um Quebra-Cabeças — (VIII)
Mas Este Diagrama Poderia Resolver Este Problema?
Basta seguir a transição de estados.
Começando no estado {h,c,l,r} que representa
que homem, o coelho, o leão e o repolho estão na margem esquerda.
Terminando no estado em que a margem esquerda está vazia.
Solução: Sequência de movimentos que se inicia
Resolvendo um Quebra-Cabeças — (IX)
Resolvendo um Quebra-Cabeças — (X)
Verificando uma Solução
Em cada transição de estado, um símbolo da palavra é eliminado, e considera-se como novo estado atual o estado que está na ponta da aresta que representa a transição entre os estados.
Uma transição só pode ser realizada se o
Autômatos Finitos Determiníticos — (I)
Sobre o Diagrama Anterior...
Um diagrama de estados como o anterior...
Na verdade é um tipo de máquina abstrata.
Entenda-se por máquina abstrata:
Uma máquina que realize algum tipo de trabalho computacional.
Sem especificar em qual tecnologia esta será implementada.
Somente o algoritmo (computação) é especificado pela máquina
Mais especificamente...
Autômatos Finitos Determinísticos — (II)
Formalmente...
Um AFD M é uma quíntupla:
M = (E,Σ, δ,i,F), onde:
E : Conjunto finito de estados
Σ: Alfabeto
δ:E ×Σ→E : função de transição
i ∈E: Estado inicial.
Autômatos Finitos Determinísticos — (III)
Autômatos Finitos Determinísticos — (IV)
O Exemplo Anterior Formalmente...
E = {a,b} e Σ ={0,1}.
i = a e F = {b}.
Definição da função de transição
δ 0 1
a b a
b a b
Mas Qual a Linguagem Reconhecida pelo AFD?
Linguagem sobre {0,1} tal que toda palavra possui
Autômatos Finitos Determinísticos — (V)
Configuração Instântanea
Formaliza em que ponto o processamento de um AFD está em um determinado momento.
O ponto de processamento de um AFD pode ser definido por:
Um estado atual e.
O restante da palavra a ser processadaw.
Então a configuração do processamento de um AFD pode ser definida pelo par [e,w], com e ∈E
Autômatos Finitos Determinísticos — (VI)
Transição entre Configurações Instântaneas
A função de transição δ : E ×Σ → E induz a
uma relação sobre configurações instântaneas
⊢⊆ (E ×Σ∗)×(E ×Σ∗).
A relação ⊢ mostra como o processamento de
Autômatos Finitos Determinísticos — (VII)
Formalizando o Reconhecimento de Palavras
Seja M = (E,Σ, δ,i,F) um AFD e...
Seja ⊢⊆ (E ×Σ∗)×(E ×Σ∗) a relação de
transição entre configurações instântaneas deM.
Dizemos que um AFD M reconhece uma palavra
w ∈ Σ∗ se e somente se:
[i,w]⊢∗ [e, λ]∧e ∈F.
Onde ⊢∗ é definido pela repetição de ⊢:
Autômatos Finitos Deter. — (VIII)
Formalizando a Linguagem Reconhecida por um AFD
Função de Transição Extendida.
Retorna o estado onde a computação em um AFD para após processar toda uma palavra.
Definindo:
b
δ(e, λ) = e b
δ(e,ay) =bδ(δ(e,a),y)
Com isso podemos definir L(M), a linguagem
aceita por um AFD M = (E,Σ, δ,i,F):
Autômatos Finitos Deter. — (IX)
Autômatos Finitos Determinísticos — (X)
Autômatos Finitos Deter. — (XI)
Equivalência entre AFD’s
Dois AFDs M1 e M2 são equivalentes se e
somente se: L(M1) = L(M2).
Logo faz sentido perguntar:
Existe um AFD mais eficiente para reconhecer uma linguagem?