Autômatos nitos e suas aplicações
Edgar Tomita
Josue Crispim
Autômatos finitos e suas aplicações
Resumo
Autômatos finitos são amplamente utilizados dentro da ciência da computação, a maior parte
dos compiladores e sistemas processadores de linguagem usam autômatos finitos. Não estando
restrito só a ciência da computação tem grande utilidade para a biologia e engenharia elétrica além
de sua grande importância no estudo de linguagens naturais. Os autômatos finitos estão divididos
em dois grupos os dos reconhecedores que são ser os determinı́sticos ou não determinı́sticos e os
transdutores que são ser as máquinas de Moore e Mealy. Eles reconhecem linguagens regulares ou
do tipo 3 segundo a hierarquia de Chomsky. Ao longo deste trabalho iremos revisar a teoria dos
autômatos, das máquinas reconhecedoras e transdutores, assim como uma abordagem prática do
uso dos autômatos finitos na bioinformática para a análise de sequências e para o uso em modelos
de predição e por último
1
Introdução
Autômato finito é uma abstração computacional que é usada amplamente em inúmeras áreas como
design de circuitos digitais para sistemas de modelagem, comunicação de protocolos, linguagens
de programação e design de compiladores. Processadores de texto freqüentemente usam autômatos
finitos é uma das ferramentas mais utilizadas na World Wide Web, na busca de uma ou um conjunto
de palavras.
Segundo [3] o termo ‘autômato finito’ descreve uma classe de modelos computacionais que são
caracterizados por terem um número finito de estados. Em particular os autômatos finitos formam
uma classe com linguagens restritas, devido essa restrição eles se tornam mais fáceis de serem
manipulados.
Divididos em dois grupos os das máquinas reconhecedoras que reconhecem a sua entrada e
usam seus estados para sinalizar o resultado para sinalizar o resultado para o mundo externo. E os
transdutores que geram uma saı́da baseada em uma entrada ou estado utilizando ações. Amplamente
utilizado para aplicações de controle. Dentro dos transdutores temos as máquinas de Moore e Mealy.
Iremos estudar a teoria dos autômatos finitos em 2, então entraremos em detalhes, nos grupos que
formam os autômatos finitos primeiramente com os reconhecedores estudando os autômatos finitos
determinı́sticos em 3 e então os autômatos finitos não determinı́sticos em 4 assim como algumas
operações nesse grupo.
Em 8 iremos estudar a teoria por traz transdutores, as máquinas de Moore e Mealy, assim como
algumas operações realizadas nesse grupo.
Também iremos ver em 9 a aplicação do que foi estudado, para algumas tarefas na manipulação
de dados e modelos de predição utilizados na bioinformática como comparação de sequências 5.1,
detecção de padrões dentro da sequência 5.2 e Detecção de regiões reguladoras no gene 5.3. e
finalizando em 10 a aplicação de autômotos em jogos.
2
Autômatos finitos
Em considerações gerais os reconhecedores são sistemas em que eles tem como entrada uma palavra
α ∈ Σ, será lido sı́mbolo por sı́mbolo até o final da palavra, caso não encontre erros antes, e no
último sı́mbolo da palavra o autômato estiver no estado de aceitação, a palavra é aceita, o oposto ela
é rejeitada. Os reconhecedores contêm um conjunto de estados finitos e o seu “controle” se desloca
para outro estado de acordo com a “entrada” externa.
Exemplo 1. Autômato reconhecedor simples.
Um interruptor liga/desliga que memoriza o estado “ligado” e “desligado”, e permite que o
usuário mude de estado diferente do que está através de um botão. Se o interruptor estiver no
estado ”ligado”, após pressionar o botão levará o estado para “desligado”, se estiver no ”desligado”,
e pressionar o botão irá para o ”ligado”.[2]
Figura 1: A figura 1 apresenta o autômato finito para o interruptor. Os estados são apresentados pelos cı́rculos
(ligado e desligado) e os arcos apresentam as “entradas”, representado as influências externas (pressionar). A idéia é
de que o sistema mude de estado toda vez que a entrada pressionar é recebida.
O estado “inicial” em um autômato é indicado pela seta inı́cio. Muitas vezes é necessário indicar
um ou mais estados como sendo “finais” ou de “aceitação”. Este estado é indicado por um cı́rculo
duplo.
Uma das formas de representação de um autômato é de diagrama de estado de transição ou
grafo. Que é um grafo orientado onde os nos são os estados e as arestas nomeadas com os sı́mbolos
representam a mudança de estado ou transição causada pela leitura do terminal segundo[7].
Exemplo 2. Constantes Decimais.[7]
L o conjunto de decimais constantes tem o alfabeto Σ = ∆ ∪ {0,•} onde delta = 0,1,2,3,4,5,6,7,8,9
é um digito diferente de 0.
Dado uma palavra 0 • 2 •, o autômato anda pelos estados q0 , q2 , q3 , q4 . No último estado, uma
vez que nenhuma transição permita a leitura de um simbolo a •, o cálculo pára antes da palavra
seja lida por inteiro. Como uma consequência, a palavra não é aceita. Por outro lado, a entrada 0
• 21 seria ser aceita.
Se quisermos modificar a linguagem para as contantes 305 • terminando com um decimal o e
um ponto serem aceitas, o q3 também tem que ser marcado como estado final [7].
2
Figura 2: Diagrama de estado ou grafo (esquerda) e tabela (direita) para constantes decimais
(exemplo 1)
3
Autômatos finitos determinı́sticos
Quando o autômato não pode estar em mais de um estado em qualquer momento, se diz que é
determinı́stico1 . Pode ser definido simplesmente por AFD ou DFA.
O autômato finito determinı́stico é uma 5-upla onde:
1. Σ representa um conjunto finito de sı́mbolos de entrada;
2. Q conjunto de estados possı́veis do autômato;
3. δ função de transição;
4. q0 estado inicial;
5. F conjunto de estados finais.
Assim, temos uma “tupla de cinco elementos”:
A = (Σ, Q, δ, q0 , F )
Todo autômato finito tem pelo menos um estado, que é o estado inicial q0 . Os sı́mbolos de
entrada são representados pelo alfabeto Σ e a função de transição δ especifica o movimento, por
exemplo quando aparece δ(q, a) = r, significa que a maquina M que está no estado q lê a e vai para
r caso δ(q, a) é indefinido o autômato para.
O autômato processa uma palavra não vazia x com uma serie de movimentos. Pegando x = ab,
lendo o primeiro caractere, o primeiro passo δ(q0 , a) = q1 leva ao estado q1, então para o q2 pelo
segundo passo δ(q1 , b) = q1 . Podemos também escrever de forma reduzida δ(q0 , ab) = q2 que diz
lendo a palavra ab a maquina move para o estado q2 .[7]
Um caso especial e a palavra vazia. Que não assume mudanças de estado:
1
O termo “determinı́stico” se refere ao fato de que, para cada entrada, existe um e somente um estado ao qual o
autômato pode transitar a partir de seu estado.[2]
3
∀q ∈ Q : δ(q, ε) = q
Seguindo temos que o domı́nio da função transição é QΣ∗ e a definição é:
δ(q, ya) = δ(δ(q, y), a), onde a ∈ Σ e y ∈ Σ∗
Olhando o autômato como grafo, se δ(q, y) = q 0 , então, e somente então, existe um caminho do
no q para o no q 0 , tal que a concatenação das arestas tem as palavra y. Dizemos que y é um rotulo
do caminho.
A palavra x e reconhecida ou aceita por um autômato se é um rotulo de um caminho do estado
inicial até o estado final, δ(q0 , x) ∈ F .
A linguagem reconhecida ou aceita pelo autômato M é:
L(M ) = x ∈ Σ∗{x e reconhecida por M }
Dois autômatos são equivalente se eles aceitam a mesmo linguagem.
O autômato processa uma palavra não vazia com uma série de movimentos e pode ser visto como
sendo uma máquina composta por três partes:[4]
1. Fita: contém a informação a ser lida;
2. Unidade de Controle: reflete o estado da máquina. A unidade de leitura acessa uma célula da
fita de cada vez. Sempre da esquerda para a direita
3. Função de transição ou Programa: comanda as leituras definindo o estado da máquina.
A fita é dividida em célula e é finita. Cada célula armazena um sı́mbolo que pertencem a entrada.
Não existe nenhuma memória auxiliar e também não é possı́vel gravar sobre a fita. A informação a
ser coletada ocupa toda a fita.
Na unidade de controle, os estados são predefinidos e em um número finito. O sı́mbolo é lido
uma célula de cada vez. Depois de lido a unidade de controle é deslocada para a direita a fim de ler
o próximo sı́mbolo, assim sucessivamente até o fim da fita.
Figura 3: Fita representando um autômato finito.
O programa define o novo estado do autômato após a leitura. Como não há nenhuma memória
auxiliar, utiliza-se o conceito de estado para armazenar as informações.
4
3.1
Função programa estendida
Dado δ(q, ya) = δ(δ(q, y), a), um DFA, em [4] a função programa estendida é definida por:
δ : Q ΣßQ
é a função programa : QΣßQestendida para palavra, definida por indução:
δ(q, ε) = q
δ(q, wa) = δ(δ(q, a), w)
3.2
Autômatos vacuosos
Se o conjunto de estados finais dos autômatos for vazio a linguagem gerada também é vazia, ou seja,
L = 0.Mas existem AFDS com estados finais que geram a linguagem vazia, para acontecer isso não
poderá existir nenhum caminho que comece no estado inicial e termine no estado final. Todo AFD
que a linguagem for vazia é designado por AFD vacuoso.
3.3
Estados acessı́veis, produtı́veis e inúteis
Em um autômato um estado e acessı́vel se ele começa no estado inicial q0 e termina em um estado
q. Um estado q é produtivo se existe um caminho entre ele e o estado final. Um estado q é inútil se
ele não for acessı́vel e não for produtivo.
4
Autômatos Finitos Não-Determinı́sticos
O autômato finito não-determinı́stico, ou simplesmente NFA ou AFND, pode estar em vários estados
ao mesmo tempo com isso fica mais fácil a leitura do grafo do autômato e também permite definições
mais curtas. Diferente da AFD, a função de transição da NFA não define necessariamente o próximo
estado, porém fornece uma lista de estado para as quais a transição poderia ser feita. A lista tem
um número ≥ 0.
Enquanto a NFA aceita uma cadeia se o último estado atingido é final, na NFA a cadeia é aceita
se existe uma sequência de escolhas onde o último estado atingido é final.
O autômato finito não-determinı́stico é uma 5-upla onde:
1. Σ representa um conjunto finito de sı́mbolos de entrada;
2. Q conjunto finito de estados;
3. δ função de transição. Recebe um estado Q e um sı́mbolo do alfabeto e retorna um F. No
NFA é um conjunto de estados enquanto que no NFA é um único estado;
4. q0 estado inicial;
5. F conjunto (subconjunto de Q) de estados finais.
Assim, temos uma “tupla de cinco elementos”:
A = (Σ, Q, δ, q0 , F )
Exemplo 3 [7]
Seja a cadeia de entrada ababa e a NFA dado pelo diagrama da figura:
5
Figura 4: Diagrama que representa o autômato finito não-determinı́stico
A cadeia é aceita, pela sequência de estados q0 , q1 , q1 , q1 , q1 , q2. A sequência de estado poderia
ser também q0 , q1 , q1 , q1 , q1 , q1 que não leva a um estado final. Há uma sequência que é interrompida,
q0 , q1 , q1 , q2 , que não prevê uma transição com o segundo b. Mesmo com esses casos o autômato é
aceito, porque há um caminho certo.
Este afnd aceita a linguagem das cadeias (de comprimento maior ou igual a 2), cujo primeiro
e último sı́mbolos são a, sendo os restantes quaisquer. (Compare este afnd com o afd de um dos
exemplos anteriores, que aceita a mesma linguagem.)
Temos, para a mesma cadeia ababa de entrada,
(q0, ababa) ` (q1, baba) ` (q1, aba) ` (q1, ba) ` (q1, a) ` (q2, e)
e, portanto, ababa I L(M). Temos também o ”caminho errado”
(q0, ababa) ` (q1, baba) ` (q1, aba) ` (q1, ba) ` (q1, a) `(q1, e)
que leva à configuração não final (q1, e), e não permite nenhuma conclusão.
Cadeias como bab e abab não levam a configurações finais e não são aceitas. Da
configuração (q0, bab) nenhuma configuração é atingı́vel; para abab temos:
(q0, abab) ` (q1, bab) ` (q1, ab) ` (q1, b) ` (q1, e)
Adicionalmente, temos um outro caminho
(q0, abab) ` (q1, bab) ` (q1, ab) ` (q2, b)
que também não atinge nenhuma configuração final. Assim, as cadeias bab e abab não
são aceitas e não fazem parte de L(M).
Exemplo 4 [7]
Considere o afnd M da Fig. 4.5. M aceita cadeias da forma c y c, onde c pode ser a ou b e y
pode ser qualquer cadeia de a’s e b’s. A cadeia ababa = cÖyÖc = aÖbabÖa é aceita por M, através
da sequência de configurações abaixo, em que a primeira e a última transições são realizadas através
de transições-e.
(A, ababa) M lê e e adivinha que c=a
` (B, ababa) M lê a e confere que c=a
` (C, baba) M lê b
` (C, aba) M lê a e adivinha que este a faz parte de y
` (C, ba) M lê b
6
` (C, a) M lê a e adivinha que este a é o último c
` (D, e) M lê e e adivinha que a cadeia acabou
` (I, e) M aceita
Figura 5: AFND para o exemplo
Todas as configurações atingı́veis (caminhos certos e errados) estão indicadas abaixo:
(A, ababa)
` (B, ababa)
. ` (C, baba)
. ` (C, aba)
. ` (C, ba)
. . ` (C, a)
. . ` (C, e) – não aceita
. . ` (D, e)
. . ` (I, e) – ok! aceita!
. ` (D, ba)
. ` (I, ba) – bloqueado
` (F, ababa) – bloqueado
4.1
Função programa estendida
Dado A = (Σ, Q, δ, q0 , F ), um NFA, em [4] a função programa estendida é definida por: δ : 2Q
Σ ß 2Q é a função programa δ : Q Σ ß 2Q estendida para palavra e por indução definida como:
δ (P, ε) = P
δ (q, aw) = δ(∪ q ε P δ (q, a), w)
Assim, para um dado conjunto de estados (q1 , q2 ...qn ) e para um dado sı́mbolo a:
δ({q1 , q2 ...qn }, a) = δ (q1 , a) u δ(q2 , a)u...uδ(qn , a)
A linguagem aceita por NFA M, denotada por ACEITA(M) ou L(M), é o conjunto de todas as
palavras pertencentes a Σ tais que existe um caminho alternativo que aceita ou rejeita a palavra,
ou seja:
7
ACEITA(M) = { w — existe q ε δ(qn , w) tal que q F}
REJEITA(M), é o conjunto das palavras pertencentes a Σ rejeitadas por todos os caminhos
alternativos de M, a partir de q0 ).
5
Equivalência entre AFD e AFN
Há uma equivalência entre as duas classes de autômatos: os determinı́sticos e não-determinı́sticos.
Prova:
A ideia é mostrar que a partir de um AFN M qualquer, é possı́vel construir um AFD A0 . O
algoritmo demonstra a conversão de um AFN qualquer em um AFD equivalente. O objetivo é a
construção de estados de A0 tal que simule as diversas combinações de estados alternativos de M.[4]
Seja A0 = (Σ, Q, δ, q0 , F ) um AFN qualquer e A0 = (Σ, Q’, δ’, <q0 >, F’ ) um AFD construı́do
a parti de A:
1. A’: todas as combinações possı́veis, sem repetições, de estados de Q as quais são denotados
por < q1 q2 ....qn > sendo que qi pertence a Q e i = 1. A ordem dos elementos não distingue
mais combinações, ou seja, < qu qv >=< qv qu >;
2. δ’: tal que δ’(< q1 ....qn >, a) =< p1 ....pn >se, e somente se, δ({q1 ....qn }, a) = ({p1 ....pm } Ou
seja, a imagem de todos os caminhos alternativos de A é representado por M 0 ;
3. F: conjunto de estados < q1 q2 ....qn > pertences a Q0 tal que alguma componente qi pertence
a F, i > 1.
A demonstração de que A0 simula o processamento de A é por indução da tamanho da palavra.
Supondo que w é uma palavra qualquer de Σ, deve-se mostrar que:
δ’(< q0 >, w) = < q1 ....qu > se, e somente se, δ’(q0 , w) = q1 ....qu
1. Base de indução.Seja w tal que — w — = 0. Então:δ’(< q0 >, ) = < q0 >se, e somente se
δ’(q0 , ) = q0
2. Hipótese de indução.Seja um w tal que — w — = n e n > 1 Suponha verdadeiro que: δ’(< q0 >,
w) = < q1 ....qu > se, e somente se δ(q0 , w) = < q1 ....qu >
3. Passo de indução.Seja um w tal que — wa — = n + 1 e n > 1 Suponha verdadeiro que:
δ’(< q0 >, w) = < p1 ....pu >se, e somente se δ(q0 , w) = p1....pu o que equivale: δ’(< q0 >,
w) = < p1 ....pv > se, e somente se δ’({q1 ....qu }, w) = < p1....pu > o que é verdadeiro, por
definição de δ’.
Portanto, A’ simula A para qualquer w pertencente a Σ.
6
Autômato Finito com Movimentos Vazios
Trata-se de uma generalização dos modelos de máquinas não-determinı́sticas. Uma transição sem
leitura de um sı́mbolo na fita caracteriza o movimento vazio. Uma das vantagens, está no fato de
facilitar demonstrações e construções relacionados a autômatos.
Em autômatos Finitos, a facilidade de movimentos vazios não melhora o reconhecimento de
linguagens. Qualquer Autômato Finito com Movimentos Vazios pode ser simulado por um Autômato
Finito Não-Determinı́stico.
8
O autômato finito não-determinı́stico com movimentos vazios, conhecido como AFN ou AF é
uma 5-upla, onde:
1. Σ representa um conjunto finito de sı́mbolos de entrada;
2. Q conjunto finito de estados possiveis;
3. δ função de transição D:Q(Σ ∪ { }ß2Q
4. q0 estado inicial;
5. F conjunto (subconjunto de Q) de estados finais.
Assim, temos uma “tupla de cinco elementos”:
A = (Σ, Q, δ, q0 , F )
7
Minimização de autômatos
A ideia da minimização de autômatos, é gerar um autômato finito equivalente com o menor número
de estados possı́veis. Entretanto, a minimização não garante um custo menor na implementação.
O autômato minimizado, chamado de Autômato Finito Mı́nimo, é único a menos que seja um
isomorfismo. Por exemplo, se dois autômatos aceitam uma linguagem, ao serem minimizados terão
o mesmo Autômato Finito Mı́nimo
A definição de um Autônomo Mı́nimo é descrito por como: Uma linguagem regular L é AFD,A
= (Σ, Q, δ, q0 , F ) tal que ACEIT A(M ) = L e que para qualquer outro AFD A0 = (Σ, Q, δ, q0 , F
), tal que ACEITA(M) = L, tem-se que #Q03 #Q.[4]
Para minimizar um autômato deve-se respeitar:
1. O Autômato é determinı́stico;
2. Não possui estados inacessı́veis;
3. Função programa total. São previstas transições para todos os sı́mbolos do alfabeto a partir
de qualquer estado.
Caso algum desses casos não seja satisfeita não é possı́vel realizar a minimização a menos que
os problemas sejam corrigidos.
O algoritmo proposto por [1] é descrito como: A partir de um AFD, A = (Σ, Q, δ, q0 , F ) que
satisfaz todas as regras para minimização de um autômato. Os passos para do algoritmo são os
seguintes:
1. Tabela. Relacionar os estados distintos através de uma tabela, onde cada par de estados ocorre
somente uma vez, como na figura:
9
Figura 6: tabela com os estados minimizados
2. Marcação dos estados trivialmente não-equivalentes. Marcar os pares do tipo estado final,
estado não-final. Estados finais não são equivalentes aos estados não-finais.
3. Marcação dos estados não equivalentes. Para cada sı́mbolo a pertencente ao alfabeto e para
cada par (qu , a), suponha que δ(qu , a) = pu e δ(qv , a) = pv e:
(a) Se pu = pv , então ambas são equivalentes para o sı́mbolo a e não deve ser marcado;
(b) Se pu 6= pv e o par {pu , pv } não está marcado, então inclui-se {qu , qv } é incluso em uma
lista a partir de {pu , pv } para análise;
(c) Se pu 6= pv e o par {pu , pv } está marcado, então:
i. {qu , qv } não é equivalente, portanto é marcado;
ii. se {qu , qv } encabeça uma lista de pares, marcar todos os pares da lista e recusivamente, se algum par da lista encabeça outra lista;
4. Unificação dos estados equivalentes. Podem ser unificados os estados dos pares não marcados
da seguinte maneira:
(a) são unificados em um único estado não-final os pares de estados não-finais equivalentes;
(b) são unificados em um único estado final os pares de estados finais equivalentes;
(c) o estado unificado é inicial se alguns dos estados equivalentes é inicial;
5. Exclusão dos estados inúteis. São excluı́dos os estados inúteis. Um estado q é inútil se é
não-final e não se atinge ao estado final através dele.
10
Figura 7: Autômato Finito a ser minimizado
8
Máquinas de Moore e de Mealy
A Máquina de Moore possui uma função que gera uma palavra de saı́da (que pode ser vazia) para
cada estado da máquina. Esta saı́da só depende do estado atual da máquina.
Já a Máquina de Mealy é um Autômato Finito modificado de forma a gerar uma palavra de
saı́da para cada transição entre os estados. Neste tipo de máquina de estados estas palavras de
saı́da dependem do estado atual e do valor das entradas.
Definições formais:
Uma Máquina de Mealy M é autômato finito determinı́stico com saı́das associadas às transições
e pode ser representada formalmente pela sêxtupla M = (Σ, Q, δ, q0 , F , ∆), onde: [8]
1. Σ é um alfabeto de sı́mbolos de entrada.
2. Q é um conjunto de estados possı́veis do autômato, o qual é finito.
3. δ é a função programa ou de transição
4. q0 é o estado inicial do autômato,tal que q0 é elemento de Q
5. F é um conjunto de estados finais tal que F está contido em Q.
6. ∆ é um alfabeto de sı́mbolos de saı́da.
O processamento de uma Máquina de Mealy para uma dada entrada w consiste na aplicação
sucessiva da função programa para cada sı́mbolo de w (da esquerda para a direita), até ocorrer uma
condição de parada. Caso a saı́da da função programa seja uma palavra vazia, nenhuma gravação é
realizada, ou seja, a cabeça da fita não se move. Porém se todas as transições de uma determinada
máquina de Mealy gerarem saı́das vazias, então esta se comporta como um Autômato Finito.
Já uma Máquina de Moore M, como dito anteriormente, é um Autômato Finito Determinı́stico
com suas saı́das associadas aos estados. É representada formalmente por uma septupla M = (Σ, Q,
δ, q0 , F , ∆, δS), onde:[8]
1. Σ é um alfabeto de sı́mbolos de entrada.
11
2. Q é um conjunto de estados possı́veis do autômato, o qual é finito.
3. δ é a função programa ou de transição
4. q0 é o estado inicial do autômato,tal que q0 é elemento de Q
5. F é um conjunto de estados finais tal que F está contido em Q.
6. ∆ é um alfabeto de sı́mbolos de saı́da.
7. δS é a função de saı́da a qual é uma função total.
O processamento de uma Máquina de Moore ocorre da mesma forma que na máquina de Mealy,
assim como o tratamento de saı́das vazias. Assim como a Máquina de Mealy, se todos os seus estados
gerarem saı́da vazia, ela também se comporta como um Autômato Finito.
8.1
8.1.1
Exemplos
Máquina de Mealy
Uma aplicação comum e freqüentemente recomendada para os autômatos com saı́da é o projeto de
diálogo entre um programa (de computador) e o seu usuário. Neste caso, o diálogo poderia se dar
de duas maneiras: ser comandado pelo programa ou pelo usuário.
8.1.2
Máquina de Moore
Um exemplo comum de aplicação do conceito de Máquina de Moore é o desenvolvimento de Analisadores Léxicos de compiladores ou tradutores de linguagens em geral. Basicamente, um analisador
léxico é um Autômato Finito (em geral, determinı́stico) que identifica os componentes básicos da
linguagem como, por exemplo, números, identificadores, separadores, etc. Uma Máquina de Moore
como um Analisador Léxico é como segue:
1. um estado final é associado a cada unidade léxica;
2. cada estado final possui uma saı́da (definida pela Função de Saı́da) que descreve ou codifica a
unidade léxica identificada;
3. para os demais estados (não- finais) a saı́da gerada é a palavra vazia.
8.2
Equivalência entre máquinas de Mealy e Moore
A equivalência dos dois modelos de Autômato Finito com Saı́da não é válida para a entrada vazia.
Neste caso, enquanto a Máquina de Moore gera a palavra correspondente ao estado inicial, a Máquina
de Mealy não gera qualquer saı́da, pois não executa transição alguma. Entretanto, para os demais
casos, a equivalência pode ser facilmente mostrada. Assim, toda Máquina de Moore pode ser
simulada por uma Máquina de Mealy, para entradas não vazias, e Toda Máquina de Mealy pode
ser simulada por uma Máquina de Moore. No caso de saı́das vazias, o que ocorre é que enquanto a
Máquina de Moore gera a palavra correspondente ao estado inicial, a Máquina de Mealy não gera
qualquer saı́da, pois não executa transição alguma, tornando assim as duas incompatı́veis.
12
9
Aplicação dos autômatos finitos na bioinformática
A teoria dos autômatos finitos tem grande utilidade na bioinformática, muitos problemas como
análise, processamento, simulação e interpretação dedados biológicos podem ser associados com os
autômatos. Como um exemplo, na detecção de padrões nas sequências de DNA e aminoácidos.
Outro uso comum para a bioinformatica é na comparação de saı́das de sequências, assim como
simulações e predições. Todas essas aplicações requerem algoritmos e/ou autômato.
9.1
9.1.1
Problemas especifı́cos
Comparação de sequências
No DNA e aminoácidos há certos padrões em partes da sequencia que são de grande interesse para a
bioinformática. Há também o interesse na comparação da sequencia inteira que geralmente é muito
grande e ver quais transformações a sequência tem. Isso é relevante porque duas ou mais sequencias
podem serem equivalentes sem serem idênticas. Inserções, deleções e rearranjo de nucleotı́deos e
aminoácidos, por exemplo, podem ocorrer. Essas transformações nas sequencias são possı́veis e
podem ocorrer naturalmente. [5]
Esses problemas são diretamente aplicados a certas áreas da teoria dos autômatos. A teoria
dos autômatos pode ser generalizada e aplicada para discernir quais algoritmos podem ser criados e
quais não podem. Também pode ser usada para considerações sobre tem e espaço. Isto é relevante
devido a “urgente necessidade de desenvolvimento de algoritmos” para a comparação de sequências
[5].
9.1.2
Detecção de padrões dentro das sequências
O reconhecimento de padrões pode ser determinado pelo mecanismo dos autômatos porque é comparado pequenas partes da sequência ou subsequências dentro da sequencia. Mas há uma grande
complexidade em fazer isso devido à ambiguidade e o não determinismo constantes na biologia. [5]
Nesse artigo, Cohen da um exemplo de gramática que poderia ser feita para descrever a sintaxe
de genes. Ele apresenta a idéia de representar um gene como um não terminal nessa gramática,
mas ao mesmo tempo admite que isso pode ser uma tarefa muito difı́cil. Também uma gramática
livre de contexto pode ser implementada para mapear as sequências de RNA em uma estrutura
bidimensional e que pode ser transformado em um autômato finito para definir a mesma linguagem.
9.1.3
Detecção de regiões reguladoras de genes
No cálculo para a predição das regiões reguladoras dos genes, padrões que tem significante sobre ou
sub-representação dentro do genoma ou das proteı́nas são grandes candidatos para serem elementos
que ajudam na expressão ou repressão de gene, também conhecidos como elementos reguladores.
Com os autômatos finitos, é possı́vel achar uma solução para o problema não só para achar as regiões
reguladoras trabalhando em conjunto com cadeias de Markov, mas também para o tratamento
estatı́stico. (PaoloRibeca andEmanueleRaineri) [6]
10
Aplicação de Autômatos em Jogos
Na área da informática sempre houve um desejo que o computador se interagisse mais com o ser
humano, jogando e aprendendo com seu erros para que aumente seu desempenho. É nessa área que
13
entra a Inteligência Artificial (IA), que nos últimos anos tem se desenvolvido bem criando programas
cada vez mais humanos, atuando e tomando decisões.
No ramo dos jogos, as técnicas de IA estão bem desenvolvidas com jogos mais inteligentes e
realistas. O destaque fica por conta dos Jogos de Tiro em Primeira Pessoa ou FPS (First Person
Shooter). Neste, o jogador controla o personagem como se ele próprio estivesse ali, com a visão de
primeira pessoa e armas para cumprir diversos tipos de missões. É nesses jogos em que os autômatos
finitos entram em cena.
Um exemplo de autômato finito em um jogo de FPS é o Quake. Quando lançado, o seu código
foi autorizado para ser usados por outras companhias que produziram grandes jogos provando o
sucesso da técnica. [1]
A Figura 8 mostra o autômato de um foguete Quake, um projétil de uma arma chamada Rocket
Launcher, operada e possuı́da por um jogador. A figura é bem próxima de um Diagrama de Transição
de Estado. As caixas numeradas por 1 representam os estados, 2 são os gatilhos e as setas são
transições de estado e 3 são os pontos de entrada e saı́da.
Figura 8: Representação de transição de estado do projétil de foguete
O diagrama representa o ciclo de vida do projétil. O [1] faz uma interpretação subjetiva do
código afirmando que o projétil é criado como sendo o produto de uma ação com outro autômato,
chamada de Rocket Launcher em sua Ação de Tiro. Quando a instância do projeto desaparece, ela
é excluı́da do jogo.
Quake faz um extenso uso de autômatos finitos que controlam os agentes que existem no ambiente
do jogo.
11
Conclusão
Com certeza, na área de Computação, a teoria de autômatos é uma ferramenta fundamental a ser
compreendida. É a base de toda a linguagem e na construção de um compilador. Além disso, é
empregada em outras áreas como na bioinformática e em circuitos de sistemas digitais.
Os games também ganharam a sua contribuição, em especial nos Jogos de Tiro em Primeira
Pessoa. Possibilitando assim, uma interação maior entre o jogador e o jogo.
Basicamente os autômatos finitos são determinı́sticos (DFA) ou não-determinı́sticos (NFA). No
DFA, o autômato não pode estar em mais de um estado em certo momento, enquanto no NFA pode.
14
Ambas são 5-tuplas com a diferença no seu retorno. NFA retorna um conjunto de estado e DFA
retorna um único estado.
Outra classificação de autômatos finitos são os Autômatos Finitos com Movimentos Vazios. O
principal aspecto está de que nesse autômato é permitida a transição para uma entrada vazia, sem
sı́mbolo de entrada.
É possı́vel também de se chegar em DFA a partir de um NFA que aceite a mesma linguagem.
A minimização de autômatos finitos, mesmo não diminuindo o custo na implementação, é uma
grande aliada para representar um mesmo autômato finito com um menor número de estados.
Para tal é necessário respeitar três regras: ser determinı́stico, não possuir estados inacessı́veis e ser
previstas transições para todos os sı́mbolos do alfabeto a partir de qualquer estado.
Referências
[1] M.A.C.Simôes C.S. Dinizio. Inteligência artificial em jogos de tiro em primeiro pessoa. 2002.
[2] R.Motwani j.E. Hopcroft, J.D.Ullman. Introdução à Teoria de Autômatos, Linguagens e Computação. Elsevier Editora Ltda, Rio de janeiro, 2003.
[3] M. V. Lawson. Finite automata. Heriot-Watt University, Scotland, 2004.
[4] Paulo Fernando Blauth Menezes. Linguagens Formais e Autômatos. Sagra Luzzato, Porto
Alegre, RS, 1998.
[5] R.P. Nakamoto. An insight into automata theory and bioinformatics. 2006.
[6] E.Raineri P.Ribeca. Faster exact markovian probability functions for motif occurrences : a
dfa-only approach. bioinformatics, 24:2839–2848, 2006.
[7] S. C. Reghizzi. Formal Languages and Compilation. Springer, London, 2009.
[8] Henrique Eduardo M. de Oliveira Roberta C. de Brito, Diogo M. Martendal. Máquinas de
estados finitos de mealy e moore. 2003.
15
Download

Autômatos finitos e suas aplicações