Lista n 0 1 de Exercícios de Teoria da Computação

Tamanho: px
Começar a partir da página:

Download "Lista n 0 1 de Exercícios de Teoria da Computação"

Transcrição

1 Lista n 0 1 de Exercícios de Teoria da Computação UFU-Curso de Bacharelado em Ciência da Computação período Profa. Sandra de Amo Exercícios de Revisão : Autômatos e Gramáticas 1. Mostre que a linguagem L = conjunto dos strings com um número impar de 1 s e um número impar de zeros é uma linguagem regular. Para isto você deve fornecer um autômato finito M tal que a linguagem L(M) reconhecida por este autômato é a linguagem L. 2. Mostre que a linguagem L = {0 n 1 n n 0} não é regular. Use o lema do bombeamento para linguagens regulares. 3. Mostre que a linguagem L = {0 n 1 n n 0} é livre do contexto fornecendo um autômato de pilha M tal que a linguagem L(M) reconhecida por M por pilha vazia é L. 4. Seja L a linguagem constituida de strings tais que o número de 1 s é o dobro do número de 0 s. Mostre que esta linguagem é livre do contexto, exibindo uma gramática livre do contexto G tal que a linguagem L(G) gerada por G é L. 5. Transforme a gramática livre do contexto encontrada acima numa autômato de pilha equivalente. 6. Mostre que a linguagem L = {w#w w {0, 1} } não é livre do contexto. Use o lema do bombeamento para linguagens livres do contexto. Exercícios gerais sobre teoremas, definições, provas Nos exercícios a seguir, utilizaremos as seguintes definições : Dois conjuntos A e B são ditos equipotentes se existe uma função bijetora f : A B. Seja A e B dois conjuntos infinitos. Dizemos A e B têm a mesma cardinalidade se A e B são equipotentes. 1. Encontre o erro na seguinte demonstração de que 2 = 1. Considere a equação a = b. Multiplique ambos os lados por a e obtenha a 2 = ab. Subtraia b 2 dos dois lados e obtenha a 2 b 2 = ab b 2. Fatorize os dois lados e obtenha (a + b)(a b) = (a b)b. Divida os dois lados por (a b) e obtenha (a + b) = b. Como esta equação se verifica para qualquer a e b, faça a = 1 e b = 1. Logo, obtemos 2 = 1. C.Q.D. 2. Encontre o erro na seguinte demonstração de que todo número de Fibonacci é par : Para todo n 0, o número de Fibonacci F (n) é par. Base da Indução : verdadeiro para n = 0, já que F (0) = 0 que é par. Passo da Indução : Hipótese de indução : F (k) é verdadeiro para todo k, 0 k n. Mostremos que F (n + 1) é verdadeiro. Ora, por definição : F (n + 1) = F (n) + F (n 1). Por hipótese de indução, F (n) e F (n + 1) são pares. Logo, F (n + 1) é par. Como queriamos demonstrar. 1

2 3. Escreva uma descrição formal do seguinte grafo : Entre as frases abaixo, diga quais são teoremas e quais são definições : (a) A cardinalidade de um conjunto finito A é o número de elementos do conjunto. (b) Sejam A e B dois conjuntos finitos tais que a cardinalidade de A é inferior à cardinalidade de B. Então existe uma função sobrejetora f : B A. (c) O grau de um polinômio é o maior n tal que existe um termo de grau n no polinômio. (d) Um termo de um polinômio é uma expressão do tipo cx k 1 1 xk xk n n, onde c é uma constante e x 1,..., x n são variáveis. O grau do termo cx k 1 1 xk xkn n é igual ao máximo dos números k 1,..., k n. (e) Sejam A e B dois conjuntos finitos tais que a cardinalidade de A é inferior à cardinalidade de B. Então não existe uma função injetora f : B A. (f) Para todo número natural n > 0, a soma dos n primeiros números naturais é igual a n(n+1) Considere as frases do item anterior que são teoremas. Para cada uma delas, decida qual tipo de demonstração seria mais adequada : por construção (exibindo ou construindo um determinado objeto), por absurdo, por indução. Uma vez decidido o tipo de demonstração adequada, exiba a demonstração. 6. Vimos em aula que nem sempre é evidente como utilizar o Princípio da Indução para provar teoremas. A dificuldade, muitas vezes, consiste em identificar no enunciado do teorema, o número n sobre o qual será feita a indução. Alguns problemas que apresentam esta particularidade são problemas que afirmam que um determinado sistema nunca vai atingir um determinado estado ou configuração. Como mostrar isto por indução? O que representa o número n sobre o qual é feita a indução? Exemplo de um tal problema é o Problema do Templo da Eternidade que vimos em aula : Um monge entra no Templo da Eternidade onde lhe é dado uma tijela contendo 15 bolinhas vermelhas e 12 bolinhas verdes. Ao monge é explicado que a cada soada do gongo do templo, ele pode realizar uma e somente uma das seguintes ações : retirar 3 bolinhas vermelhas da tijela e colocar 2 verdes dentro da tijela. Por exemplo, se houver na tijela 15 vermelhas e 12 verdes, após esta ação haverá 12 vermelhas e 14 verdes na tijela. trocar as bolinhas vermelhas por um numero idêntico de verdes e trocar as verdes por um número idêntico de vermelhas. Por exemplo, se houver na tijela 15 vermelhas e 12 verdes, após esta ação haverá 15 verdes e 12 vermelhas na tijela. 2

3 Também é explicado ao monge que ele poderá deixar o templo somente quando houver apenas 5 bolinhas vermelhas e 5 verdes na tijela. O problema consiste em mostrar que o monge nunca poderá deixar o Templo da Eternidade. Trata-se de um problema onde é preciso mostrar que uma determinada situação X nunca acontece, isto é, que nunca será possivel ter 5 bolinhas vermelhas e 5 verdes na tijela. A chave para provar que um sistema nunca atinge um determinado estado é escolher a boa hipótese de indução. Esta hipótese deve ser uma determinada propriedade que : (1) se verifica no estado inicial do sistema, (2) é invariante pelo sistema, isto é, se for válida antes de um movimento do sistema, será válida depois do movimento e (3) não se verifica na situação X. No caso do problema do templo da eternidade esta propriedade está relacionada com a diferença entre o número de pedras vermelhas R(n) e o número de pedras verdes G(n) num determinado instante n quando toca o gongo pela n-ésima vez (a indução é feita sobre o número de gongadas ). (a) Tente encontrar uma propriedade verificada pela diferença R(n) G(n). (b) Mostre que esta propriedade permance invariante pelas ações tomadas pelo monge a cada gongada. (c) Mostre que a situação final de liberdade (5 vermelhas e 5 verdes) não verifica a propriedade. 7. Um outro problema que se encaixa neste esquema é o problema do Puzzle do número 9 : Os números 1,2,...,9 podem ser dispostos numa matriz 3 3 da seguinte maneira : Pode-se rearranjar estes números fazendo-se uma rotação numa linha ou numa coluna para a direita ou esquerda. Por exemplo, rodando-se a primeira linha para a direita obtemos : Analogamente, podemos rodar a primeira coluna para baixo : Mostre que é impossivel chegar na configuração à direita abaixo, utilizando somente rotações de linhas e colunas, partindo da configuração inicial à esquerda abaixo ?? Consideremos o seguintes teorema : Para todo n inteiro par > 4, existe um grafo 3-regular com n vértices. Fizemos em sala de aula uma prova deste teorema, onde não utilizamos o princípio da indução. Lembramos que um grafo é dito k-regular se todo vértice tem grau k. 3

4 A demonstração que discutimos em aula consiste em construir, para cada n, um grafo 3-regular com n vértices. Tal construção é totalmente independente da construção feita para os casos anteriores (< n). Danilo sugeriu uma outra prova, por indução, do mesmo resultado. O objetivo deste exercicio é fazer a prova sugerida pelo Danilo. Para isto, você precisa provar o seguinte : Todo número par n 8 pode ser escrito como soma de alguns 4 e alguns 6. Isto é, n = k k 2 6. Demonstre este resultado utilizando o Princípio de Indução Fraca. Utilizando o resultado acima, demonstrar o teorema acima sobre os grafos 3-regulares. 9. Mostre por indução que todo número natural > 8 é a soma de alguns 3 e alguns 5, isto é, n = k k Mostre que, para todo n 0 : (n + 1) 2 (n + 2) 2 (n + 3) 2 + (n + 4) 2 = 4 Sugestão : esta prova pode ser feita sem utilizar o princípio da indução. 11. Mostre por indução sobre n que, para todo n 0 é possível escrever n como : n = ɛ ɛ ɛ ɛ k k 2 para algum k, e onde os ɛ i valem 1 ou -1. Por exemplo, 1 = 1 2, 3 = Sugestão : use indução fraca e o exercício do item anterior. 12. O objetivo deste exercício é mostrar que o conjunto R dos números reais não é enumerável. (a) Mostre que o conjunto R e o intervalo (0,1) são equipotentes, isto é, existe uma função bijetora f : R (0,1). (b) Mostre que (0,1) não é enumerável. Sugestão : faça a prova por absurdo. Suponha que (0,1) é enumerável. Então existe uma enumeração r 0, r 1,..., de todos os números reais do intervalo (0,1). Cada número destes é uma sequência de números inteiros (suas casas decimais). Veja os números de (0,1) como uma matriz infinita 2 por 2. A posição (i, j) da matriz contém a j-ésima casa decimal do i-ésimo número de (0,1). Utilize o argumento da diagonalização para mostrar a existência de um número real entre 0 e 1 que com certeza difere de todos os números r 0, r 1, r 2,... (c) Conclua que R não é enumerável. O exercício precedente permite concluir que a cardinalidade do conjunto dos números reais é maior do que a cardinalidade dos números racionais ou dos números inteiros (lembre-se que já mostramos em sala de aula que os racionais e os inteiros são equipotentes, isto é, têm a mesma cardinalidade - pois existe uma função bijetora entre eles). O segundo problema da série de 23 problemas propostos por David Hilbert no congresso de 1900 foi a chamada Hipótese do Continuum, problema originalmente proposto por George Cantor, a saber : o próximo cardinal (isto é, o próximo infinito) depois do cardinal dos números naturais (o cardinal dos números naturais é o cardinal dito enumerável, denotado por ℵ 0 ) é o cardinal dos números reais. Isto é, não existe nenhum infinito entre o infinito dos naturais e o infinito dos números reais. Ou mais precisamente : o cardinal dos números reais (chamado de continuum) é ℵ 1, o cardinal logo em seguida de ℵ 0. 4

5 13. Mostramos em aula, utilizando a técnica da diagonalização, que o conjunto P(N) das partes de N(conjunto de todos os subconjuntos de N) não é enumerável. Mostre que o conjunto P fin (N) (conjunto das partes FINITAS dos números naturais) é enumerável. Os elementos de P fin (N) são os subconjuntos FINITOS de N. 14. O resultado que mostramos em sala de aula afirmando que o conjunto P(N) não é enumerável nos garante que não existe função bijetora entre N e P(N). O objetivo deste exercicio é mostrar que este resultado pode ser generalizado para qualquer conjunto X. Seja X um conjunto qualquer e P(X) o conjunto das partes de X (isto é, o conjunto de todos os subconjuntos de X). Mostre que X e P(X) não são equipotentes. Mostre que existe uma função injetora de X em P(X). Isto mostra que o cardinal de X é estritamente menor do que o cardinal de P(X), para qualquer conjunto X. Assim, o infinito dos números reais R é menor que o infinito do conjunto P(R). Veja, que desta maneira podemos construir uma infinidade de infinitos, começando pelo menorzinho deles, o ℵ 0, o infinito dos números naturais. 15. O Princípio da casa do pombo é uma terceira técnica de prova que diz o seguinte : Se A e B são dois conjuntos finitos tais que A > B, então não existe função injetora f : A B. Isto é, se dispomos de m casas de pombo e n pombos (onde n = A e m = B ) que devem ser alojados nas casas, então pelo menos duas casas vão acolher dois pombos. Aplique este princípio para demonstrar os seguintes resultados a respeito de autômatos e gramáticas : Seja A um autômato finito com n estados e seja z = a 1 a 2...a m uma palavra aceita pelo autômato, com comprimento m > n. Mostre que necessáriamente o grafo representando o autômato contém um ciclo. Seja G uma gramática livre do contexto na forma normal de Chomsky (isto é, suas regras são do tipo A a ou A BC, onde a é terminal, e A, B, C são símbolos de variável). Suponha que G possua k variáveis. Seja z uma palavra gerada por G com comprimento > 2 k 1. Mostre que necessariamente, existe um caminho na árvore de derivação da palavra z contendo dois nós etiquetados pela mesma variável. Exercícios sobre descrição formal de Máquinas de Turing 16. Responda às seguintes perguntas, justificando sua resposta : (a) O alfabeto da fita Γ pode ser o mesmo que o alfabeto de input Σ? (b) Após dois passos consecutivos, é possível que o ponteiro se encontre na mesma posição da fita? (c) Uma máquina de Turing pode ter um único estado? 17. Dê a descrição formal de uma máquina de Turing que reconheça a linguagem L = {w2w R, onde w é uma palavra de 0 s e 1 s e w R é a palavra reversa de w}. Esta máquina é capaz de decidir a linguagem L? 18. Considere o input w = e a máquina de Turing do exercício precedente. Dê a sequência de descrições instantâneas (configurações) deste o instante inicial até o momento em que a máquina pára. 19. Dê a descrição formal de uma máquina de Turing que decida a linguagem L = {a i b j c i+j, onde i, j são inteiros 1}. Dê a descrição formal de uma máquina de Turing que reconheça a linguagem L = {a i b j c i+j, onde i, j são inteiros 1}, mas que não a decida. 5

6 20. Dê a descrição formal de uma máquina de Turing que decida a linguagem L do exercicio 6. 6