Ficha 2 Autómatos Finitos Determinísticos 2.1 Introdução Se olharmos, de forma simplificada, para um computador encontramos três componentes principais: a) A unidade de processamento central b) As unidades de entrada e saída c) A memória Um Autómato Finito (AF) não é mais do que um computador amputado de algumas partes: a memória e a unidade de saída 1 (ver figura 2.1. Apesar destas limitações os AF permitem resolver problemas importantes, seja no campo das linguagens de programação seja como modelos de processos. Esta folha destina-se a exercitar alguns aspectos dos AFs. Antes de passarmos aos exercícios alguns aspectos importantes que deve ter em conta. a) A definição de Autómato Finito Determinista dada supõe que a função de transição δ é total. Isso significa, entre outras coisas que para todos os estados do autómato e para todos os símbolos do alfabeto de entrada existe uma (e só uma) transição para outro 2 estado; 1 Existem máquinas que produzem saída, os transdutores, como teremos ocasião de ver. 2 Eventualmente o mesmo. 2
Figura 2.1: Autómato Finito como Máquina de Estados b) Como método de construção de um AF, nem sempre é importante considerar desde logo a obrigatoriedade acima referida. Muitas vezes o problema resolve-se nos seus aspectos essenciais deixando alguns estados sem transição para algumas entradas. Essas transições acrescentam-se depois e vão para o mesmo estado único denominado estado ratoeira (trap state). c) A função de transição estendida, δ, materializa a ideia da dinâmica do autómato. 3 d) Não possuindo memória, será possível resolver problemas que envolvam essa característica? Nalguns casos sim! A memória pode estar associada ao estado ou ainda a determinados caminhos envolvendo estados e transições. e) Nalguns problemas, é mais simples desenhar o autómato que reconhece a linguagem complementar e, depois, transformar os estados finais em não finais e vice-versa. f) As linguagens associadas aos autómatos finitos dizem-se regulares. g) Em problemas do tipo Desenhe um autómato que reconheça a linguagem sobre o alfabeto Σ={a 1,a 2,...,a n } cujas palavras têmaca- 3 Esta mesma ideia pode ser capturada através de uma relação binária envolvendo configurações. Uma configuração é um par (estado,palavra). A dinâmica é neste caso dada pelo fecho reflexivo e transitivo da relação binária. 3
racterística x..., o método usual é começar por desenhar a parte do autómato que satisfaz a característica x e depois preocuparmo-nos como o facto de todas as transições terem que estar definidas. h) Um AF pode ser representado por um grafo de transição (também chamado de diagrama de estados) ou por uma tabela de transição. 2.2 Os autómatos finitos como modelos Problema 1 Imagine uma porta automática com duas zonas de sensores (entrada, saída)(ver figura 2.2). Figura 2.2: Porta Automática Modele por meio de um autómato finito o funcionamento da porta automática. Sugestão: comece por identificar as situações possíveis, e os estados do seu autómato. Problema 2 Acontece com frequência a necessidade de determinar a presença de determinado padrão. Suponha que um autómato deve ler uma sequência binária e determinar quais as sequências que contêm um número ímpar de 1 s 4. Como implementaria o seu autómato? 2.3 O método Problema 3 Admita um alfabeto de entrada Σ = {0, 1}. Desenhe um autómato finito determinista sobre este alfabeto, que aceite todas as palavras: a) Com exactamente um 1; 4 Trata-se de um exemplo simples de um detector de paridade ímpar 4
b) Com pelo menos um 1; c) Sem qualquer 1; d) Em que todas as posições ímpares têm um 1; e) Que começam porum1eterminam com um 0; f) Com pelo menos três símbolos, sendo que o terceiro é zero; g) Que não contêm a sequência 110; 2.4 A memória Problema 4 Admita um alfabeto de entrada Σ = {0, 1}. Desenhe um autómato sobre este alfabeto, que aceita a linguagem em que todas as palavras: a) São da forma w 1 01w 2, com w 1 e w 2 {0, 1} ; b) Têm o símbolo inicial e final diferentes; c) Todas as palavras são da forma vwv, com v =2 e v, w {0, 1} ; d) (difícil) Todas as palavras que, quando interpretadas como um número binário, resultam num número x>0, tal que x mod 5 = 0. e) Têm pelo menos dois 1s consecutivos mas não contêm dois 0s consecutivos. f) Que contenha a sequência 0101 2.5 Autómatos e Linguagens Problema 5 Defina, usando a notação de conjuntos, a linguagem aceite pelos autómatos da figura 2.3. Para além disso proponha uma caracterização verbal, simples, dessa linguagem. Problema 6 Seja L uma linguagem num alfabeto Σ e seja a um símbolo do alfabeto. O quociente O quociente L/a de L por a, é a linguagem composta por todas as cadeias w de Σ tais que wa L. Por exemplo, para Σ = {0, 1}, L = {0, 01, 10, 001, 100} e a =0,L/a = {λ, 1, 10}. Dado um autómato finito determinista que aceita L, como se poderá obter um para L/a? 5
Exemplo 1 Exemplo 2 Figura 2.3: Autómatos Finitos Deterministas 2.6 JFLAP: Uma ferramenta simples Problema 7 Implemente no JFLAP os seguintes autómatos e caracterize a linguagem por eles aceite. Pode usar as diferentes funcionalidades do JFLAP para o ajudar na tarefa. Autómato 1 Autómato 2 Figura 2.4: Autómatos Finitos Deterministas Problema 8 Admita um alfabeto de entrada Σ = {0, 1}. Implemente no 6
JFLAP um autómato finito determinista que aceite todas as palavras que não contêm sequências de 0s ou 1s de comprimento inferior a 3. Problema 9 (Moroso) Implemente no JFLAP um autómato finito determinista que aceite a linguagem de composta por todas as palavras em Σ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} tais que a soma dos algarismos da palavra é divisível por 7 (por exemplo λ, 7, 07, 86, 16). Problema 10 Implemente no JFLAP um autómato finito determinista que aceite a palavra TELA com tolerância de um carácter (isto é, também aceita as palavras *ELA, T*LA, TE*A, TEL*, em que * quer dizer qualquer carácter do alfabeto Σ = {a, b,..., z}). Sugestão: Para evitar trabalho repetitivo, poderá considerar um alfabeto mais reduzido. 7