Exercícios Associados à Aula 02 (14/08/2013)

Documentos relacionados
Linguagens Formais e Autômatos (LFA)

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

Teoria da Computação Aula 02 Introdução

Linguagens Formais e Problemas de Decisão

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

Aulas 10 e 11 / 18 e 20 de abril

Linguagens Formais e Autômatos

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

Fundamentos da Teoria da Computação

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

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

Capítulo 1: Alfabetos, cadeias, linguagens

Alfabeto, Cadeias, Operações e Linguagens

Teoria da Computação

Expressões e Gramáticas Regulares e Autómatos Finitos

Notas sobre Definições Recursivas

Conceitos básicos de Teoria da Computação

Linguagens Formais - Preliminares

Aula de 28/10/2013. sticas; Implementação. em Ruby

Linguagens Formais e Autômatos P. Blauth Menezes

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

Prova 1 de INF1626 Linguagens Formais e Autômatos

LFA. Aula 04. Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem

Capítulo 2: Procedimentos e algoritmos

Aula 7: Autômatos com Pilha

IBM1088 Linguagens Formais e Teoria da

a n Sistemas de Estados Finitos AF Determinísticos

Linguagens Regulares, Operações Regulares

Matemática Discreta para Computação e Informática

Linguagens Formais e Autômatos P. Blauth Menezes

Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais

Problema A Codificação Símbolos Dado um inteiro n, n é N representação de inteiros 0,1,...,b - 1 numa base b Dado um grafo G, G é conexo?

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

Modelos de Computação

LINGUAGENS FORMAIS E AUTÔMATOS

Linguagens e Autômatos

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Introdução Definição Conceitos Básicos de Linguagem

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

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

Aula1 Noções de matemática Discreta Técnicas de Demonstração. Prof. Dr. Ricardo Luis de Azevedo da Rocha

Linguagens Formais e Autômatos (LFA)

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Fundamentos da Teoria da Computação

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

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

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

Linguagens Não-Regulares

Linguagem (formal) de alfabeto Σ

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

1 introdução e conceitos básicos

Como construir um compilador utilizando ferramentas Java

I.2 Introdução a Teoria da Computação

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

Autômatos de Pilha (AP)

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

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

Gramática regular. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Universidade de São Paulo

Gramáticas ( [HMU00], Cap. 5.1)

Editor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins

Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes

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

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 27 de Fevereiro de 2018

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

Revisões de Conjuntos

Linguagens Regulares. Prof. Daniel Oliveira

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

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

Modelagem e CLP Linguagens e Expressões Regulares

LINGUAGENS FORMAIS E AUTÔMATOS

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Linguagens Formais e Autômatos (LFA)

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ

Histórico e motivação

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

Definições Hierarquia de Chomsky Exemplos de gramáticas. Gramáticas. Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas

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

Linguagens Regulares, Operações Regulares

Aula 10: Decidibilidade

Teoria da Computação. Máquinas Universais Máquina com Pilhas

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

Linguagens Formais e Autômatos P. Blauth Menezes

Lista de Exercícios sobre Conjuntos

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

Autómatos Finitos Determinísticos (AFD)

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

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

MATEMÁTICA. Aula 2 Teoria dos Conjuntos. Prof. Anderson

Lista de exercícios 1

Faculdade de Computação

Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto. Propriedades de Linguagens Livres de Contexto

Linguagens Formais e Autômatos (LFA)

Matemática Discreta para Ciência da Computação

Transcrição:

Exercícios Associados à Aula 02 (14/08/2013) Os exercícios da disciplina devem ser feitos pelos alunos à medida que as aulas vão sendo dadas. Dúvidas devem ser dirigidas à professora, por email ou em sala de aula. Os exercícios são parte da matéria. Recursos para estes exercícios Livro Texto Adotado Linguagens Formais. Teoria, Modelagem e Implementação Marcus Vinicius Medina Ramos, João José Neto e Ítalo Santiago Vega Editora Bookman (Porto Alegre). 2009 http://www.univasf.edu.br/~marcus.ramos/livro-lfa/index.html Capítulo 1: Recapitulação de Matemática Discreta pp. 31-42 Capítulo 2: Conceitos Básicos de Linguagens pp.77-81 JFLAP 7.0 Pode ser baixado de http://www.jflap.org/ ou http://www.jflap.org/jflaptmp/ Há uma versão leve (JFLAPthin.jar) no segundo endereço; pode ser usada também, apesar de ter recursos gráficos mais restritos que a completa (JFLAP.jar). Exercícios 1. Utilizando o JFLAP, explore passo-a-passo o comportamento dos seguintes autômatos ao receberem (input>step by state ou input>fast run) as seguintes entradas (sem aspas): inf1626 ; inf16 ; inf162 ; inf16262 ; inf16262626 ; e inf16262. inf1626(1) inf1626(2) inf1626(3)

2. Abra simultaneamente os três autômatos acima no JFLAP. Explore a equivalência entre eles, através do menu test>compare equivalence, para todas as duplas possíveis. O que você descobriu? A partir destes resultados, como você definira intuitivamente (em suas próprias palavras) o que são autômatos equivalentes? 3. Para cada um dos autômatos, examine o que acontece se você escolhe a opção de marcar não-determinismo usando o menu test>highlight nondeterminism. O que você descobriu? A partir destes resultados, como você definira intuitivamente (em suas próprias palavras) o que é não determinismo? 4. O que você tem a comentar pensando em custos de computação sobre as diferenças entre os dois autômatos equivalentes utilizados neste exercício? 5. A cadeia inf1626 é aceita (processada com sucesso) por todos os três autômatos. Imaginando que os três sejam abstrações de três programas diferentes, feitos tãosomente para reconhecer a cadeia inf1626, o que você tem a comentar sobre o autômato inf1626(1).jff comparativamente aos outros dois? Ele é melhor ou pior do que os demais? Por quê e/ou em que situações específicas? Os autômatos (com extensão.jff ) podem ser baixados conjuntamente no pacote inf1626-automatos.zip, pelo site da disciplina. 6. Vamos agora estender o nosso poder de reconhecer cadeias e considerar que queremos fazer a especificação abstrata (i.e. construir um autômato) para um pequeno programa capaz de reconhecer todos e somente os códigos possíveis para as disciplinas regulares de graduação de um departamento de Informática. Estes códigos são sempre iniciados pelo prefixo inf, seguido do dígito 1, seguidos por uma sequência de três dígitos pertencentes ao conjunto {0,1,2,3,4,5,6,7,8,9}. Construa este autômato no JFLAP, monte uma lista de códigos corretos e outra de códigos incorretos e confira o comportamento do seu autômato submetendo sua lista através do menu input>multiple run. O mais prático é colocar sua lista em um arquivo txt e carregá lo clicando no botão Load Inputs que aparece na parte inferior da janela que se abre para você informar as múltiplas cadeias de entrada que você quer processar. 7. Os estados finais dos processadores significam algo importante. Quando ao processar uma cadeia um autômato chega a um estado final e não há mais símbolo algum para ser processado na cadeia de entrada, isto significa que a cadeia foi reconhecida com sucesso e portanto pertence ao conjunto de cadeias válidas da linguagem ou sistema de codificação que aquele autômato pode processar (e assim especifica formalmente). Voltando à questão dos códigos de disciplinas, abordada no exercício anterior, considere agora que o departamento de Informática do exemplo tem, além de disciplinas de graduação, disciplinas de pós-graduação. O código destas últimas é praticamente igual ao do das de graduação, exceto que entre o prefixo inf e os três dígitos que identificam cada disciplina, para a pós-graduação se usa 2 e não 1, como é o caso da graduação.

Autômatos têm de ter apenas UM estado inicial, mas podem ter tantos estados finais quanto se queira. Baseado no autômato que você construiu para o exercício (6), faça agora dois autômatos distintos para processar com sucesso qualquer cadeia de código válido de disciplinas do departamento de Informática, sejam elas de graduação ou pós-graduação. O primeiro autômato que você construir deve ter um único estado final. O segundo deve ter dois estados finais distintos: um que significa o reconhecimento de um código de disciplina de graduação e outro que significa o reconhecimento de um código de disciplina de pós-graduação. Comente o que você acha vantajoso e desvantajoso em cada caso, considerando a eficiência de (a) reconhecer um cadeia que o autômato acabou de processar com sucesso e (b) interpretar uma cadeia que o autômato acabou de processar com sucesso. 8. Aproveite os exemplos dos autômatos pqsystem-[a..e], que ilustraram análises com o JFLAP na aula 02 (14/08/2013), e tente implementá-los em Ruby. Siga as dicas de programação e ilustrações apresentadas em aula. Estes exercícios são apenas para reforçar pontos tratados na aula introdutória da disciplina. Servem para o aluno fazer sozinho o que foi apresentado em sala pela professora, ganhando familiaridade não apenas com o JFLAP, mas também e principalmente com os conceitos que constituem a base da disciplina. A recapitulação de Matemática Discreta visa fixar elementos basicos da teoria de conjuntos que serão necessários para a disciplina.

Para casa da aula 3

Exercícios Associados à Aula 04 (21/08/2013) Os exercícios da disciplina devem ser feitos pelos alunos à medida que as aulas vão sendo dadas. Dúvidas devem ser dirigidas à professora, por email ou em sala de aula. Os exercícios são parte da matéria. Obs: exercícios extraídos do cap.2 do livro-texto da disciplina (Ramos, Neto e Vega) 1. O que significa definir formalmente uma linguagem? Apresente pelo menos dois motivos que justifiquem a importância de se definir linguagens formalmente. 2. O que significa dizer que uma linguagem é definida por enumeração? Por que as enumerações são pouco utilizadas na definição formal de linguagens? Que alternativas se apresentam para contornar a dificuldade no emprego das enumerações? 3. Considere o alfabeto ={a,ab,abc}. Dê os seguintes exemplos sobre : a) Símbolo; b) Cadeia qualquer; c) Cadeia de comprimento 2; d) Cadeia de comprimento 4; e) Linguagem finita; f) Linguagem infinita (descrita de forma finita).

Exercícios Associados à Aula 04 (21/08/2013) Continuação As perguntas do exercício 4, a seguir, se referem ao fechamento reflexivo e transitivo ou ao fechamento transitivo de linguagens definidas sobre um alfabeto. Reproduzimos aqui um trecho do livro de Ramos (pp. 82 e 83) em que o autor define o fechamento reflexivo e transitivo e mostra como podemos definir linguagens através desta operação. 4. Determine os casos em que: a) Uma linguagem L coincide com L*- {ε}; Tomando-se a definição acima, L* é a união de todos os conjuntos que representam as possíveis concatenações de L consigo mesma, zero, uma, duas (L,L), três (L,L,L) até infinitas vezes. A concatenação de L consigo mesma zero vezes gera uma cadeia vazia. Então para L = L*- {ε} L deverá conter de uma a infinitas concatenações consigo mesma, ou seja, deverá ser igual a L + se L não contiver entre suas sentenças a cadeia vazia (veja Ramos, acima).

Uma definição concisa para esta condição é a de que ela ocorre com: Qualquer linguagem tal que L + -L= (que é o mesmo que L= L + ). b) Uma linguagem L não coincide com L*- {ε}; Seguindo o raciocínio acima, uma definição concisa para esta condição é a de que ela ocorre com: Qualquer linguagem para a qual exista um conjunto L tal que L + -L=L. c) Uma linguagem L faz com que L + coincida com L*- {ε}; Isto é verdadeiro para qualquer linguagem L tal que ε L. Se a cadeia vazia pertencesse à linguagem L, a ocorrência de ε corresponderia de fato uma concatenação de n cadeias vazias, para qualquer n 1. Porém, se a cadeia vazia não pertence à linguagem, a expressão L + = L*- {ε} é verdadeira por definição. d) Uma linguagem L faz com que L + não coincida com L*- {ε}; Dada a resposta acima, se a cadeia vazia pertence à linguagem L, a ocorrência de ε corresponde de fato uma concatenação de n cadeias vazias, para qualquer n 1. Portanto o conjunto L*- {ε} exclui mais cadeias do que o conjunto L+. Logo L + não coincide com L*- {ε}. e) Uma linguagem L faz com que L* coincida com L + U {ε}; Sempre, por definição. f) Uma linguagem L faz com que L* não coincida com L + U {ε}; Nunca, por contradição com a definição de L* e L +. 5. Apresente uma linguagem L sobre {a,b} que coincida com L R. L R é a linguagem formada pelas cadeias reversas de R. Ora, para as cadeias de uma linguagem coincidirem com o reverso de si mesmas, estamos falando de palíndromos. A definição de uma linguagem formara por palíndromos sobre o alfabeto {a,b} é, por exemplo, aquela que contém as seguintes produções: S a S b S asa S bsb 6. Seja Σ um alfabeto qualquer. Defina, utilizando operações sobre conjuntos: a) A menor linguagem sobre Σ; L = {} -- uma linguagem vazia b) A maior linguagem sobre Σ; L = Σ* = Σ 0 U Σ 1 U Σ 2 U... U Σ

c) A maior linguagem sobre Σ que não inclua sentenças de comprimento menor ou igual a 3; L = Σ 3 U Σ 4 U Σ 5 U... U Σ d) O conjunto de todas as linguagens que podem ser definidas sobre Σ; O conjunto de todos os subconjuntos possíveis de Σ* é o seu conjunto potência (ou conjunto de todas as partes), representado por 2 Σ*. Ele corresponde também ao conjunto de todas as linguagens (que nada mais são do que conjuntos, elas próprias) que se pode definir sobre Σ. e) O conjunto de todas as linguagens não-vazias que podem ser definidas sobre Σ. Σ + não contém o vazio. Portanto, o conjunto potência de Σ + não conterá o vazio tampouco. Assim, 2 Σ+ representa o conjunto de todas as linguagens não-vazias que se pode definir sobre Σ. 7. Seja Σ um alfabeto, A Σ, B Σ, A B =. Utilizando apenas as operações de fechamento, união e concatenação sobre Σ, A e B, defina as maiores linguagens sobre Σ cujas sentenças α satisfaçam aos seguintes requisitos: a) α contém no mínimo um símbolo do conjunto A; L = Σ*. A +. Σ* b) α contém pelo menos um símbolo de A como prefixo e pelo menos dois símbolos de B como sufixo; L = A +. Σ*.γ.B + γ B + c) α contém exatamente três símbolos de A, porém α pode conter qualquer quantidade de outros símbolos; L = Σ*. γ. Σ*. δ. Σ*. χ. Σ* γ,δ,χ A 1 d) α contém exatamente um símbolo de A e um símbolo de B, sendo o símbolo de B justaposto imediatamente após o símbolo de A. Nenhum outro símbolo de A ou B comparece em α, embora α possa conter um número arbitrário de outros símbolos quaisquer. L = (Σ-(A U B))*.γ.δ.(Σ-(A U B))* γ A 1,δ B 1 8. Conceitue, em termos de linguagens e cadeias, as seguintes representações: a) { }; Uma linguagem vazia b) {ε}; Uma linguagem composta de uma única cadeia, que é a cadeia vazia c) ε ; A cadeia vazia d) "ε"; O símbolo ε (letra grega épsilon) e) ; O conjunto vazio f) { }; Uma linguagem composta de um único símbolo, que é g) " "; O símbolo

h) ""; A ausência de símbolos i) {, {}, "ε", ε, "", { }, {ε}, {"ε"}, " ", {" "} }. Uma linguagem à qual pertencem as cadeias do conjunto indicado (isto é, os elementos separados por vírgula) 9. Demonstre que não existe w {a,b}* tal que aw = wb. Se w for a cadeia vazia, a igualdade é obviamente falsa. Caso contrário: Se aw = wb então w = aab (precisa começar com a e terminar com b). Supondo que a=e, já que a cadeia do meio não importa para a demonstração, a condição para a igualdade seria a de que a.ab = ab.b o que é evidentemente falso. Logo, não há w {a,b}* tal que aw = wb 10. Se w {a,b}* e abw = wab, demonstre que w = (ab) n, n 0. w ora é sufixo, ora prefixo, de ab ; para abw=wab então: ou w = e -- caso n=0 : (ab) 0 ou w = ab -- caso n=1 : (ab) 1 ou w = ab.x.ab -- caso n>1 : (ab) 1. (ab) x. (ab) 1 para x 0 -- Se w=(ab) n para n 0 de fato abw = wab Se w for a cadeia vazia, a igualdade é obviamente verdadeira. Caso contrário: Se abw = wab então as restrições de sufixação de w em abw e de prefixação de w em wab têm de ter alguma interseção. Examinando-as: Para ser um prefixo não nulo válido em wab a restrição sobre w é que w = (ab) + Para ser um sufixo não nulo válido em abw a restrição sobre w é que w = (ab) + Como as restrições nos dois casos acima são idênticas - w = (ab) +. Da mesma forma, como w = (ab) * = (ab) n, n 0 cobre tanto os prefixos e sufixos nulos, quanto os não nulos, então podemos demonstrar o que a questão propõe.