Linguagens Regulares, Operações Regulares

Documentos relacionados
Linguagens Regulares, Operações Regulares

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

Propriedades de Fecho de Linguagens Regulares.

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

BCC242. Auômato Finito Determinístico

Fundamentos da Teoria da Computação

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

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

Fundamentos da Teoria da Computação

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

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

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

BCC244. Alfabeto, String, Linguagem, Gramática. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste materal.

a n Sistemas de Estados Finitos AF Determinísticos

Autómatos Finitos Determinísticos (AFD)

Linguagens Formais e Autômatos P. Blauth Menezes

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

a n Sistemas de Estados Finitos AF Determinísticos

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

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

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

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

Lema do Bombeamento Linguagens Livres de Contexto

Conceitos básicos de Teoria da Computação

Notas sobre Sequências e Cardinalidade (1)

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

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

1 Expressões Regulares e Linguagens

Linguagens Formais e Problemas de Decisão

Lógica e Programação - Folha de trabalho n. 7

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

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

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

Prof. Adriano Maranhão COMPILADORES

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

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

Vamos estudar neste capítulo algumas características da classe das linguagens regulares sobre um alfabeto. Entre elas salientámos:

Expressões Regulares e Gramáticas Regulares

Expressões regulares

Linguagens Formais e Autômatos P. Blauth Menezes

Aulas 10 e 11 / 18 e 20 de abril

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

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

Complexidade de Tempo

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

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

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

Lema do Bombeamento Motivação

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

Algoritmo de Minimização de AFD

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

LINGUAGENS FORMAIS E AUTÔMATOS

Expressões Regulares. Tiago Alves de Oliveira

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

C : R I IN 0. tal que. C(α) = 0 sempre que α I {, ɛ} C(α + β) = C(α) + C(β) + 1. C(αβ) = C(α) + C(β) + 1. C(α ) = C(α) + 1.

1 INTRODUÇÃO E CONCEITOS BÁSICOS

INE Fundamentos de Matemática Discreta para a Computação

Linguagem (formal) de alfabeto Σ

Linguagens Formais e Autômatos P. Blauth Menezes

Variantes de Máquinas de Turing

LR's: Lema do Bombeamento e Propriedades de Fechamento

Linguagens Regulares. Prof. Daniel Oliveira

Conceitos de Linguagem de Programação - 2

Teoria Ingênua dos Conjuntos (naive set theory)

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

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

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

Linguagens Formais e Autômatos (LFA)

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Modelos Universais de Computação

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

a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER

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

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

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

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

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

significa ( x)[(x S P (x)) (P (x) x S)]

Variedades Adicionais das Máquinas de Turing

Instituto Superior Técnico Teoria da Computação - LEIC, LERC 2012/2013 Aula prática 6. 1 Palavras e linguagem gerada por gramática

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

Histórico e motivação

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

UNIVERSIDADE FEDERAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA. Medida e Probabilidade

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

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

Alfabeto, Cadeias, Operações e Linguagens

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

Aula 8: Gramáticas Livres de Contexto

Lista de exercícios 1

Linguagens Formais e Autômatos

Linguagens Formais - Preliminares

Aula 3: Autômatos Finitos

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

Modelos de Computação

Linguagens Não-Regulares

IBM1088 Linguagens Formais e Teoria da

Matemática para Ciência de Computadores

Transcrição:

Linguagens Regulares, Operações Regulares 1

Definição de Linguagem Regular Relembre a definição de linguagem regular: DEF: A linguagem aceita por um AF M é o conjunto de todos os strings que são aceitos por M e é denotada por L (M). Queremos entender que tipo de linguagens são regulares. O reconhecimento de elementos de linguagens desse tipo é extremamente rapido! Seria bom saber, por exemplo, quais das seguintes linguagens são regulares: 2

Exemplos de Linguagens Números primos unários: { 11, 111, 11111, 1111111, 11111111111, } = {1 2, 1 3, 1 5, 1 7, 1 11, 1 13, } = { 1 p p é um número primo } Qudrados unários: {ε, 1, 1 4, 1 9, 1 16, 1 25, 1 36, } = { 1 n n é um quadrado perfeito } Strings de bits que são palíndromos: {ε, 0, 1, 00, 11, 000, 010, 101, 111, } = {x {0,1}* x = x R } Veremos mais adiante se essas linguagens são ou não regulares. 3

Linguagens Finitas Todas as linguagens dos exemplos anteriores têm cardinalidade infinita NOTA: Os strings que constituem a linguagem são finitos (como todos neste curso); entretanto, o conjunto de strings é infinito, em cada um dos exemplos anteriores. Antes de examinar linguagens infinitas, vamos primeiro nos ater a linguagens finitas. 4

Linguagens de Cardinalidade 1 Q: Uma linguagem que contém um único string é regular? Por exemplo, é regular? { banana } 5

Linguagens de Cardinalidade 1 R: Sim. Q: O que há de errado nesse exemplo? 6

Linguagens de Cardinalidade 1 R: De fato, nada. Esse é um exemplo de um AF não determinístico. Ele constitui uma forma mais concisa de definir a linguagem {banana} Vamos tratar de não determinismo nas próximas aulas. Então: Q: Existe uma maneira de corrigir esse autômato, tornando-o determinista? 7

Linguagens de Cardinalidade 1 R: Sim, basta adicionar um estado de falha q7; I.e., incluir um estado que suga todo os strings diferentes de banana exceto strings que são prefixos de banana {ε, b, ba, ban, bana, banan,banana}. 8

Demonstração usando JFLAP JFlap 9

Dois Strings Q: E linguagens contendo apenas 2 strings são regulares? Por exemplo { banana, nab }? 10

Dois Strings R: Apenas adicione uma nova rota: 11

Número Finito Arbitrário de Strings Q1: E mais strings? Por exemplo { banana, nab, ban, babba }? Q2: Ou menos (o conjunto vazio): Ø = {}? 12

Número Finito Arbitrário de R1: Strings 13

Número Finito Arbitrário de Strings: Linguagem Vazia R2: Construa um autômato com um único estado e com conjunto de estados de aceitação F vazio! 14

Número Finito Arbitrário de Strings THM: Toda linguagem finita é regular. Prova : É sempre possível construir uma árvore em que cada ramo representa um string. Por exemplo: a n a n a b b b a n a b A raiz é o estado inicial; as folhas são estados de aceitação; adicione um estado de falha para finalizar a construção. 15

Cardinalidade Infinita Q: Toda linguagem regular é finita? 16

Cardinalidade Infinita R: Não! Muitas linguagens infinitas são regulares. Erro comum 1: Os strings de uma linguagem regular são finitos, portanto a linguagem deve ser finita. Erro comum 2: Linguagens regulares são por definição aceitas por um autômato finito, portanto são finitas. Q: Dê um exemplo de uma linguagem infinita mas regular. 17

Cardinalidade Infinita bitstrings com número par de b s O exemplo mais simples é Σ muitos, muitos outros Exercício: Pense num critério para não finitude 18

Operações Regulares Você provavelmente já usou operações regulares ao especificar pesquisas avançadas utilizando programas como emacs, egrep, perl, python, etc. Vamos trabalhar com três operações básicas: 1. União 2. Concatenação 3. Kleene-star (fecho de Kleene) E uma quarta definida em termos dessas: 4. Kleene-plus (fecho positivo de Kleene) 19

Operações Regulares Tabela Resumo Operação Simbolo Versão UNIX União Concatenação Kleenestar Kleeneplus implicito em UNIX * * + + Significado casa um dos padrões casa os padrões em sequencia casa o padrão 0 ou mais vezes casa o padrão 1 ou mais vezes 20

Operações Regulares União UNIX: para pesquisar todas as linhas contendo vogais em um texto, podemos usaro o comando egrep -i `a e i o u O padrão vogal é casado por qualquer linha que contenha um dos símbolos a, e, i, o ou u. Q: O que é um padrão de string? 21

Padrão de String A: Uma boa maneira de definir um padrão de string é como um conjunto de strings, i.e. uma linguagem. A linguagem para um dado padrão é o conjunto de todos os strings que satifazem o predicado do padrão. EX: padrão-vogal = { strings que contenham pelo menos um dos símbolos: a e i o u } 22

Padrões UNIX vs. Padrões em Computabilidade Em UNIX, supõe-se implicitamente que um string cada com um padrão se esse padrão ocorre como substring desste. Nesse curso, entretanto, um padrão deve especificar o string completo, e não apenas um substring. 23

Operações Regulares União Linguagens formais: Dados os padrões A = {aardvark}, B = {bobcat}, C = {chimpanzee} a união desses padrões resulta em A B C = {aardvark, bobcat, chimpanzee} 24

Operações Regulares - Concatenação UNIX: pra pesquisar todas as ocorrências duplas consecutivas de vogais, usamos: egrep -i `(a e i o u)(a e i o u) O padrão vogal foi repetido. Usamos parênteses para especificar onde exatamente ocorre a concatenação. 25

Operações Regulares - Concatenação Linguagens formais. Considere o resultado anterior: L = {aardvark, bobcat, chimpanzee} Q: Qual é a linguagem resultante de concatenar L com ela própria: L L? 26

A: L L = Operações Regulares - Concatenação {aardvark, bobcat, chimpanzee} {aardvark, bobcat, chimpanzee} {aardvarkaardvark, aardvarkbobcat, aardvarkchimpanzee, bobcataardvark, bobcatbobcat, bobcatchimpanzee, chimpanzeeaardvark, chimpanzeebobcat, chimpanzeechimpanzee} Q1: O que é L {ε}? Q2: O que é L Ø? = 27

Álgebra de Linguagens A1: L {ε} = L. De modo geral, {ε} é a identidade da álgebra de linguagens. I.e., se pensarmos na concatenação como sendo multiplicação, {ε} age como o número 1. A2: L Ø = Ø. Dualmente a {ε}, Ø age como o número zero, obliterando qq string com o qual é concatenado. Nota: Na analogia entre números e linguagens, a adição corresponde à união e a multiplicação corresponde à concatenação, formando assim uma álgebra. 28

Operações Regulares Kleene- * UNIX: pesquisar por linhas que consistem puramente de vogais (incluinso a linha vazia): egrep -i `^(a e i o u)*$ NOTA: ^ and $ são símbolos especiais em expressões regulares UNIX que ligam o padrão ao início e ao fim da linha, respectivamente. Isso pode ser usado para converter uma operação regular de Linguagens Formais em uma expressão regular UNIX equivalente. 29

Operações Regulares Kleene- Linguagens formais : Considere a linguagem * B = { ba, na } Q: Qual é a linguagem B *? 30

Operações Regulares Kleene- * A: B * = { ba, na }*= { ε, ba, na, baba, bana, naba, nana, bababa, babana, banaba, banana, nababa, nabana, nanaba, nanana, babababa, bababana, } 31

Operações Regulares Kleene- + Kleene-+ é tal como Kleene-* exceto que o padrão deve ocorrer pelo menos uma vez. UNIX: pesquisar por linhas que consistem puramenente de vogais (exceto linha vazia): egrep -i `^(a e i o u)+$ Linguagens formais : B + = { ba, na } + = { ba, na, baba, bana, naba, nana, bababa, babana, banaba, banana, nababa, nabana, nanaba, nanana, babababa, bababana, } 32

Gerando Linguagens Regulares A razão pela qual linguagens regulares são chamadas regulares é a seguinte: THM: Linguagens regulares são aquelas que podem ser geradas a partir de linguagens finitas pela aplicação de operações regulares. Esse teorema será provado adiante. Q: Podemos começar a partir de linguagens ainda mais básicas que linguagens finitas arbitrárias? 33

Gerando Linguagens Regulares R: Sim. Podemos começar com linguagens que consistem de um único string, os quais consistem de um único caractere. Essas são chamadas linguagens regulares atômicas. EX: Para gerar a linguagem finita L = { banana, nab } Podemos começar com as linguagens atômicas A = {a}, B = {b}, N = {n}. Então podemos expressar L como: L = (B A N A N A) (N A B ) 34

Exercício 1. Expressar as linguagens a seguir na forma de uma expressão regular, no estilo de expressões regulares UNIX, e usando operações regulares. a. A linguagem L sobre o alfabeto {0,1} cujos strings possuem tamanho múltiplo de 3 ou terminam com 1. b. A linguagem L sobre o alfabeto {0,1} cujos strings começam com 0 e terminam com 10 ou com 11 2. Construa o AFD dos itens anteriores usando o JFlap 35