Aula 3: Autômatos Finitos

Documentos relacionados
Aula 3: Autômatos Finitos

Aula 7: Autômatos com Pilha

BCC242. Auômato Finito Determinístico

Aula 9: Máquinas de Turing

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos

LINGUAGENS FORMAIS E AUTÔMATOS

Teoria da Computação

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 3. Autômatos Finitos

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Autômatos de Pilha (AP)

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

AFNs, Operações Regulares e Expressões Regulares

a n Sistemas de Estados Finitos AF Determinísticos

Autômatos Finitos Determinís3cos (AFD)

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Fundamentos da Teoria da Computação

Autômato com pilha. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz

Capítulo 2: Máquinas de Estados Finitos. Modelagem do problema. Quebra-cabeças. Newton José Vieira, Isabel Gomes Barbosa. 19 de agosto de 2010

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Máquinas de Turing (MT)

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

Como construir um compilador utilizando ferramentas Java

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Autômatos Finitos Não Determinís5cos (AFN)

Aula 10: Decidibilidade

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Autômatos finitos não-determinísticos

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

Sistemas de Estados Finitos AF Determinísticos. (H&U, 1979) e (H;M;U, 2001)

Afirmações Matemáticas

Aulas 10 e 11 / 18 e 20 de abril

Aula 10: Tratabilidade

Modelos de Computação Folha de trabalho n. 10

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Expressões Regulares. Linguagens Formais e Autômatos. Andrei Rimsa Álvares

Autômatos Finitos e Não-determinismo

Teoria dos Conjuntos. Matemática Discreta. Teoria dos Conjuntos - Parte I. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG.

Aula 10: Decidibilidade

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

Fundamentos da Teoria da Computação

Matemática Discreta. Aula 06: Teoria dos Grafos. Tópico 01: Grafos e suas Representações. Observação

Linguagens Formais e Autômatos

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Linguagens Livres de Contexto

Linguagens Formais e Problemas de Decisão

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Teoria da Computação

Teoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos

PCC104 - Projeto e Análise de Algoritmos

Linguagens recursivamente enumeráveis

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136

Linguagens Livres do Contexto. Adaptado de H. Brandão

INE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Linguaguens recursivamente enumeráveis e recursivas

Máquinas de Turing 3

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

AF Não-determinísticos Equivalência entre AFND e AFD

Linguagens Formais e Autômatos P. Blauth Menezes

Máquina de Turing. Controle finito

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

a n Autômatos com Pilha: Definição Informal e Definição Formal Linguagem Aceita por um ACP ACPDet X ACPND Notação gráfica para ACP

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real.

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação

Lista de exercícios 1

Autómatos Finitos Determinísticos (AFD)

Marcos Castilho. DInf/UFPR. 5 de abril de 2018

Linguagens e Autômatos

Propriedades de Fecho de Linguagens Regulares.

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Transcrição:

Teoria da Computação Segundo Semestre, 24 Aula 3: Autômatos Finitos DAINF-UTFPR Prof. Ricardo Dutra da Silva Um procedimento ue determina se uma string de entrada pertence à uma linguagem é um reconhecedor desta linguagem. Vamos definir uma classe de máuinas ue determinam se uma string deve ser aceita ou não. A entrada de uma máuina será uma string sobre um alfabeto e a saída da computação seu aceite (reconhecimento) ou não dentro de uma linguagem. Em uma máuina bastante simples para venda de café, a entrada consiste em uma seuência de moedas de 5, e 25 centavos. Quando 3 centavos ou mais são inseridos, a máuina chega ao estado de aceite e o café é entregue. Se mais de 3 centavos são inseridos na máuina ela aceita de bom grado e não retorna troco. A máuina tem conhecimento de uanto dinheiro foi inserido. Esse conhecimento é obtido através dos estados internos da máuina. Quando uma entrada é recebida e processada, a máuina atualiza o conhecimento, possivelmente, mudando de estado. Cada estado da máuina representa um determinado estado da computação. Na nossa máuina teríamos 7 estados representado uantos centavos faltam para ue o café possa ser entregue. Cada estado, portanto, representaria uma das seguintes informações: ˆ faltam 3 centavos para o café ser entregue; ˆ faltam 25 centavos para o café ser entregue; ˆ faltam 2 centavos para o café ser entregue; ˆ faltam 5 centavos para o café ser entregue; ˆ faltam centavos para o café ser entregue; ˆ faltam 5 centavos para o café ser entregue; ˆ faltam centavos para o café ser entregue.

2 Aula 3: Autômatos Finitos Uma diagrama de estados é comumente usado para representar os estados e as transições de uma máuina. O diagrama é um grafo em ue cada nó representa um dos estados. As arestas do grafo, rotuladas, representam a entrada processada e ual a transição entre estados ue ela produz. O diagrama de estados para a máuina de café é mostrado na Figura 3.. 5 5 5 5 5 5 start 3 25 2 5 5 5,, Figura 3.: Máuina de estados para uma máuina de vender café. O estado faltam 3 centavos é chamado de estado inicial. O estado inicial deve ser diferenciado no diagrama. Usaremos para esse propósito uma seta rotulada start (ver Figura 3.). O estado faltam centavos é chamado de estado final, indicando ue a entrada fornecida para a máuina foi aceita, ou seja, ue a seuência de moedas fornecida compra um café. O estado final, ou estado de aceite, será indicado no diagrama por duas circunferências (ver Figura 3.). A máuina de café aceita moedas de 5, e 25 centavos. Seu alfabeto é, portanto, Σ = { 5,, }. As entradas para a máuina são strings do conjunto Σ = { 5,, }. As strings aceitas são auelas ue terminam no estado final. Um autômato finito é uma máuina abstrata ue pode ser usada para determinar se strings fornecidas como entrada são aceitas. Cada símbolo da string é processado em seuência e o processamento determina as mudanças de estado ue ocorrem na máuina. Isso é feito percorrendo a aresta com rótulo igual ao do símbolo processado. A string 5 5 é aceita pela máuina de café, pois o caminho induzido pela string termina em um estado final. A Figura 3. mostra, em destaue, o caminho induzido pela string 5 5. A string 5 5 5 não é aceita pela máuina pois o caminho induzido pela string não

3.. AUTÔMATOS FINITOS DETERMINÍSTICOS 3 5 5 5 5 5 5 start 3 25 2 5 5 5,, Figura 3.2: Caminho induzido pela string 5 5 na máuina de estados da máuina de vender café. termina em um estado final (Figura 3.3). 5 5 5 5 5 5 start 3 25 2 5 5 5,, Figura 3.3: Caminho induzido pela string 5 5 5 na máuina de estados da máuina de vender café. Na seuência iremos formalizar as noções vistas nesta introdução. Com isso poderemos estudar, em máuinas abstratas, capacidades e limitações de computação. 3. Autômatos Finitos Determinísticos Definição 3.. Um autômato finito determinístico (DFA, do inglês Finite Deterministic Automata) é uma 5-tupla M = (Q, Σ, δ,, F ), onde

4 Aula 3: Autômatos Finitos ˆ Q é um conjunto finito de estados; ˆ Σ é o alfabeto; ˆ Q é o estado inicial; ˆ F é o subconjunto de estados finais de Q; ˆ δ é uma função δ : Q Σ Q, chamada de função de transição. Definição 3.2. O diagrama de estados de um DFA M = (Q, Σ, δ,, F ) é um grafo G, direcionado e rotulado, definido como: ˆ os vértices de G são os elementos de Q; ˆ os rótulos das arestas são elementos de Σ; ˆ é o estado inicial, indicado pela palavra start ; ˆ F é o subconjunto de nós finais, indicados por círculos concêntricos; ˆ existe um arco entre os nós i e j com o rótulo a se δ( i, a) = j ; ˆ para cada nodo i Q e símbolo a Σ há exatamente uma aresta rotulada como a partindo de i. Exemplo 3. Podemos descrever formalmente o autômato da máuina de café (Figura 3.) como uma 5-tupla M = (Q, Σ, δ,, F ), onde: ˆ Q = {3, 25, 2, 5,, 5, }; ˆ Σ = { 5,, }; ˆ = 3; ˆ F = {}; ˆ δ é a função de transição ue pode ser resumida pela tabela abaixo. Dado um estado i (linha l) e um símbolo a Σ (coluna c), a posição (l, c) da tabela contém

3.. AUTÔMATOS FINITOS DETERMINÍSTICOS 5 o estado j resultante da transição δ( i, a). Por exemplo, se i = 3 e a =, a posição respectiva da tabela corresponde à δ(3, ) = 2. δ 5 3 25 2 5 25 2 5 2 5 5 5 5 5 Exemplo 3.2 O diagrama de estados do DFA M = ({p,, r}, {, }, δ, p, {r}), com função de transição δ(p, ) = δ(p, ) = p δ(, ) = δ(, ) = r δ(r, ) = r δ(r, ) = r é dado abaixo., start p r Um automato pode ser visto como um máuina ue contém cinco componentes. ˆ Um registrador ue armazena o estado atual em ue a máuina se encontra. ˆ Um conjunto de estados para o registrador, ue é o conjunto de estados Q.

6 Aula 3: Autômatos Finitos ˆ Uma fita seccionada ue armazena seuencialmente, em posições contíguas, símbolos a Σ da string de entrada; ˆ Um leitor de fita ue lê o símbolo de uma secção da fita; ˆ Um conjunto de instruções, relacionado com a função de transição, ue informa a ação da máuina. Dado o estado i atual e o símbolo a Σ lido, a máuina redefine o estado do registrador para δ( i, a) e move o leitor uma posição à frente. O leitor é inicialmente posicionado na posição mais à esuerda da string na fita e o registrador começa com o estado inicial. A máuina então computada a transição de estado conforme a função δ. O processo é repetido até a cabeça de leitura encontrar uma posição vazia. Uma string é aceita pela máuina se a computação termina em um estado final. Exemplo 3.3 Dado o DFA M = ({p,, r}, {, }, δ, p, {r}), com δ(p, ) = δ(p, ) = p δ(, ) = δ(, ) = r δ(r, ) = r δ(r, ) = r e a string. A computação da máuina é mostrada abaixo. O processo termina em um estado final e a string é aceita.... p......

3.. AUTÔMATOS FINITOS DETERMINÍSTICOS 7... A string, por sua vez, não é aceita pela máuina, pois o processo termina em um estado ue não é final. r... p... p...... Pelo ue vimos no exemplo anterior, podemos definir strings ue são aceitas por um DFA. Definição 3.3. Seja M = (Q, Σ, δ,, F ) um DFA. Uma string w Σ é aceita se o processamento de w por M termina em um estado final. Uma DFA M aceita um conjunto de strings e esse conjunto define a linguagem de M. Definição 3.4. Seja M = (Q, Σ, δ,, F ) um DFA. A linguagem de M, denotada L(M), é o conjunto de strings em Σ aceitas por M. Exemplo 3.4 O DFA M = ({p, }, {, }, δ, p, {}), com função de transição δ p p p e diagrama de estados

8 Aula 3: Autômatos Finitos start p define a linguagem L(M) = {w w termina em } sobre o alfabeto Σ = {, }. Definição 3.5. A função de transição estendida ˆδ de um DFA com função de transição δ é uma função ˆδ : Q Σ Q definida recursivamente no tamanho da string de entrada: i) Base: Se w =, então w = λ e ˆδ( i, λ) = i. Se w =, então w = a, para a Σ, e ˆδ( i, a) = δ( i, a). ii) Passo recursivo: Se w é uma string de tamanho n >, então w = ua e ˆδ( i, ua) = δ(ˆδ( i, u), a). A função de transição estendida representa a aplicação repetida da função de transição. Exemplo 3.5 Seja DFA M = ({p, }, {, }, δ, p, {}), com função de transição δ p p p Dada a string, então a computação da string pode ser vista como

3.. AUTÔMATOS FINITOS DETERMINÍSTICOS 9 ˆδ(p, ) = δ(ˆδ(p, ), ) = δ(δ(ˆδ(p, ), ), ) = δ(δ(δ(ˆδ(p, ), ), ), ) = δ(δ(δ(δ(p, ), ), ), ) = δ(δ(δ(, ), ), ) = δ(δ(p, ), ) = δ(p, ) =. Dada a string, então a computação da string pode ser vista como ˆδ(p, ) = δ(ˆδ(p, ), ) = δ(δ(ˆδ(p, ), ), ) = δ(δ(δ(ˆδ(p, ), ), ), ) = δ(δ(δ(δ(p, ), ), ), ) = δ(δ(δ(p, ), ), ) = δ(δ(, ), ) = δ(, ) = p. i. A função de transição estendida ˆδ( i, w) computa ual o estado alcançado a partir de Podemos usar esse fato para definir (redefinir) as strings aceitas por um DFA (veja Definition 3.3) bem como a linguagem de uma DFA M (veja Definição 3.4). Definição 3.6. Seja M = (Q, Σ, δ,, F ) um DFA. Uma string w Σ é aceita se ˆδ(, w) F. Definição 3.7. Seja M = (Q, Σ, δ,, F ) um DFA. A linguagem de M é o conjunto

Aula 3: Autômatos Finitos L(M) = {w w Σ, ˆδ(, w) F }. Definição 3.8. Uma linguagem é chamada de linguagem regular se ela é aceita por um autômato finito determinístico. Exemplo 3.6 Vamos construir o autômato ue aceita L = {w w {, } e contém a substring }. Não existe um método para construir autômatos para uma linguagem. A tarefa é basicamente criativa. Uma dica é tentar simular o ue ocorre para cada entrada e tomar decisões sobre o ue o automato precisa lembrar. Para a linguagem L, o automato pode aceitar uma string se ele lembra ue processou dois s justapostos. Lembrar tal fato significa criar um estado como o significado foi lida a string. Tal estado deve ser um estado final. Mas antes de lembrar ue leu, o automato precisa saber ue leu o primeiro. Para isso basta um estado ue signifiue a lembrança acabei de ler um e se eu ler mais um eu posso aceitar a string. O estado inicial do autômato seria o estado ainda não li a substring. Poderíamos então definir tais estados: ˆ : nenhuma substring foi lida. ˆ : acabei de ler um, estou no meio do caminho. ˆ 2 : já li a string e portanto posso aceitar a string de entrada. Nosso diagrama de estados parcial seria start 2 Agora, para cada estado, precisamos saber ual transição realizar para cada um dos símbolos do alfabeto. Se estivermos no estado e lermos um, nada ajuda no reconhecimento de. Podemos simplesmente criar uma transição de para ele mesmo e continuar lendo a entrada. Se lermos um, no entanto, podemos mudar para o estado pois estamos no meio do caminho. start 2

3.. AUTÔMATOS FINITOS DETERMINÍSTICOS No estado, ler um significa ue não há mais possibilidade de ler. Portanto precisamos recomeçar, por exemplo, voltando ao estado inicial. Por outro lado, se lermos um significa ue acabamos de ler a seuência e podemos entrar o estado final 2. start 2 Ainda não terminamos, em um DFA todo estado possui transições para todos os símbolos do alfabeto. Aui basta criar transições de 2 para ele mesmo independentemente do símbolo do alfabeto. A string já foi aceita e tudo o ue precisamo e lê-la até o final., start 2 Formalmente, o DFA é descrito por M = ({,, 2 }, {, }, δ,, { 2 }), com função de transição δ 2 2 2 2 Exercício 3.. Dê a definição formal e o diagrama de estados para um DFA ue aceite strings w, sobre o alfabeto Σ = {, }, ue contêm um número ímpar de s. Exercício 3.2. Conforme a definição do autômato ue você produziu no exercício anterior, mostre a computação da função de transição estendida, como no Exemplo 3.5, para as strings dos itens abaixo. a). b).

2 Aula 3: Autômatos Finitos c). d). e) Quais dessas strings são aceitas? Como a função de transição estendida mostra isso? Exercício 3.3. Dê a definição formal e o diagrama de estados para um DFA ue aceite strings w, sobre o alfabeto Σ = {, }, ue contêm um número ímpar de s e um número par de s. Exercício 3.4. Dê a definição formal e o diagrama de estados para um DFA ue aceite strings w, sobre o alfabeto Σ = {, }, ue não contêm um número ímpar de s. Exercício 3.5. Construa o diagrama de estados para o autômato ue aceita strings sobre {a, b, c} ue não contém a string nula e cujos a s precedem os b s, ue por sua vez, precedem os c s. Exercício 3.6. {a, b} ue não iniciam com aaa. Exercício 3.7. Construa o diagrama de estados para o autômato ue aceita strings sobre Construa o diagrama de estados para o autômato ue aceita strings sobre {a, b} ue não contêm a substring aba. Exercício 3.8. Construa o diagrama de estados para o autômato ue aceita strings sobre {a, b} para as uais o número de a s é divisível por 3. Exercício 3.9. Analise os autômatos ue você definiu nos Exercícios 3. e 3.4. Você consegue perceber alguma relação entre os dois? Se sim, ual? Exercício 3.. A função de transição estendida ˆδ de um DFA com função de transição δ é uma função de Q Σ em Q definida recursivamente no tamanho da string de entrada. i) Base: Se w =, então w = λ e ˆδ( i, λ) = i. Se w =, então w = a, para a Σ, e ˆδ( i, a) = δ( i, a). ii) Passo recursivo: Se w é uma string de tamanho n >, então w = ua e ˆδ( i, ua) = δ(ˆδ( i, u), a). Podemos substituir o passo recursivo por:

3.. AUTÔMATOS FINITOS DETERMINÍSTICOS 3 ii) Passo recursivo: Se w é uma string de tamanho n >, então w = au e ˆδ ( i, au) = ˆδ (δ( i, a), u). Prove por indução ue ˆδ = ˆδ.