Autómatos Finitos Determinísticos (AFD)

Documentos relacionados
Conceitos básicos de Teoria da Computação

Autómatos de Pilha e Linguagens Livres de Contexto

Lista de exercícios 1

Folha 2 Autómatos e respectivas linguagens

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

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

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

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

Fundamentos da Teoria da Computação

Fundamentos da Teoria da Computação

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

Linguagens Regulares. Prof. Daniel Oliveira

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

SCC 205 Teoria da Computação e Linguagens Formais

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

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de 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

Expressões Regulares e Gramáticas Regulares

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

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

a n Sistemas de Estados Finitos AF Determinísticos

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

Autómatos Finitos Determinísticos

Fundamentos da Teoria da Computação

Linguagens e Programação Automátos Finitos. Paulo Proença

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

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

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

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

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

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

Aula 7: Autômatos com Pilha

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

Autômatos finitos não-determinísticos

Linguagens Formais e Problemas de Decisão

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

Autômatos Finitos Determinís3cos (AFD)

Folha 3 - Análise léxica

a * Minimização de AFD AFD equivalente, com o menor número de estados possível

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

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

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

Linguagens Formais - Preliminares

Autômatos Finitos e Não-determinismo

BCC242. Auômato Finito Determinístico

Teoria da Computação Gramáticas, Linguagens Algébricas e Autómatos de Pilha

INCLUSÃO DO ALGORITMO DE TRANSFORMAÇÃO DE UM AUTÔMATO FINITO EM EXPRESSÃO REGULAR NO AMBIENTE EDITOR DE AUTÔMATOS FINITOS

Teoria da Computação

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

LFA Aula 08. Minimização de AFD Autômatos Finitos com saídas 25/01/2017. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Como construir um compilador utilizando ferramentas Java

Responda às questões abaixo: 1 a Questão: Indique todos casos de não determinismo do AFN acima

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

Universidade Federal do Rio de Janeiro Departamento de Ciência da Computação

Conversão de Autômatos Finitos Não Determinísticos (AFND) para Autômatos Finitos Determinísticos (AFD)

Modelos de Computação

Linguagens Regulares, Operações Regulares

Teoria da Computação Linguagens e Expressões Regulares, Autómatos de Estados Finitos

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

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

LR's: Lema do Bombeamento e Propriedades de Fechamento

Apostila 03 - Linguagens Livres de Contexto Exercícios

Linguagens Formais e Autômatos

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

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

Alfabeto, Cadeias, Operações e Linguagens

Lista de Exercícios CT-200 Primeiro Bimestre Carlos Henrique Quartucci Forster Estagiário: Wesley Telles. Revisão de Teoria de Conjuntos

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io

Terceira Lista de Exercícios 2004/2...

Algoritmo de Minimização de AFD

a * Expressões Regulares (ER) Conversão de AF para ER no JFLAP Equivalências entre AFD, AFND, AF-, ER, GR

SCC-ICMC-USP. Trabalho em Grupo 1 SCC-0205

AF Não-determinísticos Equivalência entre AFND e AFD AFs e GRs Implementação de AFs

Autômatos com Pilha: Reconhecedores de LLCs

Linguagens Livres de Contexto

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

Número: Nome: 1. (3.0 val.) Considere um analisador lexical contendo a sequência ordenada de

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

Transcrição:

Folha Prática Autómatos Finitos 1 Autómatos Finitos Determinísticos (AFD) 1. Determine e implemente computacionalmente um AFD que aceita todas as cadeias de cada uma das seguintes linguagens sobre o alfabeto Σ = { 0, 1 }: a) Conjunto de cadeias que terminam por 00 b) Conjunto de cadeias com exatamente um 1 c) Conjunto de cadeias com pelo menos um 1 d) Conjunto de cadeias sem qualquer 1 e) Conjunto de cadeias com um número ímpar de 1 s f) Conjunto de cadeias que possuem uma subcadeia formada por três 0's g) Conjunto de cadeias em que todas as posições ímpares têm um 1 h) Conjunto de cadeias com pelo menos três símbolos, sendo que o terceiro é um 0 i) Conjunto de cadeias em que todas as subcadeias de cinco símbolos têm, pelo menos, um 0 2. Considere o alfabeto de entrada Σ = { 0, 1 }. a) Determine um AFD que aceite a linguagem formada pelo conjunto de cadeias que possuem a subcadeia 1001 e terminam com 0 b) Implemente computacionalmente este AFD c) Verifique se a cadeia 1010011010 é aceite pelo AFD. Justifique através da apresentação da sequência de estados atingidos e certifique-se através da implementação elaborada. 3. Considere o alfabeto S = { F, T }. a) Determine um AFD que aceite a linguagem, sobre S, formada por todas as cadeias que se iniciam com a subcadeia TFFT, depois do sexto símbolo (inclusive) contenham a subcadeia TTF e terminem com o símbolo F b) Implemente computacionalmente este AFD c) Verifique se a cadeia TFFTFTTFTF é aceite pelo AFD construído em a). Justifique apresentando a sequência de estados atingidos e certifique-se com a implementação. 4. Considere o alfabeto S = { 0, 1, 2 }. a) Determine um AFD que aceite a linguagem, sobre S, formada por todas as cadeias que se iniciam com a subcadeia 012, contenham a subcadeia 21021 e terminem com 1 b) Implemente computacionalmente este AFD c) Verifique se das cadeias seguintes são aceites pelo AFD construído em a) (apresente a sequência de estados atingidos por cada uma das cadeias): i) 012021021021 ii) 0121021

Folha Prática Autómatos Finitos 2 5. Determine implemente computacionalmente um AFD que aceite todas as cadeias de cada uma das seguintes linguagens sobre o alfabeto S = { 0, 1 }: a) Todas as cadeias são da forma w 1 01w 2, com w 1 e w 2 { 0, 1 }* b) Todas as cadeias têm o símbolo inicial e final diferentes c) Todas as cadeias são da forma vwv, com v = 2 e v, w { 0, 1 }* d) Todas as cadeias que, quando interpretadas como um número binário, resultam num número x > 0, tal que x mod 5 = 0 (x é múltiplo de 5) e) Todas as cadeias têm pelo menos dois 1's consecutivos mas não dois 0's consecutivos 6. Determine e implemente computacionalmente um AFD que aceite todas as cadeias de cada uma das seguintes linguagens do alfabeto S = { 0, 1 }. Indique uma propriedade que caraterize as cadeias aceites pelo autómato. a) { 0 }* b) { 0 }* { 1 }* c) { 0 }* { 1 }* d) { 01, 00 } { 0, 1 }* e) { 0, 1 }* { 101, 111 } f) { 0, 1 }* { 11, 00 } { 0, 1 }* g) { 0, 1 }* \ { 0 }* h) { 000, 1 }* { 00, 1 }* 7. Determine e implemente computacionalmente um AFD que aceite as cadeias de cada uma das seguintes linguagens sobre o alfabeto S = { a, b }: a) { x : x termina em b mas não em bb } b) { x : x tem comprimento maior ou igual a três } c) { x : x tem comprimento inferior a três } d) { x : x não tem três b's consecutivos } e) { x : o número de b's em x é múltiplo de quatro } f) { x : o número de b's consecutivos em x não excede três e x não tem a's consecutivos } g) { x : x tem prefixo bbaab } h) { x : x não tem sufixo aab } i) { x : x tem aab e baa como subcadeias } 8. Usando AFD's, implemente programas que leia as palavras contidas no ficheiro TheoryComputation.txt e mostre no monitor: a) as palavras que contêm a subpalavra at b) as palavras que se iniciam por a e terminam por e c) as palavras que contêm a subpalavra at, mas que não se iniciem por at ou não terminem por at

Folha Prática Autómatos Finitos 3 d) as palavras que contêm a subpalavra at, mas que não se iniciam por t nem terminem por k e) as palavras que se iniciam e terminam por uma vogal f) as palavras que contêm a letra a numa posição par da palavra. 9. Usando um AF implemente um programa que verifique se uma dada expressão matemática contendo apenas símbolos de alfabeto S = { a, +, -, *, / } está no formato normal (ex: a + 3 * 5). 10. Descreva informalmente a linguagem sobre o alfabeto S = { a, b } que é aceite por cada um dos seguintes AFD's. Implemente computacionalmente cada um deles. a) b) c) d) e) f)

Folha Prática Autómatos Finitos 4 11. Determine a linguagem aceite por cada um dos seguintes AFD e indique características (simples) de cada linguagem determinada. Implemente computacionalmente cada um deles. a) b) c) 12. Implemente no JFLAP os seguintes autómatos e caracterize a linguagem por eles aceites. Pode usar as diferentes funcionalidades do JFLAP para o ajudar na tarefa. a) b)

Folha Prática Autómatos Finitos 5 13. Considere um alfabeto de entrada Σ = { 0, 1 }. Implemente no JFLAP um AFD que aceite todas as cadeias de S* que não contêm sequências de 0's ou 1's de comprimento inferior a 3. 14. Implemente no JFLAP um AFD que aceite a linguagem composta por todas as cadeias sobre o alfabeto Σ = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } tais que a soma dos símbolos (algarismos) da cadeia é divisível por 7 (por exemplo λ, 7, 07, 86, 16). 15. Implemente no JFLAP um autómato finito determinista que aceite a cadeia TELA com tolerância de um símbolo (isto é, também aceita as cadeias *ELA, T*LA, TE*A, TEL*, em que * significa dizer qualquer símbolo do alfabeto Σ = { A, B,..., Z }). Sugestão: Para evitar trabalho repetitivo, poderá considerar um alfabeto mais reduzido. 16. Seja L uma linguagem num alfabeto Σ e seja a um símbolo do alfabeto. O quociente L/a de L por 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? 17. Pode-se chamar AFD incompleto a um AF em que: - não há transições-λ - a função δ(q, a) contém no máximo um elemento e, portanto, não há escolhas possíveis (δ não é necessariamente uma função total). Considere o AFD incompleto dado na figura que se segue. Transforme este AF num AFD normal quando os alfabetos de entrada são os seguintes: a) S = { a, b } b) S = { a, b, c }

Folha Prática Autómatos Finitos 6 Autómatos Finitos Não Determinísticos (AFND) 18. Determine um AFND sobre o alfabeto Σ = { 0, 1 }, que aceite a seguinte linguagem: Conjunto de cadeias que contém uma subcadeia com dois 1 s, seguida de uma outra subcadeia com dois 0 s (exemplos: 10110001 e 1100). 19. Determine um AFND que aceite cada uma das seguintes linguagens sobre o alfabeto Σ = { a, b }: a) L = { abbab n : n 1 } { aba n b : n 0 } b) L = { abbab n : n 0 } { bba n : n 0 } 20. Seja L a linguagem sobre o alfabeto Σ = { a, b } aceite pelo seguinte AF: Determine um AFND que aceite a seguinte linguagem sobre o alfabeto Σ = { a, b }: L { a 2n 1, n > 0 } 21. Converter num AFD e implemente-o computacionalmente o seguinte AFND sobre S = { 0, 1 }: 22. Converter num AFD e implemente-o computacionalmente, o seguinte AFND sobre S = { a, b }: 23. Determine um AFD equivalente ao AFND sobre o alfabeto Σ = { 0, 1 } que aceita a seguinte linguagem (problema 1) e implemente-o computacionalmente: Conjunto de cadeias que contém uma subcadeia com dois 1 s, seguida de uma outra subcadeia com dois 0 s (exemplos: 10110001 e 1100).

Folha Prática Autómatos Finitos 7 24. Considere o seguinte AFND: a) Qual a linguagem que aceita este AFND? b) Determine um AFD equivalente e implemente-o computacionalmente. 25. Determine um AFND que aceite a seguinte linguagem sobre o alfabeto S = { a, b }: Conjunto de todas as cadeias de S* que contêm pelo menos um par de a s separados por uma subcadeia de comprimento múltiplo de 3 (exemplo: abbababbababb). 26. Determine um AFND sobre o alfabeto S = { a, b } que aceite cada uma das seguintes linguagens: a) L = L(a*b*c*) b) L = { a n b m c p, n, m, p 0 } c) L = { a n b n c n, n 0 } 27. Determine um AFD equivalente ao AFND sobre o alfabeto Σ = { a, b } que aceita a seguinte linguagem (problema 10.a)) e implemente-o computacionalmente: L = L(a*b*c*) 28. Seja M = (Q, S, d, q 0, F) um AFND, em que Q = { q 0, q 1, q 2, q 3, q 4 }; S = { a, b }; F = { q 3, q 4 } d é a função de transição definida de Q x S Q da seguinte forma: d(q 0, a) = { q 1 } d(q 2, a) = { } d(q 4, a) = { q 1, q 3 } d(q 0, b) = { q 2 } d(q 2, b) = { q 4 } d(q 4, b) = { q 4 } d(q 1, a) = { q 1, q 2 } d(q 3, a) = { q 3 } d(q 1, b) = { q 2, q 3 } d(q 3, b) = { } a) Represente o diagrama de transição de estados do AFND dado b) Prove que: i) qualquer cadeia de L(a(abba)*ba + aa*b) pertence a L(M) ii) existem cadeias de L(M) que não pertencem a L(a(abba)*ba + aa*b) iii) nenhuma cadeia que comece por ba pertence a L(M) c) Determine o estado em que o autómato M fica após consumir as seguintes cadeias: i) baaaba ii) baab iii) baaabaaab iv) bbbaab d) Aplicando o método para transformação de um AFND num AFD equivalente, determine um AFD equivalente a M e implemente-o computacionalmente.

Folha Prática Autómatos Finitos 8 29. Determine um AFD representado por um quíntuplo (Q, S, d, q 0, F), indicando o conjunto de transições d(q, a) para cada par (q, a) Q x S, sabendo que S = { 0, 1, 2 }, para cada um dos seguintes autómatos e implemente-o computacionalmente: a) c) b) d) 30. Por aplicação de métodos de transformação, determine um AFD que aceite a linguagem S*\L(A (i.e., a complementar de L(A)) para cada um dos autómatos A indicados no problema anterior.