Linguagens Formais e Autômatos (LFA)

Documentos relacionados
Prova 1 de INF1626 Linguagens Formais e Autômatos

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

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

Construção de Compiladores Aula 16 - Análise Sintática

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

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

Linguagens Livres de Contexto

Gramáticas Livres de Contexto

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

Compiladores Aula 4. Celso Olivete Júnior.

Aula 8: Gramáticas Livres de Contexto

COMPILADORES. Revisão Linguagens formais Parte 02. Prof. Geovane Griesang

Linguagens Regulares. Prof. Daniel Oliveira

Linguagens Livres de Contexto

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

Conceitos básicos de Teoria da Computação

Linguagens e Programação Gramáticas. Paulo Proença

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

IBM1088 Linguagens Formais e Teoria da

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

Linguagens Formais e Autômatos (LFA)

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

Prova 2 de INF1626 Linguagens Formais e Autômatos

Gramáticas e Linguagens Independentes de Contexto

SCC 205 Teoria da Computação e Linguagens Formais

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

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

LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Linguagens Formais e Autômatos P. Blauth Menezes

Construção de Compiladores

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

Linguagens Formais e Autômatos (LFA)

Linguagens Formais e Autômatos P. Blauth Menezes

As linguagens regulares são I.C Proposição Qualquer linguagem regular é independente de contexto.

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

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

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

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção

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

Gramáticas Livres de Contexto Parte 1

Construção de Compiladores Aula 17 - Análise Sintática Descendente

Linguagens Formais e Problemas de Decisão

Exercícios 02. A gramática acima gera sentenças que tenham os N primeiros bits 0 e o último bit é sempre 1.

Alfabeto, Cadeias, Operações e Linguagens

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

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

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

INE5317 Linguagens Formais e Compiladores AULA 9: Propriedades e Reconhecimento das Linguagens Livres do Contexto

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

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

Compiladores - Análise Ascendente

Expressões Regulares e Gramáticas Regulares

Formas normais. Forma normal de Greibach (FNG) todas as produções são da forma

Compiladores - Análise Ascendente

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

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

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

Folha 2 Autómatos e respectivas linguagens

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

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

a n Sistemas de Estados Finitos AF Determinísticos

Linguagens Formais - Preliminares

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

Automata e Linguagens Formais

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

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.

Histórico e motivação

Linguagens Livres de Contexto

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

Gramática Livre de Contexto

Linguagens e Autômatos

Gramáticas e Linguagens independentes de contexto

Hierarquia de Chomsky Exemplos de gramáticas

Linguagens Formais e Autômatos (LFA)

Gramática Livre de Contexto

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

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

Transcrição:

Linguagens Formais e Autômatos (LFA) Aula de 28/08/2013 Sobre as respostas das duplas aos exercícios cios propostos 1

Fatos extraídos dos scores das duplas Tempo médio de resposta - A série inteira de exercício, conforme informado pelas duplas, foi resolvida em 31:28 minutos em média. - O percentual médio de confiança das duplas nas respostas dadas (opção completo e correto ) foi de 62%, Há duplas com menos de 30% de grau de certeza sobre seu desempenho: sinal não muito promissor de acúmulo de dúvidas sobre a matéria. ------------------------------------ Sobre se as duplas que têm alto grau de certeza a respeito de seu desempenho estão de fato sabendo tudo ou não, vamos conferir nos próximos slides. 2

Exercício 1 Seja o autômato A = 1. Utilizando o seguinte formalismo simplificado: A : Q = <conjunto completo de estados> I = <conjunto unitário de estados iniciais> F = <conjunto completo de estados finais> = <alfabeto reconhecido> = tuplas de transição (qi,, qj) onde qi = estado corrente = símbolo lido pelo cabeçote qj = estado-alvo da transição defina formalmente o autômato A. 3

Resposta do Exercício 1 A : { Q = {q0, q1, q2} I = {q0} F = {q1} = {a,b} = { (q0,a,q0), (q0,b,q1), (q1,b,q, (q2,b,q1) } } 4

Exercício 2 - Resposta Seja o autômato A = 2. Que tipos de cadeias este autômato aceita? a*b(bb)* Ou seja, qualquer cadeias que resulte da concatenação de: Zero ou mais a com Um b com Zero ou mais bb (isto é, a cadeia formada pela concatenação de b com b, iterada (=repetida) zero ou mais vezes) 5

Comentário sobre a resposta do exercício 2 Algumas duplas responderam algo assim: Cadeias formadas por zero a infinitos a seguidos de 1 a infinitos b, sendo que o número de b tem de ser ímpar. É verdade. Este é o tipo de cadeia formada. Mas, como estamos aprendendo a formalizar linguagens, a resposta destas duplas é ainda informal (embora não esteja errada). Para dar uma resposta formal e correta, vamos utilizar os conceitos e as operações aprendidas na Aula 3 (slides de 8 em diante, sobretudo). É o que veem na resposta apresentada no slide anterior: a*b(bb)*. 6

Exercício Seja o autômato A = 3. Utilizando tuplas (qi,,qj) para representar (estado corrente, símbolo lido, próximo estado), apresente a sequência completa de reconhecimento para as seguintes cadeias: ab (q0,a,q0),(q0,b,q1) aaaaab (q0,a,q0), (q0,a,q0), (q0,a,q0), (q0,a,q0), (q0,a,q0),(q0,b,q1) abbbbb (q0,aq0),(q0,b,q1),(q1,b,q,(q2,b,q1), (q1,b,q,(q2,b,q1) b (q0,b,q1) a (q0,a,q0) -- Esta cadeia não é aceita: por quê? bb (q0,b,q1),(q1,b,q -- Esta cadeia não é aceita: por quê? 7

Exercício Seja o autômato A = 4. Utilizando os programas em Ruby apresentados na aula passada, implemente o reconhecedor associado a A. Basta que editem um dos arquivos Exemplo*.rb do diretório afd. Vejam no slide seguinte o resultado no ambiente instalado no computador de um dos professores da disciplina. 8

9

Exercício Seja o autômato A = 5. Escreva uma gramática regular que gere exatamente as mesmas cadeias aceitas pelo reconhecedor que você implementou. Lembrete - Uma gramática regular é definida por uma tupla {V,,P,S} onde: V=vocabulário finito e não vazio com TODOS os símbolos que aparecem à esquerda ou direita de regras de reescrita; é o alfabeto da linguagem (isto é, os símbolos terminais que podem aparecer em cadeias gramaticais da linguagem); P é o conjunto de regras de reescrita; e S é o símbolo raiz de todas as derivações. GramReg : V = {a,b,a,b,c,d,s} ; = {a,b} ; S; P = { S b A bc S bc C bd S aa D b A aa D bc A b } 10

Como conferir se uma gramática proposta está certa? JFLAP 1. Clique em Grammar 2. Na janela nova, transcreva a sua gramática candidata 3. Teste se a sua gramática é regular (menu Test ) 4. Se for, a mensagem diz entre parênteses (Regular Grammar and Context Free Grammar) ; prossiga. [Continua no próximo slide] 11

Como conferir se uma gramática proposta está certa? [Continuação] 5. Crie uma massa de testes, com cadeias que você sabe que devem ser aceitas e que devem ser rejeitadas. 6. Verifique o que acontece quando sua massa de testes é processada: Clique em Input e selecione Multiple CYK Parse Quando a nova janela abrir, forneça sua massa de teste e Clique em Run Inputs Se sua gramática for equivalente ao reconhecedor associado ao autômato A, então ela deverá: -- gerar corretamente (e fazer um parse bem sucedido) de cadeias a*b(bb)* [accept] -- não gerar cadeias cuja forma não seja w = a*b(bb)* Para testar a cadeia vazia, cliquem em Enter lambda. 12

Resultado da Gramática Proposta Este é o exercício mais difícil da série. É só para testar as intuições de vocês. Estudaremos algoritmos de conversão entre Gramáticas e Autômatos no próximo capítulo da matéria. 13

Exercícios Sejam as gramáticas G1, G2, G3, G4 e G5, cujas regras de reescrita são as seguintes: G1 S -> a S -> as Regular Tipo 3 G2 1. Diga que tipo de gramática é cada uma delas, segundo a Hierarquia de Chomsky. S -> AS bs ->Sb A -> a A -> b A -> aa Sensível a Contexto Tipo 1 G3 S -> AS S -> b A -> a A -> aa Livre de Contexto Tipo 2 G4 S -> ASB S -> c A -> a A -> aa B -> b B -> bb Livre de Contexto Tipo 2 G5 S -> XC X -> x X -> xx xxxx -> xxxx xxc -> xxc -> C Irrestrita Tipo 0 14

Exercícios Sejam as gramáticas G1, G2, G3, G4 e G5, cujas regras de reescrita são as seguintes: G1 G2 G3 G4 G5 S -> a S -> as S -> AS bs ->Sb A -> a A -> b A -> aa S -> AS S -> b A -> a A -> aa S -> ASB S -> c A -> a A -> aa B -> b B -> bb S -> XC X -> x X -> xx xxxx -> xxxx xxc -> xxc -> C 2. Mostre o caminho de derivação de pelos menos duas cadeias diferentes para cada uma delas, usando a notação do slide 5. 15

Exemplos de Derivações Para G1: S -> a S -> as -> aas -> aaa G1 S -> a S -> as Para G2: S -> AS -> as -> aas -> abs -> asb -> aasb -> aasb -> Temos um problema com esta gramática; o processo de derivação não para. Podem tentar vários caminhos alternativos, todos levarão a pontos da derivação - as ou bs -> Sb - que já foram visitados e de onde não se consegue sair. É um ciclo pernicioso que mostra que esta gramática está mal-formada. Mais adiante na matéria procuraremos caracterizar formalmente o sinal da má-formação desta gramática. G2 S -> AS bs ->Sb A -> a A -> b A -> aa 16

Exemplos de Derivações G3 Para G3: S -> AS -> aas -> aaas -> aaas -> aaab S -> AS -> aas -> aaas -> aaas -> aaaas -> aaaas -> aaaab Para G4: S -> ASB -> aasb -> aasb -> aacb -> aacbb -> aacbbb -> aacbbbb -> aacbbbb S -> ASB -> aasb -> aaasb -> aaaasb -> aaaasb -> aaaacb -> aaaacbb -> aaaacbbb -> aaaacbbbb -> aaaacbbbb S -> AS S -> b A -> a A -> aa G4 S -> ASB S -> c A -> a A -> aa B -> b B -> bb 17

Algumas Derivações para G5 G5 S -> XC S -> XC -> xc -- parou a derivação aqui! X -> x X -> xx S -> XC -> xxc -> xxc -> xxxx -> xxxx S -> XC -> xxc -> xxc -> C -- parou a derivação aqui! xxc -> S -> XC -> xxc -> xxxc -> xxxc -> x xxc -> C S -> XC -> xxc -> xxxc -> xxxxc -> xxxxc -> xxxxc -> xx S -> XC -> xxc -> xxxc -> xxxxc -> xxxxc -> xxxxxc -> xxxxxc -> xxx (Ufa!) -> xxxxxxxxxxxxx S -> XC -> xxc -> xxxc -> xxxxc -> xxxxc -> xxxxxc -> xxxxxc -> xxxc (Oh, não!) <complete uma derivação você mesmo> 18

Explorando o JFLAP na derivação gramatical Veja o vídeo de demonstração online. Video S-aS.mp4 Video S-aS-derivacao.mp4 19

Múltiplos caminhos de derivação O importante é que a cada passo seja válida da reescrita realizada, isto é: que haja uma regra autorizando a substituição. Diferentes caminhos têm, computacionalmente, diferentes vantagens e desvantagens, dependendo do propósito e do contexto da derivação. Vejam como a mesma cadeia é aceita por 3 parsers (analisadores sintáticos) diferentes, que geram 3 árvores diferentes! Video S-aS-parsers.mp4 20