Exercícios preparatórios para a Prova 2

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

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

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

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

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

Marcos Castilho. DInf/UFPR. 5 de abril de 2018

SCC 205 Teoria da Computação e Linguagens Formais

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

Linguagens Regulares. Prof. Daniel Oliveira

Lista de exercícios 1

Autómatos Finitos Determinísticos (AFD)

Conceitos básicos de Teoria da Computação

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

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

Expressões Regulares e Gramáticas Regulares

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

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

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

Histórico e motivação

MAC-4722 Linguagens, Autômatos e Computabilidade Lista L3

a n Sistemas de Estados Finitos AF Determinísticos

Algoritmo de Minimização de AFD

IV Gramáticas Livres de Contexto

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

Autómatos de Pilha e Linguagens Livres de Contexto

Transformações úteis para GLC: (1) eliminação de produções nulas; (2) eliminação de produções unitárias; (3) Eliminação de símbolos estéreis e

Fundamentos da Teoria da Computação

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

Expressões regulares

Fundamentos da Teoria da Computação

Fundamentos da Teoria da Computação

Linguagens Livres de Contexto

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

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

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Lema do Bombeamento. Aplicação para Linguagens Regulares e Livres de Contexto. Maria Adriana Vidigal de Lima. Abril

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

Se o símbolo inicial não fizer parte do conjunto de símbolos férteis, a linguagem gerada pela gramática é vazia.

Linguagens livres de contexto e autômatos de pilha

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

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

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

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.

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

a * Lema do Bombeamento Linguagens regulares e não-regulares

Alfabeto, Cadeias, Operações e Linguagens

Comprimento: oigual a... omaior (ou igual) a... omenor (ou igual) a... omúltiplo de...

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

Autómatos de pilha e GIC

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

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

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

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

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

Apostila 03 - Linguagens Livres de Contexto Exercícios

TEORIA DAS LINGUAGENS 3. GRAMÁTICAS INDEPENDENTES DE CONTEXTO

Linguagens Formais e Autômatos. Simplificação de Gramáticas Livre do Contexto (GLC)

Propriedades de Fecho de Linguagens Regulares.

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

Aula 7: Autômatos com Pilha

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

IBM1088 Linguagens Formais e Teoria da

O que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento

Compiladores Aula 4. Celso Olivete Júnior.

LINGUAGENS FORMAIS E AUTÔMATOS

Linguagens Formais e Autômatos

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

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

Prova 1 de INF1626 Linguagens Formais e Autômatos

LINGUAGENS FORMAIS: Teoria, Modelagem e Implementação. Material adicional, versão do dia 22 de novembro de 2017 às 17:24

Transcrição:

Exercícios preparatórios para a Prova 2 Estes exercícios foram selecionados do Cap. 3 do livro-texto da disciplina (Ramos, 2009), e têm como objetivo auxiliar na preparação para a Prova 2, programada para o dia 09/10/2013. 1. (ex.3) Considere o alfabeto Σ e uma partição A, B, C de Σ. Utilizando exclusivamente esses conjuntos, e operações sobre os mesmos, defina formalmente a linguagem: { w Σ* w = α, (α A*C ou α C*A) e α 4, ou w = β, (β BB e β ε), ou w = γ, (γ A e γ C, γ = 1), ou w = δ, δ > 3 } L = L α L β L γ L δ, onde: L α = (A * C C * A) (Σ 0 Σ 1 Σ 2 Σ 3 Σ 4 ) L β = Σ + BB L γ = Σ 1 (A C) L δ = Σ + (Σ 1 Σ 2 Σ 3 ) 2. (ex.4) Considere a expressão (a b)*(c ε)(a b)* sobre o alfabeto {a,b,c}. (a) Ela é regular? Justifique sua resposta. Ela é regular pois, por definição, temos: ε é uma expressão regular cada símbolo do alfabeto {a,b,c} é uma ER se x e y são ER, então x y também é uma ER se x e y são ER, então xy também é uma ER se x é uma ER, então (x) também é uma ER se x é uma ER, então x* também é uma ER Portanto, como a expressão acima é uma composição desses elementos, ela é uma expressão regular bem formada. (b) Dê cinco exemplos de cadeias geradas por essa expressão. c, ε, ac, cb, abab (c) Caso seja regular, apresente uma gramática linear à direita que gere essa linguagem. S as bs ε cx ax bx X ε ax bx Padrão de cadeias: (a b)*(c ε)(a b)* prefixo (a b)* é uma cadeia tão longa quanto se queira (inclusive nula) contendo a s e b s em qualquer ordem (regras para a presença do prefixo: S as bs) parte principal é uma cadeia nula ou que contenha uma única instância de c (regras para a parte principal: S ε cx e X ε; estas regras dão conta da ausência de prefixo e de sufixo) 1

sufixo (a b)* é uma cadeia tão longa quanto se queira (inclusive nula) contendo a s e b s em qualquer ordem (regras para a presença do sufixo: S ax bx e X ε ax bx) 3. (ex.5) Construa expressões regulares sobre o alfabeto {a,b,c,d} que representem as seguintes linguagens: (a) Todas as cadeias que contenham entre dois (inclusive) e quatro (inclusive) símbolos a, e somente essas cadeias; (b c d) * a (b c d) * a (b c d) * (a ε) (b c d) * (a ε) (b c d) * (b) Todas as cadeias que contenham uma quantidade ímpar, porém maior ou igual a três, de símbolos a, e somente essas cadeias. (b c d) * a ( (b c d) * a (b c d) * a (b c d) * ) + 4. (ex.18) Construa, para a gramática linear à direita apresentada a seguir: S ax by cz X bs cx d Y bz ay cs Z cy az ε (a) As expressões regulares que representam a linguagem definida por cada um de seus símbolos não-terminais; Para converter a GRD acima para uma expressão regular, vamos convertê-la primeiro para um autômato equivalente: Em seguida, podemos aplicar o utilitário de conversão do JFLAP para nos auxiliar nessa tarefa de converter o autômato na expressão regular equivalente. O algoritmo iterativo consiste, basicamente, nos seguintes passos: selecionar um estado qk que não seja inicial ou final para ser eliminado para cada dupla de estados (qi,qj), i,j k, avaliar todas as possibilidades de transições entre i e j diretas ou que passam por qk, e construir a expressão regular equivalente a essas possibilidades. 2

reconstruir o autômato sem o estado qk, e completar com as novas transições que têm como rótulo as expressões regulares criadas no passo anterior. repetir esses passos até que todos os estados não iniciais e não finais tenham sido eliminados. Para o autômato em questão, na primeira iteração poderíamos eliminar q1, analisando todas as transições possíveis entre os demais estados que passariam por q1, ou diretas entre eles: De Para Expressão q0 q0 ba*c q0 q2 a q0 q3 c ba*b q0 q4 q2 q0 b q2 q2 c q2 q3 q2 q4 d q3 q0 ca*c......... Ao final, devem sobrar apenas os estados q0 e q4 (inicial e final), com a seguinte configuração: Os rótulos da configuração final podem ser traduzidos na expressão abaixo: (ba*c+ac*b+(c+ba*b)(a+ca*b)*ca*c)*(ac*d+(c+ba*b)(a+ca*b)*) ou, substituindo o + por na notação: (ba*c ac*b (c ba*b)(a ca*b)*ca*c)*(ac*d (c ba*b)(a ca*b)*) (b) Uma gramática linear à esquerda equivalente. Neste item, o objetivo é encontrar a GRD rev, ou seja, a gramática linear à direita que gera a linguagem reversa da linguagem em questão. A partir dela, podemos aplicar as regras de transformação de uma GRD em GRE para, ao final, obter a GRE da linguagem da questão. 3

Uma abordagem poderia ser inverter a expressão regular obtida no item anterior, para obter a expressão referente a L rev : ((ba*c+a)*(ba*b+c)+dc*a)(ca*c(ba*c+a)*(ba*b+c)+bc*a+ca*b)* A partir dela, construir o autômato A rev, para ao final gerar a gramática GDR rev. 5. (ex.21) Considere Σ = {a,b,c} e L i, i=1,2,3, as linguagens formadas por todas as cadeias passíveis de serem construídas sobre Σ, de tal forma que as seguintes regras sejam observadas respectivamente: (a) L 1 : as sentenças começam com a, terminam com dois c's consecutivos e apresentam um número par de símbolos b; a ((a c) * b (a c) * b (a c) * ) * cc (b) L 2 : as sentenças começam com b e apresentam um número total de símbolos que é ímpar; b ((a b c) (a b c)) * (c) L 3 : as sentenças apresentam qualquer quantidade de símbolos, mas não contêm dois (ou mais) símbolos c adjacentes. ((a b) (c ε) (a b)) * Construa expressões regulares que representem cada uma dessas linguagens. 6. (ex.37) Considere as linguagens definidas pelas expressões regulares abaixo: (a) (ab*c*)* (a*b*c)+ (b) aaa(b c)* (b c)*aaa (c) a*b ab* Para cada uma dessas linguagens, obtenha: (a) Um autômato finito qualquer que a reconheça; (b) Um autômato finito que a reconheça e que não contenha não-determinismos, transições em vazio, estados inacessíveis nem estados inúteis. (a) (ab*c*)* (a*b*c)+ Vamos construir o autômato finito para a primeira parte da expressão - (ab*c*)* : Agora, para a segunda parte da expressão - (a*b*c)+ : 4

Juntando as duas partes num só autômato, temos: Eliminando transições vazias: Eliminando o não-determinismo: Q = {q0,qa1,qa2,qa3,qb0,qb1qb2} 5

F = {q0,qa1,qa2,qa3,qb2} q0,a,{qa1,qb0} q0,b,qb1 q0,c,qb2 qa1,a,qa1 qa1,b,qa2 qa1,c,qa3 qa2,a,qa1 qa2,b,qa2 qa3,a,qa1 qa3,c,qa3 qb0,a,qb0 qb0,b,qb1 qb0,c,qb2 qb1,b,qb1 qb1,c,qb2 qb2,a,qb0 qb2,b,qb1 qb2,c,qb2 Fazendo qn1 = {qa1,qb0}, substituímos suas ocorrências e atualizamos as transições: Q = {q0,qa1,qa2,qa3,qb0,qb1qb2,qn1} F = {q0,qa1,qa2,qa3,qb2,qn1} q0,b,qb1 q0,c,qb2 qa1,a,qa1 qa1,b,qa2 qa1,c,qa3 qa2,a,qa1 qa2,b,qa2 qa3,a,qa1 qa3,c,qa3 qb0,a,qb0 qb0,b,qb1 qb0,c,qb2 qb1,b,qb1 qb1,c,qb2 qb2,a,qb0 qb2,b,qb1 qb2,c,qb2 qn1,a,qn1 qn1,b,{qa2 qb1} qn1,c,{qa3 qb2} 6

Fazendo qn2 = {qa2 qb1}, substituímos suas ocorrências e atualizamos as transições: Q = {q0,qa1,qa2,qa3,qb0,qb1qb2,qn1} F = {q0,qa1,qa2,qa3,qb2,qn1,qn2} q0,b,qb1 q0,c,qb2 qa1,a,qa1 qa1,b,qa2 qa1,c,qa3 qa2,a,qa1 qa2,b,qa2 qa3,a,qa1 qa3,c,qa3 qb0,a,qb0 qb0,b,qb1 qb0,c,qb2 qb1,b,qb1 qb1,c,qb2 qb2,a,qb0 qb2,b,qb1 qb2,c,qb2 qn1,a,qn1 qn1,b,qn2 qn1,c,{qa3 qb2} qn2,a,qa1 qn2,b,qn2 qn2,c, qb2 Fazendo qn3 = {qa3 qb2}, substituímos suas ocorrências e atualizamos as transições: Q = {q0,qa1,qa2,qa3,qb0,qb1qb2,qn1,qn2,qn3} F = {q0,qa1,qa2,qa3,qb2,qn1,qn2,qn3} q0,b,qb1 q0,c,qb2 qa1,a,qa1 qa1,b,qa2 qa1,c,qa3 qa2,a,qa1 qa2,b,qa2 qa3,a,qa1 qa3,c,qa3 qb0,a,qb0 7

qb0,b,qb1 qb0,c,qb2 qb1,b,qb1 qb1,c,qb2 qb2,a,qb0 qb2,b,qb1 qb2,c,qb2 qn1,a,qn1 qn1,b,qn2 qn1,c,qn3 qn2,a,qa1 qn2,b,qn2 qn2,c, qb2 qn3,a,qn1 qn3,b,qb1 qn3,c,qn3 Representação do DFA: 7. (ex.38) Construa um autômato finito determinístico equivalente ao autômato cuja função de transição é: 8

δ(q0,a) = {q1,q2}, δ(q1,b) = {q1q3}, δ(q2,b) = {q1}, δ(q2,c) = {q3}, δ(q3,d) = {q3}, com F = {q3}. Passo 1: copiar as transições originais q0, a, [q1 q2] -> novo estado qn1 = [q1 q2] q1, b, [q1 q3] q2, b, q1 q2, c, q3 q3, d, q3 Passo 2: substituir as ocorrências de [q1 q2] por qn1 e, para cada estado de qn1, calculando as novas transições: q0, a, qn1 q1, b, [q1 q3] q2, b, q1 q2, c, q3 q3, d, q3 qn1, b, [q1 q3] qn1, c, q3 (não há transições com a ou d, pois não havia nenhuma a partir de q1 ou q2) Passo 3: é possível eliminar q2, pois não é destino de nenhuma transição q0, a, qn1 q1, b, [q1 q3] q3, d, q3 qn1, b, [q1 q3] qn1, c, q3 Passo 4: substituir [q1 q3] por qn2, e incluir as transições correspondentes a q1 e q3. Como q3 é final, qn2 também deve ser final. Além disso, posso eliminar q1: q0, a, qn1 q1, b, qn2 q3, d, q3 qn1, b, qn2 qn1, c, q3 qn2, b, qn2 qn2, d, q3 Configuração final do autômato: 8. (ex.39) Construa um autômato finito determinístico e sem transições em vazio que seja equivalente ao autômato cuja função de transição é: 9

δ(q0,a) = {q0}, δ(q0, ε) = {q1}, δ(q1, b) = {q1}, δ(q1, ε) = {q2}, δ(q2, a) = {q2}, δ(q2, b) = {q2}, δ(q2, ε) = {q3}, com F={q3}. Autômato inicial: Eliminação de transições-ε: Eliminação de não-determinismo: Q = {q0, q1, q2} F = {q0,q1,q2} q0,a,[q0 q2] q0,b,[q1 q2] q1,b,q1 q2,q,q2 q2,b,q2 Fazendo qn1=[q0 q2]: F={q0,q1,q2,qn1} q0,b,[q1 q2] q1,b,q1 q2,a,q2 q2,b,q2 qn1,a,qn1 qn1,b,[q1 q2] Fazendo qn2=[q1 q2]: F={q0,q1,q2,qn1,qn2} q0,b,qn2 10

q1,b,q1 q2,a,q2 q2,b,q2 qn1,a,qn1 qn1,b,qn2 qn2,a,q2 qn2,b,qn2 q1 pode ser eliminado: F={q0,q1,q2,qn1,qn2} q0,b,qn2 q2,a,q2 q2,b,q2 qn1,a,qn1 qn1,b,qn2 qn2,a,q2 an2,b,qn2 Resultado para o DFA: 9. (ex.41) Obtenha autômatos finitos determinísticos e isentos de transições em vazio que reconheçam cada uma das seguintes linguagens: (a) (a*b*(a ac*))* Exemplo de autômato: 11

Eliminação de transições-ε: Eliminação de transições não-determinísticas: q0,a,[q0q2] q0,b,q1 q1,b,q1 q2,a,[q0q2] q2,b,q1 q2,c,q2 Fazendo qn1=[q0q2] q0,b,q1, q1,b,q1 q2,a,qn1 q2,b,q1 q2,c,q2 qn1,a,qn1 qn1,b,q1 qn1,c,q2 F={q0,q2,qn1} DFA: 12

(b) a*b* b*a* 10. (ex.56) Considere a linguagem (0*11*(2 3))+, sobre o alfabeto Σ = {0,1,2,3}: (a) Construa um autômato finito qualquer que reconheça essa linguagem. Exemplo de autômato: (b) Mostre a sequência de movimentações que conduzem esse autômato finito à aceitação da cadeia 01200113. (q0,01200113) (q0, 1200113) (q1, 200113) (q2, 00113) (q0, 00113) (q0, 0113) (q0, 113) (q1, 13) (q1, 3) (q2, ) 11. (ex.84) Sejam M 1, M 2 e M 3 autômatos finitos que reconhecem, respectivamente, os conjuntos regulares α, β e γ. Indique, cuidadosamente, todos os passos que devem ser seguidos a fim de se obter um novo autômato M 4, que reconheça o conjunto (α βγ)*. Criar um estado inicial q0 para M4 Copiar todos os estados e transições de M1, M2 e M3 para M4 Todos os estados copiados dos 3 autômatos perdem seu status de iniciais ou finais Criar uma transição com ε de q0 para o estado inicial de M1 e outra análoga para o estado inicial de M2 Criar uma transição com ε de todos os estados que eram finais em M2 para o antigo estado inicial de M3 Criar um estado final qf para M4 Criar uma transição com ε para qf a partir de todos os estados que eram finais de M1 e M3 Criar uma transição com ε de qf para q0 12. (ex.87) Considere a linguagem L {a,b,c}* tal que w L se e somente se w contém as subcadeias aaa e bbb: 13

(a) Obtenha uma gramática que gere essa linguagem; (b) Obtenha uma expressão regular que gere essa linguagem; (c) Obtenha um autômato finito que reconheça essa linguagem. Invertendo um pouco a ordem do exercício para facilitar a sua elaboração : (b) Devemos considerar dois caso: o caso em que aaa vem antes de bbb, e vice-versa. (a b c) * ((aaa (a b c) * bbb) (bbb (a b c) * aaa)) (a b c) * (c) autômato finito: (a) Supondo que os não terminais da gramática sejam Qx, para ficar fácil de associarmos as regras abaixo com o desenho do autômato: Q 0 aq 1 bq 7 cq 0 Q 1 aq 2 bq 7 cq 0 Q 2 aq 3 bq 7 cq 0 Q 3 aq 3 bq 4 cq 3... 13. (ex.89) Construa um autômato finito mínimo que aceite a linguagem gerada pela expressão regular ab*abb*abbb* (a* b*a)bbb*, definida sobre o alfabeto {a,b}. 14. (ex.105) Existe algum autômato finito com 3 estados que aceite a linguagem (aa)*a(aaa)*? Prove a sua resposta. Possível autômato para a linguagem: 14

Eliminação de não-determinismo: Q = {q0,q1,q2,q3,q4,q5,q6} F = {q3,q6} q0,a,[q1q3] q2,a,[q1q3] q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 Criando estado qn1=[q1q3] para eliminar o não determinismo: Q = {q0,q1,q2,q3,q4,q5,q6,qn1} F = {q3,q6,qn1} q2,a, qn1 q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 qn1,a,[q2 q4] Fazendo qn2=[q2 q4]: Q = {q0,q1,q2,q3,q4,q5,q6,qn1,qn2} F = {q3,q6,qn1} q2,a,qn1 q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 qn1,a,qn2 qn2,a,[q1 q3 q5] (expandir qn1 para seus componentes) Fazendo qn3=[q1 q3 q5]: Q = {q0,q1,q2,q3,q4,q5,q6,qn1,qn2,qn3} F = {q3,q6,qn1,qn3} 15

q2,a,qn1 q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 qn1,a,qn2 qn2,a,qn3 qn3,a,[q2 q4 q6] Fazendo qn4=[q2 q4 q6]: Q = {q0,q1,q2,q3,q4,q5,q6,qn1,qn2,qn3,qn4} F = {q3,q6,qn1,qn3,qn4} q2,a,qn1 q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 qn1,a,qn2 qn2,a,qn3 qn3,a,qn4 qn4,a,[q1 q3 q4 q5] Fazendo qn5=[q1 q3 q4 q5]: Q = {q0,q1,q2,q3,q4,q5,q6,qn1,qn2,qn3,qn4,qn5} F = {q3,q6,qn1,qn3,qn4,qn5} q2,a,qn1 q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 qn1,a,qn2 qn2,a,qn3 qn3,a,qn4 qn4,a,qn5 qn5,a,[q2 q4 q5 q6] Fazendo qn6=[q2 q4 q5 q6]: Q = {q0,q1,q2,q3,q4,q5,q6,qn1,qn2,qn3,qn4,qn5,qn6} F = {q3,q6,qn1,qn3, qn4,qn5,qn6} 16

q2,a,qn1 q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 qn1,a,qn2 qn2,a,qn3 qn3,a,qn4 qn4,a,qn5 qn5,a,qn6 qn6,a,[q1 q3 q4 q5 q6] Fazendo qn7=[q1 q3 q4 q5 q6]: Q = {q0,q1,q2,q3,q4,q5,q6,qn1,qn2,qn3,qn4,qn5,qn6,qn7} F = {q3,q6,qn1,qn3, qn4,qn5,qn6,qn7} q2,a,qn1 q3,a,q4 q4,a,q5 q5,a,q6 q6,a,q4 qn1,a,qn2 qn2,a,qn3 qn3,a,qn4 qn4,a,qn5 qn5,a,qn6 qn6,a,qn7 qn7,a,[q2 q4 q5 q6] = qn6 Analisando a função de transição final, podemos facilmente verificar que os estados q1,q2,q3,q4,q5 e q6 não são acessíveis a partir de q0. Portanto, podem ser eliminados: Q = {q0, qn1,qn2,qn3,qn4,qn5,qn6,qn7} F = {qn1,qn3, qn4,qn5,qn6,qn7} qn1,a,qn2 qn2,a,qn3 qn3,a,qn4 qn4,a,qn5 qn5,a,qn6 qn6,a,qn7 17

qn7,a, qn6 Minimizando o autômato: Estados não-finais Finais (0,2) (1,3,4,5,6,7) Expandindo (0,2) com o terminal a, o grupo se mantém o mesmo, sem divisões. Expandindo o grupo (1,3,4,5,6,7), temos a subdivisão em dois grupos (1) (3,4,5,6,7). Agora, o grupo (0,2) pode ser dividido em (0)(2). Portanto, renomeando os estados temos: q0 = (0) q1 = (1) q2 = (2) q3 = (3,4,5,6,7) Q = {q0,q1,q2,q3} F = {q1,q3} q0,a,q1 q2,a,q3 q3,a,q3 Autômato final minimizado: Portanto, a resposta é: NÃO existe um autômato de 3 estados que aceite a linguagem. 15. (ex.128) Por que o "Pumping Lemma" das linguagens regulares não é necessariamente válido para cadeias de comprimento menor que n, onde n é o número de estados do autômato finito mínimo que aceita essa linguagem? Seja L uma linguagem regular, e w uma cadeia L tal que w n (n = número de estados do autômato que reconhece L). Para as cadeias w com tamanho menor que n, não é possível afirmar que a cadeia está associada a um ciclo no autômato, pois é possível que o reconhecimento de w ocorra sem ciclos (pois não usou todos os estados do autômato). Com isso, o lema do bombeamento não vale para este tipo de cadeia. 16. (ex.135) Considere a linguagem gerada pela gramática ( {S,a,b}, {a,b}, {SaSbb aasb ε}, S ) : 18

(a) Descreva de maneira informal, porém clara e precisa, a linguagem gerada por essa gramática; Seja L a linguagem gerada por essa gramática. L é composta pela cadeia vazia e cadeias do tipo a p b q onde p/2 <= q <= 2p, com (p+q) múltiplo de 3. (b) Prove que essa linguagem não é regular. Supondo que L seja regular, seja n o número de estados do autômato hipotético que a reconhece. Para provar que o lema do bombeamento não vale para L, temos que mostrar que existe pelo menos uma cadeia w (w L, w n) tal que, para toda maneira de dividir w em 3 subcadeias xyz, xy n, e y 1, existe pelo menos um i 0 tal que xy i z L. Portanto, seja w = a n b 2n. Temos que w L (3n é multiplo de 3, e q=2p), e w n. Ao dividir w em xyz de forma que xy n e y 1, temos que xy é formada apenas por a's. Para qualquer tamanho de y entre 1 e n, sempre será possível escolher um i tal que xy i z forme uma cadeia com uma quantidade de a's muito superior a 2q, o que contraria a regra descrita no item a. Portanto, L não é regular. 17. (ex.136) Prove que a linguagem {w {a,b,c,d}*, tais que w a + w b = w c + w d } não é regular. Supondo que essa linguagem L seja regular, seja n o número de estados do AFD que a reconhece. Seja a cadeia w = a n/2 b n/2 c n/2 d n/2. Pela definição da linguagem, w L. Além disso, w > n. Para dividirmos w em três partes xyz de modo que xy n e y 1, xy irá conter apenas a's e b's. Dessa forma, para qualquer escolha de xyz que atenda a esses requisitos, o bombeamento da subcadeia y irá alterar a quantidade de a's e b's na cadeia resultante, enquanto a quantidade de c's e d's se mantém constante. Com isso, a igualdade do enunciado não poderá ser mantida. Assim, não vale xy i z L, para todo i 0. Portanto, a cadeia escolhida é um contra-exemplo que demonstra que o lema do bombeamento não se aplica e, portanto, L não é regular. 18. (ex.140) O autômato M = ({q 0,q 1,q 2 }, {a,b,c}, {(q 0,a) q 0, (q 0,b) q 1, (q 1,c) q 2, (q 2,c) q 2, (q 2,a) q 0 }, q 0, {q 0,q 2 }) reconhece uma linguagem infinita e é tal que a L(M). Essa sentença pode ser dividida em três partes x=ε, y=a, z=ε, de forma que as cadeias xy i z, i 0, também pertencem a L. Justifique esse fato, uma vez que a sentença escolhida possui comprimento ( a =1) inferior ao mínimo exigido pelo Pumping Lemma para as linguagens regulares (no caso do autômato apresentado, n=3). Autômato do enunciado: 19

Esse fato ocorre porque o loop que permite o bombeamento ocorre logo no estado inicial, que também é final. Portanto, como a* L, a cadeia 'a' pode ser bombeada, mesmo tendo um comprimento menor que a quantidade de estados do autômato. 20