Teoria dos autômatos

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa
Assuntos relacionados a teoria dos autômatos.

Teoria dos autômatos é o estudo das máquinas abstratas ou autômatos, bem como problemas computacionais que podem ser resolvidos usando esses objetos. É objeto de estudo tanto da Ciência da Computação Teórica como da Matemática Discreta. A palavra autômato vem da palavra grega αὐτόματα que significa “autoação” (em tradução livre), isto é, sem influência externa.

A figura ao lado ilustra uma máquina de estados finito, que pertence a uma variedade bem conhecida de autômato. Este autômato consiste em estados (representados na figura por círculos), e transições (representadas por setas). Quando o autômato recebe um símbolo de entrada, ele faz uma transição (ou salto) para outro estado, de acordo com sua função de transição (que tem como entradas o estado atual e o símbolo recente).

Teoria dos autômatos também está profundamente relacionada à teoria das linguagens formais. Um autômato é uma representação finita de uma linguagem formal que pode ser um conjunto infinito. Autômatos são frequentemente classificados pela classe das linguagens formais que são capazes de reconhecer, tipicamente ilustrado pela hierarquia de Chomsky, que descreve as relações entre várias línguas e tipos de lógica formalizada.

Um exemplo de autômato. O estudo de propriedades matemáticas destes autômatos é a teoria dos autômatos

Autômatos desempenham um papel importante em teoria da computação, elaboração de compiladores, inteligência artificial, análise sintática e verificação formal.

Autômatos[editar | editar código-fonte]

Segue uma definição introdutória de um tipo de autômato, que ajuda na compreensão dos conceitos essenciais envolvidos na teoria dos autômatos.

Descrição muito Informal[editar | editar código-fonte]

Um autômato é uma construção feita de estados, projetado para determinar se a entrada pode ser aceita ou rejeitada. Parece muito com um jogo de tabuleiro básico em que cada espaço no tabuleiro representa um estado. Cada estado tem informações sobre o que fazer quando uma entrada é recebida pela máquina (novamente, parece como o que fazer quando você cai num dos espaços em um popular jogo e tabuleiro). Quando a máquina recebe um nova entrada, ela analisa o estado e escolhe um novo local baseada na informações sobre o que fazer ao receber essa entrada nesse estado. Quando não há mais entradas, o autômato para e o espaço onde está quando conclui determina se o autômato aceita ou rejeita esse conjunto específico de entradas.

Descrição Informal[editar | editar código-fonte]

Um autômato executa (ou roda) quando lhe é dada uma sequência de entradas (individualmente) em passos de tempo discretos. Um autômato processa uma entrada que é obtida a partir de um conjunto de símbolos ou letras, que é chamado de alfabeto. Os símbolos recebidos pelo autômato como entrada, em qualquer etapa (ou passo) são uma sequência de símbolos chamados de palavras. Um autômato contém um conjunto finito de estados. Para cada instante durante a execução, o autômato está em um de seus estados. Ao receber uma nova entrada, ele se move para outro estado (ou faz a transição) baseado numa função que tem o estado atual e o símbolo como parâmetros. Esta função é chamada de função de transição. O autômato os símbolos da palavra de entrada, um após o outro, e faz a transição de estado para estado, de acordo com a função de transição, até a palavra ser totalmente lida. Uma vez que a palavra de entrada foi lida, diz-se que o autômato deve parar. O estado no qual o autômato para é chamado de estado final. Dependendo do estado final, o autômato pode aceitar ou rejeitar uma palavra de entrada. Existe um subconjunto de estados do autômato, que é definido como o conjunto de estados de aceitação. Se o estado final é um estado de aceitação, então o autômato aceita a palavra. Caso contrário, a palavra é rejeitada. O conjunto de todas as palavras aceitas por um autômato é chamado de linguagem reconhecida pelo autômato. Qualquer subconjunto da linguagem de um autômato é uma linguagem reconhecida pelo autômato.

Em suma, um autômato é um objeto matemático que toma uma palavra como entrada e decide se a aceita ou rejeita. Como todos os problemas computacionais são redutíveis para o problema de aceitação/rejeição de palavras, (todas as instâncias do problema podem ser representadas por um tamanho finito de símbolos)[carece de fontes?], a teoria dos autômatos desempenha um importante papel na teoria computacional.

Definição formal[editar | editar código-fonte]

Autômatos
Definição de máquina de estados finita
Um autômato determinístico finito é representado formalmente por uma 5-tupla (Q,Σ,δ,q0,F), onde:
  • Q é um conjunto finito de estados.
  • Σ é um conjunto finito de símbolos, chamado de alfabeto do autômato.
  • δ é a função de transição, isto é, δ: Q x Σ → Q.
  • q0 é o estado inicial, isto é, o estado do autômato antes de qualquer entrada ser processada, onde q0 ∈ Q.
  • F é um conjunto de estados de Q (isto é, F ⊆ Q) chamado de estados de aceitação.
Palavra de entrada
Um autômato lê uma string (cadeia de caracteres) finita de símbolos a1,a2,...., an, onde ai ∈ Σ, que é chamada de palavra de entrada. O conjunto de todas as palavras é denotado por Σ*.
Execução
A execução de um autômato sobre uma palavra de entrada w = a1,a2,...., an ∈ Σ*, é uma sequência de estados q0, q1,q2,...., qn, onde qi ∈ Q tal que q0 é o estado inicial e qi = δ(qi-1,ai) para 0 < i ≤ n. Em outras palavras, no começo o autômato está no estado inicial q0, e então o autômato lê símbolos da palavra de entrada sequencialmente. Quando o autômato lê o símbolo ai ele pula para o estado qi = δ(qi-1,ai). Diz-se que qn é o estado final da execução.
Palavra de aceitação
Uma palavra w ∈ Σ* é aceita pelo autômato se qn ∈ F.
Linguagem reconhecida
Um autômato pode reconhecer uma linguagem formal. A linguagem L ⊆ Σ* reconhecida por um autômato é o conjunto de todas as palavras que são aceitas pelo autômato.
Linguagens reconhecíveis
As linguagens reconhecíveis são o conjunto de linguagens que são reconhecidas por algum autômato. Para a definição acima de autômatos, as linguagens reconhecíveis são linguagens regulares. Para diferentes definições de autômatos, a definição de linguagens reconhecíveis é diferente.

Definições variantes de autômatos[editar | editar código-fonte]

Autômatos são definidos para estudar máquinas úteis sobre formalismo matemático. Então, a definição de um autômato é aberta a variações de acordo com a “máquina do mundo real”, que nós queremos modelar usando o autômato. Há estudos das muitas variações de autômatos. A principal variante, descrita acima, é chamada de autômato finito determinístico. Seguem variações populares da definição dos diferentes componentes de autômatos.

Entrada
  • Entrada finita: Um autômato que aceita apenas sequências finitas de símbolos. A definição introdutória acima engloba apenas palavras finitas.
  • Entrada infinita: Um autômato que aceita palavras infinitas (ω-palavras). Tais autômatos são chamados de ω-autômatos.
  • Entrada palavra árvore: A entrada pode ser uma árvore de símbolos ao invés de uma sequência de símbolos. Neste caso, após ler cada símbolo, o autômato todos os símbolos sucessores na árvore de entrada. Diz-se que o autômato faz uma cópia dele mesmo para cada sucessor, e cada cópia executa um símbolo sucessor do estado de acordo com a relação de transição do autômato. Este autômato é chamado de autômato de árvore.
  • Entrada árvore infinita: As duas extensões acima podem ser combinadas, então o autômato lê uma estrutura de árvore com (in)finitos desvios. Este autômato é chamado de autômato de árvore infinita.
Estados
  • Estados finitos: Um autômato que contém apenas um número finito de estados. A definição introdutória acima descreve autômatos com números finitos de estados.
  • Estados infinitos: Um autômato que pode não ter um número finito de estados, ou até mesmo um número contável de estados. Por exemplo, o autômato finito quantum ou autômato topológico tem um número infinito e incontável de estados.
  • Pilha de memória: Um autômato pode também conter uma memória extra no formato de pilha, em que símbolos podem ser colocados e retirados. Este tipo de autômato é chamado de Autômato Pushdown (Autômato com pilha).
Função de transição
  • Determinística: Para um dado estado atual e um símbolo de entrada, se um autômato pode pular para um e apenas um estado, então ele é um autômato determinístico.
  • Não-Determinismo: Um autômato que, após ler um símbolo de entrada, pode pular para qualquer um de vários estado, decidido por sua relação de transição. Note que o termo função de transição é substituído por relação de transição: O autômato não-determinísticamente decide pular para uma das opções permitidas. Tais autômatos são chamado de autômatos não-determinísticos.
  • Alternamento: Esta ideia é muito semelhante ao autômato árvore, mas ortogonal. O autômato pode executar suas múltiplas cópias sobre o mesmo símbolo a ser lido. Tais autômatos são chamados de autômato finito alternado. A condição de aceitação deve satisfazer todas as execuções de tais cópias para aceitar a entrada.
Condição de aceitação
  • Aceitação de palavras finitas: Como descrito na definição informal acima.
  • Aceitação de palavras infinitas: Um ω-autômato não pode ter estados finais, já que palavras infinitas nunca terminam. Preferencialmente, aceitação da palavra é decidida analisando as sequências infinitas dos estados visitados durante a execução.
  • Aceitação probabilística: Um autômato não precisa estritamente aceitar ou rejeitar uma entrada. Ele pode aceitar a entrada com uma probabilidade entre zero e um. Por exemplo, autômato finito quantum, autômato geométrico e autômato métrico têm aceitação probabilística.

Diferentes combinações das variações acima produzem mais classe de autômato.

Teoria de Autômatos[editar | editar código-fonte]

Teoria de autômatos é um assunto que estuda as propriedades de vários tipos de autômatos. Por exemplo, as questões a seguir são relacionadas a um dado tipo de autômatos.

  • Qual classe de linguagens formais é reconhecível por algum tipo de autômato? (linguagens reconhecíveis)
  • Certos autômatos são fechados sobre a união, interseção ou complemento de linguagens formais? (propriedades de fechamento)
  • Quão expressivo é um tipo de autômato em termos de reconhecer classe de linguagens formais? E, quanto ao poder relativo de expressividade? (hierarquia de linguagem)

Teoria dos autômatos também estuda se existe algum algoritmo efetivo ou não para resolver problemas semelhantes à seguinte lista:

  • Um autômato aceita alguma palavra de entrada? (verificação de vazio – vacuidade)
  • É possível transformar um dado autômato não-determinístico em um autômato determinístico sem mudar a linguagem reconhecível? (determinização)
  • Para uma dada linguagem formal, qual é o menor autômato que a reconhece? (Minimização).

Classe de Autômatos[editar | editar código-fonte]

Segue uma lista incompleta de tipos de autômatos.

Autômatos Linguagem reconhecível
Autômatos finitos determinísticos(AFD) Linguagens regulares
Autômatos Finitos Não-determinísticos(AFN) Linguagens regulares
Autômatos Finitos Não-determinísticos com ε-transições (FND-ε or ε-AFN) Linguagens regulares
Autômato com Pilha (AP) Linguagens livre de contexto
Autômato linearmente limitado (ALL) Linguagem sensível ao contexto
Máquinas de Turing Linguagem recursivamente enumerável
Autômatos temporizado
Autômato de Büchi Linguagens ω-limite
Autômatos Não-determinístico de Büchi Linguagens ω-regular
Autômatos Não-determinístico/Determinístico de Rabin Linguagens ω-regular
Autômatos Não-determinístico/Determinístico de Street Linguagens ω-regular
Autômatos Não-determinístico/Determinístico de Paridade Linguagens ω-regular
Autômatos Não-determinístico/Determinístico de Muller Linguagens ω-regular

Autômatos discretos, contínuos e híbridos[editar | editar código-fonte]

Geralmente teoria dos autômatos descreve os estados de máquinas abstratas, mas existem autômatos analógicos, contínuos ou híbridos (discreto-contínuo), que usam dados analógicos, tempo contínuo, ou ambos.

Hierarquia em termos de poderes[editar | editar código-fonte]

Segue uma hierarquia incompleta, em termos de poder, dos diferentes tipos de máquinas virtuais. A hierarquia reflete as categorias aninhadas que as máquinas são capazes de aceitar.

Autômatos
Autômato Finito Determinístico(AFD) -- Menor Poder

(mesmo poder)    ||   (mesmo poder)

Máquina de estados finitos não determinística (AFND)

(acima é mais fraco)    ∩    (abaixo é mais forte)

Autômato com pilha determinístico (APD-l)

com uma pilha auxiliar

Autômato com pilha Não-Determinístico (APND)

com uma pilha auxiliar

Autômato linearmente limitado (ALL)

Autômato com pilha determinístico (APD-II)

com duas pilhas auxiliares

||

Autômato com pilha Não-Determinístico (APND-II)

com duas pilhas auxiliares

||

Máquina de Turing Determinística (MTD)

||

Máquina de Turing Não-Determinística (MTND)

||

Máquina de Turing Probabilística (MTP)

||

Máquina de Turing multifita (MTMF)

||

Máquina de Turing multidimensional (MTMD)

Aplicações[editar | editar código-fonte]

Cada modelo em teoria dos autômatos desempenha papéis importantes em muitas áreas aplicadas. Autômatos finitos são usados em processamento de texto, compiladores e projeto de hardware. Gramáticas livres de contexto (GLCs) são usadas em linguagens de programação e inteligência artificial. Originalmente, GLCs eram usadas no estudo de linguagens humanas. Autômatos celulares são usados no campo da biologia, o exemplo mais comum é o de Jogo da Vida de John Conway. Outros exemplos que podiam ser explicados usando teoria dos autômatos em biologia incluem crescimento de pinhas e molusco e padrões de pigmentação. Indo mais longe, uma teoria que sugere que todo o universo é computado por algum tipo de autômato discreto é defendida por cientistas. A idéia vem do trabalho de Konrad Zuse, e foi popularizada na América por Edward Fredkin.

Simuladores de autômatos[editar | editar código-fonte]

Simuladores de autômatos são ferramentas pedagógicas usadas para ensinar, aprender e pesquisar teoria dos autômatos. Um simulador de autômato tem como entrada a descrição de um autômato e então simula seu funcionamento para uma string arbitrária como entrada. A descrição do autômato pode ser inserida de várias formas. Um autômato pode ser definido por uma linguagem simbólica ou sua especificação pode ser inserida em uma forma predefinida ou seu diagrama de transição pode ser projetado no clicar e arrastar do mouse. Simuladores de autômatos bem conhecidos incluem Turing’s World, JFLAP, VAS, TAGS e SimStudio.[1]

Conexão com a teoria das categorias[editar | editar código-fonte]

Pode-se definir muitas categorias diferentes de autômatos[2] seguindo a classificação de autômatos em diferentes tipos, descrita na seção anterior. A categoria matemática dos autômatos determinísticos, máquinas sequenciais ou autômatos sequenciais, e máquinas de Turing com homomorfismos de autômatos, que define as setas entre autômatos é uma categoria fechada cartesiana,[3][4] que tem ambos, co-limites e limites categóricos. Um homomorfismo de autômato mapeia uma 5-tupla de um autômato Ai em uma 5-tupla de outro autômato Aj.[5] Homomorfismo de autômatos também pode ser considerado como transformações de autômatos ou homomorfismos semigrupo, quando o espaço do estado, S, do autômato é definido como um semigrupo Sg. Monoides são também considerados como um ambiente propício para autômatos em categorias monoides.[6][7][8]

Categorias de autômatos variáveis

Pode-se também definir um autômato variável, no sentido de Norbert Wiener em seu livro “Human Use of Human Beings” pelos endomorfismos Ai-->Ai. Então, pode-se mostrar que estes homomorfismos de autômatos variáveis formam um grupo matemático. No caso do não-determinístico, ou outros tipos complexos de autômatos, o último conjunto de endomorfismo pode tornar-se, contudo, um grupóide de autômato variável. Portanto, no caso mais geral, categorias de autômatos variáveis de qualquer tipo são categorias de grupóides ou categorias grupóides. Além disso, a categoria de autômatos reversíveis é então uma 2-categoria, e também uma subcategoria da 2-categoria de grupóides, ou a categoria grupóide.

Referências[editar | editar código-fonte]

John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman – Introdução à Teoria de Autômatos, Linguagens e Computação (2ª Edição).

  1. Chakraborty, P., Saxena, P. C., Katti, C. P. 2011. Fifty Years of Automata Simulation: A Review. ACM Inroads, 2(4):59–70. http://dl.acm.org/citation.cfm?id=2038893&dl=ACM&coll=DL&CFID=65021406&CFTOKEN=86634854
  2. Jirí Adámek and Vera Trnková. 1990. Automata and Algebras in Categories. Kluwer Academic Publishers:Dordrecht and Prague
  3. S. Mac Lane, Categories for the Working Mathematician, Springer, New York (1971)
  4. http://planetmath.org/encyclopedia/CartesianClosedCategory.html Cartesian closed category
  5. http://planetmath.org/encyclopedia/SequentialMachine3.html The Category of Automata
  6. http://www.csee.wvu.edu/~jworthing/asl2010.pdf James Worthington.2010.Determinizing, Forgetting, and Automata in Monoidal Categories. ASL North American Annual Meeting,March 17, 2010
  7. Aguiar, M. and Mahajan, S.2010. "Monoidal Functors, Species, and Hopf Algebras".
  8. Meseguer, J., Montanari, U.: 1990 Petri nets are monoids. Information and Computation 88:105–155
Teoria de autômatos: linguagem formal e gramática formal
Hierarquia
Chomsky
Gramática Linguagem Reconhecedor
Tipo-0 Irrestrita Recursivamente enumerável Máquina de Turing
-- -- Recursiva Máquina de Turing que sempre para
Tipo-1 Sensível ao contexto Sensível ao contexto Autômato linearmente limitado
Tipo-2 Livre de contexto Livre de contexto Autômato com pilha
Tipo-3 Regular Regular Autômato finito


Softwares[editar | editar código-fonte]

  • SCTMF - Software para Criação e Teste de Modelos Formais.
  • JFlap - Software americano para testes com interface gráfica.
  • Auger - Ambiente para construção e simulação de autômatos finitos.
  • Simulador de Automatos - O Simulador de Autômatos é uma ferramenta para a criação, simulação e conversão de modelos formais, desenvolvida com o objetivo de auxiliar o aprendizado de Linguagens Formais e Autômatos.