Linguagens Formais e Autômatos

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

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

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

Linguagens Regulares. Prof. Daniel Oliveira

Modelos de Computação

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

Alfabeto, Cadeias, Operações e Linguagens

Linguagens Formais e Problemas de Decisão

1 INTRODUÇÃO E CONCEITOS BÁSICOS

IBM1088 Linguagens Formais e Teoria da

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

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

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

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

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

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

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

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

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

Linguagens Formais - Preliminares

Linguagem (formal) de alfabeto Σ

Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens)

Linguagens Formais e Autômatos P. Blauth Menezes

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

Linguagens Formais e Autômatos P. Blauth Menezes

Conceitos básicos de Teoria da Computação

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

Expressões Regulares e Gramáticas Regulares

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

Linguagens Formais e Autômatos. Conceitos Básicos Prof. Anderson Belgamo

LINGUAGENS FORMAIS E AUTÔMATOS

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

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

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

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

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

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

a n Sistemas de Estados Finitos AF Determinísticos

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

Teoria da Computação Aula 01 Revisão de Conjuntos

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

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 P. Blauth Menezes

Autómatos Finitos Determinísticos (AFD)

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

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

Linguagens Livres de Contexto

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Linguagens Formais e Autômatos P. Blauth Menezes

1 introdução. capítulo. O que é uma solução computável? Quais são os limites do que pode ser computado? Existem problemas sem solução computacional?

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

LINGUAGEM LIVRE DE CONTEXTO GRAMÁTICA LIVRE DE CONTEXTO

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

Máquinas de Turing - Computabilidade

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

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

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

Aula 7: Autômatos com Pilha

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

Alfabeto e palavras. Alfabeto conjunto finito de símbolos (Σ).

Fundamentos da Teoria da Computação

LINGUAGENS FORMAIS E AUTÔMATOS

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

BCC242. Auômato Finito Determinístico

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

Revisões de Conjuntos

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. Autômatos Finitos Determinísticos (AFD)

Máquinas de Turing 3

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

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

Linguagens e Autômatos

Universidade Federal de Alfenas

Teoria da Computação

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

Máquina de Turing. Controle finito

Teoria da Computação. Unidade 1 Conceitos Básicos. Referência Teoria da Computação (Divério, 2000)

SCC 205 Teoria da Computação e Linguagens Formais

Lista de exercícios 1

Transcrição:

Prof. Diógenes Furlan Linguagens Formais e Autômatos Módulo 1 2016 VII BIBLIOGRAFIA BÁSICA Bibliografia HOPCROFT, John E. Introdução à teoria de autômatos, linguagens e computação. Rio de Janeiro: Elsevier; Campus, 2002. 560 p. ISBN 8535210725 LEWIS, Harry R; PAPADIMITRIOU, Christos H. Elementos de teoria da computação. 2. ed. Porto Alegre, RS: Bookman, 2000. 339 p. ISBN 8573075341 MENEZES, Paulo Blauth. Linguagens formais e autômatos. 4. ed. Porto Alegre, RS: Sagra Luzzatto, 2002. 192 p. (Série Livros didáticos n.3) ISBN: 8524105542 VIII BIBLIOGRAFIA COMPLEMENTAR DIVERIO, Tiarajú Asmuz; MENEZES, Paulo Blauth. Teoria da computação: máquinas universais e computabilidade. 2. ed. Porto Alegre, RS: Sagra, 2003. 205 p. (Série livros didáticos, 5) GERSTING, Judith. Fundamentos matemáticos para a ciência da computação. 4. ed. Rio de Janeiro: LTC, 2001. 538 p. BROOKSHEAR, J. Glenn. Ciência da computação: uma visão abrangente. 5. ed. Porto Alegre, RS: Bookman, 2000. 499 p. ISBN 8573075376 SEBESTA, Robert W. Conceitos de linguagens de programação. 5. ed. Porto Alegre, RS: Bookman, 2003. 638 p. ISBN 8536301716 Capítulo 1

Noções de Linguagens 2 O que é uma Linguagem Formal? Inicialmente, de maneira bastante informal, podemos definir uma linguagem como sendo uma forma de comunicação. Elaborando um pouco mais esta definição, podemos dizer que uma linguagem é um conjunto de elementos (símbolos) e um conjunto de métodos (regras) que combinam estes elementos, e que são usados e entendidos por uma determinada comunidade. Exemplos: 1 Linguagens Naturais (ou idiomáticas). 2 Linguagens de Programação, de Controle, de Consulta. 3 Protocolos de Comunicação. Contudo, apesar de intuitiva, esta definição não nos permite responder satisfatoriamente à primeira pergunta; precisamos antes dar um sentido formal para a definição de linguagem. Conceitos Básicos Um Símbolo a,b,c,... 1 é um elemento de um conjunto, representado por algarismos (letras, caracteres, números,...). Um Alfabeto (ou vocabulário) é um conjunto finito, e não vazio, de símbolos. São exemplos de alfabetos 1 = {0,1} => o alfabeto binário 2 = {a,b,...,z} 3 = ASCII (Linguagem C) ASCII Alfabeto das expressões numéricas, com 4 operações básicas e parênteses balanceados = {(,),0,1,2,3,4,5,6,7,8,9,+,-,*,/} Uma Palavra (ou sentença ou string ou cadeia) x,y,w,... é uma sentença sobre um alfabeto A, é uma seqüência (ou cadeia) finita de símbolos do alfabeto justapostos por concatenação. Seja = {a,b} então a, b, aa, ab, aba,,... são palavras. Para a Linguagem C, for e void main() {} são palavras. A Palavra vazia é uma sentença constituída de nenhum símbolo; isto é, uma palavra de comprimento igual a 0 (zero). Representamos a sentença vazia por (épsolon). O Comprimento de uma palavra w : Seja w uma palavra. O tamanho (ou comprimento) desta sentença, denotado por w, é definido pelo número de símbolos que a compõem. Exemplos: Seja = {a,b,c} aba = 3 c = 1 = 0 1 Convenção para tipos de algarismos utilizados

A Concatenação. é uma operação binária que associa a cada par de símbolos uma palavra formada pela justaposição da primeira com a segunda. Seja x = 01101 e y = 110 então xy = e yx = 3 Elemento neutro: x. =.x = x Concatenação sucessiva (ou Potência de uma palavra): Seja w uma sentença. A concatenação de w consigo mesmo n vezes, pode ser representado por um exponencial: w n. Exemplos: seja x = 110 então x 1 = 110 x 2 = 110110 x 3 = 110110110 OBS: 1) Para toda palavra x, x 0 =. 2) x R = reverso de x, ou seja, x escrito de trás para frente Potencias de um Alfabeto: Definimos k como o conjunto de strings de comprimento k sobre o alfabeto. Exemplos: seja = (0,1} 2 = 3 = 1 = 0 = Fechamento de um Alfabeto Seja um alfabeto. O fechamento reflexivo (ou simplesmente fechamento) de *, é dado pelo conjunto de todas as possíveis palavras que podem ser formadas a partir de, inclusive a sentença vazia. * 0 + 1 + 2 +... O fechamento transitivo (ou fechamento positivo) de, é dado por - { }. Exemplos: Seja = {0,1}, temos que: * = {, 0, 1, 00, 01, 11, 000,...} + = {0, 1, 00,01, 11, 000,...} Uma Linguagem L sobre um alfabeto, é um subconjunto de * ; isto é, L (ou seja, é um conjunto de palavras ou de sentenças). Seja ={a,b} L 1 = L 2 = { } L 3 = {w w é palíndromo} = L 4 = * Um Dicionário, como o da língua portuguesa, também define uma linguagem (ou língua).

4 Linguagens e suas Representações O estudo de linguagens está intimamente relacionado ao estudo das formas de representação dessas linguagens. O problema de representação de uma linguagem, por sua vez, está relacionado com o fato de ela ser finita ou infinita: Linguagem Finita: É uma Linguagem que pode ser representada por enumeração. Exemplo: A linguagem definida como sendo o conjunto dos inteiros positivos pares maiores que 0 e menores que 20, pode ser representado por: L = {2, 4, 6, 8, 10, 12, 14, 16, 18}. Linguagem Infinita: Neste caso, na impossibilidade de usarmos enumeração, precisamos encontrar uma representação finita para estas linguagens. Exemplo: A linguagem definida como sendo o conjunto dos inteiros pares poderia ser representada por V ={2, 4, 6, 8, 10,...} que, apesar de intuitiva, não é finita e nem precisa. Conjuntos infinitos podem ainda ser classificados em contáveis (quando tem correspondência com os números naturais) ou incontáveis (quando tem correspondência com os números reais). As representações finitas de linguagens classificam-se em 3 tipos:*2 x é Natural Descritores são formalismos que representam os elementos de uma linguagem, descrevendo cada um deles usando uma notação matemática. São formalismos abstratos, para verificações matemáticas, como calculo proposicional, calculo de predicados, expressões regulares, entre outros. Reconhecedores São dispositivos formais que nos permitem verificar se uma determinada sentença pertence ou não a uma determinada linguagem (é uma representação das sentenças de uma linguagem sob o ponto de vista do reconhecimento de tais sentenças). Esses dispositivos denominam-se autômatos; autômatos finitos, autômatos de pilha e máquinas de Turing, por exemplo, podem ser destacados como importantes tipos de autômatos. Geradores São dispositivos formais dotados de mecanismos que permitem a geração sistemática das sentenças de uma linguagem (representação sob o ponto de vista da geração das sentenças de uma linguagem). Os principais sistemas geradores disponíveis são as gramáticas, dentre as quais, por exemplo, podemos destacar as gramáticas de CHOMSKY. Observações: Todo reconhecedor e todo sistema gerador pode ser representado por algoritmos e/ou procedimentos. Linguagens Formais: São linguagens que podem ser representadas de maneira finita e precisa através de sistemas com sustentação matemática (dispositivos formais ou modelos matemáticos), como os vistos acima. Exercícios 1) Quais dos seguintes conjuntos são alfabetos? a) números racionais não b) letras gregas c) algarismos arábicos d) 2 {a,b,c} e) {a,b,c} 3 f) números primos não

5 2) Mostre os prefixos e os sufixos de 001122. 3) Dê alguns exemplos de palavras que pertencem (e que não pertencem) às seguintes linguagens, sendo ={a,b}: a) L = {w w 3 } b) L = {w para algum u, w = uau} c) L = {w para algum u, w = uu R u} u R reverso de u d) L = {w ww = www} e) L = {w para algum u, v *, uvw = wvu} f) L = {w para algum u *, www = uu} 4) Considerando a Linguagem C++, dê exemplos de: a) Símbolo do alfabeto b) Símbolo que não pertence ao alfabeto c) Palavra valida d) Palavra invalida 5) Qual símbolo da Linguagem C denota o elemento vazio? ou \0 6) Qual o significado de void na Linguagem C? tudo (nada) 7) O que é um Programa (segundo as definições vistas nessa aula)? Hierarquia de Chomsky A hierarquia de Chomsky consiste em quatro classes básicas de linguagens, classificadas segundo uma ordem de complexidade. Noam Chomsky 2 as definiu como potenciais modelos para linguagens naturais. LINGUAGENS ENUMERÁVEIS RECURSIVAMENTE - TIPO 0 LINGUAGENS SENSÍVEIS AO CONTEXTO TIPO 1 LINGUAGENS LIVRES DE CONTEXTO TIPO 2 LINGUAGENS REGULARES TIPO 3 2 Noam Chomsky, linguista e ativista político, é pesquisador do Massachusetts Institute of Technology (MIT), EUA. Em 1955, aos 27 anos, recebeu seu PhD em Linguística da Universidade da Pennsylvania. Aos 32 anos tornou-se professor-titular do MIT. Revolucionou a linguística nos anos 60 com sua teoria sobre a gramática gerativa. Entre seus trabalhos fundamentais sobre o tema estão Aspectos da teoria da sintaxe e Linguagem e mente. Em 1969, com o livro O poder americano e os novos mandarins, começou sua trajetória como ativista dos direitos civis e seu combate contra a intervenção dos EUA no Vietnã. Publicou cerca de 23 livros sobre política internacional e questões internas dos EUA.

6 Linguagens Regulares Classe de linguagens mais simples. Formalismos: Denotacional ou Descritor: Expressão Regular Operacional ou Reconhecedor: Autômato Finito Axiomático ou Gerador: Gramática Regular Linguagens Livre de Contexto Classe de linguagens que engloba as Linguagens Regulares. Formalismos: Operacional ou Reconhecedor: Autômato de Pilha Axiomático ou Gerador: Gramática Livre de Contexto Linguagens Sensíveis ao Contexto Classe de linguagens que engloba as Linguagens Livre de Contexto. Formalismos: Operacional ou Reconhecedor: Autômato Linearmente Limitado Axiomático ou Gerador: Gramática Sensível ao Contexto Linguagens Enumeráveis Recursivamente Classe de linguagens que engloba as Linguagens Sensíveis ao Contexto. Formalismos: Operacional ou Reconhecedor: Máquina de Turing Axiomático ou Gerador: Gramática Irrestrita

7 Capítulo 2 Expressões Regulares Uma Expressão Regular (ER) sobre um alfabeto é definida como segue: seja = ER(R) e = ER(S) LR ER (1) (2) { } (3) {a} a, a (4) R S (união) + (5) R x S (concatenação). ou (6) R* (fechamento) * Somente as 3 operações acima definem conjuntos regulares. Exemplos Para ={a,b}: 1) L = 2) L = { } 3) L = {a,b} = {a} {b} 4) L = {aa} = {a}x{a} 5) L = {a,b}x{b,c} 6) a* 7) a + 8) (a+b)* 9) (ab)* 10) b+a* 11) (b+a)* 12) ba* 13) (ba)* 14) (a+b*)* 15) a* + b* 16) a*.b* 17) (a+b) 2 18) (ab) 2 19) a 2.b 2 20) (a+b) 3 21) a 0-5 22) a 3 b 4 Omissão de Parênteses (1) Como a união é associativa, pode-se escrever (r 1,r 2 +...+r n ) omitindo-se os parênteses internos (2) Idem para a concatenação (3) Parênteses externos podem ser omitidos (4) Prioridades: Fecho de Kleene (*) concatenação (.) união (+) Exemplos: ((a+(bb))+b) 1 (a+(bb)+b) 3 a+(bb)+b 4 a+bb+b ((ab)((aa)b)) 2 (abaab) 3 abaab a+(b(a)*) 4 a+ba*

8 Exercícios 23) Retire o máximo de parênteses das ER s seguintes, sem alterar seu significado: a) ((a+((a+b)a))+(bb)) a + (a+b)a + bb b) (((aa)+(b(bb*)))*((ab)((ab)(a+b)))) (aa+bbb*)*abab(a+b) c) (((aa)a+b)+((aa)+(a+(bb)))) aaa + b + aa + a + bb d) (((a)(a)+(ab))+((ba)+(b)(b)))*+(a(b(c))) aa + ab + ba + bb + abc 24) Verificar se a palavra dada pertence ao conjunto regular dado. a) aababaaab (a*b)* b) baaab ba* c) abaaabaa (a+b)*.a.a.(a+b)* d) ababbaa (b+ab)*aa(a+b)* //determinismo e) abbbabbb (b*a.b)*.(b.b+a*) f) bbbaabbb ((b*.a)*+a*.b.b) g) abbbaabab a.b*.b.a*.(b.b*.a) h) baaaabb (b.a*+b.b)*.(a*.b)* Lendo as propriedades das ER s a) (a+b)*aa(a+b)* b) (a+b)aa(a+b)* c) a*aa(a+b)* d) Todas as palavras iniciadas por exatamente 2 a s. Exercícios 25) Descreva, em português, as linguagens regulares sobre {a,b} denotadas pelas seguintes ER s: a) (a+b)*a g) (a+b)(a+b)(a+b).a.b b) (a+b)*aa(a+b)* h) a*.b.(a+b) c) a(a+b)*b i) (ab)*(a+ )+(ba)*(b+ ) d) a*(a+b)b* j) b*(abb*)*(a+ ) e) (a+ba)(a+b)* k) (a+ )(ba+b)* f) (a+b)*b(a+b)(a+b) Usando = {a,b} ou = {0,1}, mostre a ER dos seguintes conjuntos: 26) todas as palavras que contém bab 27) todas as palavras iniciadas por pelo menos 1 a 28) todas as palavras iniciadas por pelo menos 3 a s 29) todas as palavras iniciadas por exatamente 1 a 30) todas as palavras iniciadas por exatamente 3 a s 31) todas as palavras iniciadas por exatamente k a s, k>=1 e k<=10 32) todas as palavras iniciadas por a s 33) todas as palavras de comprimento maior ou igual a 3 34) todas as palavras de comprimento menor ou igual a 3 35) todas as palavras sem a 36) {101,1001,10001,100001,...} 37) todas as palavras onde cada 0 é seguido de dois 1. 38) todas as palavras contendo exatamente três 0s. 39) todas as palavras com número impar de a s 40) todas as palavras que não começam por aa 41) todas as palavras sem a sequencia ab 42) todas as palavras com número igual de a s e b s? (desafio)

9 Capítulo 3 Autômatos Finitos Um autômato finito (AF) ou (FA) é um modelo matemático de um sistema com entradas e saídas discretas. O sistema pode estar em qualquer uma de suas configurações internas, chamadas de estados. Estados contém informações relevantes a respeito do passado do sistema. Cada entrada causa uma mudança de estado, chamada de transição. Exemplos 1) Autômato que modela um interruptor liga/desliga. 2) Autômato que modela um elevador. 3) Autômato que modela o reconhecimento da palavra ELSE. Modelo de Maquina de Estados Fita de entrada a b a b a b cabeça de leitura controle finito Entrada: palavra (na fita). Saída: uma indicação informando se a entrada foi ou não considerada aceitável. Mudança de estado: depende somente do estado atual e do símbolo entrada. Restrição do modelo: completa falta de memória (somente a fita, que é imutável). Definição Formal Um autômato finito 3 (AF) é uma quíntupla (Q,A,,s,F) Q: conjunto de estados A: alfabeto de entrada : função de transição (define os estados do passo seguinte) s Q: estado inicial (somente um) F Q: conjunto de estados finais 3 Os autômatos finitos foram propostos originalmente para modelar a função do cérebro humano.

10 Representação da função de transição ( - delta) Gráfica q i símbolo q j Funcionamento Estado inicial: Estados finais: dois círculos Inicial Cabeça da fita: à esquerda Controle: aponta para o estado inicial Para cada passo: Cabeça da fita: lê um símbolo e move-se para direita Controle: muda de estado conforme função programa Condições de parada Palavra da Fita Função de Transição Enquanto processa símbolos Após processar o último da fita símbolo da fita Aceita - Estado atual é final Rejeitada Indefinida para o argumento Estado atual é não-final (estado atual x símbolo lido) Criando AF s a partir de ER s 1) ab(c+d) 2) (a+b)(a+b) 3) ab + ba 4) (ba)* 5) b*(a+b)a* 6) (aaa)* 7) aaa* 8) (a+b)*aa(a+b)* 9) a(ba)* 10) a(b+a)*b 11) ba(baa)* 12) a(ba+abb) 13) a(ba+abb)* 14) (ab + ba)ab 15) (a+b)*.b(a+b)(a+b) 16) (a+ )(ba+b)* 17) b*.(a.b*.a.b*)* Problemas com Loops: uso de transição nula obrigatório. 18) a*b* 19) a + (ba)*ab + 20) ab + b* 21) a*b*a* 22) a*(ba)*b* 23) a* + b* 24) Faça o autômato finito. Então verifique se a palavra pertence ou não. a) aababaaab (a*b)* b) baaab ba* c) abaaabaa (a+b)*.a.a.(a+b)* d) ababbaa (b+ab)*aa(a+b)* //determinismo e) abbbabbb (b*a.b)*.(b.b+a*) f) bbbaabbb ((b*.a)*+a*.b.b) g) abbbaabab a.b*.b.a*.(b.b*.a) h) baaaabb (b.a*+b.b)*.(a*.b)*

11 25) Palavras que contém bab. Mais Exercícios 26) Palavras iniciadas por pelo menos 2 a s. 27) Palavras iniciadas por exatamente 2 a s. 28) Palavras onde cada 0 é seguido de dois 1. 29) Palavras contendo exatamente dois 0s. 30) Palavras com comprimento maior que 2 símbolos. 31) Palavras com comprimento menor que 4 símbolos. 32) Palavras com número par de a s 33) b*(abb*)*(a+ ) 34) L = 35) Palavras terminadas em bb. 36) L = {w w possui aa ou bb como subpalavra} 37) Palavras iniciadas com número >= 1 de a s, seguido por qualquer numero >=2 de b s, seguido por a. 38) Palavras contendo a substring abba. 39) Todos os prefixos de aba. 40) Palavras sem aa 41) Palavras que não iniciam por bb. 42) Refazer o exercício 12 com OU exclusivo (se tiver aa não pode ter bb.

12 Autômato Finito Não Determinístico (NFA) A abordagem não determinística permite, para cada par (q, x), um numero qualquer de possíveis estados seguintes em. Cada uma destas possibilidades é tentada aleatoriamente e exaustivamente para a validação de uma entrada. São 3 casos: i) (q,x) = {q i } ii) (q,x) = {q i,q j,...q z } iii) (q,x) = Representação Tabular Símbolos do alfabeto (x)... Estados (q)... Teste de Mesa Deve aceitar qq palavra válida e rejeitar qq inválida. Exemplo 1) Para o FA que aceita a.b, verificar se as seguintes palavras são aceitas: ab: (q0,a)=q1 (q1,b)=q2 q2 F sim ba: (q0,b)=? não a: (q0,a)=q1 q1 F não Fita a b b a a Estados q0 q1 q2 q2 F q0?? q0 q1 q1 F 2) Palavras que contém a seqüência de símbolos aba. a b a a a b a a b b 0 1 2 3 0 0 0 0 0 0 1 2? 0 0 0 0 0 1? 0 0 0 0 0 0 1 2 3 aceita aceita rejeita Exercícios 3) a*(a+b)b* Testar com a, aabb, e ba 4) a*b*a* Testar com aaa

13 Uso de Transições Nulas para Unificar NFA s (NFA- ) Transições podem ser usadas para se construir NFA s mais complexos, partindo-se de NFA s mais simples. Operações OBS: Ver quadro pagina 52 (livro Menezes). Exercícios 1) Construir o NFA que aceita palavras com qualquer quantidade de 0 s. 2) Seja L1 = ab e L2 = ba a) L1 + L2 b) L1. L2 c) L1* 3) Seja L1 = (a+b)*(aa+bb)(a+b)* e L2 = palavras sem aa a) L1 + L2 b) L2. L1 c) L1* 4) L = (b + a + ab * + ab * a) * 5) L = a*b*c* 6) Seja L1 = (a+b)*aa e L2 = a*b* a) L1 + L2 b) L2. L1 c) L2*

14 Eliminação de transições Algoritmo: Calcule o Fecho- para cada estado Fecho- (q) = {todos os estados onde pode levar transitivamente a partir de q} q Q, x A, seja D = (q,x). Substituir D por: se D vazio d D, d Fecho- (d) se D = vazio f Fecho- (q), se G= (f,x) vazio, g Fecho- (g), g G se G=vazio, vazio Resultado: Todos os estados são mantidos. Os estados que contiverem um elemento de F no Fecho- se tornam finais Exercícios 1) Palavras onde todos os a s antecedem todos os b s (a*b*). 2) Palavras onde todos os 0 s antecedem todos os 1 s e estes antecedem todos os 2 s (0*1*2*) 3) ab + b* 4) a*(ba)*b* 5) a*b*a* 6) 0*1*2*3* Seja L1 = (a+b)*(aa+bb)(a+b)* e 7) L1 + L2 8) L2. L1 9) L1* L2 = palavras sem aa (aula passada) 10) L = (b + a + ab * + ab * a) +

Autômato Finito Determinístico (DFA) 15 A mudança de estados segue uma regra única: para cada combinação de estado e símbolo de entrada (q Q, x A) não existe mais de uma possibilidade de escolha, sendo: totalmente determinístico (DFA-t): se existe uma e apenas uma possibilidade de escolha (completo); parcialmente determinístico (DFA-p): se existe uma ou nenhuma possibilidade de escolha. Funcionamento Condições de parada Palavra da Fita Aceita Rejeitada Função de Transição Após processar o último símbolo da fita Estado atual é final Estado atual é não-final Algoritmo para construir um DFA Método Direto Seja a linguagem cujas palavras contém a seqüência de símbolos ab em qualquer parte. i) Definir o estado inicial ii) Definir as transições mínimas iii) Completar todas as transições, uma a uma, com exemplos Exemplos 1) Palavras terminadas em ab. ={a,b}. fazer NFA e DFA e testar os 2 2) Palavras iniciadas em ab. estado morto 3) Palavras terminadas em bab. 4) Palavras com comprimento 2. 5) Palavras com comprimento par. 6) Palavras com numero par de a s. 7) Palavras iniciadas em 10. ={0,1,2}. 8) Palavras que têm abab como uma substring. 9) Palavras sem abab. 10) Palavras onde cada a é imediatamente seguido por um b. 11) Palavras onde cada a é imediatamente precedido por um b. 12) Palavras onde todos os a s antecedem todos os b s. 13) Palavras com tamanho igual ou maior a 3. 14) Palavras com no máximo dois símbolos. 15) Palavras que têm ab ou ba como substrings. 16) Palavras que têm ab e ba como substrings. 17) Palavras que não têm aa como uma substring. 18) Palavras com aa. 19) Palavras que não iniciam por bb. 20) Palavras com número de b s divisível por 3.

Transformação de NFA para DFA Método Indireto 16 Algoritmo: Seja K uma fila, q um estado, e (A,Q,,s,F) um FA insira s em K q = s faça para x como cada elemento de A insira (q, x) em K como um único estado r (e sem repetição) (q, x) = r q = próximo elemento de K até q = nulo Resultado: A = A Q = Todos os estados em K s = s F = Os estados que contiverem um elemento de F em seu nome Exemplos 1) Converter o seguinte NFA para DFA: NFA a b 1 {1} {2} 2 {1;3} {1;2} 3 {1} s = 1 F = 3 a b b a 1 2 3 a,b b DFA a b 1 1 2 2 13 12 12 13 12 13 1 12 Q = {1, 2, 12, 13} F = {13} 2) Uso do Estado MORTO a,b a 1 2 3) Converter o seguinte NFA para DFA: b NFA a b 1 {1;2} {2;3} 2 {3;4} 3 {1;2} {3} 4 {1;2;3} s = 1 F = {4}

17 Resposta: DFA a b 1 12 23 12 12 234 23 12 34 234 123 34 34 123 3 123 12 234 3 12 3 Q = {1, 3, 12, 23, 34, 123, 234} F = {234, 34} Exercícios 1) Palavras terminadas em bb. A={a,b} 2) L = {w w possui aa ou bb como subpalavra} 3) Palavras contendo a substring abba. 4) Todas as palavras que iniciam com os prefixos de aba. morto 5) Palavras sem aa morto 6) Palavras que não iniciam por bb. morto 7) (aab + aba + baa).(a+b)* 8) Todas as palavras que terminam com os sufixos de aba. 9) Palavras que começam por ab e terminam por ba.

18 Operações sobre DFA s Combinação de DFA s Produto Cartesiano de DFA s (E Lógico) Sejam A e B dois DFA s na forma (A,Q,,s,F). O produto(a,b) é um DFA onde: A = A Q = Q A X Q B s = s A X s B F = F A X F B = (f a,f b ), se f a F A e f b F B = união de dos dois estados, para cada caso OU Lógico Idem produto cartesiano, porem F = {(f a,f b ), se f a F A ou f b F B } Negação de DFA s Deve-se fazer F = Q F, ou seja, inverte-se os estados finais com os não-finais. Exercícios 1) Palavras com número par de a s E número ímpar de b s. A={a,b} 2) Repetir para OU. 3) Palavras que têm um número ímpar de a s e um número par de b s. 4) Palavras que têm ab e ba como substrings. A={a,b}. 5) Palavras que têm ab OU ba como substrings. A={a,b}. 6) Palavras que contenham 101 em qualquer parte e numero par de 1 s. 7) Palavras com 011 em qualquer parte e numero impar de 0 s. A={0,1}. 8) Palavras de comprimento par e um numero divisível por 4 de 1 s. A={0,1}. 9) Palavras contendo 110 em qualquer pedaço e possuem um numero divisível por 4 de 0 s. A={0,1}. 10) Palavras com 00 e 11 em qualquer parte da palavra. A={0,1}. 11) Palavras com 01 e 100 em qualquer parte da palavra. A={0,1}. 12) Palavras com numero impar de a s e numero de b s que seja divisível por 3. A={a,b} 13) Palavras com numero ímpar de 1 s; numero não divisível por 3 de 0 s; e comprimento par. A={0,1}.

Minimização de Estados de DFA 19 Algoritmo: 1 a Fase: Eliminar estados inalcançáveis (aqueles em que não há caminho do estado inicial para ele no diagrama de estados do autômato) 2 a Fase: Encontrar estados equivalentes (a partir de qualquer um deles, precisamente as mesmas strings conduzem o autômato à aceitação) encontrar Classes de Equivalência. Algoritmo: encontrando Classes de Equivalência Seja (A,Q,,s,F) um FA separa-se F e Q-F em duas partições s 1 e s 2 x = um elemento de A faça para cada q em Q encontra-se a partição de (q, x) se dois estados em uma partição tem resultados diferentes, devem ser criadas novas partições de forma que somente estados com o mesmo resultado fiquem na mesma partição x = próximo símbolo de A até não haver criação de novas partições para cada símbolo Resultado: Q = Cada partição criada se torna um estado s = partição que contiver s F = partições formadas com elementos de F Exemplo 1) Minimizar o seguinte DFA: DFA a b 1 2 4 2 5 3 3 2 6 4 1 5 5 5 5 6 3 5 7 6 8 8 7 3 s = 1 F = {1, 3, 7} a) Eliminação: 7 e 8 são inalcançáveis

20 Estados Alcançáveis Visitados 1 X X 2 X X 3 X X 4 X X 5 X X 6 X X 7 8 b) Equivalência: Partições iniciais: estados não-finais (s 0 ) e finais (s 1 ) s 0 :{2 4 5 6} s 1 :{1 3} a: s0 s1 s0 s1 s0 s0 Separam-se estados numa mesma partição que tiveram imagem diferentes: 2 e 5 de 4 e 6 s 0 :{2 5} s 1 :{4 6} s 2 :{1 3} b: s2 s0 s0 s0 s0 s0 s 0 :2 s 1 :5 s 2 :{4 6} s 3 :{1 3} a: s1 s1 s3 s3 s0 s0 b: s3 s1 s1 s1 s2 s2 A última tabela representa o autômato minimizado. Exercícios 2) s = 1 F = {8} DFA a b 1 2 6 2 7 8 3 7 8 4 8 7 5 3 6 6 8 7 7 7 5 8 1 8 3) s = 1 F = {4} DFA a b 1 1 4 2 1 5 3 1 6 4 1 4 5 4 2 6 3 4 4) Palavras que contém abba. (o de 8 estados) pag 17, ex 3 5) Palavras que contém ab e ba (o de 9 estados) pag 18, ex 4 6) Palavras que contém ab ou ba (o de 9 estados) pag 18, ex 5 7) Palavras que têm aa ou bb como substrings. A={a,b}.