




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Várias recorrências de algoritmos, suas soluções e análises de complexidade. Além disso, discute a complexidade de algoritmos como counting sort, quick sort, merge sort e outros. O documento também aborda conceitos como inversas composicionais de funções, sequências e recorrências, além de discutir a prova por indução em n.
Tipologia: Exercícios
1 / 113
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Departamento de Ciência da Computação Instituto de Matemática e Estatística Universidade de São Paulo
Este é o meu repositório de exercícios Análise de Algoritmos. A maioria dos exercícios foi ex- traída da primeira e segunda edições do livro de Cormen, Leiserson, Rivest & Stein. Alguns exer- cícios vieram dos livros de Parberry, Kleinberg & Tardos, Aho & Ullman, Manber, Aho, Hopcroft & Ullman, Brassard & Bratley, Bentley. Alguns poucos exercícios foram extraídos da competição Programming Challenges. Seguem as siglas que usaremos para identificar os livros:
CLR Cormen, Leiserson & Rivest, primeira edição [CLR91] CLRS Cormen, Leiserson, Rivest & Stein, segunda edição [CLRS01] Par Parberry [Par95] KT Kleinberg & Tardos [KT05] Mnb Manber [Man89] AU Aho & Ullman [AU95] AHU Aho, Hopcroft & Ullman [AHU74, AHU87] PC Programming Challenges [Pro, SR03] BB Brassard & Bratley [BB96] Bent1988 Bentley [Ben00] Bent2000 Bentley [Ben88] Sed Sedgewick [Sed98]
“Os logaritmos permanecem importantes para muitas aplicações científicas e técnicas.” — pérola do jornal O Estado de São Paulo (agosto de 1998)
1.1 Pseudocódigo
Exr 1.1 Reescreva a função abaixo em linguagem C.
FUNC (A, n) 1 para j ← 2 até n faça 2 ch ← A[j] 3 i ← j − 1 4 enquanto i ≥ 1 e A[i] > ch faça 5 A[i + 1] ← A[i] 6 i ← i − 1 7 A[i + 1] ← ch
Exr 1.2 Reescreva a função abaixo em pseudocódigo (notação CLR):
int funcao (int n, int v[]) { int i, j; i = 0; while (i < n) { if (v[i] != 0) i++; else { for (j = i+1; j < n; j++) v[j-1] = v[j]; n--; } } return n; }
2 para i ← 1 até n faça 3 j ← i 4 enquanto j > 0 faça 5 S ← S + 1 6 j ← ⌊j/ 2 ⌋
Exr 1.13 Seja x um número real diferente de 1. Mostre que x^0 + x^1 + x^2 + · · · + xn^ = xn+1^ − 1 x − 1
Exr 1.14 Seja x um número real tal que |x| < 1. Mostre que x^0 + x^1 + x^2 + x^3 + · · · = 1/(1 − x). Mostre que 1 x^0 + 2x^1 + 3x^2 + · · · = 1/(1 − x)^2. Mostre que 1 x^1 + 2x^2 + 3x^3 + · · · = x/(1 − x)^2.
Exr 1.15 Dê uma fórmula fechada para a soma 22 + 2^4 + 2^6 + · · · + 2^2 k.
Exr 1.16 Prove que 13 + 2^3 + 3^3 + · · · + (n − 1)^3 + n^3 = Θ(n^4 ).
Exr 1.17 Prove que 1 + n + n^2 + n^3 + · · · + n^8 + n^9 = Θ(n^9 ).
1.3 Inversas composicionais
Uma função g é inversa composicional de uma função f se f (g(n)) = g(f (n)) = n. Em outras palavras, y = f (x) se e só se x = g(y). (Estou supondo, ao longo desta seção, que todas as funções estão definidas sobre o conjunto dos números reais positivos.) Leia CLRS sec. 3.2.
Exr 1.18 Dê as inversas composicionais das funções^1 f (n) = n^3 , f (n) = n^1 /^5 ≡ 5
n e f (n) = 1/n.
Exr 1.19 Dê as inversas composicionais das funções 5 n, log 3 n e lg n.
Exr 1.20 [CLRS 3.2 ] Qual a relação entre log 8 n e log 2 n? 2
Exr 1.21 Dê as inversas composicionais das funções log 3 log 3 n ≡ log 3 (log 3 n) e log^23 n ≡ (log 3 n)^2.
Exr 1.22 Desenhe gráficos das funções log 2 n e 2 n^ definidas sobre os inteiros positivos.
1.4 Provas por indução matemática
Indução matemática mirim: Suponha P (n) e prove P (n + 1). Indução matemática de gente grande: Suponha P (m) para todo m < n e prove P (n).
(^1) Em texto sem formatação (numa mensagem de e-mail, por exemplo), escreva “nˆ{1/5}” no lugar de “n 1 / (^5) ”. (^2) Em texto sem formatação, escreva “log_8 n” no lugar de “log 8 n”.
Exr 1.23 Prove que 1 + 2 + 2^2 + · · · + 2n^ = 2n+1^ − 1 para todo número natural n.
Exr 1.24 Prove que para qualquer número natural não-nulo n tem-se 12 + 2^2 + 3^2 + · · · + n^2 = 1 6 n(n^ + 1)(2n^ + 1).
Exr 1.25 Veja exercícios 11.23 e 8.2.
Exr 1.26 Prove que 22 + 2^4 + 2^6 + · · · + 2^2 k^ = (4/3)(2^2 k^ − 1).
Exr 1.27 Prove que n ≤ 2 n/^2 quando n ≥ 4. Prove que lg n = n/ 2 quando n ≥ 4.
Exr 1.28 Prove que lg n ≤
n.
1.5 Valor absoluto e módulo
Exr 1.29 Suponha que a ≥ b e x ≥ y. Mostre que |x − a| + |y − b| ≤ |x − b| + |y − a|.
1.6 Piso e teto
Exr 1.30 Seja x um número real. Diga, da maneira mais precisa que puder, o que significam as expressões “⌊x⌋” e “⌈x⌉”.^3
Exr 1.31 Prove ou desprove a seguinte proposição: para todo par x, y de números racionais, x ≤ y se e somente se ⌊x⌋ ≤ ⌊y⌋.
Exr 1.32 Suponha que n/ 5 < m/ 5. É verdade que ⌊n/ 5 ⌋ < ⌊m/ 5 ⌋?
Exr 1.33 Suponha que k é inteiro e k > n/ 5. É verdade que k ≥ 1 + ⌊n/ 5 ⌋?
Exr 1.34 Sejam n, a e b números inteiros positivos. Suponha que b > 4. É verdade que ⌊n/a− 1 /b⌋ = ⌊n/a⌋?
Exr 1.35 É verdade que ⌊x⌋ + ⌊y⌋ = ⌊x + y⌋ para quaisquer x e y?
Exr 1.36 É verdade que ⌊x⌋ + 1 = ⌈x + 1⌉ para qualquer x?
Exr 1.37 Mostre que ⌊x⌋ + ⌊y⌋ ≤ ⌊x + y⌋, com igualdade se e somente se x + y − 1 < ⌊x⌋ + ⌊y⌋. Encontre uma fórmula análoga para ⌈·⌉.
Exr 1.38 Suponha que c é um número inteiro e x um número racional. É verdade que ⌈cx⌉ = c⌈x⌉?
Exr 1.39 Use a notação ⌊ ⌋ para representar o resto da divisão de n por 7.
(^3) Em texto sem formatação, escreva “piso(x)” ou “floor(x)” no lugar de “⌊x⌋”.
Exr 1.54 Mostre que ⌊lg n⌋ é o maior inteiro k tal que 2 k^ ≤ n. Mostre que ⌈lg n⌉ é o menor inteiro k tal que 2 k^ ≥ n.
Exr 1.55 Escreva uma função que calcule ⌊lg n⌋. Escreva sua função em pseudocódigo. Escreva uma versão iterativa e uma recursiva (veja capítulo 2).
Exr 1.56 Escreva um algoritmo que calcule ⌈lg n⌉.
Exr 1.57 Prove que para qualquer inteiro n maior que 1 tem-se ⌊lg⌊ n 2 ⌋⌋ = ⌊lg n 2 ⌋.
Exr 1.58 É verdade que ⌊lg n⌋ ≥ lg(n − 1) para todo inteiro n ≥ 2? É verdade que ⌈lg n⌉ ≤ lg(n + 1) para todo inteiro n ≥ 1?
Exr 1.59 [Importante ] É verdade que ⌈lg(n + 1)⌉ = ⌊lg n⌋ + 1 para todo inteiro n > 1? É verdade que ⌊lg(n − 1)⌋ = ⌈lg n⌉ − 1 para todo inteiro n > 1?
Exr 1.60 Mostre que para todo número real x ≥ 1 tem-se ⌊lg x⌋ ≤ lg⌊x⌋ ≤ lg x ≤ lg⌈x⌉ ≤ ⌈lg x⌉.
Exr 1.61 [Soma de teto de log ] Prove que
Pn k=2⌈lg^ k⌉^ =^ n⌈lg^ n⌉ −^2 ⌈lg n⌉ (^) + 1.
Exr 1.62 Para cada número racional positivo x, seja f (x) o número
x. É verdade que ⌊f (x)⌋ ≤ f (⌊x⌋) ≤ f (x) ≤ f (⌈x⌉) ≤ ⌈f (x)⌉.
Exr 1.63 Para cada número racional positivo x, seja f (x) o número 2 x. É verdade que ⌊f (x)⌋ ≤ f (⌊x⌋) ≤ f (x) ≤ f (⌈x⌉) ≤ ⌈f (x)⌉.
Exr 1.64 [Maioria simples ] Considere a seguinte proposição: “O candidato estará eleito se obtiver metade mais um dos votos válidos”. Considere esta outra proposição: “O candidato estará eleito se obtiver mais da metade dos votos válidos”. Compare e critique as duas proposições.
1.7 Ordens assintóticas: O, Ômega e Teta
Leia CLRS seção 3.1. Veja também seções 3.4 e 3.5 de Aho e Ullman [AU95], Veja também seções 2. e 2.4 de R. Sedgewick [Sed98]. Ao ver uma expressão como n + 10 ou n^2 + 1, a maioria das pessoas pensa automaticamente em valores pequenos de n, valores próximos de 0. A análise de algoritmos faz o contrário: ignora os valores pequenos e concentra-se nos valores enormes de n. Escrevemos f = O(g) (diga “f é O-grande de g”) se existe uma constante positiva c tal que 0 ≤ f (n) ≤ c g(n) para todo n suficientemente grande. Mais formalmente: dadas funções f e g, dizemos que f = O(g) se existem constantes c e n 0 tais que 0 ≤ f (n) ≤ c g(n) para todo n ≥ n 0. Uma função f é assintoticamente não-negativa se existe n 1 tal que f (n) ≥ 0 para todo n ≥ n 1. Com esse conceito, podemos dar a seguinte definição equivalente de O(): dadas funções assintoti- camente não-negativas f e g, dizemos que f = O(g) se existem constantes positivas c e n 0 tais que f (n) ≤ c g(n) para todo n ≥ n 0.
Notação: Em lugar de escrever “f = O(g)” podemos dizer “f é O(g)” ou “f está na ordem de g” ou “f é da ordem de g”. Podemos também escrever “f ∈ O(g)”, uma vez que O(g) é um conjunto de funções. Escrevemos f = Ω(g) (diga “f é Ômega grande de g”) se existe uma constante positiva c tal que 0 ≤ c g(n) ≤ f (n) para todo n suficientemente grande. Dizemos que f = Θ(g) se f = O(g) e f = Ω(g).
Exr 1.65 Discuta a seguinte afirmação: “A função 2 n^2 + 100n − 1 está em O(n^2 ) com c = 4”, Discuta a seguinte afirmação: “A função 2 n^2 + 100n − 1 está em O(n^2 ) para n ≥ 100 ”.
Exr 1.66 Discuta a seguinte afirmação: “O consumo de tempo do algoritmo X é pelo menos O(n lg n)”. Discuta a seguinte afirmação: “A complexidade do algoritmo X é pelo menos O(n lg n)”.
Exr 1.67 Seja f a função definida pela seguinte recorrência: f (1) = 1 e f (n) = f (n − 1) + 2n para todo número natural n ≥ 2. Quero provar que f (n) = O(n^2 ). Discuta a seguinte prova:
A prova é por indução em n. Se n = 1 então temos f (n) = f (1) = 1 ≤ n^2 = Oh(n^2 ). Suponha agora que n > 1. Temos então f (n) = f (n − 1) + 2n ≤ 2(n − 1)^2 + 2n = 2 n^2 − 4 n + 2 + 2n = 2n^2 − 2 n + 2 ≤ 2 n^2 = O(n^2 ).”
Exr 1.68 Você quer tomar um empréstimo para comprar uma casa. Você quer escolher entre dois bancos, A e B. No banco A, a prestação do mês n é n^2. No banco B, a prestação do mês 4 n + 8. Qual você prefere?
Exr 1.69 Exiba três pares (c, n 0 ) tais que 100 n^2 ≤ c 1001 n^3 para todo n ≥ n 0.
Exr 1.70 Seja f a função definida por f (n) = 3n^2 + 7n − 8 para todo inteiro não-negativo n. Mostre que f (n) = O(n^2 ).
Exr 1.71 Mostre que 100 n = O(2n), que n + 100 = O(n), e que 100 n = O(2n^2 + n).
Exr 1.72 Prove que n^2 + 999n + 9999 = O(n^2 ).
Exr 1.73 É verdade que 1001 n^2 − 999 n − 9999 = O(n)?
Exr 1.74 É verdade que 10
n + 10 = O(n)? É verdade que 101 n − 100 = O(
n)?
Exr 1.75 É verdade que lg n^10 = O(lg n)?
Exr 1.76 Mostre que lg n = O(log 3 n) e log 3 n = O(lg n).
Exr 1.77 Prove que 12 n(n − 1) = O(n^2 ).
Exr 1.78 Prove que 1001 n^3 = O(n^2 ).
Exr 1.79 Prove que n = O(2n).
Exr 1.102 Prove que ⌊lg n⌋ = O(lg n)? É verdade que ⌈lg n⌉ = O(lg n)?
Exr 1.103 Mostre, da maneira mais direta que puder, que
1 100 n^ lg^ n^ −^100 n
não é O(n).
Exr 1.104 [CLRS 3.1-2, simplificado ] Mostre que (n + 10)^5 = O(n^5 ).
Exr 1.105 [CLRS 3.1-2 ] Seja k um inteiro positivo. Mostre que (n + 1)k^ = Θ(nk).
Exr 1.106 Mostre que
n + 100 = Θ(
n)
Exr 1.107 Encontre um inteiro positivo k tal que 2 n^ é O(nk).
Exr 1.108 [CLR 2.1-4 ] É verdade que 2 n^ = O(2n/^2 )? É verdade que 22 n^ = O(2n)?
Exr 1.109 É verdade que 2 n+1^ = Θ(2n)? É verdade que 3 n^ = Θ(2n)? É verdade que 22 n^ = Θ(2n)?
Exr 1.110 É verdade que 2 lg^ n^ = O(n)? É verdade que 2 log^3 n^ = O(n)?
Exr 1.111 É verdade que 2 log^3 n^ = O(2log^10 n)?
Exr 1.112 É verdade que n é O(log^2 n)?
Exr 1.113 É verdade que lg n = Ω(n)? É verdade que 2 lg (^2) n = Θ(nlg^ n)?
Exr 1.114 É verdade que
n = O(log^2 n)?
Exr 1.115 Discuta a seguinte afirmação: “n é O(2n) para n ≥ 4 ”?
Exr 1.116 Critique a seguinte afirmação: “f (n) é O(n^2 ) para n ≥ 100 ”?
Exr 1.117 Discuta a seguinte afirmação: “n^2 + n = O(n^2 ) para c = 2 e N = 1”.
Exr 1.118 Sejam f e g funções que levam números racionais positivos em números reais positivos. Suponha que f não é O(g). É verdade então que g = O(f )?
Exr 1.119 [CLR 2-4 simplificado ] É verdade que 1 /2 + 2/ 22 + 3/ 23 + · · · + n/ 2 n^ = O(1)?
Exr 1.120 Sejam f e g duas funções que levam números positivos em números positivos. Refor- mula a afirmação “f não é O(g)” sem usar a expressão “não existe”.
Exr 1.121 Mostre que m⌈n/m⌉ = Θ(m + n). É verdade de n⌈n/m⌉ = Θ(m)?
Exr 1.122 Mostre que n lg n = Ω(n). Mostre que n^2 − 100 n − 200
n = Θ(n^2 ).
Exr 1.123 Mostre que n lg n − ⌈ 2 n/ 3 ⌉ − lg n + 4 = Ω(2n lg n).
Exr 1.124 Seja f a função definida assim para todo inteiro positivo k:
f (4k) = 0, f (4k + 1) = 1, f (4k + 2) = 0, f (4k + 3) = − 1.
A função n2+f^ (n)^ é O(n^2 )? é Ω(n^2 )? Justifique.
Exr 1.125 Suponha que T (n) = O(1). Mostre que existe c tal que T (n) ≤ c para todo n ≥ 1.
Exr 1.126 Sejam T e f funções tais f (n) > 0 para n ≥ 1 e T (n) = O(f (n)). Mostre que existe c tal que T (n) ≤ c f (n) para todo n ≥ 1.
1.8 Uso avançado da notação O
Algumas expressões que se usam com notação O:
Exr 1.127 Qual é o significado exato da afirmação “g(n) = f (n) + O(n)”?
Exr 1.128 Suponha que a função f leva números inteiros em números inteiros. É verdade que 2 f (n) + 3 = O(f (n))?
Exr 1.129 O que significa a afirmação “O(n^2 ) + O(1) = O(n^2 )”? Ela é verdadeira? Justifique.
Exr 1.130 O que significa a afirmação “O(n^2 + 9n) = O(n^2 )”? Ela é verdadeira?
Exr 1.131 O que significa a afirmação “O(f ) + O(g) = O(f + g)”? Ela é verdadeira?
Exr 1.132 Mostre que nO(f (n)) ⊆ O(nf (n)). Mostre que O(nf (n)) ⊆ nO(f (n)).
Exr 1.133 Suponha que f = O(g). Prove que g = Ω(f ).
Exr 1.134 Suponha que f (n) = Ω(g(n)) e g(n) = O(f (n)). É verdade que g(n) = O(n)?
Exr 1.135 Suponha que f (n) = Ω(g(n)) e g(n) = O(f (n)). É verdade que g(n) = Ω(n)?
Exr 1.136 Suponha que f (n) = Ω(g(n)). É verdade que 2 f^ (n)^ = O(2g(n))?
Exr 1.137 Suponha que log f = O(log g). É verdade que f = O(g)?
A recursão é uma técnica que resolve uma instância de um problema a partir das soluções de instâncias menores do mesmo problema. A idéia de qualquer algoritmo recursivo é simples: se a instância é pequena, resolva-a direta- mente, como puder; se a instância é grande, reduza-a a uma instância menor. Portanto, recursão é essencialmente o mesmo que indução matemática.
2.1 Algorimos recursivos
Exr 2.1 [Máximo de um vetor ] Escreva uma função recursiva que encontre o valor de um ele- mento máximo^1 de um vetor de A[1.. n]. Para que valores de n o problema faz sentido? (Use pseudocódigo ou linguagem C.)
Exr 2.2 Escreva um algoritmo recursivo que calcule a soma dos elementos de um vetor. Use pseu- docódigo CLR.
Exr 2.3 Problema: dado um vetor A[1.. n] de números inteiros, calcular o produto dos elementos não-nulos do vetor. Escreva um algoritmo recursivo que resolva o problema. (Declare claramente as eventuais hipóteses que seu algoritmo faz sobre os dados.)
Exr 2.4 Escreva um algoritmo recursivo eficiente que calcule kn^ para k e n inteiros positivos.
Exr 2.5 Critique o seguinte algoritmo (n é inteiro não-negativo):
XIS (n) 1 se n = 0 2 então devolva 0 3 senão devolva XIS (⌊n/ 3 ⌋ + 1)
Exr 2.6 Escreva funções recursivas que calculem ⌊lg n⌋ e ⌈lg n⌉. (Veja 1.55 e 1.56.)
(^1) Eu não disse “do maior elemento” pois o vetor pode ter mais de um máximo.
Exr 2.7 [Busca linear, CLRS 2.1-3 ] Escreva um algoritmo recursivo que verifique se v é elemento de um vetor A[p.. r]. (Para que valores de p e r o problema faz sentido?) O algoritmo deve devolver i tal que A[i] = v ou NIL se tal i não existe.^2
Exr 2.8 [Busca em vetor ordenado ] Dado um vetor crescente A[p.. r] e um número v, verificar se v é elemento do vetor. Escreva um algoritmo recursivo que resolva o problema. Faça com que o algoritmo devolva j tal que A[j] ≤ v < A[j + 1]
(isso é mais simples que devolver i tal que A[i] = v). Quais os valores possíveis de j? Escreva duas versões: uma de busca linear e outra de busca binária.
Exr 2.9 O algoritmo abaixo recebe um número v e um vetor crescente A[p.. r] com p ≤ r. Se v = A[j] para algum j em p.. r, o algoritmo promete devolver j; senão, promete devolver NIL.
EXERCÍCIO (v, A, p, r) 1 se p = r 2 então se A[p] = v então devolva p senão devolva NIL 3 senão q ← ⌊(p + r)/ 2 ⌋ 4 se A[q] ≤ v 5 então devolva EXERCÍCIO (v, A, q, r) 6 senão devolva EXERCÍCIO (v, A, p, q)
O algoritmo faz o que promete?
Exr 2.10 Suponha que um vetor A[1.. n] tem exatamente m elementos não-nulos e que os índices desses elementos são i 1 < i 2 < · · · < im. Escreva um algoritmo recursivo eficiente que tenha o mesmo efeito que a sequência de atribuições
A[1] ← A[i 1 ], A[2] ← A[i 2 ],... , A[m] ← A[im].
O seu algoritmo deve receber apenas n e A[1.. n] e devolver m.
Exr 2.11 Escreva um algoritmo recursivo que receba um inteiro não-negativo n e devolva as coor- denadas (i, j) de n na tabela abaixo. (Use notação CLRS.)
0 1 2 3 4... j 0 0 2 5 9 14 1 1 4 8 13 2 3 7 12 3 6 11 4 10 .. .
.. . i... n (^2) Acho que o algoritmo ficaria mais bonito se devolvesse p − 1 (ou r + 1) quando v não está em A[p.. r].
Uma recorrência é uma “fórmula” que define uma única função em termos d’ela mesma. Em outras palavras, uma recorrência é um algoritmo recursivo que calcula uma função. Resolver uma recorrência é obter uma “fórmula fechada” para a função que a recorrência de- fine. Nem sempre queremos uma fechada exata; às vezes uma fórmula “em termos de O” é sufici- ente. Veja CLRS secs.4.1–4.2. Mais uma observação prática: Como no bilhar, primeiro anuncie o que você vai provar e depois prove. (Veja também a página https://www.ime.usp.br/~pf/amostra-de-prova/.)
3.1 Solução exata de recorrências
Exr 3.1 Seja f a função definida sobre os inteiros positivos pela recorrência
f (1) = 1 f (n) = f (n − 1) + 3n + 1 para n ≥ 2.
Resolva a recorrência exatamente.
Exr 3.2 Seja f a função definida pela recorrência f (1) = 1, f (2) = 2 e
f (n) = f (n − 2) + 2 para n ≥ 2.
Resolva a recorrência exatamente.
Exr 3.3 Suponha que f (1) = 1 e f (n) = f (n − 1) + 2n para n = 2, 3 , 4 ,... Mostre que f (n) = Ω(n^2 ).
Exr 3.4 Seja T (n) uma função definida sobre { 0 , 1 , 2 ,.. .}. Suponha que existem α > 0 e β > 0 tais que T (1) ≤ α e T (n) ≤ T (n − k) + βk para todo n > 1. Mostre que T (n) ≤ max(α, β)n
Exr 3.5 [BB 4.21: algoritmo recursivo para determinantes ] Sejam a e b duas constantes reais positi- vas. Seja f a função definida sobre os inteiros positivos pela seguinte recorrência: f (1) = a e
f (n) = n f (n − 1) + bn
paraP n > 1. Dê uma fórmula fechada para f (n). (Sua fórmula pode ter um termo da forma n i=1 1 /i!.)^ Prove sua fórmula por indução.
(^1) Escreva f (n) em notação Θ da maneira mais
simples que puder.P Qual o valor de limn→∞ f (n)/n! em função de a e b? (Lembre-se de que ∞ i=1 1 /i! =^ e^ −^1 , sendo^ e^ = 2.^7182818.. .)
Exr 3.6 Seja F a função definida pela recorrência F (0) = F (1) = 0 e
F (n) = F (n − 1) + F (n − 2) + 1
para n ≥ 2. Mostre que F (n) = Ω((3/2)n).
Exr 3.7 [CLRS 3.2-6 e CLRS 4-5 ] Seja f a função definida sobre os inteiros não-negativos pela recorrência f (0) = 0, f (1) = 1 e f (n) = f (n − 1) + f (n − 2) + 2 para n ≥ 2. Resolva a recorrência exatamente.
Exr 3.8 Discuta a seguinte recorrência: f (7) = 1 e f (n) = f (⌊n/ 2 ⌋) + n para n = 8, 9 , 10 , 11 , 12 ,...
Exr 3.9 Considere a seguinte recorrência: f (1) = 3 e
f (n) = f (n/2) + 1
para n = 2^1 , 22 , 23 ,... Quanto vale f (16)? Mostre que f (n) = lg(n) + 3 para n = 2^0 , 21 , 22 , 23 ,.. ..
Exr 3.10 Considere a seguinte recorrência: g(1) = 3 e g(n) = g(⌊n/ 2 ⌋) + 1 para todo inteiro n > 1. Dê uma fórmula fechada para a recorrência.
Exr 3.11 Seja f a função definida sobre os inteiros positivos pela recorrência
f (1) = 1 e f (n) = f (⌈ n− 2 1 ⌉) + 1 para n ≥ 2.
Resolva a recorrência.
Exr 3.12 [CLRS 2.3-5 ] Seja f a função definida sobre os inteiros positivos pela recorrência f (1) = 1 e f (n) = max{f (⌈ n− 2 1 ⌉), f (⌊ n− 2 1 ⌋)} + 1
para n ≥ 2. Resolva a recorrência.
Exr 3.13 Seja f a função definida sobre os inteiros positivos pela recorrência
f (1) = 0 f (n) = f (⌈n/ 2 ⌉) + f (⌊n/ 2 ⌋) + n + 1 para n ≥ 2.
Calcule f (n) para n = 1, 2 , 3 , 4 , 5. Mostre que f (n) = n⌈lg n⌉ − 2 ⌈lg^ n⌉^ + 2n − 1.
(^1) A rigor, eu deveria dizer “indução matemática”.