"Os logaritmos permanecem importantes
para muitas aplicações científicas e técnicas."
— pérola do jornal
O Estado de São Paulo
por volta de agosto de 1998
"But you know what I don't understand?"
To which David replies, "Logarithms?"
Then, reacting to Maddie's look: "What? You understood those?"
"The greatest shortcoming of the human race is
our inability to understand the exponential function."
— Albert A. Bartlett, "Arithmetic, Population and Energy", YouTube video
O primeiro grupo de exercícios examina algumas funções elementares importantes para a análise de algoritmos. O segundo grupo examina alguns algoritmos simples. O terceiro trata de indução matemática e recursão.
Veja as definições de piso e teto no dicionário.
Explique o significado da expressão "log3/2 n".
Veja a definição de lg n no dicionário.
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 somente se x = g(y). Dê as inversas composicionais das funções
n+7 , 7n , n/5 , n7 , n1/7 , n−1 , n−7 .
Dê as inversas composicionais das funções
7n , 7log5n , 75n , 75n , 7n2 , log5 n , log5 log7 n , (log5 n)2 .
Compare as funções n!, 2n e 2n². Qual é a maior? Qual a menor?
Quanto vale k no fim do seguinte procedimento?
| . k ← 0 |
| . para i ← 1 até n faça |
| .___ para j ← i até n faça |
| .______ k ← k+1 |
Qual o valor de S no final de cada um dos fragmentos de código abaixo?
| | . S ← 0 |
| | . para i crescendo de 1 até n faça |
| | .___ para j crescendo de 1 até i faça |
| | .______ S ← S+1 |
| : . S ← 0 |
| : . i ← n |
| : . enquanto i > 0 faça |
| : .___ para j ← 1 até i faça |
| : .______ S ← S+1 |
| : .___ i ← ⌊i/2⌋ |
| | . S ← 0 |
| | . i ← n |
| | . enquanto i > 0 faça |
| | .___ para j crescendo de 1 até n faça |
| | .______ S ← S+1 |
| | .___ i ← ⌊i/2⌋ |
| : . S ← 0 |
| : . para i ← 1 até n faça |
| : .___ j ← i |
| : .___ enquanto j > 0 faça |
| : .______ S ← S + 1 |
| : .______ j ← ⌊ j/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 o vetor 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 crescendo de 1 até n faça |
| 3 .___ x ← x + j · j |
| 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?
Escreva um algoritmo recursivo que encontre o valor de um elemento máximo de um vetor.