Piso, logaritmos, etc.
What I hear, I forget.
What I see, I remember.
What I do, I understand.
— Confucius
Este apêndice é uma lista de exercícios de aquecimento.
As seções 1 a 5 tratam de algumas funções elementares
importantes para a análise de algoritmos.
A seção 6 trata de indução matemática e
de fórmulas fechadas
para algumas somas importantes.
A seção 7 examina alguns algoritmos simples escritos em pseudocódigo.
A seção 8 trata de erros de português que muitos estudantes cometem
ao escrever sobre assuntos que exigem precisão e clareza.
A seção 9 mostra como apresentar um raciocínio dedutivo rigoroso,
do tipo que é usado em provas/demonstrações de matemática.
1. Piso e teto
Veja as definições de piso e teto
no Dicionário.
-
Mostre que, para qualquer número inteiro positivo n tem-se
(n−1)/2 ≤ ⌊n/2⌋ ≤ n/2.
-
Mostre que, para qualquer número inteiro positivo n tem-se
n/2 ≤ ⌈n/2⌉ ≤ (n+1)/2.
-
Prove que ⌊n/2⌋
+ ⌈n/2⌉
= n
para todo número natural n.
-
Prove que n²/2 ≤
⌊n/2⌋²
+ ⌈n/2⌉² ≤ n²/2 + ½
para todo número natural n.
-
É verdade que ⌈½ (n−1)⌉ = ⌊n/2⌋
para todo número natural positivo n?
É verdade que ⌊½ (n−1)⌋ = ⌈n/2⌉ − 1
para todo número natural positivo n?
-
Compare e critique as duas afirmações a seguir.
Afirmação 1:
O candidato estará eleito se obtiver (pelo menos)
metade mais um dos votos
.
Afirmação 2:
O candidato estará eleito se obtiver
mais da metade dos votos
.
2. Logaritmos
-
Explique o significado da expressão
log3/2 n
.
-
É verdade que log3 n =
log10 n / log10 3?
Justifique.
-
Prove que 3 log n =
n log 3
para qualquer n positivo
e qualquer base dos logaritmos.
3. Piso e teto de logaritmos
-
Suponha que n é um inteiro positivo n.
É verdade que ⌊lg n⌋
é o maior inteiro k tal que 2k ≤ n?
É verdade que ⌈lg n⌉
é o menor inteiro k tal que 2k ≥ n?
-
Seja n um inteiro maior que 1.
É verdade que ⌊lg n⌋ ≥
lg (n−1)?
É verdade que ⌈lg n⌉ ≤ lg (n+1)?
-
Suponha que n é um número natural não-nulo.
É fato que lg ⌊n/2⌋ ≤
lg n − 1?
É fato que lg ⌈n/2⌉ ≤ lg n?
-
Prove que para qualquer número racional r
maior que 1
tem-se ⌊lg r⌋ ≤ lg ⌊r⌋ ≤ lg r ≤ lg ⌈r⌉ ≤
⌈lg r⌉.
4. Funções inversas
Uma função g é inversa
de uma função f se f(g(n)) = g(f(n)) = n.
Em outras palavras,
y = f(x)
se e somente se x = g(y).
-
Dê as inversas das funções
n+7,
7n,
n/5,
√n,
n7,
n−1/7.
-
Dê as inversas das funções
7n,
7log5 n,
75n,
75n,
7n²,
log5 n,
log5 log7 n,
(log5 n)².
5. Comparação de funções
-
Prove que √n < n
se n > 1.
-
Compare a função
(3n)2
com a função
3(n²).
(A segunda também pode ser escrita sem os
parênteses: 3n².)
Qual é a maior? Qual a menor?
-
Compare as funções
n!,
2n² e
2n.
Qual é a maior? Qual a menor?
-
Compare as funções
nn,
n! e
nn/2.
Qual é a maior? Qual a menor?
6. Somas e indução matemática
Use indução matemática
para fazer os seguinte exercícios.
-
Prove por indução matemática que 1 + 2 + ⋯ + n =
n(n+1)/2
para todo número natural n.
Em seguida, escreva um algoritmo recursivo que calcule 1 + 2 + ⋯ + n.
[Solução]
-
Suponha que r é um número real maior que 1.
Prove que
r0 +
r1 + r2 + ⋯ + r n =
(r n+1 − 1)/(r − 1) .
-
Calcule o valor da soma
20 +
21 + 22 + ⋯ +
2n.
-
Prove por indução matemática que
1⋅21 +
2⋅22 + 3⋅23 + ⋯ +
n⋅2n = (n − 1) 2n+1 + 2.
-
Prove por indução matemática que
22 +
24 + 26 + ⋯ +
22n = 4 (22n − 1) / 3
para todo número natural positivo n.
-
Quantos são os subconjuntos do conjunto { 0, 1, … , m }?
-
Prove o seguinte fato por indução:
para todo número natural não-nulo n tem-se
12 +
22 + 32 + ⋯ + n2 =
n (n+1) (2n+1)/6.
-
Prove (por indução) que n < 2n
para todo número natural n.
Prove (por indução) que n < 2n/2
quando n > 4.
Prove que lg n < n/2
-
Para qualquer número natural não-nulo n,
a soma 1/1 + 1/2 + ⋯ + 1/n
é conhecida como n-ésimo
número harmônico
e denotada por Hn.
Verifique experimentalmente que
ln n < Hn <
1 + ln n .
Encontre a prova dessas desigualdades em seu livro de Cálculo favorito.
-
Prove a seguinte afirmação por indução matemática:
para todo número natural positivo n,
o número 11n − 6
é divisível por 5.
-
Para todo número natural n,
tem-se 1³ + 2³ + ⋯ + n³ =
(1 + 2 + ⋯ + n)².
Prove essa identidade por indução matemática.
-
Prove por indução matemática que
1/(1×3) + 1/(3×5) + ⋯ +
1/((2n − 1) (2n + 1)) =
n/(2n + 1)
para todo número natural n ≥ 1.
7. Iterações e pseudocódigo
Usaremos um estilo de pseudocódigo quase igual ao de CLRS e CLRS.
A instrução de atribuição será indicada pelo
walrus operator :=
.
O operador de igualdade será representado por =
,
como se faz há séculos na matemática.
-
Quanto vale k no fim do seguinte procedimento?
1
.
k := 0
|
2
.
para i := 1 até n
|
3
.ooo
para j := i até n
|
4
.oooooo
k := k+1
|
-
Qual o valor de x no final do seguinte
fragmento de código?
1
.
x := 0
|
2
.
para i := 1 até n
|
3
.ooo
para j := 1 até i
|
4
.oooooo
x := x+1
|
-
Suponha n é uma potência de 2.
Qual o valor de S ao final do seguinte fragmento de código?
1
.
S := 0
|
2
.
i := n
|
3
.
enquanto i > 0
|
4
.ooo
para j := 1 até i
|
5
.oooooo
S := S+1
|
6
.ooo
i := ⌊i/2⌋
|
-
Qual o valor de S no final do seguinte fragmento de código?
1
.
T := 0
|
2
.
i := n
|
3
.
enquanto i > 0
|
4
.ooo
para j := 1 até n
|
5
.oooooo
T := T+1
|
6
.ooo
i := ⌊i/2⌋
|
-
Escreva um algoritmo iterativo para resolver o seguinte problema:
dado um vetor A[p .. r]
e um índice q tais que A[p .. q]
e A[q+1 .. r]
estão em ordem crescente, rearranjar A[p .. r]
de modo que ele fique em ordem crescente.
Para que valores de p, q e r
o problema faz sentido?
-
Cada um dos algoritmos abaixo
recebe um inteiro positivo
e devolve outro inteiro positivo.
Os dois algoritmos são equivalentes:
devolvem o mesmo número
se receberem um mesmo n.
Soma-Quadrados-A (n)
|
1
.
x := 0
|
2
.
para j := 1 até n
|
3
.ooo
x := x + j 2
|
4
.
devolva x
|
Soma-Quadrados-B (n)
|
1
.
x := n (n+1) (2n+1)
|
2
.
x := x/6
|
3
.
devolva x
|
Digamos que uma operação aritmética
é uma adição, subtração, multiplicação ou divisão.
Quantas operações aritméticas o primeiro algoritmo faz?
Quantas operações aritméticas o segundo algoritmo faz?
Qual dos dois algoritmos é mais eficiente?
8. Português e matemática
A análise de algoritmos
depende de uma boa comunicação escrita.
Para se comunicar bem,
escreva sentenças curtas e diretas.
Use pontuação (vírgula, ponto-e-vírgula, ponto final) corretamente.
Não seja prolixo.
Evite sentenças vagas ou ambíguas.
Seja preciso e específico.
Não use palavras rebuscadas
e evite falar bonito
.
Use palavras simples e corriqueiras,
mas escolha as palavras apropriadas para cada tarefa.
Palavras são como as ferramentas de um operário:
cada tarefa pede uma determinada ferramenta.
-
Quais das seguintes frases estão corretas?
(a)
Seja um número inteiro n.
(b) Seja n um número inteiro.
Justifique sua resposta.
-
Quais das seguintes frases estão corretas?
(a)
Suponha que n é maior que 2.
(b) Considere que n é maior que 2.
(b) Assuma que n é maior que 2.
Justifique sua resposta.
-
Quais das seguintes frases estão corretas?
(a)
Concluímos que n corresponde a 99.
(b) Concluímos que n equivale a 99.
(c) Concluímos que n é igual a 99.
Justifique sua resposta.
-
Quais das seguintes frases estão corretas?
(a)
2n + 6 = 0
->
n = −3.
(b) 2n + 6 = 0
=>
n = −3.
(c) 2n + 6 = 0,
e portanto n = −3.
(d) 2n + 6 = 0,
donde n = −3.
Justifique sua resposta.
-
Quais das seguintes frases estão corretas?
(a)
Em seguida,
"i" é incrementado.
(b) Em seguida,
i é incrementado.
(c) Em seguida,
'i' é incrementado.
Justifique sua resposta.
9. Provas e demonstrações
A análise de algoritmos exige uma certa dose de matemática.
Em particular, exige um mínimo de habilidade para ler e escrever provas
(demonstrações)
de teoremas.
(Um teorema é qualquer afirmação matemática.)
Sugiro seguir as seguintes recomendações:
-
Antes de começar uma prova,
escreva
Teorema:
e enuncie a afirmação que você pretende provar.
Vale a pena fazer isso mesmo que o enunciado esteja implícito
no parágrafo anterior.
-
Se o teorema for do tipo
se e somente se
,
trate as partes se
e somente se
como se fossem dois teoremas independentes.
-
No enunciado do teorema, separe claramente
a hipótese da tese.
A prova do teorema
deve começar com a frase que descreve a hipótese
e terminar com a frase que descreve a tese.
-
Comece a prova escrevendo
Prova:
.
Organize a prova como uma sequência lógica de pequenos passos
que levam da hipótese à tese.
-
Não tente explicar ao leitor como você raciocinou
para obter a prova do teorema.
Não tente descrever o caminho que você percorreu para construir a prova.
O leitor não está interessado
em seu processo mental.
Você só precisa convencer o leitor de que o teorema é verdadeiro.
-
Escreva a prova em português;
não use os símbolos
->
,
=>
,
∴
e ∃
.
Para indicar o fim da prova, escreva CQD
.
Veja minha página
O que é uma prova matemática?