Buscar

Exercícios de Fixação 01 - Conceitos Fundamentais - Parte II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
Lista de Exercícios de Fixação 01
Conceitos Fundamentais – Parte II
Observação: se não especificado na questão, considere a complexidade
computacional assintótica para o pior caso.
1. Considere o algoritmo, a seguir, e responda às questões seguintes.
algoritmo(n)
entrada: Um inteiro não-negativo
T ← 0
for i ← 1 to n do
T ← T + i*i*i*i
return T
a. O que o algoritmo calcula?
b. Qual é a operação básica que ele realiza?
c. O número de vezes que a operação básica é realizada depende somente do tamanho da
entrada? Explique.
d. Quantas vezes a operação básica é executada? Dica: estabeleça um somatório ou uma
relação de recorrência para indicar o número de vezes que a operação básica é executada
e resolva-o(a). 
e. Qual é a classe de eficiência do algoritmo? Represente a classe utilizando a notação
assintótica adequada.
2. Encontre a T(n) e, em seguida, determine a complexidade assintótica do seguinte trecho de
programa.
for (i = 0; i < n; i++) { 
//sequência de instruções
} 
for (j = 0; j <= n; j++) { 
//sequência de instruções
} 
1
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
3. Calcule a T(n) e determine a complexidade assintótica do pior caso para o seguinte código.
4. Determine a complexidade assintótica para o seguinte código. 
Dica: ∑
i=1
n
i2=1²+...(n)²=n(n+1)(2n+1)
6
soma = 0;
for (int k = 0; k < n; k++)
soma++;
for (int i = 0; i < n; i++)
for (int j = 0; j < i*i; j++)
soma++;
5. Calcule a T(n) e determine a complexidade assintótica do pior caso para o seguinte código.
6. Sabendo que T (1) = 1, encontre a ordem de complexidade das relações abaixo usando o
Teorema Mestre, caso aplicável.
2
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
a. T (n) = 4T(n/4) + 2n
b. F(n) = F(n – 1) + n para todo n ≥ 2
7. Considere a função definida pela recorrência: 
f(n) = 2f(n-1), f(0) = 1 
O professor Pardau afirma que f(n) = O(n), e que isso pode ser verificado simplesmente da forma
f(n) = 2f(n-1) = 2O(n-1) = O(n)
Sendo assim, pergunta-se: o professor Pardau está certo? Justifique.
8. Responda o que se pede.
a. A recorrência T(n) = 7T(n/2) + n2 descreve o tempo de execução do algoritmo da Alice.
Um algoritmo alternativo proposto por Bob tem um tempo de execução T(n) = aT(n/4) +
n2. Qual é o maior número inteiro a que faz com que o algoritmo do Bob seja
assintoticamente mais rápido que o algoritmo da Alice? Justifique.
b. O Teorema Mestre pode ser aplicado à recorrência T(n) = 4T(n/2) + n2lgn? Justifique a
resposta. 
c. Considere que você tenha um problema para resolver e duas opções de algoritmos. O
primeiro algoritmo é quadrático tanto no pior caso quanto no melhor caso. Já o segundo
algoritmo é linear no melhor caso e cúbico no pior caso. Considerando que o melhor
caso ocorre 90% das vezes que você executa o programa enquanto o pior caso ocorre
apenas 10% das vezes, qual algoritmo você escolheria? Justifique a sua resposta em
função do tamanho da entrada.
9. Quando um algoritmo possui uma chamada recursiva, seu tempo de execução pode ser
descrito por uma recorrência. Utilize um dos métodos estudados para encontrar a ordem de
complexidade da recursão: T(n) = 3T(n/2) + n e T(1) = 1.
10. Apresente a complexidade assintótica das seguintes relações de recorrência:
a. T(n) = T(n – 1) + (n – 1), T(1) = 0
b. T(n) = T(n – 1) + n, T(1) = 1
3
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
c. T(n) = 8T(n/2) + n2, T(1) = 1
d. T(N) = 2T(N/2) + N, para N ≥ 2 e T(1) = 0
e. T(N) = 2T(N-1) + 1, para N≥ 2 e T(1) = 1
f. T(n) = 2T(n/2) + (n – 1), T(1) = 1
11. Considere o algoritmo, a seguir. Suponha que a operação crucial é o fato de inspecionar um
elemento. O algoritmo inspeciona os n elementos de um conjunto e, de alguma forma, isso
permite descartar a metade dos elementos e então fazer uma chamada recursiva sobre os n/2
elementos restantes. 
void pesquisa(int n){
if (n <= 1)
inspecione elemento e termine
else{
para cada um dos n elementos, inspecione elemento;
pesquisa(n/2);
 }
}
a. Escreva uma relação de recorrência que descreve esse comportamento;
b. Apresente a complexidade computacional do algoritmo para o melhor e o pior caso.
12. Considere o algoritmo, a seguir, e responda o que se pede, fornecendo justificativas.
algoritmo segredo(n)
entrada: Um número natural n.
saída: não revelada.
 se n = 1 entao 
devolva 1
 senao 
devolva segredo(piso(n/2)) + 1
 fimse
fimalgoritmo
a. Seja s : N → Z≥, a função que descreve o tempo de execução do algoritmo segredo em
função do valor de n. Então, defina a relação de recorrência que descreve o valor s(n).
4
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
b. Resolva a recorrência que você definiu em b.
13. Elabore um algoritmo para determinar se um inteiro positivo, n, é primo. Determine a
complexidade computacional assintótica do algoritmo.
5
	Lista de Exercícios de Fixação 01

Outros materiais