Lista de Exercícios 6: Soluções Funções

Documentos relacionados
Lista de Exercícios 6 Funções

Aula 02 Notação Assintótica p. 4. Usodanotação O. Notação O. Notação O, Ω, ΘeExemplos. Intuitivamente... O(f(n)) funções que não crescem mais

ANÁLISE DE ALGORITMOS: PARTE 3

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Medida do Tempo de Execução de um Programa

Complexidade Assintótica

Aula 1. Teoria da Computação III

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Análise de algoritmos

11º ano - Indução matemática

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

André Vignatti DINF- UFPR

BCC202 - Estrutura de Dados I

Análise de Algoritmos

Análise de Algoritmos

Estruturas de Dados 2

Introdução à Análise Algoritmos

Análise de algoritmos. Parte I

LISTA DE EXERCÍCIOS 1

Projeto e Análise de Algoritmos

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II

PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão Período: Horário: 4as-feiras de 13 às 16 horas - Sala 520L

Análise de Algoritmos

Funções. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Funções 1

André Vignatti DINF- UFPR

Complexidade de Algoritmos

PCC104 - Projeto e Análise de Algoritmos

Provas de Análise Real - Noturno - 3MAT003

BCC202 - Estrutura de Dados I

LISTA DE EXERCÍCIOS 1

1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes

1 a Lista de Exercícios

Projeto e Análise de Algoritmos

Teoria da Computação. Aula 3 Comportamento Assintótico 5COP096. Aula 3 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Comportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (

Elementos de Análise Assintótica

MESTRADO PROFISSIONAL EM MATEMÁTICA EM REDE NACIONAL. ENQ Gabarito

Aula 06: Análise matemática de algoritmos recursivos

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

Quantidade de memória necessária

BCC202 - Estrutura de Dados I

Questão 3. a) (1,5 pontos). Defina i) conjunto aberto, ii) conjunto

MAT 111 Cálculo Diferencial e Integral I. Prova 2 14 de Junho de 2012

MAT 111 Cálculo Diferencial e Integral I. Prova 2 14 de Junho de 2012

Análise de Algoritmos e Estruturas de Dados

MAT 0143 : Cálculo para Ciências Biológicas

Indução Matemática. George Darmiton da Cunha Cavalcanti CIn - UFPE

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Resumo das aulas dos dias 4 e 11 de abril e exercícios sugeridos

Relações de Recorrência

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1

A = B, isto é, todo elemento de A é também um elemento de B e todo elemento de B é também um elemento de A, ou usando o item anterior, A B e B A.

PARTE I EQUAÇÕES DE UMA VARIÁVEL REAL

Lista de Exercícios de Métodos Numéricos

Exercícios de Cálculo p. Informática, Ex 1-1 Nas alíneas seguintes use os termos inteiro, racional, irracional, para classificar

Aulas 5 e 6 / 28 e 30 de março

Rascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 11 de junho de 2017

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Projeto e Análise de Algoritmos

Melhores momentos AULA 1. Algoritmos p.38/86

Fórmulas de Taylor. Notas Complementares ao Curso. MAT Cálculo para Ciências Biológicas - Farmácia Noturno - 1o. semestre de 2006.

Classes, Herança e Interfaces

MAT 111 Cálculo Diferencial e Integral I. Prova 2 5 de junho de 2014

MAT 111 Cálculo Diferencial e Integral I. Prova 2 5 de junho de 2014

CONTINUIDADE DE FUNÇÕES REAIS DE UMA VARIÁVEL

Modelagem Computacional. Parte 2 2

ANÁLISE DE ALGORITMOS

Matemática Básica EXERCÍCIOS OBRIGATÓRIOS. Dê um contraexemplo para cada sentença falsa.

Cálculo Diferencial e Integral I

Apresente todos os cálculos e justificações relevantes. a) Escreva A e B como intervalos ou união de intervalos e mostre que C = { 1} [1, 3].

COMPLEXIDADE DE ALGORITMOS

Complexidade assintótica de programas

Aula 22 O teste da derivada segunda para extremos relativos.

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Teoria dos Grafos Aula 7

UNIVERSIDADE FEDERAL DE PERNAMBUCO

ATIVIDADES EM SALA DE AULA Cálculo I -A- Humberto José Bortolossi

Aula 3 11/12/2013. Integração Numérica

Análise de Algoritmos e Estruturas de Dados

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira

Análise de algoritmos Parte I

Escola Secundária com 3º ciclo D. Dinis 12º Ano de Matemática A Tema III Trigonometria e Números Complexos. TPC nº 13 (entregar em )

05 Análise de Algoritmos (parte 4) SCC201/501 - Introdução à Ciência de Computação II

Humberto José Bortolossi [01] (a) (1.0) Escreva infinitos números racionais que pertençam ao intervalo

7. Introdução à Complexidade de Algoritmos

Universidade Federal de Pelotas. Instituto de Física e Matemática Pró-reitoria de Ensino. Módulo de Limites. Aula 01. Projeto GAMA

Lista 2 - Bases Matemáticas

Transcrição:

UFMG/ICEx/DCC DCC Matemática Discreta Lista de Exercícios 6: Soluções Funções Ciências Exatas & Engenharias o Semestre de 06 Conceitos. Determine e justifique se a seguinte afirmação é verdadeira ou não para todas as funções f de um conjunto X para um conjunto Y : para todos sub-conjuntos A e B de X, se A B, então f(a) f(b). Prova: Seja f uma função de X para Y e suponha A X, B X e A B. Seja y f(a). [Devemos mostrar que y f(b)]. Pela definição de imagem de um conjunto, y = f(x) para algum x A. Como A B, x B e, assim, y = f(x) para algum x B. Consequentemente, y f(b) [o que devia ser mostrado].. Determine e justifique se a seguinte afirmação é verdadeira ou não, para todas as funções f de um conjunto X para um conjunto Y : para todos sub-conjuntos A e B de X, f(a B) = f(a) f(b). Prova [por contra-exemplo]: Seja X = {,, 3} e seja Y = {a, b}. A função f : X Y é definida pelos seguintes pares ordenados: {(, a), (, b), (3, b)}. Seja A = {, } e seja B = {, 3}. Temos que f(a) = {a, b} = f(b) e, assim f(a) f(b) = {a, b}. Mas f(a B) = f({}) = {a} {a, b}. Assim, f(a B) f(a) f(b). 3. A definição de função injetiva ou um-para-um pode ser dada de duas formas: e x, x X, se f(x ) = f(x ) então x = x x, x X, se x x então f(x ) f(x ) Porque estas duas definições são logicamente equivalentes? A segunda definição é a forma contrapositiva da primeira. Sequência como função 4. Apresente uma função definida no conjunto dos inteiros não negativos que construa a seqüência abaixo:, 3, 5, 7, 9,,... Seja Z = 0 Z +. A seqüência pode ser construída pela função f : Z R definida como: para todos os inteiros não negativos n. Princípio da casa de pombo f(n) = ( )n n +,

5. Seja S = {3, 4, 5, 6, 7, 8, 9, 0,, }. Suponha que seis inteiros sejam escolhidos de S. Existem dois inteiros cuja soma é 5? Justifique sua resposta. Sim. Seja Y o conjunto de todos os pares de inteiros de S que somam 5. Existem cinco elementos em Y, ou seja, Y = {{3, }, {4, }, {5, 0}, {6, 9}, {7, 8}}, e cada inteiro de S ocorre em exatamente um par. Seja X o conjunto de seis inteiros escolhidos de S e considere a função de X para Y definida pela regra: P (x) = o par para o qual x pertence. Como X tem seis elementos e Y tem cinco elementos e 6 > 5, então pelo princípio da casa de pombo, P não é uma função injetiva. Assim, P (x ) = P (x ) para alguns inteiros x e x em X com x x. Isto significa que x e x são inteiros distintos no mesmo pair, o que implica x + x = 5. 6. Quantos inteiros devem ser escolhidos aleatoriamente para se ter certeza que pelo menos dois deles têm o mesmo resto quando divididos por 7? Justifique sua resposta. Qualquer número inteiro quando dividido por 7 pode deixar como resto 0,,, 3, 4, 5, 6. Assim, podem ser escolhidos sete números que deixam um resto diferente. Ao se pegar um oitavo número, teremos pelo menos dois números que deixam o mesmo resto. 7. Mostre que para qualquer conjunto de 3 números escolhidos no intervalo [, 40], existem pelo menos dois inteiros com um divisor comum maior que. Seja A o conjunto de 3 números escolhidos e seja B o conjunto de todos os números primos no intervalo [, 40], ou seja, B = {, 3, 5, 7,, 3, 7, 9, 3, 9, 3, 37}. Para cada x em A, seja F (x) o menor número primo que divide x. Como A tem 3 elementos e B tem elementos, pelo princípio da casa de pombo, F não é uma função injetiva. Assim, F (x ) = F (x ) para algum x x em A. Pela definição de F, isto significa que o menor número primo que divide x é igual ao menor número primo que divide x. Assim, dois números em A, x e x, tem um divisor comum maior que. 8. Suponha um grupo de 40 pessoas, todas na faixa de 7 a 34 anos. Você quer fazer uma aposta que o grupo possui pelo menos x pessoas com a mesma idade. Qual é o maior valor de x que você pode apostar com certeza para vencer a aposta? No intervalo de 7 a 34, temos 8 anos. Como 40 > 8, pelo princípio da casa de pombo existem pelo menos x = 3 pessoas da mesma idade. Como 8 3 > 40, não é possível garantir que mais que três pessoas têm a mesma idade. Assim, x deve ser 3. 9. Um grupo de 5 executivos usará os serviços de cinco assistentes. Cada executivo tem exatamente um assistente e nenhum assistente trabalha para mais de quatro executivos. Mostre que pelo menos três assistentes trabalham para três ou mais executivos. Seja k o número de assistentes que trabalham para três ou mais executivos. Como nenhum assistente trabalha para mais que quatro executivos, estes assistentes trabalham para no máximo 4k executivos. Cada um dos outros 5 k assistentes trabalham para no máximo dois executivos. Assim, estes assistentes trabalham para no máximo (5 k) = 0 k executivos. Assim, o número máximo de executivos que têm assistentes é 4k + (0 k) = 0 + k. Neste caso, temos 5 executivos com assistentes, ou seja, 5 0 + k, or k 5/. Como k é um número inteiro temos que k 3. Assim, pelo menos três assistentes trabalham para três ou mais executivos. 0. Uma rede de computadores é formada por seis computadores. Cada computador é diretamente conectado a zero ou mais computadores. Mostre que existem pelo menos dois computadores na rede que possuem o mesmo número de conexões, ou seja, estão conectados diretamente ao mesmo número de outros computadores. Cada computador pode estar conectado a zero, um, dois, etc., até cinco computadores, já que existem seis computadores. No entanto, podemos observar que simultaneamente não podemos ter um computador conectado a nenhum outro (zero conexões) e um outro conectado a cinco computadores (todos os outros). (Se um computador não está conectado a nenhum computador então nenhum outro computador está conectado

a todos os cinco; e se um computador está conectado a todos os cinco então nenhum computador está sem conexão.) Assim, temos cinco possibilidades para o número de conexões e seis computadores. Pelo princípio da casa de pombo, temos pelo menos dois computadores que possuem o mesmo número de conexões.. Dezenove pessoas têm o primeiro nome Zeca, Wally e Linda, o segundo nome Lucas e Davi, e o último nome Yu, Zamora e Santos. Mostre que pelo menos duas pessoas têm os mesmos três nomes. O número total de combinações de nomes diferentes é dado por }{{ 3 } # possibilidades para o primeiro nome }{{} # possibilidades para o segundo nome }{{ 3 } = 8 # possibilidades para o terceiro nome Como existem 9 pessoas e 8 possibilidades de nomes diferentes, pelo princípio da casa de pombo existem pelo menos duas pessoas que têm os mesmos três nomes.. Sejam cinco pontos distintos no plano, todos com coordenadas inteiras. Mostre que algum par de pontos tem um ponto intermediário que também tem coordenadas inteiras. (O ponto intermediário é obtido tomando as médias das coordenadas x e y.) A coordenada x de cada ponto é um número par ou ímpar. O mesmo vale para a coordenada y. Se tomarmos dois pontos quaisquer, temos quatro possibilidades diferentes de tipos de coordenadas para esses pontos. Como existem cinco pontos e quatro possibilidades temos que pelo menos dois pontos p i = (x i, y i ) e p j = (x j, y j ) têm: Ambos x i e x j pares ou ambos x i e x j ímpares, e Ambos y i e y j pares ou ambos y i e y j ímpares. Assim, x i + x j é par e y i + y j também é par e, consequentemente, o ponto intermediário ( xi+xj também tem coordenadas inteiras. Função de complexidade 3. Sejam as seguintes funções: g = n log n g = ln ln n g 3 = (ln n) g 4 = n g 5 = log n g 6 = n log n g 7 = log(n!) g 8 = n g 9 = 4 log n g 0 = ( 3 )n g = n g = e n, yi+yj ) e os seguintes fatos (a > 0, b > 0, c > 0, n R): log n = log n ln n = log e n a = b log b a log c (ab) = log c a + log c b log b a n = nlog b a log b a = log c a log c b log b a = log a b a log b n = n log b a n log n = n log n = log n = n 4 log n = log n = log n = n n! ( n e )n log(n!) = Θ(n log n) Mostre para cada par de funções g i e g i+ para i se g i é O ou Θ de g i+. Algumas simplificações: g = n log n = n log n = 3

g 5 = log n = n g 7 = log(n!) = Θ(n log n) g 9 = 4 log n = ( ) log n = log n = n Logo, baseado nas simplificações acima, o seguinte crescimento assintótico pode ser definido: g = O(g ) g = O(g 3 ) g 3 = O(g 4 ) g 4 = Θ(g 5 ) g 5 = O(g 6 ) g 6 = Θ(g 7 ) g 7 = O(g 8 ) g 8 = Θ(g 9 ) g 9 = O(g 0 ) g 0 = O(g ) g = O(g ) 4. A seguinte hierarquia de funções pode ser definida do ponto de vista assintótico: log log n log n n ɛ n c n log n c n n n c cn Indique, para cada par de expressões (A, B) na tabela abaixo, se a função A é O, o, Ω, ω ou Θ da função B. Assuma que k e 0 < ɛ < < c são constantes. Sua resposta deve ser da forma sim ou não. Nota: log k n log log... }{{} k n. Na letra (v), m é um número inteiro positivo. A B O o Ω ω Θ (i) log k n n ɛ (ii) n k c n (iii) n n sin n (iv) n n/ (v) n log m m log n (vi) log(n!) log(n n ) A B O o Ω ω Θ (i) log k n n ɛ S S N N N (ii) n k c n S S N N N (iii) n n sin n N N N N N (iv) n n/ N N S S N (v) n log m m log n S N S N S (vi) log(n!) log(n n ) S N S N S 4

Comentários: (i) Direto da hierarquia: log k n n ɛ. Logo log k n não pode ser Ω, ω ou Θ de n ɛ. Lembre que se f(n) = Θ(g(n)) então f(n) = Ω(g(n)) e f(n) = O(g(n)). (ii) Direto da hierarquia: n k c n. Mesma explicação de (i). (iii) n = n e n sin n = n α, onde α é um valor no intervalo [, ]. Logo, n não é O, o, Ω, ω ou Θ de n sin n. (iv) n =? n/. Se esta afirmativa é verdadeira então n c. n/ c n/ Quando n cresce não existe nenhuma constante c que seja maior que n/. Logo, n O( n/ ). Como consequência disso, também não será nem o nem Θ. No entanto, existe uma constante c tal que c. n/ n. Por exemplo, c = e n. Logo, n = Ω( n/ ). Para saber se também é ω basta verificar se o seguinte limite é verdadeiro: n/? lim = 0 n n Pode-se verificar que este limite é de fato 0, ou seja, lim n n/ n = lim n n/ = 0. (v) Seja b, (b ) a base do logaritmo usada neste exercício. Seja log n b = c. Então, Da mesma forma, n log b m = n log n m log n b = n c. log n m = n log n m/c = m c m log b n = m log n b = m c Ou seja, independente da base do logaritmo, n log m = m log n. Logo, n log m é O, Ω e Θ de m log n. Consequentemente, não pode ser nem o nem ω. (vi) log(n!) = Θ(n log n) e log(n n ) = n log n. Logo, log(n!) é O, Ω e Θ de log(n n ). Da mesma forma, não pode ser nem o nem ω. 5. Usando a definição formal de Θ prove que 6n 3 Θ(n ). Suponha que não, ou seja, suponha que 6n 3 = Θ(n ). Assim, pela definição formal da notação Θ, existem constantes positivas c, c e n 0 tais que 0 c g(n) f(n) c g(n) Neste caso, temos que f(n) = 6n 3, g(n) = n e c n 6n 3 c n. Ao dividirmos cada termo dessa inequação por n, temos: c 6n c. Não existem constantes positivas c > 0 e n 0 tais que 6n c Assim, a suposição original que é verdadeira, ou seja, 6n 3 Θ(n ). 6. O que significa um algoritmo ser O() ou O(5)? Significa que independentemente do tamanho da entrada n, o tempo de execução do algoritmo será constante. Observe que se f(n) = O(k) para uma função constante k, temos que: f(n) c k. Se a constante k é ou ou 5 isso é indiferente pois a função f(n) sempre será limitada por uma constante c vezes uma outra constante k. 5

7. Use o Teorema Mestre para resolver a seguinte equação de recorrência: T (n) = 4T ( n ) + n. Para saber se o Teorema Mestre pode ser aplicado ou não, temos que ter as constantes a e b > e a função f(n) assintoticamente positiva. Temos a = 4, b =, f(n) = n e as três condições são satisfeitas. Deve-se analisar se a equação de recorrência cai em um dos três casos previstos do teorema ou não. Para isso, devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n : n log 4 n : n. A função n log b a domina a função f(n) por um fator polinomial n. Assim, o caso do Teorema Mestre se aplica e temos que T (n) = Θ(n ). 8. Use o Teorema Mestre para resolver a seguinte equação de recorrência: T (n) = 4T ( n ) + n. Para saber se o Teorema Mestre pode ser aplicado ou não, temos que ter as constantes a e b > e a função f(n) assintoticamente positiva. Temos a = 4, b =, f(n) = n e as três condições são satisfeitas. Deve-se analisar se a equação de recorrência cai em um dos três casos previstos do teorema ou não. Para isso, devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n : n log 4 n : n. As duas funções f(n) e n log b a têm a mesma taxa de crescimento. Assim, o caso do Teorema Mestre se aplica e temos que T (n) = Θ(n log n). 9. Use o Teorema Mestre para resolver a seguinte equação de recorrência: T (n) = 4T ( n ) + n3. Para saber se o Teorema Mestre pode ser aplicado ou não, temos que ter as constantes a e b > e a função f(n) assintoticamente positiva. Temos a = 4, b =, f(n) = n 3 e as três condições são satisfeitas. Deve-se analisar se a equação de recorrência cai em um dos três casos previstos do teorema ou não. Para isso, devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n 3 : n log 4 n 3 : n. A função f(n) domina a função n log b a por um fator polinomial n. Assim, o caso 3 do Teorema Mestre pode ser aplicado se a condição de regularidade for satisfeita, ou seja, af( n b ) cf(n) para uma constante c <. af( n b ) cf(n) 4( n )3 cn 3 4n 3 8 cn 3 n3 cn 3. A inequação é satisfeita para c =. Portanto, o caso 3 do Teorema Mestre se aplica e T (n) = Θ(n3 ). 0. O tempo de execução de um algoritmo A é descrito pela recorrência T (n) = 7T ( n ) + n. Um outro algoritmo A tem um tempo de execução descrito pela recorrência T (n) = at ( n 4 ) + n. 6

Qual é o maior valor inteiro de a tal que A é assintoticamente mais rápido que A? Para o algoritmo A ser assintoticamente mais rápido que A, T (n) deve ter uma taxa de crescimento menor que T (n). Vamos avaliar se o Teorema Mestre pode ser utilizado para a obtenção dos valores de T (n) e T (n). Vamos resolver T (n) = 7T ( n ) + n. Temos a = 7, b =, f(n) = n. Devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n : n log 7 n : n,807... A função n log b a domina a função f(n) por um fator polinomial aproximado de n 0,807. podemos aplicar o caso do Teorema Mestre e temos que T (n) = Θ(n,807 ). Assim, de fato Vamos resolver T (n) = at ( n 4 ) + n. Temos a = a, b = 4, f(n) = n. Devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n : n log 4 a Para A ser assintoticamente mais rápido que A, devemos ter o expoente log 4 a menor que log 7 (os dois expoentes da função n log b a para a resolução de T e T, respectivamente), ou seja, log 4 a < log 7 log a log 4 < log 7 log a < log 7 log a < log 49 Assim, a constante a = 48 é o maior inteiro menor que 49. Vamos resolver T (n) = 48T ( n 4 ) + n. Temos a = 48, b = 4, f(n) = n. Devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n : n log 4 48 n : n,79... Novamente temos que a função n log b a domina a função f(n) por um fator polinomial aproximado de n 0,79. Assim, de fato podemos aplicar o caso do Teorema Mestre e temos que T (n) = Θ(n,79 ). Finalmente podemos afirmar que o algoritmo A, que é Θ(n,79 ), é assintoticamente mais rápido que o algoritmo A, que é Θ(n,807 ). Observações: Para os exercícios a 65 considere que: (a) todas as variáveis e constantes são inteiras e positivas, a menos que sejam explicitamente identificadas de outra forma; (b) as funções f(n) e g(n) são positivas e f(n) g(n) do ponto de vista de crescimento assintótico; (c) p(n) = g i=0 a in i é um polinômio de grau g, as constantes a i ( i g) reais, sendo a g 0, e k uma constante. Para cada afirmação nos exercícios a 65, diga se é verdadeira ou falsa, provando ou fornecendo um contraexemplo: 7

. Se k g, então p(n) = O(n k ). Temos que f(n) = O(g(n)) se existirem constantes positivas c e n 0, tais que f(n) cg(n) Vamos supor que existem constantes positivas c e n 0, tais que Se dividirmos a inequação por n k temos: a g n g + a g n g +... + a 0 cn k a g n k g + a g n k g +... + a 0 n k c. À medida que n cresce, cada termo (fração) do lado esquerdo da inequação fica menor. Assim, é possível achar constantes c e n 0 que satisfazem a inequação acima.. Se k g, então p(n) = Ω(n k ). Temos que f(n) = Ω(g(n)) se existirem constantes positivas c e n 0, tais que cg(n) f(n) Vamos supor que existem constantes positivas c e n 0, tais que Se dividirmos a inequação por n k temos: cn k a g n g + a g n g +... + a 0 c a g n g k + a g n g k +... + a 0 n k. À medida que n cresce, cada termo (fração) do lado direito da inequação fica menor mas positivo. Assim, é possível achar constantes c e n 0 que satisfazem a inequação acima. 3. Se k = g, então p(n) = Θ(n k ). Temos que f(n) = Θ(g(n)) se existirem constantes positivas c, c e n 0, tais que c g(n) f(n) c g(n) Vamos supor que existem constantes positivas c, c e n 0, tais que Se dividirmos a inequação por n k temos: c n k a g n g + a g n g +... + a 0 c n k c a g + a g n +... + a 0 n k c. Conhecendo os coeficientes do polinômio, é possível determinar constantes positivas n 0, c e c que satisfazem a inequação acima. 4. Se k > g, então p(n) = o(n k ). Temos que f(n) = o(g(n)) se para todas constantes positivas c e n 0, tais que f(n) < cg(n) Vamos supor que para todas constantes positivas c e n 0 a g n g + a g n g +... + a 0 < cn k 8

Se tomarmos o limite de a g n g + a g n g +... + a 0 lim n n k = 0 para todas as constantes c > 0 e n 0 >. 5. Se k < g, então p(n) = ω(n k ). Temos que f(n) = ω(g(n)) se para todas constantes positivas c e n 0, tais que cg(n) < f(n) Vamos supor que para todas constantes positivas c e n 0 Se tomarmos o limite de cn k < a g n g + a g n g +... + a 0 lim n para todas as constantes c > 0 e n 0 >. 6. Se k g, então p(n) = O(n g ). n k a g n g + a g n g +... + a 0 = Neste caso, a constante k não tem nenhuma relação com a expressão p(n) = O(n g ) já que Se dividirmos a inequação por n g temos: a g n g + a g n g +... + a 0 cn g. a g + a g n +... + a 0 n g c. À medida que n cresce, cada termo (fração) do lado esquerdo da inequação fica menor. Assim, é possível achar constantes c e n 0 que satisfazem a inequação acima. De fato, a função n g é um limite assintótico superior firme para a função p(n). 7. Se k g, então p(n) = Ω(n g ). Neste caso, a constante k não tem nenhuma relação com a expressão p(n) = Ω(n g ) já que Se dividirmos a inequação por n g temos: cn g a g n g + a g n g +... + a 0. c a g + a g n +... + a 0 n g. À medida que n cresce, cada termo (fração) do lado direito da inequação fica menor mas positivo. Assim, é possível achar constantes c e n 0 que satisfazem a inequação acima. De fato, a função n g é um limite assintótico inferior firme para a função p(n). 8. Se k = g, então p(n) = Θ(n g ). Neste caso, a constante k não tem nenhuma relação com a expressão p(n) = Θ(n g ) já que c n g a g n g + a g n g +... + a 0 c n g. 9

Se dividirmos a inequação por n g temos: c a g + a g n +... + a 0 n g c. Conhecendo os coeficientes do polinômio, é possível determinar constantes positivas n 0, c e c que satisfazem a inequação acima. 9. Se k > g, então p(n) = o(n g ). Neste caso, a constante k não tem nenhuma relação com a expressão p(n) = o(n g ). Assim, temos que: Se dividirmos a inequação por n g temos: a g n g + a g n g +... + a 0 < cn g. a g + a g n +... + a 0 n g < c. Não existem constantes c > 0 e n 0, tais que para todo n n 0, a inequação acima seja verdadeira. Como mostrado no exercício 6, a função n g é um limite assintótico superior firme para a função p(n). Assim, não podemos ter p(n) = o(n g ). 30. Se k < g, então p(n) = ω(n g ). Neste caso, a constante k não tem nenhuma relação com a expressão p(n) = ω(n g ). Assim, temos que: Se dividirmos a inequação por n g temos: cn g < a g n g + a g n g +... + a 0. a g + a g n +... + a 0 n g < c. Não existem constantes c > 0 e n 0, tais que para todo n n 0, a inequação acima seja verdadeira. Como mostrado no exercício 7, a função n g é um limite assintótico inferior firme para a função p(n). Assim, não podemos ter p(n) = ω(n g ). 3. f(n) = O(g(n)) implica em g(n) = O(f(n)). Seja f(n) = n e g(n) = n. n O(n). Sabemos que f(n) = O(g(n)), i.e., n = O(n ) mas g(n) O(g(n)), i.e., Se f(n) = O(g(n)) então g(n) = Ω(f(n)). Em outras palavras, se a função g(n) é um limite superior assintótico para f(n) então a função f(n) é um limite inferior assintótico para g(n). 3. É possível achar funções f(n) e g(n) tais que f(n) = Θ(g(n)). Suponha que seja possível achar funções f(n) e g(n) tais que f(n) = Θ(g(n)). Portanto, f(n) = O(g(n)) e f(n) = Ω(g(n)), pela definição da notação assintótica Θ. Como f(n) g(n), tem-se que f(n) = O(g(n)) e f(n) Ω(g(n)). Assim, não é possível achar funções f(n) e g(n) tais que f(n) = Θ(g(n)). 0

33. f(n) + g(n) = Ω(f(n)). Temos que f(n) + g(n) = Ω(f(n)) se existirem constantes positivas c e n 0, tais que cf(n) f(n) + g(n) Vamos supor que existem constantes positivas c e n 0, tais que cf(n) f(n) + g(n) Ao dividirmos cada termo dessa inequação por f(n), temos: c + g(n) f(n). Dado que f(n) g(n), é possível definir n 0 tal que para todo n n 0, inequação é satisfeita. 34. f(n) + g(n) = Θ(f(n)). g(n) f(n) >. Assim, para c = a Temos que f(n)+g(n) = Θ(f(n)) se existirem constantes positivas c, c e n 0, tais que c f(n) f(n)+g(n) c f(n) Vamos supor que existem constantes positivas c, c e n 0, tais que c f(n) f(n) + g(n) c f(n) Ao dividirmos cada termo dessa inequação por f(n), temos: c + g(n) f(n) c. Dado que f(n) g(n), não existe c tal que + g(n) f(n) c Assim, f(n)+g(n) Θ(f(n)). 35. f(n) + g(n) = O(f(n)). Temos que f(n) + g(n) = O(f(n)) se existirem constantes positivas c e n 0, tais que f(n) + g(n) cf(n) Vamos supor que existem constantes positivas c e n 0, tais que f(n) + g(n) cf(n) Ao dividirmos cada termo dessa inequação por f(n), temos: + g(n) f(n) c. Dado que f(n) g(n), não existe c tal que + g(n) f(n) c para todo n n 0. Assim, f(n) + g(n) O(f(n)).

36. f(n) + g(n) = Ω(g(n)). Temos que f(n) + g(n) = Ω(g(n)) se existirem constantes positivas c e n 0, tais que cg(n) f(n) + g(n) para todo n n 0. Vamos supor que existem constantes positivas c e n 0, tais que cg(n) f(n) + g(n) Ao dividirmos cada termo dessa inequação por g(n), temos: c f(n) g(n) +. Dado que f(n) g(n), é possível escolher c = que satisfaz a inequação. Assim, f(n) + g(n) = Ω(g(n)). 37. f(n) + g(n) = Θ(g(n)). Temos que f(n)+g(n) = Θ(g(n)) se existirem constantes positivas c, c e n 0, tais que c g(n) f(n)+g(n) c g(n) Vamos supor que existem constantes positivas c, c e n 0, tais que c g(n) f(n) + g(n) c g(n) Ao dividirmos cada termo dessa inequação por g(n), temos: c f(n) g(n) + c. Dado que f(n) g(n), para n suficientemente grande temos que f(n) g(n) <. Assim, existe c tal que f(n) g(n) + c Consequentemente, f(n) + g(n) = Θ(g(n)). 38. f(n) + g(n) = O(g(n)). Temos que f(n) + g(n) = O(g(n)) se existirem constantes positivas c e n 0, tais que f(n) + g(n) cg(n) Vamos supor que existem constantes positivas c e n 0, tais que f(n) + g(n) cg(n) Ao dividirmos cada termo dessa inequação por g(n), temos: f(n) g(n) + c. Dado que f(n) g(n), para n suficientemente grande temos que f(n) g(n) Consequentemente, f(n) + g(n) = O(g(n)). <. Assim, existe c tal que f(n) g(n) + c

39. f(n) = Ω((f(n)) ). Temos que f(n) = Ω((f(n)) ) se existirem constantes positivas c e n 0, tais que c(f(n)) f(n) para todo n n 0. Vamos supor que existem constantes positivas c e n 0, tais que c(f(n)) f(n) Ao dividirmos cada termo dessa inequação por f(n), temos: cf(n). Veja que f(n) é uma função positiva. Mais ainda, podemos ter que quando n cresce o valor de f(n) também cresce (e.g., uma função exponencial). Assim, não é possível escolher uma constante c que quando multiplicada por f(n), para todo n n 0, termos um valor maior ou igual a. Assim, f(n) Ω((f(n)) ). 40. f(n) = Θ((f(n)) ). Sabemos que se a(n) = Θ(b(n)) então a(n) = Ω(b(n)) e a(n) = O(b(n)). De acordo com o exercício 39, temos f(n) Ω((f(n)) ). Consequentemente, f(n) Θ((f(n)) ). 4. f(n) = O((f(n)) ). Temos que f(n) = O((f(n)) ) se existirem constantes positivas c e n 0, tais que f(n) c(f(n)) para todo n n 0. Vamos supor que existem constantes positivas c e n 0, tais que f(n) c(f(n)) Ao dividirmos cada termo dessa inequação por f(n), temos: Veja que f(n) é uma função positiva. Consequentemente, f(n) = O((f(n)) ) 4. g(n) = Ω(f(n)). cf(n). Assim, para toda constante c positiva a inequação é verdadeira. Temos que g(n) = Ω(f(n)) se existirem constantes positivas c e n 0, tais que cf(n) g(n) Vamos supor que existem constantes positivas c e n 0, tais que cf(n) g(n) Ao dividirmos cada termo dessa inequação por f(n), temos: c g(n) f(n). Dado que f(n) g(n), é possível escolher c = que satisfaz a inequação. Assim, g(n) = Ω(f(n)). 3

43. g(n) = Θ(f(n)). Temos que g(n) = Θ(f(n)) se existirem constantes positivas c, c e n 0, tais que c f(n) g(n) c f(n) Vamos supor que existem constantes positivas c, c e n 0, tais que c f(n) g(n) c f(n) Ao dividirmos cada termo dessa inequação por f(n), temos: c g(n) f(n) c. Dado que f(n) g(n), para n suficientemente grande temos que g(n) f(n) >. Assim, não existe c tal que g(n) f(n) c Consequentemente, g(n) Θ(f(n)). 44. g(n) = O(f(n)). Temos que g(n) = O(f(n)) se existirem constantes positivas c e n 0, tais que g(n) cf(n) Vamos supor que existem constantes positivas c e n 0, tais que g(n) cf(n) Ao dividirmos cada termo dessa inequação por f(n), temos: g(n) f(n) c. Dado que f(n) g(n), para n suficientemente grande temos que g(n) g(n) f(n) c para todo n n 0. Consequentemente, g(n) O(f(n)). 45. g(n) = Ω( g(n) ). f(n) >. Assim, não existe c tal que Temos que g(n) = Ω( g(n) ) se existirem constantes positivas c e n 0, tais que c g(n) g(n) Vamos supor que existem constantes positivas c e n 0, tais que c g(n) g(n) Ao dividirmos cada termo dessa inequação por g(n) e multiplicarmos, temos: Assim, g(n) = Ω( g(n) ). c. 4

46. g(n) = Θ( g(n) ). Temos que g(n) = Θ( g(n) ) se existirem constantes positivas c g(n) g(n), c e n 0, tais que c g(n) c Vamos supor que existem constantes positivas c, c e n 0, tais que c g(n) g(n) c g(n) Ao dividirmos cada termo dessa inequação por g(n) e multiplicarmos por, temos: Assim, g(n) = Θ( g(n) ). 47. g(n) = O( g(n) ). c c. Sabemos que se a(n) = Θ(b(n)) então a(n) = Ω(b(n)) e a(n) = O(b(n)). De acordo com o exercício 46, temos g(n) = Θ( g(n) g(n) ). Consequentemente, g(n) = O( ). 48. f(n) = ω(g(n)). Temos que f(n) = ω(g(n)) se para todas constantes positivas c e n 0, tais que cg(n) < f(n) Vamos supor que para todas constantes positivas c e n 0 cg(n) < f(n) Ao dividirmos cada termo dessa inequação por f(n), temos: A fração g(n) f(n) por g(n) f(n) 49. f(n) = ω( g(n) ). c g(n) f(n). é estritamente positiva. Assim, não é possível achar nenhuma constante c que multiplicada seja sempre menor ou igual a quando n cresce. Consequentemente, f(n) Ω(g(n)). Temos que f(n) = ω( g(n) ) se para todas constantes positivas c e n 0, tais que c g(n) < f(n) Vamos supor que para todas constantes positivas c e n 0 c g(n) < f(n) 5

Ao dividirmos cada termo dessa inequação por f(n) e multiplicarmos por, temos: A fração g(n) f(n) por g(n) f(n) 50. f(n) = o(g(n)). c g(n) f(n). é estritamente positiva. Assim, não é possível achar nenhuma constante c que multiplicada seja sempre menor ou igual a quando n cresce. Consequentemente, f(n) Ω( g(n) ). Temos que f(n) = o(g(n)) se para todas constantes positivas c e n 0, f(n) < cg(n) Vamos supor que para todas constantes positivas c e n 0 f(n) < cg(n) Ao dividirmos cada termo dessa inequação por g(n), temos: A fração f(n) g(n) 5. n + 0 000 n + 3 = O(n). f(n) g(n). é estritamente positiva e sempre menor que já que f(n) g(n). Assim, f(n) = o(g(n)). Para essa afirmação ser verdadeira, de acordo a definição da notação assintótica O, devem existir constantes positivas c e n 0, tais que n + 0 000 n + 3 cn Ao dividirmos cada termo dessa inequação por n, temos: n + 0 000 + 3 n c. Não existe constante positiva c que seja limitada pelo termo da esquerda da inequação à medida que n cresce. Assim, n + 0 000 n + 3 O(n). 5. + + 3 +... + n = n + Ω(n). Sabe-se que + + 3 +... + n = n(n + ) = n + n = n + n = n n + n = n + ( n + n ). Seja h(n) = n + n. A afirmação será verdadeira se h(n) Ω(n), i.e., se h(n) = Ω(n). Pela definição da notação assintótica Ω, h(n) = Ω(n) se existirem constantes positivas c e n 0 tais que cn h(n) Vamos supor que existem constantes positivas c e n 0 tais que cn h(n) 6

para todo n n 0, ou seja, cn n + n. Ao dividirmos cada termo dessa inequação por n, temos: c n +. Para n 0 = e c = a inequação é satisfeita. Assim, + + 3 +... + n = n + Ω(n). 53. + + 3 +... + n = n + Θ(). Sabe-se que + + 3 +... + n = n(n + ) = n + n = n + n = n n + n = n + ( n + n ). Seja h(n) = n + n. A afirmação será verdadeira se h(n) Θ(), i.e., se h(n) = Θ(). Pela definição da notação assintótica Θ, h(n) = Θ() se existirem constantes positivas c, c e n 0 tais que c h(n) c para todo n n 0, ou seja, se c n + n c. No entanto, não existe constante c que sempre limite a expressão n n + Θ(). 54. + + 3 +... + n = n + O(n). Sabe-se que + + 3 +... + n = n(n + ) = n + n + n. Assim, + + 3 +... + n = n + n = n n + n = n + ( n + n ). Seja h(n) = n + n. A afirmação será verdadeira se h(n) O(n), i.e., se h(n) = O(n). Pela definição da notação assintótica O, h(n) = O(n) se existirem constantes positivas c e n 0 tais que h(n) cn Vamos supor que existem constantes positivas c e n 0 tais que n + n cn Ao dividirmos cada termo dessa inequação por n, temos n + c. No entanto, não existe constante c que sempre limite a expressão n +. Assim, + + 3 +... + n n + O(n). 7

( n 55. = O(n ) ). 56. Tem-se que ( ) n = n! n(n )(n )! n(n ) = =!(n )! (n )! = n n. Pela definição da notação assintótica O, n n = O(n ) se existirem constantes positivas c e n 0 tais que n n cn Vamos supor que existem constantes positivas c e n 0 tais que n n Ao dividirmos cada termo dessa inequação por n, temos cn n c. ( ) n Para n 0 = e c =, a inequação é satisfeita. Assim, = O(n ). ( ) n = O(n 3 3 ). Tem-se que ( ) n = 3 n! n(n )(n )(n 3)! n(n )(n ) = = 3!(n 3)! 6(n 3)! 6 = n3 3n + n. 6 Pela definição da notação assintótica O, n3 3n +n 6 = O(n 3 ) se existirem constantes positivas c e n 0 tais que n3 3n +n 6 cn 3 Vamos supor que existem constantes positivas c e n 0 tais que n 3 3n + n 6 Ao dividirmos cada termo dessa inequação por n 3, temos cn 3 6 n + 3n c. ( ) n Para n 0 = e c = 6, a inequação é satisfeita. Assim, = O(n 3 3 ). 57. Seja Ω(n log n) = X, onde X representa o conjunto de funções que satisfaz a notação Ω para a função n log n. O conjunto {n.5 log n, n e log n, n ln n, log log n, n, n.5 } X?, onde e é a constante de Euler e ln é o logaritmo na base e. O conjunto X possui funções que têm uma taxa de crescimento pelo menos da ordem de n log n. 8

Ao examinarmos cada elemento desse conjunto, temos: n.5 log n X [função com taxa de crescimento menor que n log n] n e log n X n ln n X log log n X [função com taxa de crescimento menor que n log n] n X n.5 X 58. Seja Θ() = X, onde X representa o conjunto de funções que satisfaz a notação Θ para a função. O conjunto {π, n log π, e, π/4 n } X?, onde e é a constante de Euler. O conjunto X possui funções que têm uma taxa de crescimento exatamente constante. Ao examinarmos cada elemento desse conjunto, temos: π X n log π = n 0 = X e X π/4 n = 0 4 = X 59. Seja O(n e ) = X, onde X representa o conjunto de funções que satisfaz a notação O para a função n e. O conjunto {n, n log n, n π log n, n } X?, onde e é a constante de Euler. e O conjunto X possui funções que têm uma taxa de crescimento no máximo da ordem de n e. Ao examinarmos cada elemento desse conjunto, temos: n X n log n X n π log n n,67 log n X n e X 60. Seja ω(n) = X, onde X representa o conjunto de funções que satisfaz a notação ω para a função n. O conjunto {n.5 log n, n e log n, n ln n, log log n, n, n. } X?, onde e é a constante de Euler e ln é o logaritmo na base e. O conjunto X possui funções que têm uma taxa de crescimento estritamente maior que da ordem de n. Ao examinarmos cada elemento desse conjunto, temos: n.5 log n X n e log n X n ln n X log log n X [função com taxa de crescimento menor que n] n X n. X 9

6. Seja o(n e ) = X, onde X representa o conjunto de funções que satisfaz a notação o para a função n e. O conjunto {n, n log n, n π log n, n } X?, onde e é a constante de Euler. e O conjunto X possui funções que têm uma taxa de crescimento estritamente menor que da ordem de n e. Ao examinarmos cada elemento desse conjunto, temos: n X n log n X n π log n n,67 log n X n e X 6. A derivada de h(n) = n é h (n) = n. A derivada de l(n) = 4n + n é l (n) = 8n +. Como n < 8n +, n 0, h(n) cresce mais lentamente que l(n) e, portanto, h(n) = O(l(n)). A função h(n) cresce mais lentamente que a função l(n). Assim, a função l(n) é um limite superior assintótico para h(n). 63. O Teorema Mestre pode ser sempre aplicado para resolver qualquer equação de recorrência que tenha a forma geral T (n) = p q T ( n p ) + n, onde p e q são constantes inteiras positivas maiores que. Tem-se: a = p q b = p f(n) = n Para saber se o Teorema Mestre pode ser aplicado ou não, temos que ter as constantes a e b > e a função f(n) assintoticamente positiva. Estas três condições são satisfeitas (a > e b >, já que p > e q > ). Deve-se analisar se a equação de recorrência cai em um dos três casos previstos do teorema ou não. Para isso, devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n : n log p pq n : n q log p p n : n q. Como q é uma constante inteira positiva maior que, a função n log b a domina a função f(n) por um fator polinomial n q. Assim, o caso do Teorema Mestre se aplica e temos que T (n) = Θ(n q ). 64. O Teorema Mestre pode ser sempre aplicado para resolver qualquer equação de recorrência que tenha a forma geral T (n) = T ( pn q ) + k, onde p, q e k são constantes inteiras positivas maiores que e q > p. Tem-se: a = b = q p f(n) = k 0

Para saber se o Teorema Mestre pode ser aplicado ou não, temos que ter as constantes a e b > e a função f(n) assintoticamente positiva. Estas três condições são satisfeitas (a = e b >, já que q > p). Deve-se analisar se a equação de recorrência cai em um dos três casos previstos do teorema ou não. Para isso, devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a k : n log q p k : n 0 k :. Temos duas funções constantes. Assim, o caso do Teorema Mestre se aplica e temos que T (n) = Θ(log n). 65. O Teorema Mestre pode ser sempre aplicado para resolver qualquer equação de recorrência que tenha a forma geral T (n) = p T ( n q ) + n log n, onde p e q são constantes inteiras positivas, sendo p < q e p. Tem-se: a = p b = q f(n) = n log n Para saber se o Teorema Mestre pode ser aplicado ou não, temos que ter as constantes a e b > e a função f(n) assintoticamente positiva. Estas três condições são satisfeitas (a > e b >, já que p e p < q). Deve-se analisar se a equação de recorrência cai em um dos três casos previstos do teorema ou não. Para isso, devemos comparar a função f(n) com a função n log b a, ou seja: f(n) : n log b a n log n : n log q p n log n : n r. O expoente log q p será um número real r no intervalo entre 0 e, já que a base q é maior que p. Assim, a função f(n) = n log n domina a função n log b a (n r ) por um fator polinomial n r. O caso 3 do Teorema Mestre pode ser aplicado se a condição de regularidade for satisfeita, ou seja, af( n b ) cf(n) para uma constante c < : af( n b ) cf(n) A inequação é satisfeita para c = p q, c <, ou seja, p( n q log n q ) cn log n p q n log n q cn log n p q n log n q p q n log n. Portanto, o caso 3 do Teorema Mestre se aplica e T (n) = Θ(n log n). Modelagem usando funções de recorrência 66. Qual é o número máximo de regiões L n determinado por n retas no plano? Lembre-se que um plano sem nenhuma reta tem uma região, com uma reta tem duas regiões e com duas retas têm quatro regiões, conforme ilustrado abaixo.

4 3 L 4 0 = L = L = L 0 = L = L = 4 L 3 = 7. =. L n = L n + n Com três retas, o número máximo de regiões é sete. Observe que se traçarmos a terceira reta sobre a interseção das duas anteriores teremos seis regiões. Assim, quando acrescentamos a n-ésima reta, criamos mais n regiões que são obtidas com a interseção com as n retas já existentes. 3 7 5 4 6 4 L L = 4 L = 7 0 = L = 3 3 A fórmula fechada para L n pode ser obtida facilmente a partir da observação que L n vale a soma de 0 a n mais, ou seja, ( n ) n(n + ) L n = i + = +. Prova (por indução matemática): i=0 Passo base. P (n 0 ) = P (0). Para n = 0 temos que L 0 = 0(0+) + =, que é o valor presente na equação de recorrência. Passo indutivo. Se a fórmula é verdadeira para n = k então deve ser verdadeira para n = k +, i.e., P (k) P (k + ). Suponha que a fórmula seja verdadeira para n = k, i.e., P (k) : L k = para algum inteiro k. [hipótese indutiva] Deve-se mostrar que P (k + ) : L k+ = k(k + ) +. (k + )(k + ) +.

Sabe-se que L k+ = L k + k [Pela definição da equação de recorrência] = k(k+) + + k [Pela hipótese indutiva] = k +3k+ + = (k+)(k+) + [O que devia ser provado] 67. O problema da Torre de Hanoi com requisito de adjacência. Sejam discos de tamanhos diferentes e três varetas, como ilustrado abaixo com oito discos. O jogo começa com o conjunto de discos empilhados em tamanho decrescente na vareta A. O objetivo é transferir toda a torre da vareta A para a vareta C, movendo um disco de cada vez para uma vareta adjacente e nunca movendo um disco maior sobre um menor. Quantos movimentos são necessários para mover n discos da vareta A para a vareta C? Observe que a vareta A é adjacente a B que é adjacente a C. No entanto, a vareta A não é adjacente à vareta C. Na resolução deste problema, vamos identificar os discos como D i, onde i varia de a n, sendo o disco do topo o D e o mais no fundo da pilha o D n. A tabela abaixo mostra como deve ser feito o movimento de discos entre as varetas A, B e C, para o caso de um, dois, três e n discos. Discos Movimentos D : A B; D : B C 8 D : A B; D : B C; D : A B; D : C B; D : B A; D : B C; D : A B; D : B C 3 6 D e D : A C com custo T (); D 3: A B; D e D : C A com custo T (); D 3: B C; D e D : A C com custo T ().. n 3T (n ) + D a D n : A C com custo T (n ); D n: A B; D a D n : C A com custo T (n ); D n: B C; D a D n : A C com custo T (n ) Pelo visto acima, a quantidade de movimentos de discos para o problema da Torre de Hanoi com a restrição de movimentos adjacentes entre varetas é T (0) = 0 T (n) = 3T (n ) +, para n > 0. Essa estratégia fica evidente, dada a restrição de movimentação dos discos: deve-se mover os n discos do topo para a vareta destino; depois mover o disco do fundo da pilha (D n ) para a vareta do meio; depois mover os n discos da vareta C para a vareta A com o objetivo de mover o disco D n para a vareta destino; e, finalmente, mover os n discos da vareta A para a vareta C sobre o disco D n. Para pequenos valores de n temos: 3

Discos Movimentos 0 0 8 = 3 + = (3 + 3 0 ) 3 6 = 3 + 3 + = (3 + 3 + 3 0 ) 4 80 = 3 3 + 3 + 3 + = (3 3 + 3 + 3 + 3 0 ).. Esta recorrência pode ser expressa por n T (n) = i=0 3 i = 3n = 3 n. Prova (por indução matemática): Passo base. P (n 0 ) = P (0). Para n = 0 temos que T (0) = 3 0 = 0, que é o valor presente na equação de recorrência. Passo indutivo. Se a fórmula é verdadeira para n = k então deve ser verdadeira para n = k +, i.e., P (k) P (k + ). Suponha que a fórmula seja verdadeira para n = k, i.e., para algum inteiro k. [hipótese indutiva] Deve-se mostrar que Sabe-se que P (k) : T (k) = 3 k. P (k + ) : T (k + ) = 3 k+. T (k + ) = 3T (k) + [Pela definição da equação de recorrência] = 3(3 k ) + [Pela hipótese indutiva] = 3 k+ [O que devia ser provado] 4