![]() |
|
Relembrando conceitos básicos sobre autômatos finitos |
|
![]() |
Por Izabela Vanessa de Almeida Melo(izabela@dsc.ufcg.edu.br) |
|
Recapitular é recordar, relembrar. Nesta nova matéria do PETNews, intitulada “Recapitulando”, você vai rever assuntos já estudados em sua graduação com o intuito de não permitir que você seja traído por sua memória em momentos como o POSCOMP, por exemplo. Nesta primeira edição, vamos recordar conceitos básicos sobre autômatos finitos, assunto visto no início da disciplina “Teoria da Computação” (disciplina do terceiro período) do Departamento de Sistemas e Computação (DSC) da UFCG. |
|
Você já parou para pensar em como funcionam as portas que abrem e fecham automaticamente? E as lavadoras de louça/roupa, termômetros eletrônicos, relógios digitais, calculadoras e máquinas de venda automática? Todos esses dispositivos eletromecânicos têm uma controladora que nada mais é do que um autômato finito. Além desses dispositivos (controladores), os autômatos finitos também são importantes para reconhecer padrões em dados, como, por exemplo, na análise léxica de um compilador; projetar uma nova linguagem para uma aplicação específica (desenvolvendo seu compilador); processamento de voz; etc. Um autômato finito é o modelo computacional mais simples e pode ser chamado, também, de máquina de estados finitos. Eles são bons modelos para computadores com uma quantidade de memória extremamente limitada (como é o caso dos dispositivos citados acima). Tomando como exemplo a porta automática (presente em supermercados, shoppings, etc.), podemos observar na Figura 1 que existe um tapete na frente da porta e outro tapete atrás. Ambos detectam a presença de pessoas prestes a atravessar a passagem, abrindo a porta quando alguém se aproxima e mantendo-a aberta até que a pessoa se afaste.
![]() Figura 1 - Visão superior de uma porta automática [1].
O controlador pode estar em dois estados (aberto ou fechado) e passa de um estado para outro dependendo do estímulo (entrada) que recebe. Nesse caso, tem-se 4 estímulos diferentes: frente (uma pessoa está no tapete da frente); retaguarda (uma pessoa está no tapete de dentro); ambos (há pessoas sobre os dois tapetes) e nenhum (não há ninguém sobre os tapetes). Para cada estímulo, o controlador vai responder de uma forma diferente, realizando as transições de um estado para outro. A representação das possíveis transições de acordo com cada estímulo (chamamos essa representação de diagrama de estados) é apresentada na Figura 2.
![]() Figura 2 - Diagrama de estados do controlador da porta automática. [1]
Com o controlador ligado, ao receber a sequência de estímulos frente; retaguarda; nenhum; frente; ambos, tem-se as seguintes transições: fechado (início) -> aberto; aberto -> aberto; aberto -> fechado; fechado -> aberto; aberto -> aberto. Definindo formalmente, um autômato finito é uma quíntupla < Q, ∑, δ, q0, F >, em que:
Tomando como exemplo o autômato finito M1 = (Q, ∑, δ, q1, F), representado na Figura 3, e definindo-o formalmente, tem-se:
![]()
![]() Figura 3 - Autômato finito M1. [1]
Sabendo que A = ∑* é o conjunto de palavras (cadeias) que o autômato (máquina) M aceita, pode-se estender a função de transição d para δ': Q' x ∑* → Q, em que δ'(q, l) = q; δ'(q, a) = δ(q, a); δ'(q, wa) = δ(δ'(q, w), a). Ou seja, se a função δ'
![]() Estendendo a função de transição do autômato, é possível reconhecer uma linguagem (no exemplo acima, denominada a linguagem A). Quando uma linguagem A é reconhecida por um autômato M, diz-se que A é linguagem da máquina M e pode ser representada por L(M) = A. No exemplo da Figura 3, o autômato M1 reconhece a linguagem A = {w|w contém pelo menos um 1 e um número par de 0s segue o último 1}. Considerando um autômato finito M = < Q, ∑, δ, q0, F > e w ∈ ∑*, ou seja, w uma cadeia pertencente à linguagem da máquina, chama-se de computação de M a partir de w uma sequência c0, c1, ..., cn , em que:
Exemplificando com o autômato M1 (Figura 3), ao realizar a computação de M1 a partir da cadeia 001, tem-se:
![]() Diz-se que um autômato M aceita uma cadeia w se e somente se existe uma sequência de estados r0, r1, ... , rn tal que:
Ou seja, M aceita w se e somente se a computação de M para a entrada w termina em um estado final, ou seja, δ'(q0, w) ∈ F. O conjunto de todas as palavras aceitas por M é chamada de linguagem de M, representada por L(M) = {w ∈ ∑* : δ’(q0, w ) ∈ F}. Uma linguagem reconhecida por um autômato finito é chamada de linguagem regular. Para exercitar os conceitos vistos neste recapitulando, tente resolver as questões que seguem. Em caso de dúvidas, envie um email para o autor desta matéria.
Participe do “Recapitulando” enviando-nos sugestões de assuntos que você deseja rever. Fontes: [1] SIPSER, Michael. Introdução à Teoria da Computação. 2ª edição. Editora Thomson, 2007. [2] Slides do Prof. Bernardo Lula Júnior da disciplina Teoria da Computação do período 2005.1. [3] Lista de exercícios do período 2009.2 aqui. |